@kepler.gl/reducers 3.3.0-alpha.16 → 3.3.0-alpha.17

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.
Files changed (38) hide show
  1. package/dist/cjs/column-edit-reconcile.js +100 -0
  2. package/dist/cjs/column-edit-updaters.spec.js +840 -0
  3. package/dist/cjs/dataset-ops-updaters.js +101 -15
  4. package/dist/cjs/dataset-ops-updaters.spec.js +129 -4
  5. package/dist/cjs/export-utils.js +118 -46
  6. package/dist/cjs/interaction-utils.js +11 -3
  7. package/dist/cjs/layer-utils.js +3 -2
  8. package/dist/cjs/ui-state-updaters.js +70 -26
  9. package/dist/cjs/ui-state.js +2 -2
  10. package/dist/cjs/vis-state-merger-text-label.spec.js +75 -0
  11. package/dist/cjs/vis-state-merger.js +65 -22
  12. package/dist/cjs/vis-state-updaters.js +581 -177
  13. package/dist/cjs/vis-state.js +2 -2
  14. package/dist/column-edit-reconcile.d.ts +4 -0
  15. package/dist/column-edit-updaters.spec.d.ts +1 -0
  16. package/dist/dataset-ops-updaters.d.ts +3 -0
  17. package/dist/esm/column-edit-reconcile.js +95 -0
  18. package/dist/esm/column-edit-updaters.spec.js +839 -0
  19. package/dist/esm/dataset-ops-updaters.js +99 -16
  20. package/dist/esm/dataset-ops-updaters.spec.js +129 -4
  21. package/dist/esm/export-utils.js +117 -45
  22. package/dist/esm/interaction-utils.js +10 -3
  23. package/dist/esm/layer-utils.js +3 -2
  24. package/dist/esm/ui-state-updaters.js +69 -25
  25. package/dist/esm/ui-state.js +2 -2
  26. package/dist/esm/vis-state-merger-text-label.spec.js +74 -0
  27. package/dist/esm/vis-state-merger.js +66 -24
  28. package/dist/esm/vis-state-updaters.js +571 -185
  29. package/dist/esm/vis-state.js +2 -2
  30. package/dist/export-utils.d.ts +2 -2
  31. package/dist/interaction-utils.d.ts +4 -1
  32. package/dist/layer-utils.d.ts +1 -0
  33. package/dist/ui-state-updaters.d.ts +10 -0
  34. package/dist/vis-state-merger-text-label.spec.d.ts +1 -0
  35. package/dist/vis-state-merger.d.ts +10 -2
  36. package/dist/vis-state-updaters.d.ts +31 -4
  37. package/dist/vis-state.d.ts +4 -0
  38. package/package.json +17 -17
@@ -10,6 +10,7 @@ exports.findFieldsToShow = findFieldsToShow;
10
10
  exports.getLayerZoomOpacityFactor = getLayerZoomOpacityFactor;
11
11
  exports.getTooltipDisplayDeltaValue = getTooltipDisplayDeltaValue;
12
12
  exports.getTooltipDisplayValue = getTooltipDisplayValue;
13
+ exports.getZoomOpacityAnnotationTargetId = getZoomOpacityAnnotationTargetId;
13
14
  exports.removeLayerFromZoomOpacity = removeLayerFromZoomOpacity;
14
15
  exports.setZoomOpacityStop = setZoomOpacityStop;
15
16
  exports.zoomOpacityFactor = zoomOpacityFactor;
@@ -111,13 +112,20 @@ function getTooltipDisplayDeltaValue(_ref6) {
111
112
  function getTooltipDisplayValue(_ref7) {
112
113
  var item = _ref7.item,
113
114
  field = _ref7.field,
114
- value = _ref7.value;
115
+ value = _ref7.value,
116
+ timezone = _ref7.timezone;
115
117
  if (!(0, _commonUtils.notNullorUndefined)(value)) {
116
118
  return '';
117
119
  }
118
- return item !== null && item !== void 0 && item.format ? (0, _utils.getFormatter)(item === null || item === void 0 ? void 0 : item.format, field)(value) : field.displayFormat ? (0, _utils.getFormatter)(field.displayFormat, field)(value) : (0, _utils.parseFieldValue)(value, field.type);
120
+ return item !== null && item !== void 0 && item.format ? (0, _utils.getFormatter)(item === null || item === void 0 ? void 0 : item.format, field, timezone)(value) : field.displayFormat ? (0, _utils.getFormatter)(field.displayFormat, field, timezone)(value) : (0, _utils.parseFieldValue)(value, field.type);
119
121
  }
120
122
  var ZOOM_OPACITY_RANGE = exports.ZOOM_OPACITY_RANGE = [0, 24];
123
+ var ZOOM_OPACITY_ANNOTATION_PREFIX = '__kepler_annotation__:';
124
+
125
+ /** Reserved fade-on-zoom target id for one map annotation. */
126
+ function getZoomOpacityAnnotationTargetId(annotationId) {
127
+ return "".concat(ZOOM_OPACITY_ANNOTATION_PREFIX).concat(annotationId);
128
+ }
121
129
  var DEFAULT_ZOOM_OPACITY_STOPS = exports.DEFAULT_ZOOM_OPACITY_STOPS = {
122
130
  appear: 1,
123
131
  full: 3,
@@ -264,4 +272,4 @@ function removeLayerFromZoomOpacity(interactionConfig, layerId) {
264
272
  })
265
273
  });
266
274
  }
267
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl91dGlscyIsIl9jb21tb25VdGlscyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiVE9PTFRJUF9NSU5VU19TSUdOIiwiZXhwb3J0cyIsIk5FR0FUSVZFX1NJR05TIiwiQlJVU0hfQ09ORklHIiwicmFuZ2UiLCJmaW5kRmllbGRzVG9TaG93IiwiX3JlZiIsImZpZWxkcyIsImlkIiwibWF4RGVmYXVsdFRvb2x0aXBzIiwiZmllbGRzVG9TaG93IiwiREVGQVVMVF9UT09MVElQX0ZJRUxEUyIsInJlZHVjZSIsInByZXYiLCJjdXJyIiwiZmluZCIsIl9yZWYyIiwibmFtZSIsImF1dG9GaW5kVG9vbHRpcEZpZWxkcyIsInB0RmllbGRzIiwiX21lcmdlRmllbGRQYWlycyIsIlRSSVBfUE9JTlRfRklFTERTIiwiX3JlZjQiLCJ0eXBlIiwicmVwbGFjZSIsInRyaW0iLCJzcGxpdCIsImV2ZXJ5Iiwic2VnIiwiaW5jbHVkZXMiLCJBTExfRklFTERfVFlQRVMiLCJnZW9qc29uIiwiZ2VvYXJyb3ciLCJzbGljZSIsIm1hcCIsIl9yZWY1IiwiZm9ybWF0IiwiZ2V0RGVmYXVsdFRvb2x0aXBGb3JtYXQiLCJ0aW1lc3RhbXAiLCJUT09MVElQX0ZPUk1BVFMiLCJEQVRFX1RJTUVfTF9MVFMiLCJUT09MVElQX0tFWSIsImRhdGUiLCJEQVRFX0wiLCJwYWlycyIsInBhaXIiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ2V0VG9vbHRpcERpc3BsYXlEZWx0YVZhbHVlIiwiX3JlZjYiLCJmaWVsZCIsInZhbHVlIiwicHJpbWFyeVZhbHVlIiwiY29tcGFyZVR5cGUiLCJkaXNwbGF5RGVsdGFWYWx1ZSIsImludGVnZXIiLCJyZWFsIiwiaXNOdW1iZXIiLCJkZWx0YVZhbHVlIiwiQ09NUEFSRV9UWVBFUyIsIlJFTEFUSVZFIiwiZGVsdGFGb3JtYXQiLCJERUNJTUFMX1BFUkNFTlRfRlVMTF8yIiwiZGlzcGxheUZvcm1hdCIsIkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8zIiwiZ2V0Rm9ybWF0dGVyIiwiZGVmYXVsdEZvcm1hdHRlciIsImRlbHRhRmlyc3RDaGFyIiwiY2hhckF0IiwiZ2V0VG9vbHRpcERpc3BsYXlWYWx1ZSIsIl9yZWY3IiwiaXRlbSIsIm5vdE51bGxvclVuZGVmaW5lZCIsInBhcnNlRmllbGRWYWx1ZSIsIlpPT01fT1BBQ0lUWV9SQU5HRSIsIkRFRkFVTFRfWk9PTV9PUEFDSVRZX1NUT1BTIiwiYXBwZWFyIiwiZnVsbCIsImZhZGUiLCJnb25lIiwiWk9PTV9PUEFDSVRZX1NUT1BfS0VZUyIsImlzT3JkZXJlZFpvb21PcGFjaXR5U3RvcHMiLCJzdG9wcyIsIk51bWJlciIsImlzRmluaXRlIiwiem9vbU9wYWNpdHlGYWN0b3IiLCJ6b29tIiwic3BhbiIsImdldExheWVyWm9vbU9wYWNpdHlGYWN0b3IiLCJsYXllcklkIiwiaW50ZXJhY3Rpb25Db25maWciLCJfem9vbU9wYWNpdHkkY29uZmlnIiwiem9vbU9wYWNpdHkiLCJlbmFibGVkIiwiY29udHJvbGxlciIsImNvbmZpZyIsImNvbnRyb2xsZXJzIiwiX2l0ZW0kbGF5ZXJJZHMiLCJsYXllcklkcyIsInNldFpvb21PcGFjaXR5U3RvcCIsImtleSIsIm1pblpvb20iLCJtYXhab29tIiwibmV4dCIsImNsYW1wZWQiLCJNYXRoIiwibWluIiwibWF4Iiwicm91bmQiLCJpbmRleCIsImluZGV4T2YiLCJpIiwic3RvcEtleSIsImNvbWJpbmVab29tT3BhY2l0eUNvbnRyb2xsZXJzIiwiY29uZmlncyIsInNlZW4iLCJTZXQiLCJoYXMiLCJhZGQiLCJyZW1vdmVMYXllckZyb21ab29tT3BhY2l0eSIsIl96b29tT3BhY2l0eSRjb25maWcyIiwiY2hhbmdlZCIsIm5leHRDb250cm9sbGVycyIsIl9jb250cm9sbGVyJGxheWVySWRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyYWN0aW9uLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7XG4gIERFRkFVTFRfVE9PTFRJUF9GSUVMRFMsXG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgVFJJUF9QT0lOVF9GSUVMRFMsXG4gIFRPT0xUSVBfRk9STUFUUyxcbiAgVE9PTFRJUF9LRVksXG4gIENPTVBBUkVfVFlQRVNcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge1xuICBGaWVsZCxcbiAgSW50ZXJhY3Rpb25Db25maWcsXG4gIFRvb2x0aXBGaWVsZCxcbiAgQ29tcGFyZVR5cGUsXG4gIFpvb21PcGFjaXR5Q29udHJvbGxlcixcbiAgWm9vbU9wYWNpdHlTdG9wc1xufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7cGFyc2VGaWVsZFZhbHVlLCBnZXRGb3JtYXR0ZXIsIGlzTnVtYmVyLCBkZWZhdWx0Rm9ybWF0dGVyfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5cbi8qKlxuICogTWludXMgc2lnbiB1c2VkIGluIHRvb2x0aXAgZm9ybWF0dGluZy5cbiAqIFxcdTIyMTIgb3IgXFx1MDAyRCBpcyB0aGUgbWludXMgc2lnbiB0aGF0IGQzLWZvcm1hdCB1c2VzIGZvciBkZWNpbWFsIG51bWJlciBmb3JtYXR0aW5nXG4gKiBkMy1mb3JtYXQgMi4wIHVzZXMgXFx1MDAyRFxuICovXG5leHBvcnQgY29uc3QgVE9PTFRJUF9NSU5VU19TSUdOID0gJ1xcdTIyMTInO1xuLy8gYm90aCBhcmUgcG9zaWJsZSBuZWdhdGl2ZSBzaWduc1xuZXhwb3J0IGNvbnN0IE5FR0FUSVZFX1NJR05TID0gWydcXHUwMDJEJywgJ1xcdTIyMTInXTtcblxuZXhwb3J0IGNvbnN0IEJSVVNIX0NPTkZJRzoge1xuICByYW5nZTogW251bWJlciwgbnVtYmVyXTtcbn0gPSB7XG4gIHJhbmdlOiBbMCwgNTBdXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZEZpZWxkc1RvU2hvdyh7XG4gIGZpZWxkcyxcbiAgaWQsXG4gIG1heERlZmF1bHRUb29sdGlwc1xufToge1xuICBmaWVsZHM6IEZpZWxkW107XG4gIGlkOiBzdHJpbmc7XG4gIG1heERlZmF1bHRUb29sdGlwczogbnVtYmVyO1xufSk6IHtcbiAgW2tleTogc3RyaW5nXTogVG9vbHRpcEZpZWxkW107XG59IHtcbiAgLy8gZmlyc3QgZmluZCBkZWZhdWx0IHRvb2x0aXAgZmllbGRzIGZvciB0cmlwc1xuICBjb25zdCBmaWVsZHNUb1Nob3cgPSBERUZBVUxUX1RPT0xUSVBfRklFTERTLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgIGlmIChmaWVsZHMuZmluZCgoe25hbWV9KSA9PiBjdXJyLm5hbWUgPT09IG5hbWUpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBwcmV2LnB1c2goY3Vycik7XG4gICAgfVxuICAgIHJldHVybiBwcmV2O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBbaWRdOiBmaWVsZHNUb1Nob3cubGVuZ3RoID8gZmllbGRzVG9TaG93IDogYXV0b0ZpbmRUb29sdGlwRmllbGRzKGZpZWxkcywgbWF4RGVmYXVsdFRvb2x0aXBzKVxuICB9O1xufVxuXG5mdW5jdGlvbiBhdXRvRmluZFRvb2x0aXBGaWVsZHMoZmllbGRzLCBtYXhEZWZhdWx0VG9vbHRpcHMpIHtcbiAgY29uc3QgcHRGaWVsZHMgPSBfbWVyZ2VGaWVsZFBhaXJzKFRSSVBfUE9JTlRfRklFTERTKTtcbiAgLy8gZmlsdGVyIG91dCB0aGUgZGVmYXVsdCBmaWVsZHMgdGhhdCBjb250YWlucyBsYXQgYW5kIGxuZyBhbmQgYW55IGdlb21ldHJ5XG4gIGNvbnN0IGZpZWxkc1RvU2hvdyA9IGZpZWxkcy5maWx0ZXIoXG4gICAgKHtuYW1lLCB0eXBlfSkgPT5cbiAgICAgIG5hbWVcbiAgICAgICAgLnJlcGxhY2UoL1tfLC5dKy9nLCAnICcpXG4gICAgICAgIC50cmltKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLmV2ZXJ5KHNlZyA9PiAhcHRGaWVsZHMuaW5jbHVkZXMoc2VnKSkgJiZcbiAgICAgIHR5cGUgIT09IEFMTF9GSUVMRF9UWVBFUy5nZW9qc29uICYmXG4gICAgICB0eXBlICE9PSBBTExfRklFTERfVFlQRVMuZ2VvYXJyb3cgJiZcbiAgICAgIHR5cGUgIT09ICdvYmplY3QnXG4gICk7XG5cbiAgcmV0dXJuIGZpZWxkc1RvU2hvdy5zbGljZSgwLCBtYXhEZWZhdWx0VG9vbHRpcHMpLm1hcCgoe25hbWUsIHR5cGV9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWUsXG4gICAgICBmb3JtYXQ6IGdldERlZmF1bHRUb29sdGlwRm9ybWF0KHR5cGUpXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRUb29sdGlwRm9ybWF0KHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXApIHtcbiAgICByZXR1cm4gVE9PTFRJUF9GT1JNQVRTLkRBVEVfVElNRV9MX0xUU1tUT09MVElQX0tFWV07XG4gIH1cbiAgaWYgKHR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5kYXRlKSB7XG4gICAgcmV0dXJuIFRPT0xUSVBfRk9STUFUUy5EQVRFX0xbVE9PTFRJUF9LRVldO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBfbWVyZ2VGaWVsZFBhaXJzKHBhaXJzKSB7XG4gIHJldHVybiBwYWlycy5yZWR1Y2UoKHByZXYsIHBhaXIpID0+IFsuLi5wcmV2LCAuLi5wYWlyXSwgW10pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcERpc3BsYXlEZWx0YVZhbHVlKHtcbiAgZmllbGQsXG4gIHZhbHVlLFxuICBwcmltYXJ5VmFsdWUsXG4gIGNvbXBhcmVUeXBlXG59OiB7XG4gIGZpZWxkOiBGaWVsZDtcbiAgdmFsdWU6IGFueTtcbiAgcHJpbWFyeVZhbHVlOiBhbnk7XG4gIGNvbXBhcmVUeXBlPzogQ29tcGFyZVR5cGU7XG59KTogc3RyaW5nIHwgbnVsbCB7XG4gIGxldCBkaXNwbGF5RGVsdGFWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKFxuICAgIC8vIGNvbXBhcmlzb24gbW9kZSBvbmx5IHdvcmtzIGZvciBudW1lcmljIGZpZWxkXG4gICAgZmllbGQudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIgfHxcbiAgICBmaWVsZC50eXBlID09PSBBTExfRklFTERfVFlQRVMucmVhbFxuICApIHtcbiAgICBpZiAoaXNOdW1iZXIocHJpbWFyeVZhbHVlKSAmJiBpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGRlbHRhVmFsdWUgPVxuICAgICAgICBjb21wYXJlVHlwZSA9PT0gQ09NUEFSRV9UWVBFUy5SRUxBVElWRSA/IHZhbHVlIC8gcHJpbWFyeVZhbHVlIC0gMSA6IHZhbHVlIC0gcHJpbWFyeVZhbHVlO1xuICAgICAgY29uc3QgZGVsdGFGb3JtYXQgPVxuICAgICAgICBjb21wYXJlVHlwZSA9PT0gQ09NUEFSRV9UWVBFUy5SRUxBVElWRVxuICAgICAgICAgID8gVE9PTFRJUF9GT1JNQVRTLkRFQ0lNQUxfUEVSQ0VOVF9GVUxMXzJbVE9PTFRJUF9LRVldXG4gICAgICAgICAgOiBmaWVsZC5kaXNwbGF5Rm9ybWF0IHx8IFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX0RFQ0lNQUxfRklYRURfM1tUT09MVElQX0tFWV07XG5cbiAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gZ2V0Rm9ybWF0dGVyKGRlbHRhRm9ybWF0LCBmaWVsZCkoZGVsdGFWYWx1ZSk7XG5cbiAgICAgIC8vIHNhZmVseSBjYXN0IHN0cmluZ1xuICAgICAgZGlzcGxheURlbHRhVmFsdWUgPSBkZWZhdWx0Rm9ybWF0dGVyKGRpc3BsYXlEZWx0YVZhbHVlKTtcbiAgICAgIGNvbnN0IGRlbHRhRmlyc3RDaGFyID0gZGlzcGxheURlbHRhVmFsdWUuY2hhckF0KDApO1xuXG4gICAgICBpZiAoZGVsdGFGaXJzdENoYXIgIT09ICcrJyAmJiAhTkVHQVRJVkVfU0lHTlMuaW5jbHVkZXMoZGVsdGFGaXJzdENoYXIpKSB7XG4gICAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gYCske2Rpc3BsYXlEZWx0YVZhbHVlfWA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gVE9PTFRJUF9NSU5VU19TSUdOO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXNwbGF5RGVsdGFWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBEaXNwbGF5VmFsdWUoe1xuICBpdGVtLFxuICBmaWVsZCxcbiAgdmFsdWVcbn06IHtcbiAgaXRlbTogVG9vbHRpcEZpZWxkIHwgdW5kZWZpbmVkO1xuICBmaWVsZDogRmllbGQ7XG4gIHZhbHVlOiBhbnk7XG59KTogc3RyaW5nIHtcbiAgaWYgKCFub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIGl0ZW0/LmZvcm1hdFxuICAgID8gZ2V0Rm9ybWF0dGVyKGl0ZW0/LmZvcm1hdCwgZmllbGQpKHZhbHVlKVxuICAgIDogZmllbGQuZGlzcGxheUZvcm1hdFxuICAgID8gZ2V0Rm9ybWF0dGVyKGZpZWxkLmRpc3BsYXlGb3JtYXQsIGZpZWxkKSh2YWx1ZSlcbiAgICA6IHBhcnNlRmllbGRWYWx1ZSh2YWx1ZSwgZmllbGQudHlwZSk7XG59XG5cbmV4cG9ydCBjb25zdCBaT09NX09QQUNJVFlfUkFOR0U6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMjRdO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9aT09NX09QQUNJVFlfU1RPUFM6IFpvb21PcGFjaXR5U3RvcHMgPSB7XG4gIGFwcGVhcjogMSxcbiAgZnVsbDogMyxcbiAgZmFkZTogOCxcbiAgZ29uZTogMTJcbn07XG5cbmNvbnN0IFpPT01fT1BBQ0lUWV9TVE9QX0tFWVMgPSBbJ2FwcGVhcicsICdmdWxsJywgJ2ZhZGUnLCAnZ29uZSddIGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBpc09yZGVyZWRab29tT3BhY2l0eVN0b3BzKHN0b3BzOiBab29tT3BhY2l0eVN0b3BzIHwgdW5kZWZpbmVkKTogc3RvcHMgaXMgWm9vbU9wYWNpdHlTdG9wcyB7XG4gIGlmICghc3RvcHMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qge2FwcGVhciwgZnVsbCwgZmFkZSwgZ29uZX0gPSBzdG9wcztcbiAgcmV0dXJuIChcbiAgICBbYXBwZWFyLCBmdWxsLCBmYWRlLCBnb25lXS5ldmVyeShcbiAgICAgIHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKVxuICAgICkgJiZcbiAgICBhcHBlYXIgPD0gZnVsbCAmJlxuICAgIGZ1bGwgPD0gZmFkZSAmJlxuICAgIGZhZGUgPD0gZ29uZVxuICApO1xufVxuXG4vKipcbiAqIDDigJMxIG11bHRpcGxpZXIgZm9yIGEgbGF5ZXIncyBvcGFjaXR5IGF0IGB6b29tYC5cbiAqIDAgYXQgYW5kIG91dHNpZGUgdGhlIGVudmVsb3BlLCByaXNpbmcgZnJvbSBhcHBlYXIgdG8gZnVsbCwgaG9sZGluZyB0aHJvdWdoIGZhZGUsIHRoZW4gZmFsbGluZyB0byBnb25lLlxuICogRXF1YWwgbmVpZ2hib3JzIGFyZSBhIHN0ZXAuIFVub3JkZXJlZCBzdG9wcyBsZWF2ZSBvcGFjaXR5IHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHpvb21PcGFjaXR5RmFjdG9yKHpvb206IG51bWJlciwgc3RvcHM6IFpvb21PcGFjaXR5U3RvcHMpOiBudW1iZXIge1xuICBpZiAoIWlzT3JkZXJlZFpvb21PcGFjaXR5U3RvcHMoc3RvcHMpIHx8ICFOdW1iZXIuaXNGaW5pdGUoem9vbSkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB7YXBwZWFyLCBmdWxsLCBmYWRlLCBnb25lfSA9IHN0b3BzO1xuICBpZiAoem9vbSA8PSBhcHBlYXIgfHwgem9vbSA+PSBnb25lKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKHpvb20gPCBmdWxsKSB7XG4gICAgY29uc3Qgc3BhbiA9IGZ1bGwgLSBhcHBlYXI7XG4gICAgcmV0dXJuIHNwYW4gPD0gMCA/IDEgOiAoem9vbSAtIGFwcGVhcikgLyBzcGFuO1xuICB9XG4gIGlmICh6b29tIDw9IGZhZGUpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCBzcGFuID0gZ29uZSAtIGZhZGU7XG4gIHJldHVybiBzcGFuIDw9IDAgPyAwIDogKGdvbmUgLSB6b29tKSAvIHNwYW47XG59XG5cbi8qKiBFbnZlbG9wZSBtdWx0aXBsaWVyIGZvciBvbmUgbGF5ZXIuIDEgd2hlbiBmYWRlLW9uLXpvb20gaXMgb2ZmIG9yIHRoZSBsYXllciBpcyBub3QgYXNzaWduZWQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJab29tT3BhY2l0eUZhY3RvcihcbiAgbGF5ZXJJZDogc3RyaW5nLFxuICB6b29tOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGludGVyYWN0aW9uQ29uZmlnPzogSW50ZXJhY3Rpb25Db25maWcgfCBudWxsXG4pOiBudW1iZXIge1xuICBjb25zdCB6b29tT3BhY2l0eSA9IGludGVyYWN0aW9uQ29uZmlnPy56b29tT3BhY2l0eTtcbiAgaWYgKCF6b29tT3BhY2l0eT8uZW5hYmxlZCB8fCB0eXBlb2Ygem9vbSAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCBjb250cm9sbGVyID0gem9vbU9wYWNpdHkuY29uZmlnPy5jb250cm9sbGVycz8uZmluZChpdGVtID0+XG4gICAgaXRlbS5sYXllcklkcz8uaW5jbHVkZXMobGF5ZXJJZClcbiAgKTtcbiAgaWYgKCFjb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIHpvb21PcGFjaXR5RmFjdG9yKHpvb20sIGNvbnRyb2xsZXIuc3RvcHMpO1xufVxuXG4vKiogV3JpdGUgb25lIHN0b3AgYW5kIHB1c2ggaXRzIG5laWdoYm9ycyBzbyBhcHBlYXIgPD0gZnVsbCA8PSBmYWRlIDw9IGdvbmUuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Wm9vbU9wYWNpdHlTdG9wKFxuICBzdG9wczogWm9vbU9wYWNpdHlTdG9wcyxcbiAga2V5OiBrZXlvZiBab29tT3BhY2l0eVN0b3BzLFxuICB2YWx1ZTogbnVtYmVyXG4pOiBab29tT3BhY2l0eVN0b3BzIHtcbiAgY29uc3QgW21pblpvb20sIG1heFpvb21dID0gWk9PTV9PUEFDSVRZX1JBTkdFO1xuICBjb25zdCBuZXh0OiBab29tT3BhY2l0eVN0b3BzID0gey4uLnN0b3BzfTtcbiAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWluKG1heFpvb20sIE1hdGgubWF4KG1pblpvb20sIHZhbHVlKSk7XG4gIG5leHRba2V5XSA9IE1hdGgucm91bmQoY2xhbXBlZCAqIDEwKSAvIDEwO1xuICBjb25zdCBpbmRleCA9IFpPT01fT1BBQ0lUWV9TVE9QX0tFWVMuaW5kZXhPZihrZXkpO1xuICBmb3IgKGxldCBpID0gaW5kZXggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGNvbnN0IHN0b3BLZXkgPSBaT09NX09QQUNJVFlfU1RPUF9LRVlTW2ldO1xuICAgIGlmIChuZXh0W3N0b3BLZXldID4gbmV4dFtaT09NX09QQUNJVFlfU1RPUF9LRVlTW2kgKyAxXV0pIHtcbiAgICAgIG5leHRbc3RvcEtleV0gPSBuZXh0W1pPT01fT1BBQ0lUWV9TVE9QX0tFWVNbaSArIDFdXTtcbiAgICB9XG4gIH1cbiAgZm9yIChsZXQgaSA9IGluZGV4ICsgMTsgaSA8IFpPT01fT1BBQ0lUWV9TVE9QX0tFWVMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBzdG9wS2V5ID0gWk9PTV9PUEFDSVRZX1NUT1BfS0VZU1tpXTtcbiAgICBpZiAobmV4dFtzdG9wS2V5XSA8IG5leHRbWk9PTV9PUEFDSVRZX1NUT1BfS0VZU1tpIC0gMV1dKSB7XG4gICAgICBuZXh0W3N0b3BLZXldID0gbmV4dFtaT09NX09QQUNJVFlfU1RPUF9LRVlTW2kgLSAxXV07XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXh0O1xufVxuXG4vKiogQ29uY2F0ZW5hdGUgY29udHJvbGxlcnMgYW5kIGtlZXAgdGhlIGZpcnN0IGFzc2lnbm1lbnQgb2YgZWFjaCBsYXllciBpZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lWm9vbU9wYWNpdHlDb250cm9sbGVycyhcbiAgY29uZmlnczogQXJyYXk8e2NvbnRyb2xsZXJzPzogWm9vbU9wYWNpdHlDb250cm9sbGVyW119IHwgbnVsbCB8IHVuZGVmaW5lZD5cbik6IFpvb21PcGFjaXR5Q29udHJvbGxlcltdIHtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBjb250cm9sbGVyczogWm9vbU9wYWNpdHlDb250cm9sbGVyW10gPSBbXTtcbiAgY29uZmlncy5mb3JFYWNoKGNvbmZpZyA9PiB7XG4gICAgKGNvbmZpZz8uY29udHJvbGxlcnMgfHwgW10pLmZvckVhY2goY29udHJvbGxlciA9PiB7XG4gICAgICBjb25zdCBsYXllcklkcyA9IChjb250cm9sbGVyLmxheWVySWRzIHx8IFtdKS5maWx0ZXIoaWQgPT4ge1xuICAgICAgICBpZiAoc2Vlbi5oYXMoaWQpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHNlZW4uYWRkKGlkKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICAgIGlmIChsYXllcklkcy5sZW5ndGggfHwgIShjb250cm9sbGVyLmxheWVySWRzIHx8IFtdKS5sZW5ndGgpIHtcbiAgICAgICAgY29udHJvbGxlcnMucHVzaCh7XG4gICAgICAgICAgLi4uY29udHJvbGxlcixcbiAgICAgICAgICBzdG9wczogey4uLmNvbnRyb2xsZXIuc3RvcHN9LFxuICAgICAgICAgIGxheWVySWRzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGNvbnRyb2xsZXJzO1xufVxuXG4vKiogRHJvcCBhIGRlbGV0ZWQgbGF5ZXIgZnJvbSBmYWRlLW9uLXpvb20gY29udHJvbGxlcnMuIFJldHVybnMgdGhlIHNhbWUgY29uZmlnIHdoZW4gbm90aGluZyBjaGFuZ2VzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUxheWVyRnJvbVpvb21PcGFjaXR5PFxuICBUIGV4dGVuZHMge3pvb21PcGFjaXR5PzogSW50ZXJhY3Rpb25Db25maWdbJ3pvb21PcGFjaXR5J119XG4+KGludGVyYWN0aW9uQ29uZmlnOiBULCBsYXllcklkOiBzdHJpbmcpOiBUIHtcbiAgY29uc3Qgem9vbU9wYWNpdHkgPSBpbnRlcmFjdGlvbkNvbmZpZz8uem9vbU9wYWNpdHk7XG4gIGlmICghem9vbU9wYWNpdHkpIHtcbiAgICByZXR1cm4gaW50ZXJhY3Rpb25Db25maWc7XG4gIH1cbiAgY29uc3QgY29udHJvbGxlcnMgPSB6b29tT3BhY2l0eS5jb25maWc/LmNvbnRyb2xsZXJzO1xuICBpZiAoIWNvbnRyb2xsZXJzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gaW50ZXJhY3Rpb25Db25maWc7XG4gIH1cbiAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgY29uc3QgbmV4dENvbnRyb2xsZXJzID0gY29udHJvbGxlcnMubWFwKGNvbnRyb2xsZXIgPT4ge1xuICAgIGlmICghY29udHJvbGxlci5sYXllcklkcz8uaW5jbHVkZXMobGF5ZXJJZCkpIHtcbiAgICAgIHJldHVybiBjb250cm9sbGVyO1xuICAgIH1cbiAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29udHJvbGxlcixcbiAgICAgIGxheWVySWRzOiBjb250cm9sbGVyLmxheWVySWRzLmZpbHRlcihpZCA9PiBpZCAhPT0gbGF5ZXJJZClcbiAgICB9O1xuICB9KTtcbiAgaWYgKCFjaGFuZ2VkKSB7XG4gICAgcmV0dXJuIGludGVyYWN0aW9uQ29uZmlnO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uaW50ZXJhY3Rpb25Db25maWcsXG4gICAgem9vbU9wYWNpdHk6IHtcbiAgICAgIC4uLnpvb21PcGFjaXR5LFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLnpvb21PcGFjaXR5LmNvbmZpZyxcbiAgICAgICAgY29udHJvbGxlcnM6IG5leHRDb250cm9sbGVyc1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFpQkEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQTJELFNBQUFHLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxj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QyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBQ0YsT0FBT0YsV0FBVztBQUNwQjs7QUFFQTtBQUNPLFNBQVN1QiwwQkFBMEJBLENBRXhDN0IsaUJBQW9CLEVBQUVELE9BQWUsRUFBSztFQUFBLElBQUErQixvQkFBQTtFQUMxQyxJQUFNNUIsV0FBVyxHQUFHRixpQkFBaUIsYUFBakJBLGlCQUFpQix1QkFBakJBLGlCQUFpQixDQUFFRSxXQUFXO0VBQ2xELElBQUksQ0FBQ0EsV0FBVyxFQUFFO0lBQ2hCLE9BQU9GLGlCQUFpQjtFQUMxQjtFQUNBLElBQU1NLFdBQVcsSUFBQXdCLG9CQUFBLEdBQUc1QixXQUFXLENBQUNHLE1BQU0sY0FBQXlCLG9CQUFBLHVCQUFsQkEsb0JBQUEsQ0FBb0J4QixXQUFXO0VBQ25ELElBQUksRUFBQ0EsV0FBVyxhQUFYQSxXQUFXLGVBQVhBLFdBQVcsQ0FBRXRHLE1BQU0sR0FBRTtJQUN4QixPQUFPZ0csaUJBQWlCO0VBQzFCO0VBQ0EsSUFBSStCLE9BQU8sR0FBRyxLQUFLO0VBQ25CLElBQU1DLGVBQWUsR0FBRzFCLFdBQVcsQ0FBQzlELEdBQUcsQ0FBQyxVQUFBNEQsVUFBVSxFQUFJO0lBQUEsSUFBQTZCLG9CQUFBO0lBQ3BELElBQUksR0FBQUEsb0JBQUEsR0FBQzdCLFVBQVUsQ0FBQ0ksUUFBUSxjQUFBeUIsb0JBQUEsZUFBbkJBLG9CQUFBLENBQXFCOUYsUUFBUSxDQUFDNEQsT0FBTyxDQUFDLEdBQUU7TUFDM0MsT0FBT0ssVUFBVTtJQUNuQjtJQUNBMkIsT0FBTyxHQUFHLElBQUk7SUFDZCxPQUFBakksYUFBQSxDQUFBQSxhQUFBLEtBQ0tzRyxVQUFVO01BQ2JJLFFBQVEsRUFBRUosVUFBVSxDQUFDSSxRQUFRLENBQUMvRyxNQUFNLENBQUMsVUFBQXFCLEVBQUU7UUFBQSxPQUFJQSxFQUFFLEtBQUtpRixPQUFPO01BQUE7SUFBQztFQUU5RCxDQUFDLENBQUM7RUFDRixJQUFJLENBQUNnQyxPQUFPLEVBQUU7SUFDWixPQUFPL0IsaUJBQWlCO0VBQzFCO0VBQ0EsT0FBQWxHLGFBQUEsQ0FBQUEsYUFBQSxLQUNLa0csaUJBQWlCO0lBQ3BCRSxXQUFXLEVBQUFwRyxhQUFBLENBQUFBLGFBQUEsS0FDTm9HLFdBQVc7TUFDZEcsTUFBTSxFQUFBdkcsYUFBQSxDQUFBQSxhQUFBLEtBQ0RvRyxXQUFXLENBQUNHLE1BQU07UUFDckJDLFdBQVcsRUFBRTBCO01BQWU7SUFDN0I7RUFDRjtBQUVMIiwiaWdub3JlTGlzdCI6W119
275
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl91dGlscyIsIl9jb21tb25VdGlscyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiVE9PTFRJUF9NSU5VU19TSUdOIiwiZXhwb3J0cyIsIk5FR0FUSVZFX1NJR05TIiwiQlJVU0hfQ09ORklHIiwicmFuZ2UiLCJmaW5kRmllbGRzVG9TaG93IiwiX3JlZiIsImZpZWxkcyIsImlkIiwibWF4RGVmYXVsdFRvb2x0aXBzIiwiZmllbGRzVG9TaG93IiwiREVGQVVMVF9UT09MVElQX0ZJRUxEUyIsInJlZHVjZSIsInByZXYiLCJjdXJyIiwiZmluZCIsIl9yZWYyIiwibmFtZSIsImF1dG9GaW5kVG9vbHRpcEZpZWxkcyIsInB0RmllbGRzIiwiX21lcmdlRmllbGRQYWlycyIsIlRSSVBfUE9JTlRfRklFTERTIiwiX3JlZjQiLCJ0eXBlIiwicmVwbGFjZSIsInRyaW0iLCJzcGxpdCIsImV2ZXJ5Iiwic2VnIiwiaW5jbHVkZXMiLCJBTExfRklFTERfVFlQRVMiLCJnZW9qc29uIiwiZ2VvYXJyb3ciLCJzbGljZSIsIm1hcCIsIl9yZWY1IiwiZm9ybWF0IiwiZ2V0RGVmYXVsdFRvb2x0aXBGb3JtYXQiLCJ0aW1lc3RhbXAiLCJUT09MVElQX0ZPUk1BVFMiLCJEQVRFX1RJTUVfTF9MVFMiLCJUT09MVElQX0tFWSIsImRhdGUiLCJEQVRFX0wiLCJwYWlycyIsInBhaXIiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ2V0VG9vbHRpcERpc3BsYXlEZWx0YVZhbHVlIiwiX3JlZjYiLCJmaWVsZCIsInZhbHVlIiwicHJpbWFyeVZhbHVlIiwiY29tcGFyZVR5cGUiLCJkaXNwbGF5RGVsdGFWYWx1ZSIsImludGVnZXIiLCJyZWFsIiwiaXNOdW1iZXIiLCJkZWx0YVZhbHVlIiwiQ09NUEFSRV9UWVBFUyIsIlJFTEFUSVZFIiwiZGVsdGFGb3JtYXQiLCJERUNJTUFMX1BFUkNFTlRfRlVMTF8yIiwiZGlzcGxheUZvcm1hdCIsIkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8zIiwiZ2V0Rm9ybWF0dGVyIiwiZGVmYXVsdEZvcm1hdHRlciIsImRlbHRhRmlyc3RDaGFyIiwiY2hhckF0IiwiZ2V0VG9vbHRpcERpc3BsYXlWYWx1ZSIsIl9yZWY3IiwiaXRlbSIsInRpbWV6b25lIiwibm90TnVsbG9yVW5kZWZpbmVkIiwicGFyc2VGaWVsZFZhbHVlIiwiWk9PTV9PUEFDSVRZX1JBTkdFIiwiWk9PTV9PUEFDSVRZX0FOTk9UQVRJT05fUFJFRklYIiwiZ2V0Wm9vbU9wYWNpdHlBbm5vdGF0aW9uVGFyZ2V0SWQiLCJhbm5vdGF0aW9uSWQiLCJERUZBVUxUX1pPT01fT1BBQ0lUWV9TVE9QUyIsImFwcGVhciIsImZ1bGwiLCJmYWRlIiwiZ29uZSIsIlpPT01fT1BBQ0lUWV9TVE9QX0tFWVMiLCJpc09yZGVyZWRab29tT3BhY2l0eVN0b3BzIiwic3RvcHMiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInpvb21PcGFjaXR5RmFjdG9yIiwiem9vbSIsInNwYW4iLCJnZXRMYXllclpvb21PcGFjaXR5RmFjdG9yIiwibGF5ZXJJZCIsImludGVyYWN0aW9uQ29uZmlnIiwiX3pvb21PcGFjaXR5JGNvbmZpZyIsInpvb21PcGFjaXR5IiwiZW5hYmxlZCIsImNvbnRyb2xsZXIiLCJjb25maWciLCJjb250cm9sbGVycyIsIl9pdGVtJGxheWVySWRzIiwibGF5ZXJJZHMiLCJzZXRab29tT3BhY2l0eVN0b3AiLCJrZXkiLCJtaW5ab29tIiwibWF4Wm9vbSIsIm5leHQiLCJjbGFtcGVkIiwiTWF0aCIsIm1pbiIsIm1heCIsInJvdW5kIiwiaW5kZXgiLCJpbmRleE9mIiwiaSIsInN0b3BLZXkiLCJjb21iaW5lWm9vbU9wYWNpdHlDb250cm9sbGVycyIsImNvbmZpZ3MiLCJzZWVuIiwiU2V0IiwiaGFzIiwiYWRkIiwicmVtb3ZlTGF5ZXJGcm9tWm9vbU9wYWNpdHkiLCJfem9vbU9wYWNpdHkkY29uZmlnMiIsImNoYW5nZWQiLCJuZXh0Q29udHJvbGxlcnMiLCJfY29udHJvbGxlciRsYXllcklkcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmFjdGlvbi11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBERUZBVUxUX1RPT0xUSVBfRklFTERTLFxuICBBTExfRklFTERfVFlQRVMsXG4gIFRSSVBfUE9JTlRfRklFTERTLFxuICBUT09MVElQX0ZPUk1BVFMsXG4gIFRPT0xUSVBfS0VZLFxuICBDT01QQVJFX1RZUEVTXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtcbiAgRmllbGQsXG4gIEludGVyYWN0aW9uQ29uZmlnLFxuICBUb29sdGlwRmllbGQsXG4gIENvbXBhcmVUeXBlLFxuICBab29tT3BhY2l0eUNvbnRyb2xsZXIsXG4gIFpvb21PcGFjaXR5U3RvcHNcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge3BhcnNlRmllbGRWYWx1ZSwgZ2V0Rm9ybWF0dGVyLCBpc051bWJlciwgZGVmYXVsdEZvcm1hdHRlcn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuXG4vKipcbiAqIE1pbnVzIHNpZ24gdXNlZCBpbiB0b29sdGlwIGZvcm1hdHRpbmcuXG4gKiBcXHUyMjEyIG9yIFxcdTAwMkQgaXMgdGhlIG1pbnVzIHNpZ24gdGhhdCBkMy1mb3JtYXQgdXNlcyBmb3IgZGVjaW1hbCBudW1iZXIgZm9ybWF0dGluZ1xuICogZDMtZm9ybWF0IDIuMCB1c2VzIFxcdTAwMkRcbiAqL1xuZXhwb3J0IGNvbnN0IFRPT0xUSVBfTUlOVVNfU0lHTiA9ICdcXHUyMjEyJztcbi8vIGJvdGggYXJlIHBvc2libGUgbmVnYXRpdmUgc2lnbnNcbmV4cG9ydCBjb25zdCBORUdBVElWRV9TSUdOUyA9IFsnXFx1MDAyRCcsICdcXHUyMjEyJ107XG5cbmV4cG9ydCBjb25zdCBCUlVTSF9DT05GSUc6IHtcbiAgcmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG59ID0ge1xuICByYW5nZTogWzAsIDUwXVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRGaWVsZHNUb1Nob3coe1xuICBmaWVsZHMsXG4gIGlkLFxuICBtYXhEZWZhdWx0VG9vbHRpcHNcbn06IHtcbiAgZmllbGRzOiBGaWVsZFtdO1xuICBpZDogc3RyaW5nO1xuICBtYXhEZWZhdWx0VG9vbHRpcHM6IG51bWJlcjtcbn0pOiB7XG4gIFtrZXk6IHN0cmluZ106IFRvb2x0aXBGaWVsZFtdO1xufSB7XG4gIC8vIGZpcnN0IGZpbmQgZGVmYXVsdCB0b29sdGlwIGZpZWxkcyBmb3IgdHJpcHNcbiAgY29uc3QgZmllbGRzVG9TaG93ID0gREVGQVVMVF9UT09MVElQX0ZJRUxEUy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICBpZiAoZmllbGRzLmZpbmQoKHtuYW1lfSkgPT4gY3Vyci5uYW1lID09PSBuYW1lKSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcHJldi5wdXNoKGN1cnIpO1xuICAgIH1cbiAgICByZXR1cm4gcHJldjtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7XG4gICAgW2lkXTogZmllbGRzVG9TaG93Lmxlbmd0aCA/IGZpZWxkc1RvU2hvdyA6IGF1dG9GaW5kVG9vbHRpcEZpZWxkcyhmaWVsZHMsIG1heERlZmF1bHRUb29sdGlwcylcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXV0b0ZpbmRUb29sdGlwRmllbGRzKGZpZWxkcywgbWF4RGVmYXVsdFRvb2x0aXBzKSB7XG4gIGNvbnN0IHB0RmllbGRzID0gX21lcmdlRmllbGRQYWlycyhUUklQX1BPSU5UX0ZJRUxEUyk7XG4gIC8vIGZpbHRlciBvdXQgdGhlIGRlZmF1bHQgZmllbGRzIHRoYXQgY29udGFpbnMgbGF0IGFuZCBsbmcgYW5kIGFueSBnZW9tZXRyeVxuICBjb25zdCBmaWVsZHNUb1Nob3cgPSBmaWVsZHMuZmlsdGVyKFxuICAgICh7bmFtZSwgdHlwZX0pID0+XG4gICAgICBuYW1lXG4gICAgICAgIC5yZXBsYWNlKC9bXywuXSsvZywgJyAnKVxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5ldmVyeShzZWcgPT4gIXB0RmllbGRzLmluY2x1ZGVzKHNlZykpICYmXG4gICAgICB0eXBlICE9PSBBTExfRklFTERfVFlQRVMuZ2VvanNvbiAmJlxuICAgICAgdHlwZSAhPT0gQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93ICYmXG4gICAgICB0eXBlICE9PSAnb2JqZWN0J1xuICApO1xuXG4gIHJldHVybiBmaWVsZHNUb1Nob3cuc2xpY2UoMCwgbWF4RGVmYXVsdFRvb2x0aXBzKS5tYXAoKHtuYW1lLCB0eXBlfSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgZm9ybWF0OiBnZXREZWZhdWx0VG9vbHRpcEZvcm1hdCh0eXBlKVxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0VG9vbHRpcEZvcm1hdCh0eXBlPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICh0eXBlID09PSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wKSB7XG4gICAgcmV0dXJuIFRPT0xUSVBfRk9STUFUUy5EQVRFX1RJTUVfTF9MVFNbVE9PTFRJUF9LRVldO1xuICB9XG4gIGlmICh0eXBlID09PSBBTExfRklFTERfVFlQRVMuZGF0ZSkge1xuICAgIHJldHVybiBUT09MVElQX0ZPUk1BVFMuREFURV9MW1RPT0xUSVBfS0VZXTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gX21lcmdlRmllbGRQYWlycyhwYWlycykge1xuICByZXR1cm4gcGFpcnMucmVkdWNlKChwcmV2LCBwYWlyKSA9PiBbLi4ucHJldiwgLi4ucGFpcl0sIFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBEaXNwbGF5RGVsdGFWYWx1ZSh7XG4gIGZpZWxkLFxuICB2YWx1ZSxcbiAgcHJpbWFyeVZhbHVlLFxuICBjb21wYXJlVHlwZVxufToge1xuICBmaWVsZDogRmllbGQ7XG4gIHZhbHVlOiBhbnk7XG4gIHByaW1hcnlWYWx1ZTogYW55O1xuICBjb21wYXJlVHlwZT86IENvbXBhcmVUeXBlO1xufSk6IHN0cmluZyB8IG51bGwge1xuICBsZXQgZGlzcGxheURlbHRhVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGlmIChcbiAgICAvLyBjb21wYXJpc29uIG1vZGUgb25seSB3b3JrcyBmb3IgbnVtZXJpYyBmaWVsZFxuICAgIGZpZWxkLnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyIHx8XG4gICAgZmllbGQudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnJlYWxcbiAgKSB7XG4gICAgaWYgKGlzTnVtYmVyKHByaW1hcnlWYWx1ZSkgJiYgaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICBjb25zdCBkZWx0YVZhbHVlID1cbiAgICAgICAgY29tcGFyZVR5cGUgPT09IENPTVBBUkVfVFlQRVMuUkVMQVRJVkUgPyB2YWx1ZSAvIHByaW1hcnlWYWx1ZSAtIDEgOiB2YWx1ZSAtIHByaW1hcnlWYWx1ZTtcbiAgICAgIGNvbnN0IGRlbHRhRm9ybWF0ID1cbiAgICAgICAgY29tcGFyZVR5cGUgPT09IENPTVBBUkVfVFlQRVMuUkVMQVRJVkVcbiAgICAgICAgICA/IFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX1BFUkNFTlRfRlVMTF8yW1RPT0xUSVBfS0VZXVxuICAgICAgICAgIDogZmllbGQuZGlzcGxheUZvcm1hdCB8fCBUT09MVElQX0ZPUk1BVFMuREVDSU1BTF9ERUNJTUFMX0ZJWEVEXzNbVE9PTFRJUF9LRVldO1xuXG4gICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IGdldEZvcm1hdHRlcihkZWx0YUZvcm1hdCwgZmllbGQpKGRlbHRhVmFsdWUpO1xuXG4gICAgICAvLyBzYWZlbHkgY2FzdCBzdHJpbmdcbiAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gZGVmYXVsdEZvcm1hdHRlcihkaXNwbGF5RGVsdGFWYWx1ZSk7XG4gICAgICBjb25zdCBkZWx0YUZpcnN0Q2hhciA9IGRpc3BsYXlEZWx0YVZhbHVlLmNoYXJBdCgwKTtcblxuICAgICAgaWYgKGRlbHRhRmlyc3RDaGFyICE9PSAnKycgJiYgIU5FR0FUSVZFX1NJR05TLmluY2x1ZGVzKGRlbHRhRmlyc3RDaGFyKSkge1xuICAgICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IGArJHtkaXNwbGF5RGVsdGFWYWx1ZX1gO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IFRPT0xUSVBfTUlOVVNfU0lHTjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlzcGxheURlbHRhVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwRGlzcGxheVZhbHVlKHtcbiAgaXRlbSxcbiAgZmllbGQsXG4gIHZhbHVlLFxuICB0aW1lem9uZVxufToge1xuICBpdGVtOiBUb29sdGlwRmllbGQgfCB1bmRlZmluZWQ7XG4gIGZpZWxkOiBGaWVsZDtcbiAgdmFsdWU6IGFueTtcbiAgdGltZXpvbmU/OiBzdHJpbmcgfCBudWxsO1xufSk6IHN0cmluZyB7XG4gIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJldHVybiBpdGVtPy5mb3JtYXRcbiAgICA/IGdldEZvcm1hdHRlcihpdGVtPy5mb3JtYXQsIGZpZWxkLCB0aW1lem9uZSkodmFsdWUpXG4gICAgOiBmaWVsZC5kaXNwbGF5Rm9ybWF0XG4gICAgPyBnZXRGb3JtYXR0ZXIoZmllbGQuZGlzcGxheUZvcm1hdCwgZmllbGQsIHRpbWV6b25lKSh2YWx1ZSlcbiAgICA6IHBhcnNlRmllbGRWYWx1ZSh2YWx1ZSwgZmllbGQudHlwZSk7XG59XG5cbmV4cG9ydCBjb25zdCBaT09NX09QQUNJVFlfUkFOR0U6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMjRdO1xuXG5jb25zdCBaT09NX09QQUNJVFlfQU5OT1RBVElPTl9QUkVGSVggPSAnX19rZXBsZXJfYW5ub3RhdGlvbl9fOic7XG5cbi8qKiBSZXNlcnZlZCBmYWRlLW9uLXpvb20gdGFyZ2V0IGlkIGZvciBvbmUgbWFwIGFubm90YXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Wm9vbU9wYWNpdHlBbm5vdGF0aW9uVGFyZ2V0SWQoYW5ub3RhdGlvbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Wk9PTV9PUEFDSVRZX0FOTk9UQVRJT05fUFJFRklYfSR7YW5ub3RhdGlvbklkfWA7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1pPT01fT1BBQ0lUWV9TVE9QUzogWm9vbU9wYWNpdHlTdG9wcyA9IHtcbiAgYXBwZWFyOiAxLFxuICBmdWxsOiAzLFxuICBmYWRlOiA4LFxuICBnb25lOiAxMlxufTtcblxuY29uc3QgWk9PTV9PUEFDSVRZX1NUT1BfS0VZUyA9IFsnYXBwZWFyJywgJ2Z1bGwnLCAnZmFkZScsICdnb25lJ10gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGlzT3JkZXJlZFpvb21PcGFjaXR5U3RvcHMoc3RvcHM6IFpvb21PcGFjaXR5U3RvcHMgfCB1bmRlZmluZWQpOiBzdG9wcyBpcyBab29tT3BhY2l0eVN0b3BzIHtcbiAgaWYgKCFzdG9wcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCB7YXBwZWFyLCBmdWxsLCBmYWRlLCBnb25lfSA9IHN0b3BzO1xuICByZXR1cm4gKFxuICAgIFthcHBlYXIsIGZ1bGwsIGZhZGUsIGdvbmVdLmV2ZXJ5KFxuICAgICAgdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpXG4gICAgKSAmJlxuICAgIGFwcGVhciA8PSBmdWxsICYmXG4gICAgZnVsbCA8PSBmYWRlICYmXG4gICAgZmFkZSA8PSBnb25lXG4gICk7XG59XG5cbi8qKlxuICogMOKAkzEgbXVsdGlwbGllciBmb3IgYSBsYXllcidzIG9wYWNpdHkgYXQgYHpvb21gLlxuICogMCBhdCBhbmQgb3V0c2lkZSB0aGUgZW52ZWxvcGUsIHJpc2luZyBmcm9tIGFwcGVhciB0byBmdWxsLCBob2xkaW5nIHRocm91Z2ggZmFkZSwgdGhlbiBmYWxsaW5nIHRvIGdvbmUuXG4gKiBFcXVhbCBuZWlnaGJvcnMgYXJlIGEgc3RlcC4gVW5vcmRlcmVkIHN0b3BzIGxlYXZlIG9wYWNpdHkgdW5jaGFuZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gem9vbU9wYWNpdHlGYWN0b3Ioem9vbTogbnVtYmVyLCBzdG9wczogWm9vbU9wYWNpdHlTdG9wcyk6IG51bWJlciB7XG4gIGlmICghaXNPcmRlcmVkWm9vbU9wYWNpdHlTdG9wcyhzdG9wcykgfHwgIU51bWJlci5pc0Zpbml0ZSh6b29tKSkge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHthcHBlYXIsIGZ1bGwsIGZhZGUsIGdvbmV9ID0gc3RvcHM7XG4gIGlmICh6b29tIDw9IGFwcGVhciB8fCB6b29tID49IGdvbmUpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAoem9vbSA8IGZ1bGwpIHtcbiAgICBjb25zdCBzcGFuID0gZnVsbCAtIGFwcGVhcjtcbiAgICByZXR1cm4gc3BhbiA8PSAwID8gMSA6ICh6b29tIC0gYXBwZWFyKSAvIHNwYW47XG4gIH1cbiAgaWYgKHpvb20gPD0gZmFkZSkge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHNwYW4gPSBnb25lIC0gZmFkZTtcbiAgcmV0dXJuIHNwYW4gPD0gMCA/IDAgOiAoZ29uZSAtIHpvb20pIC8gc3Bhbjtcbn1cblxuLyoqIEVudmVsb3BlIG11bHRpcGxpZXIgZm9yIG9uZSBsYXllci4gMSB3aGVuIGZhZGUtb24tem9vbSBpcyBvZmYgb3IgdGhlIGxheWVyIGlzIG5vdCBhc3NpZ25lZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllclpvb21PcGFjaXR5RmFjdG9yKFxuICBsYXllcklkOiBzdHJpbmcsXG4gIHpvb206IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgaW50ZXJhY3Rpb25Db25maWc/OiBJbnRlcmFjdGlvbkNvbmZpZyB8IG51bGxcbik6IG51bWJlciB7XG4gIGNvbnN0IHpvb21PcGFjaXR5ID0gaW50ZXJhY3Rpb25Db25maWc/Lnpvb21PcGFjaXR5O1xuICBpZiAoIXpvb21PcGFjaXR5Py5lbmFibGVkIHx8IHR5cGVvZiB6b29tICE9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSB6b29tT3BhY2l0eS5jb25maWc/LmNvbnRyb2xsZXJzPy5maW5kKGl0ZW0gPT5cbiAgICBpdGVtLmxheWVySWRzPy5pbmNsdWRlcyhsYXllcklkKVxuICApO1xuICBpZiAoIWNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gem9vbU9wYWNpdHlGYWN0b3Ioem9vbSwgY29udHJvbGxlci5zdG9wcyk7XG59XG5cbi8qKiBXcml0ZSBvbmUgc3RvcCBhbmQgcHVzaCBpdHMgbmVpZ2hib3JzIHNvIGFwcGVhciA8PSBmdWxsIDw9IGZhZGUgPD0gZ29uZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRab29tT3BhY2l0eVN0b3AoXG4gIHN0b3BzOiBab29tT3BhY2l0eVN0b3BzLFxuICBrZXk6IGtleW9mIFpvb21PcGFjaXR5U3RvcHMsXG4gIHZhbHVlOiBudW1iZXJcbik6IFpvb21PcGFjaXR5U3RvcHMge1xuICBjb25zdCBbbWluWm9vbSwgbWF4Wm9vbV0gPSBaT09NX09QQUNJVFlfUkFOR0U7XG4gIGNvbnN0IG5leHQ6IFpvb21PcGFjaXR5U3RvcHMgPSB7Li4uc3RvcHN9O1xuICBjb25zdCBjbGFtcGVkID0gTWF0aC5taW4obWF4Wm9vbSwgTWF0aC5tYXgobWluWm9vbSwgdmFsdWUpKTtcbiAgbmV4dFtrZXldID0gTWF0aC5yb3VuZChjbGFtcGVkICogMTApIC8gMTA7XG4gIGNvbnN0IGluZGV4ID0gWk9PTV9PUEFDSVRZX1NUT1BfS0VZUy5pbmRleE9mKGtleSk7XG4gIGZvciAobGV0IGkgPSBpbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3Qgc3RvcEtleSA9IFpPT01fT1BBQ0lUWV9TVE9QX0tFWVNbaV07XG4gICAgaWYgKG5leHRbc3RvcEtleV0gPiBuZXh0W1pPT01fT1BBQ0lUWV9TVE9QX0tFWVNbaSArIDFdXSkge1xuICAgICAgbmV4dFtzdG9wS2V5XSA9IG5leHRbWk9PTV9PUEFDSVRZX1NUT1BfS0VZU1tpICsgMV1dO1xuICAgIH1cbiAgfVxuICBmb3IgKGxldCBpID0gaW5kZXggKyAxOyBpIDwgWk9PTV9PUEFDSVRZX1NUT1BfS0VZUy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHN0b3BLZXkgPSBaT09NX09QQUNJVFlfU1RPUF9LRVlTW2ldO1xuICAgIGlmIChuZXh0W3N0b3BLZXldIDwgbmV4dFtaT09NX09QQUNJVFlfU1RPUF9LRVlTW2kgLSAxXV0pIHtcbiAgICAgIG5leHRbc3RvcEtleV0gPSBuZXh0W1pPT01fT1BBQ0lUWV9TVE9QX0tFWVNbaSAtIDFdXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5leHQ7XG59XG5cbi8qKiBDb25jYXRlbmF0ZSBjb250cm9sbGVycyBhbmQga2VlcCB0aGUgZmlyc3QgYXNzaWdubWVudCBvZiBlYWNoIGxheWVyIGlkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVab29tT3BhY2l0eUNvbnRyb2xsZXJzKFxuICBjb25maWdzOiBBcnJheTx7Y29udHJvbGxlcnM/OiBab29tT3BhY2l0eUNvbnRyb2xsZXJbXX0gfCBudWxsIHwgdW5kZWZpbmVkPlxuKTogWm9vbU9wYWNpdHlDb250cm9sbGVyW10ge1xuICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IGNvbnRyb2xsZXJzOiBab29tT3BhY2l0eUNvbnRyb2xsZXJbXSA9IFtdO1xuICBjb25maWdzLmZvckVhY2goY29uZmlnID0+IHtcbiAgICAoY29uZmlnPy5jb250cm9sbGVycyB8fCBbXSkuZm9yRWFjaChjb250cm9sbGVyID0+IHtcbiAgICAgIGNvbnN0IGxheWVySWRzID0gKGNvbnRyb2xsZXIubGF5ZXJJZHMgfHwgW10pLmZpbHRlcihpZCA9PiB7XG4gICAgICAgIGlmIChzZWVuLmhhcyhpZCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgc2Vlbi5hZGQoaWQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGxheWVySWRzLmxlbmd0aCB8fCAhKGNvbnRyb2xsZXIubGF5ZXJJZHMgfHwgW10pLmxlbmd0aCkge1xuICAgICAgICBjb250cm9sbGVycy5wdXNoKHtcbiAgICAgICAgICAuLi5jb250cm9sbGVyLFxuICAgICAgICAgIHN0b3BzOiB7Li4uY29udHJvbGxlci5zdG9wc30sXG4gICAgICAgICAgbGF5ZXJJZHNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gY29udHJvbGxlcnM7XG59XG5cbi8qKiBEcm9wIGEgZGVsZXRlZCBsYXllciBmcm9tIGZhZGUtb24tem9vbSBjb250cm9sbGVycy4gUmV0dXJucyB0aGUgc2FtZSBjb25maWcgd2hlbiBub3RoaW5nIGNoYW5nZXMuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTGF5ZXJGcm9tWm9vbU9wYWNpdHk8XG4gIFQgZXh0ZW5kcyB7em9vbU9wYWNpdHk/OiBJbnRlcmFjdGlvbkNvbmZpZ1snem9vbU9wYWNpdHknXX1cbj4oaW50ZXJhY3Rpb25Db25maWc6IFQsIGxheWVySWQ6IHN0cmluZyk6IFQge1xuICBjb25zdCB6b29tT3BhY2l0eSA9IGludGVyYWN0aW9uQ29uZmlnPy56b29tT3BhY2l0eTtcbiAgaWYgKCF6b29tT3BhY2l0eSkge1xuICAgIHJldHVybiBpbnRlcmFjdGlvbkNvbmZpZztcbiAgfVxuICBjb25zdCBjb250cm9sbGVycyA9IHpvb21PcGFjaXR5LmNvbmZpZz8uY29udHJvbGxlcnM7XG4gIGlmICghY29udHJvbGxlcnM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBpbnRlcmFjdGlvbkNvbmZpZztcbiAgfVxuICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICBjb25zdCBuZXh0Q29udHJvbGxlcnMgPSBjb250cm9sbGVycy5tYXAoY29udHJvbGxlciA9PiB7XG4gICAgaWYgKCFjb250cm9sbGVyLmxheWVySWRzPy5pbmNsdWRlcyhsYXllcklkKSkge1xuICAgICAgcmV0dXJuIGNvbnRyb2xsZXI7XG4gICAgfVxuICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5jb250cm9sbGVyLFxuICAgICAgbGF5ZXJJZHM6IGNvbnRyb2xsZXIubGF5ZXJJZHMuZmlsdGVyKGlkID0+IGlkICE9PSBsYXllcklkKVxuICAgIH07XG4gIH0pO1xuICBpZiAoIWNoYW5nZWQpIHtcbiAgICByZXR1cm4gaW50ZXJhY3Rpb25Db25maWc7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5pbnRlcmFjdGlvbkNvbmZpZyxcbiAgICB6b29tT3BhY2l0eToge1xuICAgICAgLi4uem9vbU9wYWNpdHksXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uem9vbU9wYWNpdHkuY29uZmlnLFxuICAgICAgICBjb250cm9sbGVyczogbmV4dENvbnRyb2xsZXJzXG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl0sIm1hcHBpbmdz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
@@ -204,7 +204,8 @@ function getLayerHoverProp(_ref) {
204
204
  fields: fields,
205
205
  fieldsToShow: fieldsToShow,
206
206
  layer: layer,
207
- currentTime: animationConfig.currentTime
207
+ currentTime: animationConfig.currentTime,
208
+ timezone: interactionConfig.tooltip.config.timezone
208
209
  };
209
210
  }
210
211
  }
@@ -765,4 +766,4 @@ function areAnyDeckLayersLoading(layers) {
765
766
  return layer.internalState && !layer.isLoaded;
766
767
  });
767
768
  }
768
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbnN0YW50cyIsIl9sYXllcnMiLCJfdXRpbHMiLCJfY29tbW9uVXRpbHMiLCJfaW50ZXJhY3Rpb25VdGlscyIsIl9kZWNrZ2xMYXllcnMiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJmaW5kRGVmYXVsdExheWVyIiwiZGF0YXNldCIsImxheWVyQ2xhc3NlcyIsImxheWVyUHJvcHMiLCJyZWR1Y2UiLCJwcmV2aW91cyIsImxjIiwicmVzdWx0IiwiZmluZERlZmF1bHRMYXllclByb3BzIiwicHJvcHMiLCJmb3VuZExheWVycyIsImNvbmNhdCIsIm1hcCIsInAiLCJ0eXBlIiwiZGF0YUlkIiwiaWQiLCJpc1Zpc2libGUiLCJsYXllciIsInNldEluaXRpYWxMYXllckNvbmZpZyIsImRhdGFDb250YWluZXIiLCJtZXJnZUxheWVyVmlzQ29uZmlnRm9yTmV3RGF0YXNldHMiLCJzdGF0ZSIsInBhdGNoIiwiZGF0YXNldElkc1RvUGF0Y2giLCJoYXNEZWZpbmVkUGF0Y2hWYWx1ZSIsInNvbWUiLCJrZXkiLCJ1bmRlZmluZWQiLCJkYXRhc2V0SWRTZXQiLCJTZXQiLCJsYXllcnMiLCJjb25maWciLCJoYXMiLCJzZXR0aW5ncyIsInZpc0NvbmZpZ1NldHRpbmdzIiwiYWxsb3dlZEtleXMiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInBhcnRpYWwiLCJhY2MiLCJ1cGRhdGVMYXllclZpc0NvbmZpZyIsImNhbGN1bGF0ZUxheWVyRGF0YSIsIm9sZExheWVyRGF0YSIsImxheWVyRGF0YSIsImlzVmFsaWQiLCJfb2xkRGF0YVVwZGF0ZVRyaWdnZXJzIiwiaGFzQWxsQ29sdW1ucyIsImZvcm1hdExheWVyRGF0YSIsImRhdGFzZXRzIiwidXBkYXRlTGF5ZXJDb25maWciLCJlcnJvck1lc3NhZ2UiLCJlcnIiLCJDb25zb2xlIiwiZXJyb3IiLCJFcnJvciIsIm1lc3NhZ2UiLCJzdWJzdHJpbmciLCJnZXRMYXllckhvdmVyUHJvcCIsIl9yZWYiLCJhbmltYXRpb25Db25maWciLCJpbnRlcmFjdGlvbkNvbmZpZyIsImhvdmVySW5mbyIsImxheWVyc1RvUmVuZGVyIiwidG9vbHRpcCIsImVuYWJsZWQiLCJwaWNrZWQiLCJvYmplY3QiLCJvdmVybGF5IiwiaWR4IiwiaW5kZXgiLCJnZXRIb3ZlckRhdGEiLCJfZGF0YXNldHMkZGF0YUlkIiwiZmllbGRzIiwiZGF0YSIsImZpZWxkc1RvU2hvdyIsImN1cnJlbnRUaW1lIiwiWk9PTV9PUEFDSVRZX1BST1BfS0VZUyIsInNjYWxlWm9vbU9wYWNpdHlTdWJMYXllclByb3BzIiwic3ViTGF5ZXJQcm9wcyIsImZhY3RvciIsImNoYW5nZWQiLCJfaSIsIl9PYmplY3Qka2V5cyIsInN1YmxheWVyIiwiX3R5cGVvZjIiLCJzY2FsZWQiLCJzdWJsYXllckNoYW5nZWQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImFwcGx5Wm9vbU9wYWNpdHlUb0RlY2tMYXllciIsImRlY2tMYXllciIsIl9kZWNrTGF5ZXIkcHJvcHMiLCJfZGVja0xheWVyJHByb3BzMiIsIl9kZWNrTGF5ZXIkcHJvcHMzIiwiY2xvbmUiLCJiYXNlT3BhY2l0eSIsIm9wYWNpdHkiLCJfc3ViTGF5ZXJQcm9wcyIsInZpc2libGUiLCJyZW5kZXJEZWNrR2xMYXllciIsImxheWVyQ2FsbGJhY2tzIiwibGF5ZXJJbmRleCIsImNsaWNrZWQiLCJtYXBTdGF0ZSIsIm1hcExheWVycyIsImV4cGVyaW1lbnRhbENvbnRleHQiLCJfcmVmMiIsImdwdUZpbHRlciIsIm9iamVjdEhvdmVyZWQiLCJCb29sZWFuIiwicmVuZGVyZWQiLCJyZW5kZXJMYXllciIsImdldExheWVyWm9vbU9wYWNpdHlGYWN0b3IiLCJ6b29tIiwiaXNMYXllclJlbmRlcmFibGUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsInNob3VsZFJlbmRlckxheWVyIiwiaXNMYXllclZpc2libGUiLCJwcmVwYXJlTGF5ZXJzRm9yRGVjayIsImFjY3UiLCJvdmVybGF5VHlwZSIsIk9WRVJMQVlfVFlQRV9DT05TVCIsImRlY2tnbCIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsImdldEN1c3RvbURlY2tMYXllcnMiLCJkZWNrR2xQcm9wcyIsImJvdHRvbURlY2tMYXllcnMiLCJpc0Z1bmN0aW9uIiwidG9wRGVja0xheWVycyIsInRvcExheWVycyIsImJpbmRMYXllckNhbGxiYWNrcyIsInZhbCIsImNvbXB1dGVEZWNrTGF5ZXJzRnJvbUxheWVyT3JkZXIiLCJsYXllck9yZGVyIiwiY3VycmVudExheWVyc0ZvckRlY2siLCJyZW5kZXJQcm9wcyIsImhhc1NoYWRvd0VmZmVjdCIsImlzQW5ub3RhdGlvbk1vZGUiLCJyZXZlcnNlIiwib3ZlcmxheXMiLCJlbGVtZW50IiwiaXNQbGFpbk9iamVjdCIsImxheWVyR3JvdXAiLCJsYXllcklkIiwiZmluZEluZGV4IiwiX3JlZjMiLCJiaW5kZWRMYXllckNhbGxiYWNrcyIsImxheWVyT3ZlcmxheSIsImNvbXB1dGVEZWNrTGF5ZXJzIiwiX3JlZjQiLCJvcHRpb25zIiwidmlzU3RhdGUiLCJtYXBTdHlsZSIsImVmZmVjdHMiLCJzcGxpdE1hcHMiLCJfcmVmNSIsIm1hcEluZGV4IiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJwcmltYXJ5TWFwIiwibGF5ZXJzRm9yRGVjayIsImVkaXRvckluZm8iLCJkYXRhTGF5ZXJzIiwiZWZmZWN0IiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1QiLCJnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzIiwiX3JlZjYiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJUaHJlZURCdWlsZGluZ0xheWVyIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsInBpY2thYmxlIiwidXBkYXRlVHJpZ2dlcnMiLCJnZXRGaWxsQ29sb3IiLCJfZ2V0Q3VzdG9tRGVja0xheWVycyIsIl9nZXRDdXN0b21EZWNrTGF5ZXJzMiIsIl9zbGljZWRUb0FycmF5MiIsImN1c3RvbUJvdHRvbURlY2tMYXllcnMiLCJjdXN0b21Ub3BEZWNrTGF5ZXJzIiwiZWRpdG9yTGF5ZXIiLCJnZXRFZGl0b3JMYXllciIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJnZXRMYXllck9yZGVyRnJvbUxheWVycyIsIl9yZWY3IiwiZ2V0TmV3TGF5ZXJHcm91cCIsIl9wcm9wcyRpZCIsIl9wcm9wcyRsYWJlbCIsIl9wcm9wcyRpc1Zpc2libGUiLCJfcHJvcHMkbGF5ZXJPcmRlciIsIl9wcm9wcyRpc0luY2x1ZGVkSW5MZSIsImdlbmVyYXRlSGFzaElkIiwibGFiZWwiLCJpc0luY2x1ZGVkSW5MZWdlbmQiLCJhZGRMYXllck9yR3JvdXBUb0xheWVyT3JkZXIiLCJhdEluZGV4Iiwic3BsaWNlIiwicmVtb3ZlRWxlbWVudEZyb21MYXllck9yZGVyIiwiZWxlbWVudElkIiwibmV3TGF5ZXJPcmRlciIsImVudHJ5IiwiZ3JvdXAiLCJnZXRMYXllckdyb3VwRnJvbUxheWVyT3JkZXIiLCJsYXllckdyb3VwSWQiLCJpIiwiZ3JwIiwiZ2V0QW5jZXN0b3JMYXllckdyb3VwcyIsImVudHJ5SWQiLCJhbmNlc3RvcnMiLCJ2aXNpdCIsImVudHJpZXMiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiaXNMYXllclNob3duSW5MZWdlbmQiLCJldmVyeSIsImZpbmRQYXJlbnRHcm91cEZvckxheWVyIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIm5lc3RlZCIsImdldEluZGV4RnJvbUxheWVyRW50cnlJZCIsImxheWVyRW50cnlJZCIsImlzTGF5ZXJQcmVzZW50SW5MYXllck9yZGVyIiwiZm91bmQiLCJyZXBsYWNlTGF5ZXJFbnRyeUluTGF5ZXJPcmRlciIsIm9sZEVudHJ5IiwibmV3RW50cnkiLCJvbGRFbnRyeUlkIiwidXBkYXRlTGF5ZXJHcm91cEluTGF5ZXJPcmRlciIsIm5ld0xheWVyR3JvdXAiLCJnZXRGbGF0TGF5ZXJPcmRlciIsIm9yZGVyRW50cnkiLCJidWlsZExheWVyT3JkZXJIaWVyYXJjaHkiLCJ2YWxpZExheWVycyIsImZpbmQiLCJsIiwiaGlkZGVuIiwicmVtb3ZlR2hvc3RMYXllckZyb21MYXllck9yZGVyIiwicmVvcmRlckxheWVyT3JkZXIiLCJvcmlnaW5MYXllcklkIiwiZGVzdGluYXRpb25MYXllcklkIiwiYWN0aXZlSW5kZXgiLCJvdmVySW5kZXgiLCJhcnJheU1vdmUiLCJhZGRMYXllclRvTGF5ZXJPcmRlciIsImdldExheWVySG92ZXJQcm9wVmFsdWUiLCJmaWVsZEluZGV4IiwiRGF0YVJvdyIsInZhbHVlQXQiLCJhcmVBbnlEZWNrTGF5ZXJzTG9hZGluZyIsImludGVybmFsU3RhdGUiLCJpc0xvYWRlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllci11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5cbmltcG9ydCB7R0VPQ09ERVJfTEFZRVJfSUQsIExJR0hUX0FORF9TSEFET1dfRUZGRUNUfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0xheWVyIGFzIERlY2tMYXllcn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG50eXBlIERlY2tMYXllclByb3BzID0gYW55O1xuaW1wb3J0IHtcbiAgRmllbGQsXG4gIExheWVyVmlzQ29uZmlnLFxuICBUb29sdGlwRmllbGQsXG4gIENvbXBhcmVUeXBlLFxuICBTcGxpdE1hcExheWVycyxcbiAgRWRpdG9yLFxuICBGZWF0dXJlLFxuICBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dCxcbiAgQmluZGVkTGF5ZXJDYWxsYmFja3MsXG4gIExheWVyQ2FsbGJhY2tzLFxuICBWaWV3cG9ydCxcbiAgTGF5ZXJPcmRlckdyb3VwLFxuICBMYXllck9yZGVyLFxuICBMYXllck9yZGVyRW50cnksXG4gIEZsYXRMYXllck9yZGVyLFxuICBMYXllck9yZGVySGllcmFyY2h5XG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUsXG4gIEZpbmREZWZhdWx0TGF5ZXJQcm9wcyxcbiAgTGF5ZXIsXG4gIExheWVyQ2xhc3Nlc1R5cGUsXG4gIE9WRVJMQVlfVFlQRV9DT05TVCxcbiAgZ2V0RWRpdG9yTGF5ZXJcbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuXG5pbXBvcnQgS2VwbGVyVGFibGUgZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtpc0Z1bmN0aW9uLCBnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzLCBEYXRhUm93LCBpc1BsYWluT2JqZWN0fSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7YXJyYXlNb3ZlLCBnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtnZXRMYXllclpvb21PcGFjaXR5RmFjdG9yfSBmcm9tICcuL2ludGVyYWN0aW9uLXV0aWxzJztcblxuaW1wb3J0IHtUaHJlZURCdWlsZGluZ0xheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuXG5leHBvcnQgdHlwZSBMYXllcnNUb1JlbmRlciA9IHtcbiAgW2xheWVySWQ6IHN0cmluZ106IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhID0ge1xuICBwb2ludHM6IGFueVtdO1xuICBjb2xvclZhbHVlPzogYW55O1xuICBlbGV2YXRpb25WYWx1ZT86IGFueTtcbiAgYWdncmVnYXRlZERhdGE/OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIG1lYXN1cmU6IHN0cmluZztcbiAgICAgIHZhbHVlPzogYW55O1xuICAgIH1cbiAgPjtcbn07XG5cbmV4cG9ydCB0eXBlIExheWVySG92ZXJQcm9wID0ge1xuICBkYXRhOiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IGFueVtdIHwgbnVsbDtcbiAgZmllbGRzOiBGaWVsZFtdO1xuICBmaWVsZHNUb1Nob3c6IFRvb2x0aXBGaWVsZFtdO1xuICBsYXllcjogTGF5ZXI7XG4gIHByaW1hcnlEYXRhPzogRGF0YVJvdyB8IEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEgfCBhbnlbXSB8IG51bGw7XG4gIGNvbXBhcmVUeXBlPzogQ29tcGFyZVR5cGU7XG4gIGN1cnJlbnRUaW1lPzogVmlzU3RhdGVbJ2FuaW1hdGlvbkNvbmZpZyddWydjdXJyZW50VGltZSddO1xufTtcblxuLyoqXG4gKiBGaW5kIGRlZmF1bHQgbGF5ZXJzIGZyb20gZmllbGRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGVmYXVsdExheWVyKGRhdGFzZXQ6IEtlcGxlclRhYmxlLCBsYXllckNsYXNzZXM6IExheWVyQ2xhc3Nlc1R5cGUpOiBMYXllcltdIHtcbiAgaWYgKCFkYXRhc2V0KSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgbGF5ZXJQcm9wcyA9IChPYmplY3Qua2V5cyhsYXllckNsYXNzZXMpIGFzIEFycmF5PGtleW9mIExheWVyQ2xhc3Nlc1R5cGU+KS5yZWR1Y2UoXG4gICAgKHByZXZpb3VzLCBsYykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSA9XG4gICAgICAgIHR5cGVvZiBsYXllckNsYXNzZXNbbGNdLmZpbmREZWZhdWx0TGF5ZXJQcm9wcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgID8gbGF5ZXJDbGFzc2VzW2xjXS5maW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldCwgcHJldmlvdXMpXG4gICAgICAgICAgOiB7cHJvcHM6IFtdfTtcblxuICAgICAgY29uc3QgcHJvcHMgPSBBcnJheS5pc0FycmF5KHJlc3VsdCkgPyByZXN1bHQgOiByZXN1bHQucHJvcHMgfHwgW107XG4gICAgICBjb25zdCBmb3VuZExheWVycyA9IHJlc3VsdC5mb3VuZExheWVycyB8fCBwcmV2aW91cztcblxuICAgICAgcmV0dXJuIGZvdW5kTGF5ZXJzLmNvbmNhdChcbiAgICAgICAgcHJvcHMubWFwKHAgPT4gKHtcbiAgICAgICAgICAuLi5wLFxuICAgICAgICAgIHR5cGU6IGxjLFxuICAgICAgICAgIGRhdGFJZDogZGF0YXNldC5pZCxcbiAgICAgICAgICAvLyBzZXQgYXJjIGxheWVyIGluaXRpYWwgdmlzaWJsaXR5IHRvIGZhbHNlLCBiZWNhdXNlIGFyY3MgdGVuZCB0byBiZSB0b28gbXVzeVxuICAgICAgICAgIC4uLihsYyA9PT0gJ2FyYycgfHwgbGMgPT09ICdsaW5lJyA/IHtpc1Zpc2libGU6IGZhbHNlfSA6IHt9KVxuICAgICAgICB9KSlcbiAgICAgICk7XG4gICAgfSxcbiAgICBbXSBhcyAoRmluZERlZmF1bHRMYXllclByb3BzICYge3R5cGU6IHN0cmluZ30pW11cbiAgKTtcblxuICAvLyBnbyB0aHJvdWdoIGFsbCBsYXllclByb3BzIHRvIGNyZWF0ZSBsYXllclxuICByZXR1cm4gbGF5ZXJQcm9wcy5tYXAocHJvcHMgPT4ge1xuICAgIGNvbnN0IGxheWVyID0gbmV3IGxheWVyQ2xhc3Nlc1twcm9wcy50eXBlXShwcm9wcyk7XG4gICAgcmV0dXJuIHR5cGVvZiBsYXllci5zZXRJbml0aWFsTGF5ZXJDb25maWcgPT09ICdmdW5jdGlvbicgJiYgZGF0YXNldC5kYXRhQ29udGFpbmVyXG4gICAgICA/IGxheWVyLnNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0KVxuICAgICAgOiBsYXllcjtcbiAgfSk7XG59XG5cbi8qKlxuICogQXBwbGllcyBgcGF0Y2hgIHRvIGBjb25maWcudmlzQ29uZmlnYCBvbmx5IGZvciBsYXllcnMgd2hvc2UgYGRhdGFJZGAgaXMgaW4gYGRhdGFzZXRJZHNUb1BhdGNoYC5cbiAqIExheWVycyBmb3IgZGF0YXNldHMgdGhhdCB3ZXJlIGFscmVhZHkgb24gdGhlIG1hcCBhcmUgbGVmdCB1bmNoYW5nZWQg4oCUIGBhZGREYXRhVG9NYXBgXG4gKiBLZXlzIHdob3NlIHBhdGNoIHZhbHVlIGlzIGB1bmRlZmluZWRgIGFyZSBza2lwcGVkIHNvIGV4aXN0aW5nIHZpc0NvbmZpZyBpcyBub3QgY2xlYXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlTGF5ZXJWaXNDb25maWdGb3JOZXdEYXRhc2V0cyhcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBwYXRjaDogUGFydGlhbDxMYXllclZpc0NvbmZpZz4gfCB1bmRlZmluZWQsXG4gIGRhdGFzZXRJZHNUb1BhdGNoOiBzdHJpbmdbXVxuKTogVmlzU3RhdGUge1xuICBpZiAoIXBhdGNoIHx8ICFPYmplY3Qua2V5cyhwYXRjaCkubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgaGFzRGVmaW5lZFBhdGNoVmFsdWUgPSAoT2JqZWN0LmtleXMocGF0Y2gpIGFzIEFycmF5PGtleW9mIExheWVyVmlzQ29uZmlnPikuc29tZShcbiAgICBrZXkgPT4gcGF0Y2hba2V5XSAhPT0gdW5kZWZpbmVkXG4gICk7XG4gIGlmICghaGFzRGVmaW5lZFBhdGNoVmFsdWUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBkYXRhc2V0SWRTZXQgPSBuZXcgU2V0KGRhdGFzZXRJZHNUb1BhdGNoKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGxheWVyczogc3RhdGUubGF5ZXJzLm1hcChsYXllciA9PiB7XG4gICAgICBpZiAoIWxheWVyLmNvbmZpZy5kYXRhSWQgfHwgIWRhdGFzZXRJZFNldC5oYXMobGF5ZXIuY29uZmlnLmRhdGFJZCkpIHtcbiAgICAgICAgcmV0dXJuIGxheWVyO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBsYXllci52aXNDb25maWdTZXR0aW5ncztcbiAgICAgIGlmICghc2V0dGluZ3MpIHtcbiAgICAgICAgcmV0dXJuIGxheWVyO1xuICAgICAgfVxuICAgICAgY29uc3QgYWxsb3dlZEtleXMgPSAoT2JqZWN0LmtleXMocGF0Y2gpIGFzIEFycmF5PGtleW9mIExheWVyVmlzQ29uZmlnPikuZmlsdGVyKFxuICAgICAgICBrZXkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNldHRpbmdzLCBrZXkpICYmIHBhdGNoW2tleV0gIT09IHVuZGVmaW5lZFxuICAgICAgKTtcbiAgICAgIGlmICghYWxsb3dlZEtleXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBsYXllcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcnRpYWwgPSBhbGxvd2VkS2V5cy5yZWR1Y2U8UGFydGlhbDxMYXllclZpc0NvbmZpZz4+KChhY2MsIGtleSkgPT4ge1xuICAgICAgICBhY2Nba2V5XSA9IHBhdGNoW2tleV07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG4gICAgICByZXR1cm4gbGF5ZXIudXBkYXRlTGF5ZXJWaXNDb25maWcocGFydGlhbCk7XG4gICAgfSlcbiAgfTtcbn1cblxudHlwZSBNaW5WaXNTdGF0ZUZvckxheWVyRGF0YSA9IHtcbiAgZGF0YXNldHM6IFZpc1N0YXRlWydkYXRhc2V0cyddO1xuICBhbmltYXRpb25Db25maWc6IFZpc1N0YXRlWydhbmltYXRpb25Db25maWcnXTtcbn07XG5cbi8qKlxuICogQ2FsY3VsYXRlIGxheWVyIGRhdGEgYmFzZWQgb24gbGF5ZXIgdHlwZSwgY29sIENvbmZpZyxcbiAqIHJldHVybiB1cGRhdGVkIGxheWVyIGlmIGNvbG9yRG9tYWluLCBkYXRhTWFwIGhhcyBjaGFuZ2VkLlxuICogQWxzbywgcmV0dXJucyB1cGRhdGVkIGxheWVyIGluIGNhc2UgdGhlIGlucHV0IGxheWVyIHdhcyBpbiBpbnZhbGlkIHN0YXRlLlxuICogQWRkcyBhbiBlcnJvciBtZXNzYWdlIHRvIHRoZSBsYXllciBpbiBjYXNlIG9mIGFuIGV4Y2VwdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUxheWVyRGF0YTxTIGV4dGVuZHMgTWluVmlzU3RhdGVGb3JMYXllckRhdGE+KFxuICBsYXllcjogTGF5ZXIsXG4gIHN0YXRlOiBTLFxuICBvbGRMYXllckRhdGE/OiBhbnlcbik6IHtcbiAgbGF5ZXJEYXRhOiBhbnk7XG4gIGxheWVyOiBMYXllcjtcbn0ge1xuICBsZXQgbGF5ZXJEYXRhO1xuICB0cnkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGF5ZXIgdXBkYXRlcyBkYXRhIGFmdGVyIGFuIGVycm9yXG4gICAgaWYgKCFsYXllci5pc1ZhbGlkKSB7XG4gICAgICBsYXllci5fb2xkRGF0YVVwZGF0ZVRyaWdnZXJzID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghbGF5ZXIudHlwZSB8fCAhbGF5ZXIuaGFzQWxsQ29sdW1ucygpIHx8ICFsYXllci5jb25maWcuZGF0YUlkKSB7XG4gICAgICByZXR1cm4ge2xheWVyLCBsYXllckRhdGE6IHt9fTtcbiAgICB9XG5cbiAgICBsYXllckRhdGEgPSBsYXllci5mb3JtYXRMYXllckRhdGEoc3RhdGUuZGF0YXNldHMsIG9sZExheWVyRGF0YSk7XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBkYXRhIGZvciB0aGUgbGF5ZXIgaXMgdXBkYXRlZCB3aXRob3V0IGVycm9yc1xuICAgIGlmICghbGF5ZXIuaXNWYWxpZCkge1xuICAgICAgLy8gU3dpdGNoIHRvIHZpc2libGUgYWZ0ZXIgYW4gZXJyb3JcbiAgICAgIGxheWVyID0gbGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICBpc1Zpc2libGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsYXllci5pc1ZhbGlkID0gdHJ1ZTtcbiAgICBsYXllci5lcnJvck1lc3NhZ2UgPSBudWxsO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBDb25zb2xlLmVycm9yKGVycik7XG4gICAgbGF5ZXIgPSBsYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICBpc1Zpc2libGU6IGZhbHNlXG4gICAgfSk7XG4gICAgbGF5ZXIuaXNWYWxpZCA9IGZhbHNlO1xuXG4gICAgbGF5ZXIuZXJyb3JNZXNzYWdlID1cbiAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5tZXNzYWdlID8gZXJyLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsIDEwMCkgOiAnVW5rbm93biBlcnJvcic7XG5cbiAgICBsYXllckRhdGEgPSB7fTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbGF5ZXIsXG4gICAgbGF5ZXJEYXRhXG4gIH07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHByb3BzIHBhc3NlZCB0byBMYXllckhvdmVySW5mb1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJIb3ZlclByb3Aoe1xuICBhbmltYXRpb25Db25maWcsXG4gIGludGVyYWN0aW9uQ29uZmlnLFxuICBob3ZlckluZm8sXG4gIGxheWVycyxcbiAgbGF5ZXJzVG9SZW5kZXIsXG4gIGRhdGFzZXRzXG59OiB7XG4gIGludGVyYWN0aW9uQ29uZmlnOiBWaXNTdGF0ZVsnaW50ZXJhY3Rpb25Db25maWcnXTtcbiAgYW5pbWF0aW9uQ29uZmlnOiBWaXNTdGF0ZVsnYW5pbWF0aW9uQ29uZmlnJ107XG4gIGhvdmVySW5mbzogVmlzU3RhdGVbJ2hvdmVySW5mbyddO1xuICBsYXllcnM6IFZpc1N0YXRlWydsYXllcnMnXTtcbiAgbGF5ZXJzVG9SZW5kZXI6IExheWVyc1RvUmVuZGVyO1xuICBkYXRhc2V0czogVmlzU3RhdGVbJ2RhdGFzZXRzJ107XG59KTogTGF5ZXJIb3ZlclByb3AgfCBudWxsIHtcbiAgaWYgKGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuZW5hYmxlZCAmJiBob3ZlckluZm8gJiYgaG92ZXJJbmZvLnBpY2tlZCkge1xuICAgIC8vIGlmIGFueXRoaW5nIGhvdmVyZWRcbiAgICBjb25zdCB7b2JqZWN0LCBsYXllcjogb3ZlcmxheX0gPSBob3ZlckluZm87XG5cbiAgICAvLyBkZWNrZ2wgbGF5ZXIgdG8ga2VwbGVyLWdsIGxheWVyXG4gICAgY29uc3QgbGF5ZXIgPSBsYXllcnNbb3ZlcmxheS5wcm9wcy5pZHhdO1xuXG4gICAgLy8gTk9URTogZm9yIGJpbmFyeSBmb3JtYXQgR2VvanNvbkxheWVyLCBkZWNrIHdpbGwgcmV0dXJuIG9iamVjdD1udWxsIGJ1dCBob3ZlckluZm8uaW5kZXggPj0gMFxuICAgIGlmIChcbiAgICAgIChvYmplY3QgfHwgaG92ZXJJbmZvLmluZGV4ID49IDApICYmXG4gICAgICBsYXllciAmJlxuICAgICAgbGF5ZXIuZ2V0SG92ZXJEYXRhICYmXG4gICAgICBsYXllcnNUb1JlbmRlcltsYXllci5pZF1cbiAgICApIHtcbiAgICAgIC8vIGlmIGxheWVyIGlzIHZpc2libGUgYW5kIGhhdmUgaG92ZXJlZCBkYXRhXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbmZpZzoge2RhdGFJZH1cbiAgICAgIH0gPSBsYXllcjtcbiAgICAgIGlmICghZGF0YUlkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0c1tkYXRhSWRdO1xuICAgICAgY29uc3QgZGF0YTogRGF0YVJvdyB8IG51bGwgPSBsYXllci5nZXRIb3ZlckRhdGEoXG4gICAgICAgIG9iamVjdCB8fCBob3ZlckluZm8uaW5kZXgsXG4gICAgICAgIGRhdGFDb250YWluZXIsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICBob3ZlckluZm9cbiAgICAgICk7XG4gICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWVsZHNUb1Nob3cgPSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5maWVsZHNUb1Nob3dbZGF0YUlkXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICBmaWVsZHNUb1Nob3csXG4gICAgICAgIGxheWVyLFxuICAgICAgICBjdXJyZW50VGltZTogYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5jb25zdCBaT09NX09QQUNJVFlfUFJPUF9LRVlTID0gWydvcGFjaXR5JywgJ2xpbmVPcGFjaXR5JywgJ3N0cm9rZU9wYWNpdHknXTtcblxuLyoqIFN0cm9rZSBhbmQgb3V0bGluZSBwcm9wcyByZXBsYWNlIHRoZSBwYXJlbnQgb3BhY2l0eSwgc28gdGhleSBuZWVkIHRoZSBzYW1lIGZhY3Rvci4gKi9cbmZ1bmN0aW9uIHNjYWxlWm9vbU9wYWNpdHlTdWJMYXllclByb3BzKFxuICBzdWJMYXllclByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkLFxuICBmYWN0b3I6IG51bWJlclxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmICghc3ViTGF5ZXJQcm9wcykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgY29uc3QgbmV4dDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHN1YkxheWVyUHJvcHMpKSB7XG4gICAgY29uc3Qgc3VibGF5ZXIgPSBzdWJMYXllclByb3BzW2lkXTtcbiAgICBpZiAoIXN1YmxheWVyIHx8IHR5cGVvZiBzdWJsYXllciAhPT0gJ29iamVjdCcpIHtcbiAgICAgIG5leHRbaWRdID0gc3VibGF5ZXI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3Qgc2NhbGVkID0gey4uLnN1YmxheWVyfTtcbiAgICBsZXQgc3VibGF5ZXJDaGFuZ2VkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgWk9PTV9PUEFDSVRZX1BST1BfS0VZUykge1xuICAgICAgaWYgKHR5cGVvZiBzdWJsYXllcltrZXldID09PSAnbnVtYmVyJykge1xuICAgICAgICBzY2FsZWRba2V5XSA9IHN1YmxheWVyW2tleV0gKiBmYWN0b3I7XG4gICAgICAgIHN1YmxheWVyQ2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIG5leHRbaWRdID0gc3VibGF5ZXJDaGFuZ2VkID8gc2NhbGVkIDogc3VibGF5ZXI7XG4gICAgaWYgKHN1YmxheWVyQ2hhbmdlZCkge1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBjaGFuZ2VkID8gbmV4dCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gYXBwbHlab29tT3BhY2l0eVRvRGVja0xheWVyKGRlY2tMYXllcjogYW55LCBmYWN0b3I6IG51bWJlcik6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRlY2tMYXllcikpIHtcbiAgICByZXR1cm4gZGVja0xheWVyLm1hcChsYXllciA9PiBhcHBseVpvb21PcGFjaXR5VG9EZWNrTGF5ZXIobGF5ZXIsIGZhY3RvcikpO1xuICB9XG4gIGlmICghZGVja0xheWVyIHx8IGZhY3RvciA9PT0gMSB8fCB0eXBlb2YgZGVja0xheWVyLmNsb25lICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGRlY2tMYXllcjtcbiAgfVxuICBjb25zdCBiYXNlT3BhY2l0eSA9IGRlY2tMYXllci5wcm9wcz8ub3BhY2l0eTtcbiAgY29uc3Qgb3BhY2l0eSA9ICh0eXBlb2YgYmFzZU9wYWNpdHkgPT09ICdudW1iZXInID8gYmFzZU9wYWNpdHkgOiAxKSAqIGZhY3RvcjtcbiAgY29uc3Qgc3ViTGF5ZXJQcm9wcyA9IHNjYWxlWm9vbU9wYWNpdHlTdWJMYXllclByb3BzKGRlY2tMYXllci5wcm9wcz8uX3N1YkxheWVyUHJvcHMsIGZhY3Rvcik7XG4gIHJldHVybiBkZWNrTGF5ZXIuY2xvbmUoe1xuICAgIG9wYWNpdHksXG4gICAgLy8gRnVsbHkgZmFkZWQgbGF5ZXJzIGFyZSBub3QgcGlja2FibGUuXG4gICAgdmlzaWJsZTogZGVja0xheWVyLnByb3BzPy52aXNpYmxlICE9PSBmYWxzZSAmJiBmYWN0b3IgPiAwLFxuICAgIC4uLihzdWJMYXllclByb3BzID8ge19zdWJMYXllclByb3BzOiBzdWJMYXllclByb3BzfSA6IHt9KVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckRlY2tHbExheWVyKHByb3BzOiBhbnksIGxheWVyQ2FsbGJhY2tzOiB7W2tleTogc3RyaW5nXTogYW55fSkge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgbGF5ZXIsXG4gICAgbGF5ZXJJbmRleCxcbiAgICBkYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIG1hcFN0YXRlLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBtYXBMYXllcnMsXG4gICAgZXhwZXJpbWVudGFsQ29udGV4dFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXTtcbiAgY29uc3Qge2dwdUZpbHRlcn0gPSBkYXRhc2V0IHx8IHt9O1xuICBjb25zdCBvYmplY3RIb3ZlcmVkID0gY2xpY2tlZCB8fCBob3ZlckluZm87XG4gIC8vIGluIHNwbGl0IG1vZGUgYSBsYXllciBtaXNzaW5nIGZyb20gbWFwTGF5ZXJzIGlzIGhpZGRlbiwgc28gY29lcmNlIHRvIGEgYm9vbGVhblxuICAvLyBpbnN0ZWFkIG9mIGxlYWtpbmcgdW5kZWZpbmVkIGludG8gZGVjay5nbCdzIHZpc2libGUgcHJvcFxuICBjb25zdCB2aXNpYmxlID0gIW1hcExheWVycyB8fCBCb29sZWFuKG1hcExheWVyc1tsYXllci5pZF0pO1xuICAvLyBMYXllciBpcyBMYXllciBjbGFzc1xuICBjb25zdCByZW5kZXJlZCA9IGxheWVyLnJlbmRlckxheWVyKHtcbiAgICBkYXRhLFxuICAgIGdwdUZpbHRlcixcbiAgICBpZHg6IGxheWVySW5kZXgsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgbGF5ZXJDYWxsYmFja3MsXG4gICAgbWFwU3RhdGUsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG9iamVjdEhvdmVyZWQsXG4gICAgdmlzaWJsZSxcbiAgICBkYXRhc2V0LFxuICAgIGV4cGVyaW1lbnRhbENvbnRleHRcbiAgfSk7XG4gIGNvbnN0IGZhY3RvciA9IGdldExheWVyWm9vbU9wYWNpdHlGYWN0b3IobGF5ZXIuaWQsIG1hcFN0YXRlPy56b29tLCBpbnRlcmFjdGlvbkNvbmZpZyk7XG4gIHJldHVybiBhcHBseVpvb21PcGFjaXR5VG9EZWNrTGF5ZXIocmVuZGVyZWQsIGZhY3Rvcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xheWVyUmVuZGVyYWJsZShsYXllcjogTGF5ZXIsIGxheWVyRGF0YSkge1xuICByZXR1cm4gbGF5ZXIuaWQgIT09IEdFT0NPREVSX0xBWUVSX0lEICYmIGxheWVyLnNob3VsZFJlbmRlckxheWVyKGxheWVyRGF0YSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xheWVyVmlzaWJsZShsYXllciwgbWFwTGF5ZXJzKSB7XG4gIHJldHVybiAoXG4gICAgbGF5ZXIuY29uZmlnLmlzVmlzaWJsZSAmJlxuICAgIC8vIGlmIGxheWVyLmlkIGlzIG5vdCBpbiBtYXBMYXllcnMsIGRvbid0IHJlbmRlciBpdFxuICAgICghbWFwTGF5ZXJzIHx8IChtYXBMYXllcnMgJiYgbWFwTGF5ZXJzW2xheWVyLmlkXSkpXG4gICk7XG59XG5cbi8vIFByZXBhcmUgYSBkaWN0IG9mIGxheWVycyByZW5kZXJlZCBieSB0aGUgZGVjay5nbFxuLy8gTm90ZSwgaXNWaXNpYmxlOiBmYWxzZSBsYXllciBpcyBwYXNzZWQgdG8gZGVjay5nbCBoZXJlXG4vLyByZXR1cm4ge1tpZF06IHRydWUgXFwgZmFsc2V9XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUxheWVyc0ZvckRlY2soXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGF5ZXJEYXRhOiBWaXNTdGF0ZVsnbGF5ZXJEYXRhJ11cbik6IHtcbiAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbn0ge1xuICByZXR1cm4gbGF5ZXJzLnJlZHVjZShcbiAgICAoYWNjdSwgbGF5ZXIsIGlkeCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuaWRdOlxuICAgICAgICBpc0xheWVyUmVuZGVyYWJsZShsYXllciwgbGF5ZXJEYXRhW2lkeF0pICYmIGxheWVyLm92ZXJsYXlUeXBlID09PSBPVkVSTEFZX1RZUEVfQ09OU1QuZGVja2dsXG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuLy8gUHJlcGFyZSBhIGRpY3Qgb2YgcmVuZGVyZWQgbGF5ZXJzIHJlbmRlcmVkIGluIHRoZSBtYXBcbi8vIFRoaXMgaW5jbHVkZXMgb25seSB0aGUgdmlzaWJpbGUgbGF5ZXJzIGZvciBzaW5nbGUgbWFwIHZpZXcgYW5kIHNwbGl0IG1hcCB2aWV3XG4vLyByZXR1cm4ge1tpZF06IHRydWUgXFwgZmFsc2V9XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUxheWVyc1RvUmVuZGVyKFxuICBsYXllcnM6IExheWVyW10sXG4gIGxheWVyRGF0YTogVmlzU3RhdGVbJ2xheWVyRGF0YSddLFxuICBtYXBMYXllcnM/OiBTcGxpdE1hcExheWVycyB8IHVuZGVmaW5lZCB8IG51bGxcbik6IExheWVyc1RvUmVuZGVyIHtcbiAgcmV0dXJuIGxheWVycy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyLCBpZHgpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2xheWVyLmlkXTogaXNMYXllclJlbmRlcmFibGUobGF5ZXIsIGxheWVyRGF0YVtpZHhdKSAmJiBpc0xheWVyVmlzaWJsZShsYXllciwgbWFwTGF5ZXJzKVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbnR5cGUgQ3VzdG9tRGVja0xheWVyID0gRGVja0xheWVyPERlY2tMYXllclByb3BzPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1c3RvbURlY2tMYXllcnMoZGVja0dsUHJvcHM/OiBhbnkpOiBbQ3VzdG9tRGVja0xheWVyW10sIEN1c3RvbURlY2tMYXllcltdXSB7XG4gIGNvbnN0IGJvdHRvbURlY2tMYXllcnMgPSBBcnJheS5pc0FycmF5KGRlY2tHbFByb3BzPy5sYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8ubGF5ZXJzXG4gICAgOiBpc0Z1bmN0aW9uKGRlY2tHbFByb3BzPy5sYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8ubGF5ZXJzKClcbiAgICA6IFtdO1xuICBjb25zdCB0b3BEZWNrTGF5ZXJzID0gQXJyYXkuaXNBcnJheShkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LnRvcExheWVyc1xuICAgIDogaXNGdW5jdGlvbihkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LnRvcExheWVycygpXG4gICAgOiBbXTtcblxuICByZXR1cm4gW2JvdHRvbURlY2tMYXllcnMsIHRvcERlY2tMYXllcnNdO1xufVxuXG5leHBvcnQgdHlwZSBDb21wdXRlRGVja0xheWVyc1Byb3BzID0ge1xuICBtYXBJbmRleD86IG51bWJlcjtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgcHJpbWFyeU1hcD86IGJvb2xlYW47XG4gIGlzQW5ub3RhdGlvbk1vZGU/OiBib29sZWFuO1xuICBsYXllcnNGb3JEZWNrPzoge1trZXk6IHN0cmluZ106IGJvb2xlYW59O1xuICBlZGl0b3JJbmZvPzoge1xuICAgIGVkaXRvcjogRWRpdG9yO1xuICAgIGVkaXRvck1lbnVBY3RpdmU6IGJvb2xlYW47XG4gICAgb25TZXRGZWF0dXJlczogKGZlYXR1cmVzOiBGZWF0dXJlW10pID0+IGFueTtcbiAgICBzZXRTZWxlY3RlZEZlYXR1cmU6IChcbiAgICAgIGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsLFxuICAgICAgc2VsZWN0aW9uQ29udGV4dD86IEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0XG4gICAgKSA9PiBhbnk7XG4gICAgb25BcHBseVBvbHlnb25GaWx0ZXJBbGw/OiAoZmVhdHVyZTogRmVhdHVyZSkgPT4gYW55O1xuICAgIGZlYXR1cmVDb2xsZWN0aW9uOiB7XG4gICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICBmZWF0dXJlczogRmVhdHVyZVtdO1xuICAgIH07XG4gICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlczogbnVtYmVyW107XG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0O1xuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRMYXllckNhbGxiYWNrcyhcbiAgbGF5ZXJDYWxsYmFja3M6IExheWVyQ2FsbGJhY2tzID0ge30sXG4gIGlkeDogbnVtYmVyXG4pOiBCaW5kZWRMYXllckNhbGxiYWNrcyB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhsYXllckNhbGxiYWNrcykucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2tleV06IHZhbCA9PiBsYXllckNhbGxiYWNrc1trZXldKGlkeCwgdmFsKVxuICAgIH0pLFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsICh2YWw6IHVua25vd24pID0+IHZvaWQ+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVEZWNrTGF5ZXJzRnJvbUxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IExheWVyT3JkZXIsXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGF5ZXJEYXRhOiBhbnlbXSxcbiAgY3VycmVudExheWVyc0ZvckRlY2s6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSxcbiAgcmVuZGVyUHJvcHM6IHtcbiAgICBkYXRhc2V0czogYW55O1xuICAgIGhvdmVySW5mbzogYW55O1xuICAgIGNsaWNrZWQ6IGFueTtcbiAgICBtYXBTdGF0ZTogYW55O1xuICAgIGludGVyYWN0aW9uQ29uZmlnOiBhbnk7XG4gICAgYW5pbWF0aW9uQ29uZmlnOiBhbnk7XG4gICAgbWFwTGF5ZXJzOiBhbnk7XG4gICAgaGFzU2hhZG93RWZmZWN0OiBib29sZWFuO1xuICAgIGlzQW5ub3RhdGlvbk1vZGU/OiBib29sZWFuO1xuICB9LFxuICBsYXllckNhbGxiYWNrcz86IGFueVxuKTogYW55W10ge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgaG92ZXJJbmZvLFxuICAgIGNsaWNrZWQsXG4gICAgbWFwU3RhdGUsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG1hcExheWVycyxcbiAgICBoYXNTaGFkb3dFZmZlY3QsXG4gICAgaXNBbm5vdGF0aW9uTW9kZVxuICB9ID0gcmVuZGVyUHJvcHM7XG4gIHJldHVybiBsYXllck9yZGVyXG4gICAgLnNsaWNlKClcbiAgICAucmV2ZXJzZSgpXG4gICAgLnJlZHVjZSgob3ZlcmxheXMsIGVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChpc1BsYWluT2JqZWN0KGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGxheWVyR3JvdXAgPSBlbGVtZW50IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgICAgaWYgKCFsYXllckdyb3VwLmlzVmlzaWJsZSkge1xuICAgICAgICAgIHJldHVybiBvdmVybGF5cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KFxuICAgICAgICAgIGNvbXB1dGVEZWNrTGF5ZXJzRnJvbUxheWVyT3JkZXIoXG4gICAgICAgICAgICBsYXllckdyb3VwLmxheWVyT3JkZXIsXG4gICAgICAgICAgICBsYXllcnMsXG4gICAgICAgICAgICBsYXllckRhdGEsXG4gICAgICAgICAgICBjdXJyZW50TGF5ZXJzRm9yRGVjayxcbiAgICAgICAgICAgIHJlbmRlclByb3BzLFxuICAgICAgICAgICAgbGF5ZXJDYWxsYmFja3NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBsYXllcklkID0gZWxlbWVudCBhcyBzdHJpbmc7XG4gICAgICBpZiAoIWN1cnJlbnRMYXllcnNGb3JEZWNrW2xheWVySWRdKSB7XG4gICAgICAgIHJldHVybiBvdmVybGF5cztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxheWVySW5kZXggPSBsYXllcnMuZmluZEluZGV4KCh7aWR9KSA9PiBpZCA9PT0gbGF5ZXJJZCk7XG4gICAgICBpZiAobGF5ZXJJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJsYXlzO1xuICAgICAgfVxuICAgICAgY29uc3QgYmluZGVkTGF5ZXJDYWxsYmFja3MgPSBsYXllckNhbGxiYWNrc1xuICAgICAgICA/IGJpbmRMYXllckNhbGxiYWNrcyhsYXllckNhbGxiYWNrcywgbGF5ZXJJbmRleClcbiAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IGxheWVyID0gbGF5ZXJzW2xheWVySW5kZXhdO1xuICAgICAgY29uc3QgZGF0YSA9IGxheWVyRGF0YVtsYXllckluZGV4XTtcbiAgICAgIGNvbnN0IGxheWVyT3ZlcmxheSA9IHJlbmRlckRlY2tHbExheWVyKFxuICAgICAgICB7XG4gICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgbGF5ZXIsXG4gICAgICAgICAgbGF5ZXJJbmRleCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGhvdmVySW5mbyxcbiAgICAgICAgICBjbGlja2VkLFxuICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgICBtYXBMYXllcnMsXG4gICAgICAgICAgZXhwZXJpbWVudGFsQ29udGV4dDoge1xuICAgICAgICAgICAgaGFzU2hhZG93RWZmZWN0LFxuICAgICAgICAgICAgaXNBbm5vdGF0aW9uTW9kZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYmluZGVkTGF5ZXJDYWxsYmFja3NcbiAgICAgICk7XG4gICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgfSwgW10gYXMgYW55W10pO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVEZWNrTGF5ZXJzKFxuICB7dmlzU3RhdGUsIG1hcFN0YXRlLCBtYXBTdHlsZX06IGFueSxcbiAgb3B0aW9ucz86IENvbXB1dGVEZWNrTGF5ZXJzUHJvcHMsXG4gIGxheWVyQ2FsbGJhY2tzPzogTGF5ZXJDYWxsYmFja3MsXG4gIGRlY2tHbFByb3BzPzogYW55XG4pOiBMYXllcltdIHtcbiAgY29uc3Qge1xuICAgIGRhdGFzZXRzLFxuICAgIGVmZmVjdHMsXG4gICAgbGF5ZXJzLFxuICAgIGxheWVyT3JkZXIsXG4gICAgbGF5ZXJEYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBzcGxpdE1hcHNcbiAgfSA9IHZpc1N0YXRlO1xuXG4gIGNvbnN0IHtcbiAgICBtYXBJbmRleCxcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBtYXBib3hBcGlVcmwsXG4gICAgcHJpbWFyeU1hcCxcbiAgICBsYXllcnNGb3JEZWNrLFxuICAgIGVkaXRvckluZm8sXG4gICAgaXNBbm5vdGF0aW9uTW9kZVxuICB9ID0gb3B0aW9ucyB8fCB7fTtcblxuICBsZXQgZGF0YUxheWVyczogYW55W10gPSBbXTtcblxuICBjb25zdCBoYXNTaGFkb3dFZmZlY3QgPSBlZmZlY3RzLnNvbWUoZWZmZWN0ID0+IHtcbiAgICByZXR1cm4gZWZmZWN0LnR5cGUgPT09IExJR0hUX0FORF9TSEFET1dfRUZGRUNULnR5cGU7XG4gIH0pO1xuXG4gIGlmIChsYXllckRhdGEgJiYgbGF5ZXJEYXRhLmxlbmd0aCkge1xuICAgIGNvbnN0IG1hcExheWVycyA9IGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMoc3BsaXRNYXBzLCBtYXBJbmRleCB8fCAwKTtcblxuICAgIGNvbnN0IGN1cnJlbnRMYXllcnNGb3JEZWNrID0gbGF5ZXJzRm9yRGVjayB8fCBwcmVwYXJlTGF5ZXJzRm9yRGVjayhsYXllcnMsIGxheWVyRGF0YSk7XG5cbiAgICBkYXRhTGF5ZXJzID0gbGF5ZXJPcmRlclxuICAgICAgLnNsaWNlKClcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5yZWR1Y2UoKG92ZXJsYXlzLCBlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJHcm91cCA9IGVsZW1lbnQgYXMgTGF5ZXJPcmRlckdyb3VwO1xuICAgICAgICAgIGlmICghbGF5ZXJHcm91cC5pc1Zpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybiBvdmVybGF5cztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG92ZXJsYXlzLmNvbmNhdChcbiAgICAgICAgICAgIGNvbXB1dGVEZWNrTGF5ZXJzRnJvbUxheWVyT3JkZXIoXG4gICAgICAgICAgICAgIGxheWVyR3JvdXAubGF5ZXJPcmRlcixcbiAgICAgICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgICAgICBsYXllckRhdGEsXG4gICAgICAgICAgICAgIGN1cnJlbnRMYXllcnNGb3JEZWNrLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICAgICAgICAgIGNsaWNrZWQsXG4gICAgICAgICAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICAgICAgICAgIG1hcExheWVycyxcbiAgICAgICAgICAgICAgICBoYXNTaGFkb3dFZmZlY3QsXG4gICAgICAgICAgICAgICAgaXNBbm5vdGF0aW9uTW9kZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYXllckNhbGxiYWNrc1xuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGF5ZXJJZCA9IGVsZW1lbnQgYXMgc3RyaW5nO1xuICAgICAgICBpZiAoIWN1cnJlbnRMYXllcnNGb3JEZWNrW2xheWVySWRdKSB7XG4gICAgICAgICAgcmV0dXJuIG92ZXJsYXlzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxheWVySW5kZXggPSBsYXllcnMuZmluZEluZGV4KCh7aWR9KSA9PiBpZCA9PT0gbGF5ZXJJZCk7XG4gICAgICAgIGlmIChsYXllckluZGV4ID09PSAtMSkge1xuICAgICAgICAgIHJldHVybiBvdmVybGF5cztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiaW5kZWRMYXllckNhbGxiYWNrcyA9IGxheWVyQ2FsbGJhY2tzXG4gICAgICAgICAgPyBiaW5kTGF5ZXJDYWxsYmFja3MobGF5ZXJDYWxsYmFja3MsIGxheWVySW5kZXgpXG4gICAgICAgICAgOiB7fTtcbiAgICAgICAgY29uc3QgbGF5ZXIgPSBsYXllcnNbbGF5ZXJJbmRleF07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBsYXllckRhdGFbbGF5ZXJJbmRleF07XG4gICAgICAgIGNvbnN0IGxheWVyT3ZlcmxheSA9IHJlbmRlckRlY2tHbExheWVyKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgICAgbGF5ZXIsXG4gICAgICAgICAgICBsYXllckluZGV4LFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGhvdmVySW5mbyxcbiAgICAgICAgICAgIGNsaWNrZWQsXG4gICAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICAgICAgbWFwTGF5ZXJzLFxuICAgICAgICAgICAgZXhwZXJpbWVudGFsQ29udGV4dDoge1xuICAgICAgICAgICAgICBoYXNTaGFkb3dFZmZlY3QsXG4gICAgICAgICAgICAgIGlzQW5ub3RhdGlvbk1vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGJpbmRlZExheWVyQ2FsbGJhY2tzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBvdmVybGF5cy5jb25jYXQobGF5ZXJPdmVybGF5IHx8IFtdKTtcbiAgICAgIH0sIFtdKTtcbiAgfVxuXG4gIGlmICghcHJpbWFyeU1hcCkge1xuICAgIHJldHVybiBkYXRhTGF5ZXJzO1xuICB9XG5cbiAgaWYgKFxuICAgIG1hcFN0eWxlPy52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10gJiZcbiAgICBwcmltYXJ5TWFwICYmXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW4gJiZcbiAgICBtYXBib3hBcGlVcmxcbiAgKSB7XG4gICAgZGF0YUxheWVycy5wdXNoKFxuICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICBpZDogJ19rZXBsZXJnbF8zZC1idWlsZGluZycsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IsXG4gICAgICAgIHBpY2thYmxlOiBCb29sZWFuKGlzQW5ub3RhdGlvbk1vZGUpLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIGdldEZpbGxDb2xvcjogbWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvclxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb25zdCBbY3VzdG9tQm90dG9tRGVja0xheWVycywgY3VzdG9tVG9wRGVja0xheWVyc10gPSBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzKTtcblxuICBjb25zdCBlZGl0b3JMYXllcjogYW55W10gPSBbXTtcbiAgaWYgKGVkaXRvckluZm8pIHtcbiAgICBlZGl0b3JMYXllci5wdXNoKFxuICAgICAgZ2V0RWRpdG9yTGF5ZXIoe1xuICAgICAgICAuLi5lZGl0b3JJbmZvLFxuICAgICAgICBtYXBTdGF0ZVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIFsuLi5jdXN0b21Cb3R0b21EZWNrTGF5ZXJzLCAuLi5kYXRhTGF5ZXJzLCAuLi5jdXN0b21Ub3BEZWNrTGF5ZXJzLCAuLi5lZGl0b3JMYXllcl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllck9yZGVyRnJvbUxheWVyczxUIGV4dGVuZHMge2lkOiBzdHJpbmd9PihsYXllcnM6IFRbXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGxheWVycy5tYXAoKHtpZH0pID0+IGlkKTtcbn1cblxuLy8gLS0tIExheWVyIEdyb3VwIFV0aWxpdGllcyAtLS1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5ld0xheWVyR3JvdXAocHJvcHM/OiBQYXJ0aWFsPExheWVyT3JkZXJHcm91cD4pOiBMYXllck9yZGVyR3JvdXAge1xuICByZXR1cm4ge1xuICAgIGlkOiBwcm9wcz8uaWQgPz8gZ2VuZXJhdGVIYXNoSWQoNiksXG4gICAgbGFiZWw6IHByb3BzPy5sYWJlbCA/PyAnTmV3IGdyb3VwJyxcbiAgICBpc1Zpc2libGU6IHByb3BzPy5pc1Zpc2libGUgPz8gdHJ1ZSxcbiAgICBsYXllck9yZGVyOiBwcm9wcz8ubGF5ZXJPcmRlciA/PyBbXSxcbiAgICBpc0luY2x1ZGVkSW5MZWdlbmQ6IHByb3BzPy5pc0luY2x1ZGVkSW5MZWdlbmQgPz8gdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGF5ZXJPckdyb3VwVG9MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBlbGVtZW50OiBMYXllck9yZGVyRW50cnksXG4gIGF0SW5kZXg/OiBudW1iZXJcbik6IExheWVyT3JkZXIge1xuICBjb25zdCBpZHggPSBhdEluZGV4ID8/IDA7XG4gIGNvbnN0IHJlc3VsdCA9IFsuLi5sYXllck9yZGVyXTtcbiAgcmVzdWx0LnNwbGljZShpZHgsIDAsIGVsZW1lbnQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRWxlbWVudEZyb21MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBlbGVtZW50OiBMYXllck9yZGVyRW50cnlcbik6IExheWVyT3JkZXIge1xuICBpZiAoIWxheWVyT3JkZXIpIHJldHVybiBbXTtcbiAgY29uc3QgZWxlbWVudElkID0gdHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnID8gZWxlbWVudCA6IGVsZW1lbnQuaWQ7XG4gIGxldCBuZXdMYXllck9yZGVyID0gbGF5ZXJPcmRlci5maWx0ZXIoZW50cnkgPT4ge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgcmV0dXJuIChlbnRyeSBhcyBMYXllck9yZGVyR3JvdXApLmlkICE9PSBlbGVtZW50SWQ7XG4gICAgfVxuICAgIHJldHVybiBlbnRyeSAhPT0gZWxlbWVudElkO1xuICB9KTtcblxuICBuZXdMYXllck9yZGVyID0gbmV3TGF5ZXJPcmRlci5tYXAoZW50cnkgPT4ge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ncm91cCxcbiAgICAgICAgbGF5ZXJPcmRlcjogcmVtb3ZlRWxlbWVudEZyb21MYXllck9yZGVyKGdyb3VwLmxheWVyT3JkZXIsIGVsZW1lbnRJZClcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBlbnRyeTtcbiAgfSk7XG5cbiAgcmV0dXJuIG5ld0xheWVyT3JkZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllckdyb3VwRnJvbUxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IExheWVyT3JkZXIsXG4gIGxheWVyR3JvdXBJZDogc3RyaW5nXG4pOiBMYXllck9yZGVyR3JvdXAgfCB1bmRlZmluZWQge1xuICBsZXQgZ3JvdXA6IExheWVyT3JkZXJHcm91cCB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXllck9yZGVyLmxlbmd0aCAmJiAhZ3JvdXA7IGkrKykge1xuICAgIGNvbnN0IGVudHJ5ID0gbGF5ZXJPcmRlcltpXTtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGNvbnN0IGdycCA9IGVudHJ5IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgIGdyb3VwID1cbiAgICAgICAgZ3JwLmlkID09PSBsYXllckdyb3VwSWQgPyBncnAgOiBnZXRMYXllckdyb3VwRnJvbUxheWVyT3JkZXIoZ3JwLmxheWVyT3JkZXIsIGxheWVyR3JvdXBJZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBncm91cDtcbn1cblxuLyoqXG4gKiBHcm91cHMgdGhhdCBjb250YWluIGBlbnRyeUlkYCwgbmVhcmVzdCBwYXJlbnQgZmlyc3QuXG4gKiBgZW50cnlJZGAgbWF5IGJlIGEgbGF5ZXIgaWQgb3IgYSBuZXN0ZWQgZ3JvdXAgaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmNlc3RvckxheWVyR3JvdXBzKGxheWVyT3JkZXI6IExheWVyT3JkZXIsIGVudHJ5SWQ6IHN0cmluZyk6IExheWVyT3JkZXJHcm91cFtdIHtcbiAgY29uc3QgYW5jZXN0b3JzOiBMYXllck9yZGVyR3JvdXBbXSA9IFtdO1xuXG4gIGNvbnN0IHZpc2l0ID0gKGVudHJpZXM6IExheWVyT3JkZXIpOiBib29sZWFuID0+IHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmICh0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChlbnRyeSA9PT0gZW50cnlJZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGdyb3VwID0gZW50cnkgYXMgTGF5ZXJPcmRlckdyb3VwO1xuICAgICAgaWYgKGdyb3VwLmlkID09PSBlbnRyeUlkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHZpc2l0KGdyb3VwLmxheWVyT3JkZXIpKSB7XG4gICAgICAgIGFuY2VzdG9ycy5wdXNoKGdyb3VwKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICB2aXNpdChsYXllck9yZGVyKTtcbiAgcmV0dXJuIGFuY2VzdG9ycztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgbGF5ZXIgc2hvdWxkIGJlIGRyYXduIGluIHRoZSBtYXAgbGVnZW5kLlxuICogQSBsYXllciBzdGF5cyBvbiB0aGUgbWFwIHdoZW4gdGhpcyBpcyBmYWxzZS4gTWlzc2luZyBmbGFncyBjb3VudCBhcyBpbmNsdWRlZC5cbiAqIEFuIGFuY2VzdG9yIGdyb3VwIHdpdGggYGlzSW5jbHVkZWRJbkxlZ2VuZDogZmFsc2VgIGhpZGVzIHRoZSBsYXllciBhcyB3ZWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclNob3duSW5MZWdlbmQoXG4gIGxheWVyOiB7aWQ6IHN0cmluZzsgY29uZmlnOiB7aXNJbmNsdWRlZEluTGVnZW5kPzogYm9vbGVhbn19LFxuICBsYXllck9yZGVyPzogTGF5ZXJPcmRlclxuKTogYm9vbGVhbiB7XG4gIGlmIChsYXllci5jb25maWcuaXNJbmNsdWRlZEluTGVnZW5kID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWxheWVyT3JkZXI/Lmxlbmd0aCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBnZXRBbmNlc3RvckxheWVyR3JvdXBzKGxheWVyT3JkZXIsIGxheWVyLmlkKS5ldmVyeShcbiAgICBncm91cCA9PiBncm91cC5pc0luY2x1ZGVkSW5MZWdlbmQgIT09IGZhbHNlXG4gICk7XG59XG5cbi8qKlxuICogRmluZCB0aGUgcGFyZW50IGdyb3VwIHRoYXQgY29udGFpbnMgYSBnaXZlbiBsYXllciBJRC5cbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBsYXllciBpcyBhdCB0aGUgcm9vdCBsZXZlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQYXJlbnRHcm91cEZvckxheWVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcklkOiBzdHJpbmdcbik6IExheWVyT3JkZXJHcm91cCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgbGF5ZXJPcmRlcikge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICBpZiAoZ3JvdXAubGF5ZXJPcmRlci5zb21lKGUgPT4gdHlwZW9mIGUgPT09ICdzdHJpbmcnICYmIGUgPT09IGxheWVySWQpKSB7XG4gICAgICAgIHJldHVybiBncm91cDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5lc3RlZCA9IGZpbmRQYXJlbnRHcm91cEZvckxheWVyKGdyb3VwLmxheWVyT3JkZXIsIGxheWVySWQpO1xuICAgICAgaWYgKG5lc3RlZCkgcmV0dXJuIG5lc3RlZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluZGV4RnJvbUxheWVyRW50cnlJZChsYXllck9yZGVyOiBMYXllck9yZGVyLCBsYXllckVudHJ5SWQ6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBsYXllck9yZGVyLmZpbmRJbmRleChlbnRyeSA9PlxuICAgIGlzUGxhaW5PYmplY3QoZW50cnkpID8gKGVudHJ5IGFzIExheWVyT3JkZXJHcm91cCkuaWQgPT09IGxheWVyRW50cnlJZCA6IGVudHJ5ID09PSBsYXllckVudHJ5SWRcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGF5ZXJQcmVzZW50SW5MYXllck9yZGVyKGxheWVyT3JkZXI6IExheWVyT3JkZXIsIGxheWVySWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXllck9yZGVyLmxlbmd0aCAmJiAhZm91bmQ7IGkrKykge1xuICAgIGNvbnN0IGVudHJ5ID0gbGF5ZXJPcmRlcltpXTtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGZvdW5kID0gaXNMYXllclByZXNlbnRJbkxheWVyT3JkZXIoKGVudHJ5IGFzIExheWVyT3JkZXJHcm91cCkubGF5ZXJPcmRlciwgbGF5ZXJJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvdW5kID0gbGF5ZXJJZCA9PT0gZW50cnk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VMYXllckVudHJ5SW5MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBvbGRFbnRyeTogTGF5ZXJPcmRlckVudHJ5LFxuICBuZXdFbnRyeTogTGF5ZXJPcmRlckVudHJ5XG4pOiBMYXllck9yZGVyIHtcbiAgY29uc3Qgb2xkRW50cnlJZCA9IHR5cGVvZiBvbGRFbnRyeSA9PT0gJ3N0cmluZycgPyBvbGRFbnRyeSA6IG9sZEVudHJ5LmlkO1xuICByZXR1cm4gbGF5ZXJPcmRlci5tYXAoZW50cnkgPT4ge1xuICAgIGlmICh0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZW50cnkgPT09IG9sZEVudHJ5SWQgPyBuZXdFbnRyeSA6IGVudHJ5O1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGNvbnN0IGdycCA9IGVudHJ5IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgIGlmIChncnAuaWQgPT09IG9sZEVudHJ5SWQpIHtcbiAgICAgICAgcmV0dXJuIG5ld0VudHJ5O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JwLFxuICAgICAgICBsYXllck9yZGVyOiByZXBsYWNlTGF5ZXJFbnRyeUluTGF5ZXJPcmRlcihncnAubGF5ZXJPcmRlciwgb2xkRW50cnksIG5ld0VudHJ5KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxheWVyR3JvdXBJbkxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IExheWVyT3JkZXIsXG4gIG5ld0xheWVyR3JvdXA6IExheWVyT3JkZXJHcm91cFxuKTogTGF5ZXJPcmRlciB7XG4gIHJldHVybiBsYXllck9yZGVyLm1hcChlbnRyeSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoZW50cnkpKSB7XG4gICAgICBjb25zdCBncnAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICBpZiAoZ3JwLmlkID09PSBuZXdMYXllckdyb3VwLmlkKSB7XG4gICAgICAgIHJldHVybiBuZXdMYXllckdyb3VwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JwLFxuICAgICAgICBsYXllck9yZGVyOiB1cGRhdGVMYXllckdyb3VwSW5MYXllck9yZGVyKGdycC5sYXllck9yZGVyLCBuZXdMYXllckdyb3VwKVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsYXRMYXllck9yZGVyKGxheWVyT3JkZXI6IExheWVyT3JkZXIpOiBGbGF0TGF5ZXJPcmRlciB7XG4gIHJldHVybiBsYXllck9yZGVyLnJlZHVjZSgoYWNjLCBvcmRlckVudHJ5KSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3Qob3JkZXJFbnRyeSkpIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCAuLi5nZXRGbGF0TGF5ZXJPcmRlcigob3JkZXJFbnRyeSBhcyBMYXllck9yZGVyR3JvdXApLmxheWVyT3JkZXIpXTtcbiAgICB9XG4gICAgcmV0dXJuIFsuLi5hY2MsIG9yZGVyRW50cnkgYXMgc3RyaW5nXTtcbiAgfSwgW10gYXMgRmxhdExheWVyT3JkZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMYXllck9yZGVySGllcmFyY2h5KFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcnM/OiBMYXllcltdIHwgcmVhZG9ubHkgTGF5ZXJbXVxuKTogTGF5ZXJPcmRlckhpZXJhcmNoeSB7XG4gIGNvbnN0IHZhbGlkTGF5ZXJzID0gbGF5ZXJzPy5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBsYXllck9yZGVyLnJlZHVjZSgoYWNjLCBlbGVtZW50KSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCBbJ2xheWVyR3JvdXAnLCBlbGVtZW50IGFzIExheWVyT3JkZXJHcm91cF0gYXMgY29uc3RdO1xuICAgIH1cbiAgICBjb25zdCBsYXllciA9IHZhbGlkTGF5ZXJzPy5maW5kKGwgPT4gbC5pZCA9PT0gZWxlbWVudCk7XG4gICAgaWYgKCFsYXllciB8fCBsYXllci5jb25maWcuaGlkZGVuKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLmFjYywgWydsYXllcicsIGxheWVyXSBhcyBjb25zdF07XG4gIH0sIFtdIGFzIExheWVyT3JkZXJIaWVyYXJjaHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlR2hvc3RMYXllckZyb21MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcnM6IHtpZDogc3RyaW5nfVtdXG4pOiBMYXllck9yZGVyIHtcbiAgcmV0dXJuIGxheWVyT3JkZXIucmVkdWNlKChhY2MsIGVudHJ5KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChsYXllcnMuZmluZChsID0+IGwuaWQgPT09IGVudHJ5KSkge1xuICAgICAgICBhY2MucHVzaChlbnRyeSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGdycCA9IGVudHJ5IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgIGlmIChncnAubGF5ZXJPcmRlcikge1xuICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgLi4uZ3JwLFxuICAgICAgICAgIGxheWVyT3JkZXI6IHJlbW92ZUdob3N0TGF5ZXJGcm9tTGF5ZXJPcmRlcihncnAubGF5ZXJPcmRlciwgbGF5ZXJzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10gYXMgTGF5ZXJPcmRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyTGF5ZXJPcmRlcihcbiAgbGF5ZXJPcmRlcjogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSxcbiAgb3JpZ2luTGF5ZXJJZDogc3RyaW5nLFxuICBkZXN0aW5hdGlvbkxheWVySWQ6IHN0cmluZ1xuKTogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSB7XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gZ2V0SW5kZXhGcm9tTGF5ZXJFbnRyeUlkKGxheWVyT3JkZXIsIG9yaWdpbkxheWVySWQpO1xuICBjb25zdCBvdmVySW5kZXggPSBnZXRJbmRleEZyb21MYXllckVudHJ5SWQobGF5ZXJPcmRlciwgZGVzdGluYXRpb25MYXllcklkKTtcblxuICBpZiAoYWN0aXZlSW5kZXggPT09IC0xIHx8IG92ZXJJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gbGF5ZXJPcmRlcjtcbiAgfVxuICByZXR1cm4gYXJyYXlNb3ZlKGxheWVyT3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGF5ZXJUb0xheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IFZpc1N0YXRlWydsYXllck9yZGVyJ10sXG4gIGxheWVySWQ6IHN0cmluZ1xuKTogTGF5ZXJPcmRlciB7XG4gIHJldHVybiBbbGF5ZXJJZCwgLi4ubGF5ZXJPcmRlcl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllckhvdmVyUHJvcFZhbHVlKFxuICBkYXRhOiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IGFueVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgZmllbGRJbmRleDogbnVtYmVyXG4pIHtcbiAgaWYgKCFkYXRhKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIERhdGFSb3cpIHJldHVybiBkYXRhLnZhbHVlQXQoZmllbGRJbmRleCk7XG4gIHJldHVybiBkYXRhW2ZpZWxkSW5kZXhdO1xufVxuXG4vKiogQ2hlY2tzIGlmIGFueSBEZWNrIGxheWVycyBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcmVBbnlEZWNrTGF5ZXJzTG9hZGluZyhsYXllcnM6IERlY2tMYXllcltdKTogYm9vbGVhbiB7XG4gIHJldHVybiBsYXllcnMuc29tZShcbiAgICAvLyBsYXllci5pc0xvYWRlZCBjaGFuZ2VzIGZyZXF1ZW50bHkgaW4gRGVjayAoZXZlbiBvbiBob3Zlcikgc28gd2UgY2hlY2sgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXG4gICAgbGF5ZXIgPT4gbGF5ZXIuaW50ZXJuYWxTdGF0ZSAmJiAhbGF5ZXIuaXNMb2FkZWRcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFxQkEsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBV0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssaUJBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUE2RCxTQUFBTywyQkFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEseUJBQUFDLE1BQUEsSUFBQUgsQ0FBQSxDQUFBRyxNQUFBLENBQUFDLFFBQUEsS0FBQUosQ0FBQSxxQkFBQUUsQ0FBQSxRQUFBRyxLQUFBLENBQUFDLE9BQUEsQ0FBQU4sQ0FBQSxNQUFBRSxDQUFBLEdBQUFLLDJCQUFBLENBQUFQLENBQUEsTUFBQUMsQ0FBQSxJQUFBRCxDQUFBLHVCQUFBQSxDQUFBLENBQUFRLE1BQUEsSUFBQU4sQ0FBQSxLQUFBRixDQUFBLEdBQUFFLENBQUEsT0FBQU8sRUFBQSxNQUFBQyxDQUFBLFlBQUFBLEVBQUEsZUFBQUMsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUEsRUFB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
769
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbnN0YW50cyIsIl9sYXllcnMiLCJfdXRpbHMiLCJfY29tbW9uVXRpbHMiLCJfaW50ZXJhY3Rpb25VdGlscyIsIl9kZWNrZ2xMYXllcnMiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJmaW5kRGVmYXVsdExheWVyIiwiZGF0YXNldCIsImxheWVyQ2xhc3NlcyIsImxheWVyUHJvcHMiLCJyZWR1Y2UiLCJwcmV2aW91cyIsImxjIiwicmVzdWx0IiwiZmluZERlZmF1bHRMYXllclByb3BzIiwicHJvcHMiLCJmb3VuZExheWVycyIsImNvbmNhdCIsIm1hcCIsInAiLCJ0eXBlIiwiZGF0YUlkIiwiaWQiLCJpc1Zpc2libGUiLCJsYXllciIsInNldEluaXRpYWxMYXllckNvbmZpZyIsImRhdGFDb250YWluZXIiLCJtZXJnZUxheWVyVmlzQ29uZmlnRm9yTmV3RGF0YXNldHMiLCJzdGF0ZSIsInBhdGNoIiwiZGF0YXNldElkc1RvUGF0Y2giLCJoYXNEZWZpbmVkUGF0Y2hWYWx1ZSIsInNvbWUiLCJrZXkiLCJ1bmRlZmluZWQiLCJkYXRhc2V0SWRTZXQiLCJTZXQiLCJsYXllcnMiLCJjb25maWciLCJoYXMiLCJzZXR0aW5ncyIsInZpc0NvbmZpZ1NldHRpbmdzIiwiYWxsb3dlZEtleXMiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInBhcnRpYWwiLCJhY2MiLCJ1cGRhdGVMYXllclZpc0NvbmZpZyIsImNhbGN1bGF0ZUxheWVyRGF0YSIsIm9sZExheWVyRGF0YSIsImxheWVyRGF0YSIsImlzVmFsaWQiLCJfb2xkRGF0YVVwZGF0ZVRyaWdnZXJzIiwiaGFzQWxsQ29sdW1ucyIsImZvcm1hdExheWVyRGF0YSIsImRhdGFzZXRzIiwidXBkYXRlTGF5ZXJDb25maWciLCJlcnJvck1lc3NhZ2UiLCJlcnIiLCJDb25zb2xlIiwiZXJyb3IiLCJFcnJvciIsIm1lc3NhZ2UiLCJzdWJzdHJpbmciLCJnZXRMYXllckhvdmVyUHJvcCIsIl9yZWYiLCJhbmltYXRpb25Db25maWciLCJpbnRlcmFjdGlvbkNvbmZpZyIsImhvdmVySW5mbyIsImxheWVyc1RvUmVuZGVyIiwidG9vbHRpcCIsImVuYWJsZWQiLCJwaWNrZWQiLCJvYmplY3QiLCJvdmVybGF5IiwiaWR4IiwiaW5kZXgiLCJnZXRIb3ZlckRhdGEiLCJfZGF0YXNldHMkZGF0YUlkIiwiZmllbGRzIiwiZGF0YSIsImZpZWxkc1RvU2hvdyIsImN1cnJlbnRUaW1lIiwidGltZXpvbmUiLCJaT09NX09QQUNJVFlfUFJPUF9LRVlTIiwic2NhbGVab29tT3BhY2l0eVN1YkxheWVyUHJvcHMiLCJzdWJMYXllclByb3BzIiwiZmFjdG9yIiwiY2hhbmdlZCIsIl9pIiwiX09iamVjdCRrZXlzIiwic3VibGF5ZXIiLCJfdHlwZW9mMiIsInNjYWxlZCIsInN1YmxheWVyQ2hhbmdlZCIsIl9pdGVyYXRvciIsIl9zdGVwIiwiYXBwbHlab29tT3BhY2l0eVRvRGVja0xheWVyIiwiZGVja0xheWVyIiwiX2RlY2tMYXllciRwcm9wcyIsIl9kZWNrTGF5ZXIkcHJvcHMyIiwiX2RlY2tMYXllciRwcm9wczMiLCJjbG9uZSIsImJhc2VPcGFjaXR5Iiwib3BhY2l0eSIsIl9zdWJMYXllclByb3BzIiwidmlzaWJsZSIsInJlbmRlckRlY2tHbExheWVyIiwibGF5ZXJDYWxsYmFja3MiLCJsYXllckluZGV4IiwiY2xpY2tlZCIsIm1hcFN0YXRlIiwibWFwTGF5ZXJzIiwiZXhwZXJpbWVudGFsQ29udGV4dCIsIl9yZWYyIiwiZ3B1RmlsdGVyIiwib2JqZWN0SG92ZXJlZCIsIkJvb2xlYW4iLCJyZW5kZXJlZCIsInJlbmRlckxheWVyIiwiZ2V0TGF5ZXJab29tT3BhY2l0eUZhY3RvciIsInpvb20iLCJpc0xheWVyUmVuZGVyYWJsZSIsIkdFT0NPREVSX0xBWUVSX0lEIiwic2hvdWxkUmVuZGVyTGF5ZXIiLCJpc0xheWVyVmlzaWJsZSIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiYWNjdSIsIm92ZXJsYXlUeXBlIiwiT1ZFUkxBWV9UWVBFX0NPTlNUIiwiZGVja2dsIiwicHJlcGFyZUxheWVyc1RvUmVuZGVyIiwiZ2V0Q3VzdG9tRGVja0xheWVycyIsImRlY2tHbFByb3BzIiwiYm90dG9tRGVja0xheWVycyIsImlzRnVuY3Rpb24iLCJ0b3BEZWNrTGF5ZXJzIiwidG9wTGF5ZXJzIiwiYmluZExheWVyQ2FsbGJhY2tzIiwidmFsIiwiY29tcHV0ZURlY2tMYXllcnNGcm9tTGF5ZXJPcmRlciIsImxheWVyT3JkZXIiLCJjdXJyZW50TGF5ZXJzRm9yRGVjayIsInJlbmRlclByb3BzIiwiaGFzU2hhZG93RWZmZWN0IiwiaXNBbm5vdGF0aW9uTW9kZSIsInJldmVyc2UiLCJvdmVybGF5cyIsImVsZW1lbnQiLCJpc1BsYWluT2JqZWN0IiwibGF5ZXJHcm91cCIsImxheWVySWQiLCJmaW5kSW5kZXgiLCJfcmVmMyIsImJpbmRlZExheWVyQ2FsbGJhY2tzIiwibGF5ZXJPdmVybGF5IiwiY29tcHV0ZURlY2tMYXllcnMiLCJfcmVmNCIsIm9wdGlvbnMiLCJ2aXNTdGF0ZSIsIm1hcFN0eWxlIiwiZWZmZWN0cyIsInNwbGl0TWFwcyIsIl9yZWY1IiwibWFwSW5kZXgiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsInByaW1hcnlNYXAiLCJsYXllcnNGb3JEZWNrIiwiZWRpdG9ySW5mbyIsImRhdGFMYXllcnMiLCJlZmZlY3QiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVCIsImdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMiLCJfcmVmNiIsInZpc2libGVMYXllckdyb3VwcyIsIlRocmVlREJ1aWxkaW5nTGF5ZXIiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwicGlja2FibGUiLCJ1cGRhdGVUcmlnZ2VycyIsImdldEZpbGxDb2xvciIsIl9nZXRDdXN0b21EZWNrTGF5ZXJzIiwiX2dldEN1c3RvbURlY2tMYXllcnMyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY3VzdG9tQm90dG9tRGVja0xheWVycyIsImN1c3RvbVRvcERlY2tMYXllcnMiLCJlZGl0b3JMYXllciIsImdldEVkaXRvckxheWVyIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImdldExheWVyT3JkZXJGcm9tTGF5ZXJzIiwiX3JlZjciLCJnZXROZXdMYXllckdyb3VwIiwiX3Byb3BzJGlkIiwiX3Byb3BzJGxhYmVsIiwiX3Byb3BzJGlzVmlzaWJsZSIsIl9wcm9wcyRsYXllck9yZGVyIiwiX3Byb3BzJGlzSW5jbHVkZWRJbkxlIiwiZ2VuZXJhdGVIYXNoSWQiLCJsYWJlbCIsImlzSW5jbHVkZWRJbkxlZ2VuZCIsImFkZExheWVyT3JHcm91cFRvTGF5ZXJPcmRlciIsImF0SW5kZXgiLCJzcGxpY2UiLCJyZW1vdmVFbGVtZW50RnJvbUxheWVyT3JkZXIiLCJlbGVtZW50SWQiLCJuZXdMYXllck9yZGVyIiwiZW50cnkiLCJncm91cCIsImdldExheWVyR3JvdXBGcm9tTGF5ZXJPcmRlciIsImxheWVyR3JvdXBJZCIsImkiLCJncnAiLCJnZXRBbmNlc3RvckxheWVyR3JvdXBzIiwiZW50cnlJZCIsImFuY2VzdG9ycyIsInZpc2l0IiwiZW50cmllcyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJpc0xheWVyU2hvd25JbkxlZ2VuZCIsImV2ZXJ5IiwiZmluZFBhcmVudEdyb3VwRm9yTGF5ZXIiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwibmVzdGVkIiwiZ2V0SW5kZXhGcm9tTGF5ZXJFbnRyeUlkIiwibGF5ZXJFbnRyeUlkIiwiaXNMYXllclByZXNlbnRJbkxheWVyT3JkZXIiLCJmb3VuZCIsInJlcGxhY2VMYXllckVudHJ5SW5MYXllck9yZGVyIiwib2xkRW50cnkiLCJuZXdFbnRyeSIsIm9sZEVudHJ5SWQiLCJ1cGRhdGVMYXllckdyb3VwSW5MYXllck9yZGVyIiwibmV3TGF5ZXJHcm91cCIsImdldEZsYXRMYXllck9yZGVyIiwib3JkZXJFbnRyeSIsImJ1aWxkTGF5ZXJPcmRlckhpZXJhcmNoeSIsInZhbGlkTGF5ZXJzIiwiZmluZCIsImwiLCJoaWRkZW4iLCJyZW1vdmVHaG9zdExheWVyRnJvbUxheWVyT3JkZXIiLCJyZW9yZGVyTGF5ZXJPcmRlciIsIm9yaWdpbkxheWVySWQiLCJkZXN0aW5hdGlvbkxheWVySWQiLCJhY3RpdmVJbmRleCIsIm92ZXJJbmRleCIsImFycmF5TW92ZSIsImFkZExheWVyVG9MYXllck9yZGVyIiwiZ2V0TGF5ZXJIb3ZlclByb3BWYWx1ZSIsImZpZWxkSW5kZXgiLCJEYXRhUm93IiwidmFsdWVBdCIsImFyZUFueURlY2tMYXllcnNMb2FkaW5nIiwiaW50ZXJuYWxTdGF0ZSIsImlzTG9hZGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xheWVyLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBDb25zb2xlIGZyb20gJ2dsb2JhbC9jb25zb2xlJztcblxuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRCwgTElHSFRfQU5EX1NIQURPV19FRkZFQ1R9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TGF5ZXIgYXMgRGVja0xheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbnR5cGUgRGVja0xheWVyUHJvcHMgPSBhbnk7XG5pbXBvcnQge1xuICBGaWVsZCxcbiAgTGF5ZXJWaXNDb25maWcsXG4gIFRvb2x0aXBGaWVsZCxcbiAgQ29tcGFyZVR5cGUsXG4gIFNwbGl0TWFwTGF5ZXJzLFxuICBFZGl0b3IsXG4gIEZlYXR1cmUsXG4gIEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0LFxuICBCaW5kZWRMYXllckNhbGxiYWNrcyxcbiAgTGF5ZXJDYWxsYmFja3MsXG4gIFZpZXdwb3J0LFxuICBMYXllck9yZGVyR3JvdXAsXG4gIExheWVyT3JkZXIsXG4gIExheWVyT3JkZXJFbnRyeSxcbiAgRmxhdExheWVyT3JkZXIsXG4gIExheWVyT3JkZXJIaWVyYXJjaHlcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSxcbiAgRmluZERlZmF1bHRMYXllclByb3BzLFxuICBMYXllcixcbiAgTGF5ZXJDbGFzc2VzVHlwZSxcbiAgT1ZFUkxBWV9UWVBFX0NPTlNULFxuICBnZXRFZGl0b3JMYXllclxufSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5cbmltcG9ydCBLZXBsZXJUYWJsZSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge2lzRnVuY3Rpb24sIGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMsIERhdGFSb3csIGlzUGxhaW5PYmplY3R9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHthcnJheU1vdmUsIGdlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge2dldExheWVyWm9vbU9wYWNpdHlGYWN0b3J9IGZyb20gJy4vaW50ZXJhY3Rpb24tdXRpbHMnO1xuXG5pbXBvcnQge1RocmVlREJ1aWxkaW5nTGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5cbmV4cG9ydCB0eXBlIExheWVyc1RvUmVuZGVyID0ge1xuICBbbGF5ZXJJZDogc3RyaW5nXTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEgPSB7XG4gIHBvaW50czogYW55W107XG4gIGNvbG9yVmFsdWU/OiBhbnk7XG4gIGVsZXZhdGlvblZhbHVlPzogYW55O1xuICBhZ2dyZWdhdGVkRGF0YT86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgbWVhc3VyZTogc3RyaW5nO1xuICAgICAgdmFsdWU/OiBhbnk7XG4gICAgfVxuICA+O1xufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJIb3ZlclByb3AgPSB7XG4gIGRhdGE6IERhdGFSb3cgfCBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhIHwgYW55W10gfCBudWxsO1xuICBmaWVsZHM6IEZpZWxkW107XG4gIGZpZWxkc1RvU2hvdzogVG9vbHRpcEZpZWxkW107XG4gIGxheWVyOiBMYXllcjtcbiAgcHJpbWFyeURhdGE/OiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IGFueVtdIHwgbnVsbDtcbiAgY29tcGFyZVR5cGU/OiBDb21wYXJlVHlwZTtcbiAgY3VycmVudFRpbWU/OiBWaXNTdGF0ZVsnYW5pbWF0aW9uQ29uZmlnJ11bJ2N1cnJlbnRUaW1lJ107XG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbDtcbn07XG5cbi8qKlxuICogRmluZCBkZWZhdWx0IGxheWVycyBmcm9tIGZpZWxkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZERlZmF1bHRMYXllcihkYXRhc2V0OiBLZXBsZXJUYWJsZSwgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlKTogTGF5ZXJbXSB7XG4gIGlmICghZGF0YXNldCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGxheWVyUHJvcHMgPSAoT2JqZWN0LmtleXMobGF5ZXJDbGFzc2VzKSBhcyBBcnJheTxrZXlvZiBMYXllckNsYXNzZXNUeXBlPikucmVkdWNlKFxuICAgIChwcmV2aW91cywgbGMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdDogRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUgPVxuICAgICAgICB0eXBlb2YgbGF5ZXJDbGFzc2VzW2xjXS5maW5kRGVmYXVsdExheWVyUHJvcHMgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IGxheWVyQ2xhc3Nlc1tsY10uZmluZERlZmF1bHRMYXllclByb3BzKGRhdGFzZXQsIHByZXZpb3VzKVxuICAgICAgICAgIDoge3Byb3BzOiBbXX07XG5cbiAgICAgIGNvbnN0IHByb3BzID0gQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0IDogcmVzdWx0LnByb3BzIHx8IFtdO1xuICAgICAgY29uc3QgZm91bmRMYXllcnMgPSByZXN1bHQuZm91bmRMYXllcnMgfHwgcHJldmlvdXM7XG5cbiAgICAgIHJldHVybiBmb3VuZExheWVycy5jb25jYXQoXG4gICAgICAgIHByb3BzLm1hcChwID0+ICh7XG4gICAgICAgICAgLi4ucCxcbiAgICAgICAgICB0eXBlOiBsYyxcbiAgICAgICAgICBkYXRhSWQ6IGRhdGFzZXQuaWQsXG4gICAgICAgICAgLy8gc2V0IGFyYyBsYXllciBpbml0aWFsIHZpc2libGl0eSB0byBmYWxzZSwgYmVjYXVzZSBhcmNzIHRlbmQgdG8gYmUgdG9vIG11c3lcbiAgICAgICAgICAuLi4obGMgPT09ICdhcmMnIHx8IGxjID09PSAnbGluZScgPyB7aXNWaXNpYmxlOiBmYWxzZX0gOiB7fSlcbiAgICAgICAgfSkpXG4gICAgICApO1xuICAgIH0sXG4gICAgW10gYXMgKEZpbmREZWZhdWx0TGF5ZXJQcm9wcyAmIHt0eXBlOiBzdHJpbmd9KVtdXG4gICk7XG5cbiAgLy8gZ28gdGhyb3VnaCBhbGwgbGF5ZXJQcm9wcyB0byBjcmVhdGUgbGF5ZXJcbiAgcmV0dXJuIGxheWVyUHJvcHMubWFwKHByb3BzID0+IHtcbiAgICBjb25zdCBsYXllciA9IG5ldyBsYXllckNsYXNzZXNbcHJvcHMudHlwZV0ocHJvcHMpO1xuICAgIHJldHVybiB0eXBlb2YgbGF5ZXIuc2V0SW5pdGlhbExheWVyQ29uZmlnID09PSAnZnVuY3Rpb24nICYmIGRhdGFzZXQuZGF0YUNvbnRhaW5lclxuICAgICAgPyBsYXllci5zZXRJbml0aWFsTGF5ZXJDb25maWcoZGF0YXNldClcbiAgICAgIDogbGF5ZXI7XG4gIH0pO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYHBhdGNoYCB0byBgY29uZmlnLnZpc0NvbmZpZ2Agb25seSBmb3IgbGF5ZXJzIHdob3NlIGBkYXRhSWRgIGlzIGluIGBkYXRhc2V0SWRzVG9QYXRjaGAuXG4gKiBMYXllcnMgZm9yIGRhdGFzZXRzIHRoYXQgd2VyZSBhbHJlYWR5IG9uIHRoZSBtYXAgYXJlIGxlZnQgdW5jaGFuZ2VkIOKAlCBgYWRkRGF0YVRvTWFwYFxuICogS2V5cyB3aG9zZSBwYXRjaCB2YWx1ZSBpcyBgdW5kZWZpbmVkYCBhcmUgc2tpcHBlZCBzbyBleGlzdGluZyB2aXNDb25maWcgaXMgbm90IGNsZWFyZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyVmlzQ29uZmlnRm9yTmV3RGF0YXNldHMoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgcGF0Y2g6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+IHwgdW5kZWZpbmVkLFxuICBkYXRhc2V0SWRzVG9QYXRjaDogc3RyaW5nW11cbik6IFZpc1N0YXRlIHtcbiAgaWYgKCFwYXRjaCB8fCAhT2JqZWN0LmtleXMocGF0Y2gpLmxlbmd0aCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IGhhc0RlZmluZWRQYXRjaFZhbHVlID0gKE9iamVjdC5rZXlzKHBhdGNoKSBhcyBBcnJheTxrZXlvZiBMYXllclZpc0NvbmZpZz4pLnNvbWUoXG4gICAga2V5ID0+IHBhdGNoW2tleV0gIT09IHVuZGVmaW5lZFxuICApO1xuICBpZiAoIWhhc0RlZmluZWRQYXRjaFZhbHVlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgZGF0YXNldElkU2V0ID0gbmV3IFNldChkYXRhc2V0SWRzVG9QYXRjaCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IHN0YXRlLmxheWVycy5tYXAobGF5ZXIgPT4ge1xuICAgICAgaWYgKCFsYXllci5jb25maWcuZGF0YUlkIHx8ICFkYXRhc2V0SWRTZXQuaGFzKGxheWVyLmNvbmZpZy5kYXRhSWQpKSB7XG4gICAgICAgIHJldHVybiBsYXllcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNldHRpbmdzID0gbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3M7XG4gICAgICBpZiAoIXNldHRpbmdzKSB7XG4gICAgICAgIHJldHVybiBsYXllcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFsbG93ZWRLZXlzID0gKE9iamVjdC5rZXlzKHBhdGNoKSBhcyBBcnJheTxrZXlvZiBMYXllclZpc0NvbmZpZz4pLmZpbHRlcihcbiAgICAgICAga2V5ID0+IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzZXR0aW5ncywga2V5KSAmJiBwYXRjaFtrZXldICE9PSB1bmRlZmluZWRcbiAgICAgICk7XG4gICAgICBpZiAoIWFsbG93ZWRLZXlzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbGF5ZXI7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJ0aWFsID0gYWxsb3dlZEtleXMucmVkdWNlPFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+PigoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgYWNjW2tleV0gPSBwYXRjaFtrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuICAgICAgcmV0dXJuIGxheWVyLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHBhcnRpYWwpO1xuICAgIH0pXG4gIH07XG59XG5cbnR5cGUgTWluVmlzU3RhdGVGb3JMYXllckRhdGEgPSB7XG4gIGRhdGFzZXRzOiBWaXNTdGF0ZVsnZGF0YXNldHMnXTtcbiAgYW5pbWF0aW9uQ29uZmlnOiBWaXNTdGF0ZVsnYW5pbWF0aW9uQ29uZmlnJ107XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSBsYXllciBkYXRhIGJhc2VkIG9uIGxheWVyIHR5cGUsIGNvbCBDb25maWcsXG4gKiByZXR1cm4gdXBkYXRlZCBsYXllciBpZiBjb2xvckRvbWFpbiwgZGF0YU1hcCBoYXMgY2hhbmdlZC5cbiAqIEFsc28sIHJldHVybnMgdXBkYXRlZCBsYXllciBpbiBjYXNlIHRoZSBpbnB1dCBsYXllciB3YXMgaW4gaW52YWxpZCBzdGF0ZS5cbiAqIEFkZHMgYW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgbGF5ZXIgaW4gY2FzZSBvZiBhbiBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVMYXllckRhdGE8UyBleHRlbmRzIE1pblZpc1N0YXRlRm9yTGF5ZXJEYXRhPihcbiAgbGF5ZXI6IExheWVyLFxuICBzdGF0ZTogUyxcbiAgb2xkTGF5ZXJEYXRhPzogYW55XG4pOiB7XG4gIGxheWVyRGF0YTogYW55O1xuICBsYXllcjogTGF5ZXI7XG59IHtcbiAgbGV0IGxheWVyRGF0YTtcbiAgdHJ5IHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGxheWVyIHVwZGF0ZXMgZGF0YSBhZnRlciBhbiBlcnJvclxuICAgIGlmICghbGF5ZXIuaXNWYWxpZCkge1xuICAgICAgbGF5ZXIuX29sZERhdGFVcGRhdGVUcmlnZ2VycyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIWxheWVyLnR5cGUgfHwgIWxheWVyLmhhc0FsbENvbHVtbnMoKSB8fCAhbGF5ZXIuY29uZmlnLmRhdGFJZCkge1xuICAgICAgcmV0dXJuIHtsYXllciwgbGF5ZXJEYXRhOiB7fX07XG4gICAgfVxuXG4gICAgbGF5ZXJEYXRhID0gbGF5ZXIuZm9ybWF0TGF5ZXJEYXRhKHN0YXRlLmRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgZGF0YSBmb3IgdGhlIGxheWVyIGlzIHVwZGF0ZWQgd2l0aG91dCBlcnJvcnNcbiAgICBpZiAoIWxheWVyLmlzVmFsaWQpIHtcbiAgICAgIC8vIFN3aXRjaCB0byB2aXNpYmxlIGFmdGVyIGFuIGVycm9yXG4gICAgICBsYXllciA9IGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGF5ZXIuaXNWYWxpZCA9IHRydWU7XG4gICAgbGF5ZXIuZXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgQ29uc29sZS5lcnJvcihlcnIpO1xuICAgIGxheWVyID0gbGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgaXNWaXNpYmxlOiBmYWxzZVxuICAgIH0pO1xuICAgIGxheWVyLmlzVmFsaWQgPSBmYWxzZTtcblxuICAgIGxheWVyLmVycm9yTWVzc2FnZSA9XG4gICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnIubWVzc2FnZSA/IGVyci5tZXNzYWdlLnN1YnN0cmluZygwLCAxMDApIDogJ1Vua25vd24gZXJyb3InO1xuXG4gICAgbGF5ZXJEYXRhID0ge307XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxheWVyLFxuICAgIGxheWVyRGF0YVxuICB9O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBwcm9wcyBwYXNzZWQgdG8gTGF5ZXJIb3ZlckluZm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVySG92ZXJQcm9wKHtcbiAgYW5pbWF0aW9uQ29uZmlnLFxuICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgaG92ZXJJbmZvLFxuICBsYXllcnMsXG4gIGxheWVyc1RvUmVuZGVyLFxuICBkYXRhc2V0c1xufToge1xuICBpbnRlcmFjdGlvbkNvbmZpZzogVmlzU3RhdGVbJ2ludGVyYWN0aW9uQ29uZmlnJ107XG4gIGFuaW1hdGlvbkNvbmZpZzogVmlzU3RhdGVbJ2FuaW1hdGlvbkNvbmZpZyddO1xuICBob3ZlckluZm86IFZpc1N0YXRlWydob3ZlckluZm8nXTtcbiAgbGF5ZXJzOiBWaXNTdGF0ZVsnbGF5ZXJzJ107XG4gIGxheWVyc1RvUmVuZGVyOiBMYXllcnNUb1JlbmRlcjtcbiAgZGF0YXNldHM6IFZpc1N0YXRlWydkYXRhc2V0cyddO1xufSk6IExheWVySG92ZXJQcm9wIHwgbnVsbCB7XG4gIGlmIChpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmVuYWJsZWQgJiYgaG92ZXJJbmZvICYmIGhvdmVySW5mby5waWNrZWQpIHtcbiAgICAvLyBpZiBhbnl0aGluZyBob3ZlcmVkXG4gICAgY29uc3Qge29iamVjdCwgbGF5ZXI6IG92ZXJsYXl9ID0gaG92ZXJJbmZvO1xuXG4gICAgLy8gZGVja2dsIGxheWVyIHRvIGtlcGxlci1nbCBsYXllclxuICAgIGNvbnN0IGxheWVyID0gbGF5ZXJzW292ZXJsYXkucHJvcHMuaWR4XTtcblxuICAgIC8vIE5PVEU6IGZvciBiaW5hcnkgZm9ybWF0IEdlb2pzb25MYXllciwgZGVjayB3aWxsIHJldHVybiBvYmplY3Q9bnVsbCBidXQgaG92ZXJJbmZvLmluZGV4ID49IDBcbiAgICBpZiAoXG4gICAgICAob2JqZWN0IHx8IGhvdmVySW5mby5pbmRleCA+PSAwKSAmJlxuICAgICAgbGF5ZXIgJiZcbiAgICAgIGxheWVyLmdldEhvdmVyRGF0YSAmJlxuICAgICAgbGF5ZXJzVG9SZW5kZXJbbGF5ZXIuaWRdXG4gICAgKSB7XG4gICAgICAvLyBpZiBsYXllciBpcyB2aXNpYmxlIGFuZCBoYXZlIGhvdmVyZWQgZGF0YVxuICAgICAgY29uc3Qge1xuICAgICAgICBjb25maWc6IHtkYXRhSWR9XG4gICAgICB9ID0gbGF5ZXI7XG4gICAgICBpZiAoIWRhdGFJZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyLCBmaWVsZHN9ID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgICAgIGNvbnN0IGRhdGE6IERhdGFSb3cgfCBudWxsID0gbGF5ZXIuZ2V0SG92ZXJEYXRhKFxuICAgICAgICBvYmplY3QgfHwgaG92ZXJJbmZvLmluZGV4LFxuICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgaG92ZXJJbmZvXG4gICAgICApO1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgZmllbGRzVG9TaG93ID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgZmllbGRzVG9TaG93LFxuICAgICAgICBsYXllcixcbiAgICAgICAgY3VycmVudFRpbWU6IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSxcbiAgICAgICAgdGltZXpvbmU6IGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLnRpbWV6b25lXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5jb25zdCBaT09NX09QQUNJVFlfUFJPUF9LRVlTID0gWydvcGFjaXR5JywgJ2xpbmVPcGFjaXR5JywgJ3N0cm9rZU9wYWNpdHknXTtcblxuLyoqIFN0cm9rZSBhbmQgb3V0bGluZSBwcm9wcyByZXBsYWNlIHRoZSBwYXJlbnQgb3BhY2l0eSwgc28gdGhleSBuZWVkIHRoZSBzYW1lIGZhY3Rvci4gKi9cbmZ1bmN0aW9uIHNjYWxlWm9vbU9wYWNpdHlTdWJMYXllclByb3BzKFxuICBzdWJMYXllclByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkLFxuICBmYWN0b3I6IG51bWJlclxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmICghc3ViTGF5ZXJQcm9wcykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgY29uc3QgbmV4dDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHN1YkxheWVyUHJvcHMpKSB7XG4gICAgY29uc3Qgc3VibGF5ZXIgPSBzdWJMYXllclByb3BzW2lkXTtcbiAgICBpZiAoIXN1YmxheWVyIHx8IHR5cGVvZiBzdWJsYXllciAhPT0gJ29iamVjdCcpIHtcbiAgICAgIG5leHRbaWRdID0gc3VibGF5ZXI7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3Qgc2NhbGVkID0gey4uLnN1YmxheWVyfTtcbiAgICBsZXQgc3VibGF5ZXJDaGFuZ2VkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgWk9PTV9PUEFDSVRZX1BST1BfS0VZUykge1xuICAgICAgaWYgKHR5cGVvZiBzdWJsYXllcltrZXldID09PSAnbnVtYmVyJykge1xuICAgICAgICBzY2FsZWRba2V5XSA9IHN1YmxheWVyW2tleV0gKiBmYWN0b3I7XG4gICAgICAgIHN1YmxheWVyQ2hhbmdlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIG5leHRbaWRdID0gc3VibGF5ZXJDaGFuZ2VkID8gc2NhbGVkIDogc3VibGF5ZXI7XG4gICAgaWYgKHN1YmxheWVyQ2hhbmdlZCkge1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBjaGFuZ2VkID8gbmV4dCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gYXBwbHlab29tT3BhY2l0eVRvRGVja0xheWVyKGRlY2tMYXllcjogYW55LCBmYWN0b3I6IG51bWJlcik6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRlY2tMYXllcikpIHtcbiAgICByZXR1cm4gZGVja0xheWVyLm1hcChsYXllciA9PiBhcHBseVpvb21PcGFjaXR5VG9EZWNrTGF5ZXIobGF5ZXIsIGZhY3RvcikpO1xuICB9XG4gIGlmICghZGVja0xheWVyIHx8IGZhY3RvciA9PT0gMSB8fCB0eXBlb2YgZGVja0xheWVyLmNsb25lICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGRlY2tMYXllcjtcbiAgfVxuICBjb25zdCBiYXNlT3BhY2l0eSA9IGRlY2tMYXllci5wcm9wcz8ub3BhY2l0eTtcbiAgY29uc3Qgb3BhY2l0eSA9ICh0eXBlb2YgYmFzZU9wYWNpdHkgPT09ICdudW1iZXInID8gYmFzZU9wYWNpdHkgOiAxKSAqIGZhY3RvcjtcbiAgY29uc3Qgc3ViTGF5ZXJQcm9wcyA9IHNjYWxlWm9vbU9wYWNpdHlTdWJMYXllclByb3BzKGRlY2tMYXllci5wcm9wcz8uX3N1YkxheWVyUHJvcHMsIGZhY3Rvcik7XG4gIHJldHVybiBkZWNrTGF5ZXIuY2xvbmUoe1xuICAgIG9wYWNpdHksXG4gICAgLy8gRnVsbHkgZmFkZWQgbGF5ZXJzIGFyZSBub3QgcGlja2FibGUuXG4gICAgdmlzaWJsZTogZGVja0xheWVyLnByb3BzPy52aXNpYmxlICE9PSBmYWxzZSAmJiBmYWN0b3IgPiAwLFxuICAgIC4uLihzdWJMYXllclByb3BzID8ge19zdWJMYXllclByb3BzOiBzdWJMYXllclByb3BzfSA6IHt9KVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckRlY2tHbExheWVyKHByb3BzOiBhbnksIGxheWVyQ2FsbGJhY2tzOiB7W2tleTogc3RyaW5nXTogYW55fSkge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgbGF5ZXIsXG4gICAgbGF5ZXJJbmRleCxcbiAgICBkYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIG1hcFN0YXRlLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBtYXBMYXllcnMsXG4gICAgZXhwZXJpbWVudGFsQ29udGV4dFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXTtcbiAgY29uc3Qge2dwdUZpbHRlcn0gPSBkYXRhc2V0IHx8IHt9O1xuICBjb25zdCBvYmplY3RIb3ZlcmVkID0gY2xpY2tlZCB8fCBob3ZlckluZm87XG4gIC8vIGluIHNwbGl0IG1vZGUgYSBsYXllciBtaXNzaW5nIGZyb20gbWFwTGF5ZXJzIGlzIGhpZGRlbiwgc28gY29lcmNlIHRvIGEgYm9vbGVhblxuICAvLyBpbnN0ZWFkIG9mIGxlYWtpbmcgdW5kZWZpbmVkIGludG8gZGVjay5nbCdzIHZpc2libGUgcHJvcFxuICBjb25zdCB2aXNpYmxlID0gIW1hcExheWVycyB8fCBCb29sZWFuKG1hcExheWVyc1tsYXllci5pZF0pO1xuICAvLyBMYXllciBpcyBMYXllciBjbGFzc1xuICBjb25zdCByZW5kZXJlZCA9IGxheWVyLnJlbmRlckxheWVyKHtcbiAgICBkYXRhLFxuICAgIGdwdUZpbHRlcixcbiAgICBpZHg6IGxheWVySW5kZXgsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgbGF5ZXJDYWxsYmFja3MsXG4gICAgbWFwU3RhdGUsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG9iamVjdEhvdmVyZWQsXG4gICAgdmlzaWJsZSxcbiAgICBkYXRhc2V0LFxuICAgIGV4cGVyaW1lbnRhbENvbnRleHRcbiAgfSk7XG4gIGNvbnN0IGZhY3RvciA9IGdldExheWVyWm9vbU9wYWNpdHlGYWN0b3IobGF5ZXIuaWQsIG1hcFN0YXRlPy56b29tLCBpbnRlcmFjdGlvbkNvbmZpZyk7XG4gIHJldHVybiBhcHBseVpvb21PcGFjaXR5VG9EZWNrTGF5ZXIocmVuZGVyZWQsIGZhY3Rvcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xheWVyUmVuZGVyYWJsZShsYXllcjogTGF5ZXIsIGxheWVyRGF0YSkge1xuICByZXR1cm4gbGF5ZXIuaWQgIT09IEdFT0NPREVSX0xBWUVSX0lEICYmIGxheWVyLnNob3VsZFJlbmRlckxheWVyKGxheWVyRGF0YSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xheWVyVmlzaWJsZShsYXllciwgbWFwTGF5ZXJzKSB7XG4gIHJldHVybiAoXG4gICAgbGF5ZXIuY29uZmlnLmlzVmlzaWJsZSAmJlxuICAgIC8vIGlmIGxheWVyLmlkIGlzIG5vdCBpbiBtYXBMYXllcnMsIGRvbid0IHJlbmRlciBpdFxuICAgICghbWFwTGF5ZXJzIHx8IChtYXBMYXllcnMgJiYgbWFwTGF5ZXJzW2xheWVyLmlkXSkpXG4gICk7XG59XG5cbi8vIFByZXBhcmUgYSBkaWN0IG9mIGxheWVycyByZW5kZXJlZCBieSB0aGUgZGVjay5nbFxuLy8gTm90ZSwgaXNWaXNpYmxlOiBmYWxzZSBsYXllciBpcyBwYXNzZWQgdG8gZGVjay5nbCBoZXJlXG4vLyByZXR1cm4ge1tpZF06IHRydWUgXFwgZmFsc2V9XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUxheWVyc0ZvckRlY2soXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGF5ZXJEYXRhOiBWaXNTdGF0ZVsnbGF5ZXJEYXRhJ11cbik6IHtcbiAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbn0ge1xuICByZXR1cm4gbGF5ZXJzLnJlZHVjZShcbiAgICAoYWNjdSwgbGF5ZXIsIGlkeCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuaWRdOlxuICAgICAgICBpc0xheWVyUmVuZGVyYWJsZShsYXllciwgbGF5ZXJEYXRhW2lkeF0pICYmIGxheWVyLm92ZXJsYXlUeXBlID09PSBPVkVSTEFZX1RZUEVfQ09OU1QuZGVja2dsXG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuLy8gUHJlcGFyZSBhIGRpY3Qgb2YgcmVuZGVyZWQgbGF5ZXJzIHJlbmRlcmVkIGluIHRoZSBtYXBcbi8vIFRoaXMgaW5jbHVkZXMgb25seSB0aGUgdmlzaWJpbGUgbGF5ZXJzIGZvciBzaW5nbGUgbWFwIHZpZXcgYW5kIHNwbGl0IG1hcCB2aWV3XG4vLyByZXR1cm4ge1tpZF06IHRydWUgXFwgZmFsc2V9XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUxheWVyc1RvUmVuZGVyKFxuICBsYXllcnM6IExheWVyW10sXG4gIGxheWVyRGF0YTogVmlzU3RhdGVbJ2xheWVyRGF0YSddLFxuICBtYXBMYXllcnM/OiBTcGxpdE1hcExheWVycyB8IHVuZGVmaW5lZCB8IG51bGxcbik6IExheWVyc1RvUmVuZGVyIHtcbiAgcmV0dXJuIGxheWVycy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyLCBpZHgpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2xheWVyLmlkXTogaXNMYXllclJlbmRlcmFibGUobGF5ZXIsIGxheWVyRGF0YVtpZHhdKSAmJiBpc0xheWVyVmlzaWJsZShsYXllciwgbWFwTGF5ZXJzKVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbnR5cGUgQ3VzdG9tRGVja0xheWVyID0gRGVja0xheWVyPERlY2tMYXllclByb3BzPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1c3RvbURlY2tMYXllcnMoZGVja0dsUHJvcHM/OiBhbnkpOiBbQ3VzdG9tRGVja0xheWVyW10sIEN1c3RvbURlY2tMYXllcltdXSB7XG4gIGNvbnN0IGJvdHRvbURlY2tMYXllcnMgPSBBcnJheS5pc0FycmF5KGRlY2tHbFByb3BzPy5sYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8ubGF5ZXJzXG4gICAgOiBpc0Z1bmN0aW9uKGRlY2tHbFByb3BzPy5sYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8ubGF5ZXJzKClcbiAgICA6IFtdO1xuICBjb25zdCB0b3BEZWNrTGF5ZXJzID0gQXJyYXkuaXNBcnJheShkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LnRvcExheWVyc1xuICAgIDogaXNGdW5jdGlvbihkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LnRvcExheWVycygpXG4gICAgOiBbXTtcblxuICByZXR1cm4gW2JvdHRvbURlY2tMYXllcnMsIHRvcERlY2tMYXllcnNdO1xufVxuXG5leHBvcnQgdHlwZSBDb21wdXRlRGVja0xheWVyc1Byb3BzID0ge1xuICBtYXBJbmRleD86IG51bWJlcjtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgcHJpbWFyeU1hcD86IGJvb2xlYW47XG4gIGlzQW5ub3RhdGlvbk1vZGU/OiBib29sZWFuO1xuICBsYXllcnNGb3JEZWNrPzoge1trZXk6IHN0cmluZ106IGJvb2xlYW59O1xuICBlZGl0b3JJbmZvPzoge1xuICAgIGVkaXRvcjogRWRpdG9yO1xuICAgIGVkaXRvck1lbnVBY3RpdmU6IGJvb2xlYW47XG4gICAgb25TZXRGZWF0dXJlczogKGZlYXR1cmVzOiBGZWF0dXJlW10pID0+IGFueTtcbiAgICBzZXRTZWxlY3RlZEZlYXR1cmU6IChcbiAgICAgIGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsLFxuICAgICAgc2VsZWN0aW9uQ29udGV4dD86IEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0XG4gICAgKSA9PiBhbnk7XG4gICAgb25BcHBseVBvbHlnb25GaWx0ZXJBbGw/OiAoZmVhdHVyZTogRmVhdHVyZSkgPT4gYW55O1xuICAgIGZlYXR1cmVDb2xsZWN0aW9uOiB7XG4gICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICBmZWF0dXJlczogRmVhdHVyZVtdO1xuICAgIH07XG4gICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlczogbnVtYmVyW107XG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0O1xuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRMYXllckNhbGxiYWNrcyhcbiAgbGF5ZXJDYWxsYmFja3M6IExheWVyQ2FsbGJhY2tzID0ge30sXG4gIGlkeDogbnVtYmVyXG4pOiBCaW5kZWRMYXllckNhbGxiYWNrcyB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhsYXllckNhbGxiYWNrcykucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2tleV06IHZhbCA9PiBsYXllckNhbGxiYWNrc1trZXldKGlkeCwgdmFsKVxuICAgIH0pLFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsICh2YWw6IHVua25vd24pID0+IHZvaWQ+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVEZWNrTGF5ZXJzRnJvbUxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IExheWVyT3JkZXIsXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGF5ZXJEYXRhOiBhbnlbXSxcbiAgY3VycmVudExheWVyc0ZvckRlY2s6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSxcbiAgcmVuZGVyUHJvcHM6IHtcbiAgICBkYXRhc2V0czogYW55O1xuICAgIGhvdmVySW5mbzogYW55O1xuICAgIGNsaWNrZWQ6IGFueTtcbiAgICBtYXBTdGF0ZTogYW55O1xuICAgIGludGVyYWN0aW9uQ29uZmlnOiBhbnk7XG4gICAgYW5pbWF0aW9uQ29uZmlnOiBhbnk7XG4gICAgbWFwTGF5ZXJzOiBhbnk7XG4gICAgaGFzU2hhZG93RWZmZWN0OiBib29sZWFuO1xuICAgIGlzQW5ub3RhdGlvbk1vZGU/OiBib29sZWFuO1xuICB9LFxuICBsYXllckNhbGxiYWNrcz86IGFueVxuKTogYW55W10ge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgaG92ZXJJbmZvLFxuICAgIGNsaWNrZWQsXG4gICAgbWFwU3RhdGUsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG1hcExheWVycyxcbiAgICBoYXNTaGFkb3dFZmZlY3QsXG4gICAgaXNBbm5vdGF0aW9uTW9kZVxuICB9ID0gcmVuZGVyUHJvcHM7XG4gIHJldHVybiBsYXllck9yZGVyXG4gICAgLnNsaWNlKClcbiAgICAucmV2ZXJzZSgpXG4gICAgLnJlZHVjZSgob3ZlcmxheXMsIGVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChpc1BsYWluT2JqZWN0KGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGxheWVyR3JvdXAgPSBlbGVtZW50IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgICAgaWYgKCFsYXllckdyb3VwLmlzVmlzaWJsZSkge1xuICAgICAgICAgIHJldHVybiBvdmVybGF5cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KFxuICAgICAgICAgIGNvbXB1dGVEZWNrTGF5ZXJzRnJvbUxheWVyT3JkZXIoXG4gICAgICAgICAgICBsYXllckdyb3VwLmxheWVyT3JkZXIsXG4gICAgICAgICAgICBsYXllcnMsXG4gICAgICAgICAgICBsYXllckRhdGEsXG4gICAgICAgICAgICBjdXJyZW50TGF5ZXJzRm9yRGVjayxcbiAgICAgICAgICAgIHJlbmRlclByb3BzLFxuICAgICAgICAgICAgbGF5ZXJDYWxsYmFja3NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBsYXllcklkID0gZWxlbWVudCBhcyBzdHJpbmc7XG4gICAgICBpZiAoIWN1cnJlbnRMYXllcnNGb3JEZWNrW2xheWVySWRdKSB7XG4gICAgICAgIHJldHVybiBvdmVybGF5cztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxheWVySW5kZXggPSBsYXllcnMuZmluZEluZGV4KCh7aWR9KSA9PiBpZCA9PT0gbGF5ZXJJZCk7XG4gICAgICBpZiAobGF5ZXJJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJsYXlzO1xuICAgICAgfVxuICAgICAgY29uc3QgYmluZGVkTGF5ZXJDYWxsYmFja3MgPSBsYXllckNhbGxiYWNrc1xuICAgICAgICA/IGJpbmRMYXllckNhbGxiYWNrcyhsYXllckNhbGxiYWNrcywgbGF5ZXJJbmRleClcbiAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IGxheWVyID0gbGF5ZXJzW2xheWVySW5kZXhdO1xuICAgICAgY29uc3QgZGF0YSA9IGxheWVyRGF0YVtsYXllckluZGV4XTtcbiAgICAgIGNvbnN0IGxheWVyT3ZlcmxheSA9IHJlbmRlckRlY2tHbExheWVyKFxuICAgICAgICB7XG4gICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgbGF5ZXIsXG4gICAgICAgICAgbGF5ZXJJbmRleCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGhvdmVySW5mbyxcbiAgICAgICAgICBjbGlja2VkLFxuICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgICBtYXBMYXllcnMsXG4gICAgICAgICAgZXhwZXJpbWVudGFsQ29udGV4dDoge1xuICAgICAgICAgICAgaGFzU2hhZG93RWZmZWN0LFxuICAgICAgICAgICAgaXNBbm5vdGF0aW9uTW9kZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYmluZGVkTGF5ZXJDYWxsYmFja3NcbiAgICAgICk7XG4gICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgfSwgW10gYXMgYW55W10pO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVEZWNrTGF5ZXJzKFxuICB7dmlzU3RhdGUsIG1hcFN0YXRlLCBtYXBTdHlsZX06IGFueSxcbiAgb3B0aW9ucz86IENvbXB1dGVEZWNrTGF5ZXJzUHJvcHMsXG4gIGxheWVyQ2FsbGJhY2tzPzogTGF5ZXJDYWxsYmFja3MsXG4gIGRlY2tHbFByb3BzPzogYW55XG4pOiBMYXllcltdIHtcbiAgY29uc3Qge1xuICAgIGRhdGFzZXRzLFxuICAgIGVmZmVjdHMsXG4gICAgbGF5ZXJzLFxuICAgIGxheWVyT3JkZXIsXG4gICAgbGF5ZXJEYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBzcGxpdE1hcHNcbiAgfSA9IHZpc1N0YXRlO1xuXG4gIGNvbnN0IHtcbiAgICBtYXBJbmRleCxcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBtYXBib3hBcGlVcmwsXG4gICAgcHJpbWFyeU1hcCxcbiAgICBsYXllcnNGb3JEZWNrLFxuICAgIGVkaXRvckluZm8sXG4gICAgaXNBbm5vdGF0aW9uTW9kZVxuICB9ID0gb3B0aW9ucyB8fCB7fTtcblxuICBsZXQgZGF0YUxheWVyczogYW55W10gPSBbXTtcblxuICBjb25zdCBoYXNTaGFkb3dFZmZlY3QgPSBlZmZlY3RzLnNvbWUoZWZmZWN0ID0+IHtcbiAgICByZXR1cm4gZWZmZWN0LnR5cGUgPT09IExJR0hUX0FORF9TSEFET1dfRUZGRUNULnR5cGU7XG4gIH0pO1xuXG4gIGlmIChsYXllckRhdGEgJiYgbGF5ZXJEYXRhLmxlbmd0aCkge1xuICAgIGNvbnN0IG1hcExheWVycyA9IGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMoc3BsaXRNYXBzLCBtYXBJbmRleCB8fCAwKTtcblxuICAgIGNvbnN0IGN1cnJlbnRMYXllcnNGb3JEZWNrID0gbGF5ZXJzRm9yRGVjayB8fCBwcmVwYXJlTGF5ZXJzRm9yRGVjayhsYXllcnMsIGxheWVyRGF0YSk7XG5cbiAgICBkYXRhTGF5ZXJzID0gbGF5ZXJPcmRlclxuICAgICAgLnNsaWNlKClcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5yZWR1Y2UoKG92ZXJsYXlzLCBlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJHcm91cCA9IGVsZW1lbnQgYXMgTGF5ZXJPcmRlckdyb3VwO1xuICAgICAgICAgIGlmICghbGF5ZXJHcm91cC5pc1Zpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybiBvdmVybGF5cztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG92ZXJsYXlzLmNvbmNhdChcbiAgICAgICAgICAgIGNvbXB1dGVEZWNrTGF5ZXJzRnJvbUxheWVyT3JkZXIoXG4gICAgICAgICAgICAgIGxheWVyR3JvdXAubGF5ZXJPcmRlcixcbiAgICAgICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgICAgICBsYXllckRhdGEsXG4gICAgICAgICAgICAgIGN1cnJlbnRMYXllcnNGb3JEZWNrLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICAgICAgICAgIGNsaWNrZWQsXG4gICAgICAgICAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICAgICAgICAgIG1hcExheWVycyxcbiAgICAgICAgICAgICAgICBoYXNTaGFkb3dFZmZlY3QsXG4gICAgICAgICAgICAgICAgaXNBbm5vdGF0aW9uTW9kZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYXllckNhbGxiYWNrc1xuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGF5ZXJJZCA9IGVsZW1lbnQgYXMgc3RyaW5nO1xuICAgICAgICBpZiAoIWN1cnJlbnRMYXllcnNGb3JEZWNrW2xheWVySWRdKSB7XG4gICAgICAgICAgcmV0dXJuIG92ZXJsYXlzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxheWVySW5kZXggPSBsYXllcnMuZmluZEluZGV4KCh7aWR9KSA9PiBpZCA9PT0gbGF5ZXJJZCk7XG4gICAgICAgIGlmIChsYXllckluZGV4ID09PSAtMSkge1xuICAgICAgICAgIHJldHVybiBvdmVybGF5cztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBiaW5kZWRMYXllckNhbGxiYWNrcyA9IGxheWVyQ2FsbGJhY2tzXG4gICAgICAgICAgPyBiaW5kTGF5ZXJDYWxsYmFja3MobGF5ZXJDYWxsYmFja3MsIGxheWVySW5kZXgpXG4gICAgICAgICAgOiB7fTtcbiAgICAgICAgY29uc3QgbGF5ZXIgPSBsYXllcnNbbGF5ZXJJbmRleF07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBsYXllckRhdGFbbGF5ZXJJbmRleF07XG4gICAgICAgIGNvbnN0IGxheWVyT3ZlcmxheSA9IHJlbmRlckRlY2tHbExheWVyKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgICAgbGF5ZXIsXG4gICAgICAgICAgICBsYXllckluZGV4LFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGhvdmVySW5mbyxcbiAgICAgICAgICAgIGNsaWNrZWQsXG4gICAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICAgICAgbWFwTGF5ZXJzLFxuICAgICAgICAgICAgZXhwZXJpbWVudGFsQ29udGV4dDoge1xuICAgICAgICAgICAgICBoYXNTaGFkb3dFZmZlY3QsXG4gICAgICAgICAgICAgIGlzQW5ub3RhdGlvbk1vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGJpbmRlZExheWVyQ2FsbGJhY2tzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBvdmVybGF5cy5jb25jYXQobGF5ZXJPdmVybGF5IHx8IFtdKTtcbiAgICAgIH0sIFtdKTtcbiAgfVxuXG4gIGlmICghcHJpbWFyeU1hcCkge1xuICAgIHJldHVybiBkYXRhTGF5ZXJzO1xuICB9XG5cbiAgaWYgKFxuICAgIG1hcFN0eWxlPy52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10gJiZcbiAgICBwcmltYXJ5TWFwICYmXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW4gJiZcbiAgICBtYXBib3hBcGlVcmxcbiAgKSB7XG4gICAgZGF0YUxheWVycy5wdXNoKFxuICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICBpZDogJ19rZXBsZXJnbF8zZC1idWlsZGluZycsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IsXG4gICAgICAgIHBpY2thYmxlOiBCb29sZWFuKGlzQW5ub3RhdGlvbk1vZGUpLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIGdldEZpbGxDb2xvcjogbWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvclxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb25zdCBbY3VzdG9tQm90dG9tRGVja0xheWVycywgY3VzdG9tVG9wRGVja0xheWVyc10gPSBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzKTtcblxuICBjb25zdCBlZGl0b3JMYXllcjogYW55W10gPSBbXTtcbiAgaWYgKGVkaXRvckluZm8pIHtcbiAgICBlZGl0b3JMYXllci5wdXNoKFxuICAgICAgZ2V0RWRpdG9yTGF5ZXIoe1xuICAgICAgICAuLi5lZGl0b3JJbmZvLFxuICAgICAgICBtYXBTdGF0ZVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIFsuLi5jdXN0b21Cb3R0b21EZWNrTGF5ZXJzLCAuLi5kYXRhTGF5ZXJzLCAuLi5jdXN0b21Ub3BEZWNrTGF5ZXJzLCAuLi5lZGl0b3JMYXllcl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllck9yZGVyRnJvbUxheWVyczxUIGV4dGVuZHMge2lkOiBzdHJpbmd9PihsYXllcnM6IFRbXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGxheWVycy5tYXAoKHtpZH0pID0+IGlkKTtcbn1cblxuLy8gLS0tIExheWVyIEdyb3VwIFV0aWxpdGllcyAtLS1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5ld0xheWVyR3JvdXAocHJvcHM/OiBQYXJ0aWFsPExheWVyT3JkZXJHcm91cD4pOiBMYXllck9yZGVyR3JvdXAge1xuICByZXR1cm4ge1xuICAgIGlkOiBwcm9wcz8uaWQgPz8gZ2VuZXJhdGVIYXNoSWQoNiksXG4gICAgbGFiZWw6IHByb3BzPy5sYWJlbCA/PyAnTmV3IGdyb3VwJyxcbiAgICBpc1Zpc2libGU6IHByb3BzPy5pc1Zpc2libGUgPz8gdHJ1ZSxcbiAgICBsYXllck9yZGVyOiBwcm9wcz8ubGF5ZXJPcmRlciA/PyBbXSxcbiAgICBpc0luY2x1ZGVkSW5MZWdlbmQ6IHByb3BzPy5pc0luY2x1ZGVkSW5MZWdlbmQgPz8gdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGF5ZXJPckdyb3VwVG9MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBlbGVtZW50OiBMYXllck9yZGVyRW50cnksXG4gIGF0SW5kZXg/OiBudW1iZXJcbik6IExheWVyT3JkZXIge1xuICBjb25zdCBpZHggPSBhdEluZGV4ID8/IDA7XG4gIGNvbnN0IHJlc3VsdCA9IFsuLi5sYXllck9yZGVyXTtcbiAgcmVzdWx0LnNwbGljZShpZHgsIDAsIGVsZW1lbnQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRWxlbWVudEZyb21MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBlbGVtZW50OiBMYXllck9yZGVyRW50cnlcbik6IExheWVyT3JkZXIge1xuICBpZiAoIWxheWVyT3JkZXIpIHJldHVybiBbXTtcbiAgY29uc3QgZWxlbWVudElkID0gdHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnID8gZWxlbWVudCA6IGVsZW1lbnQuaWQ7XG4gIGxldCBuZXdMYXllck9yZGVyID0gbGF5ZXJPcmRlci5maWx0ZXIoZW50cnkgPT4ge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgcmV0dXJuIChlbnRyeSBhcyBMYXllck9yZGVyR3JvdXApLmlkICE9PSBlbGVtZW50SWQ7XG4gICAgfVxuICAgIHJldHVybiBlbnRyeSAhPT0gZWxlbWVudElkO1xuICB9KTtcblxuICBuZXdMYXllck9yZGVyID0gbmV3TGF5ZXJPcmRlci5tYXAoZW50cnkgPT4ge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ncm91cCxcbiAgICAgICAgbGF5ZXJPcmRlcjogcmVtb3ZlRWxlbWVudEZyb21MYXllck9yZGVyKGdyb3VwLmxheWVyT3JkZXIsIGVsZW1lbnRJZClcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBlbnRyeTtcbiAgfSk7XG5cbiAgcmV0dXJuIG5ld0xheWVyT3JkZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllckdyb3VwRnJvbUxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IExheWVyT3JkZXIsXG4gIGxheWVyR3JvdXBJZDogc3RyaW5nXG4pOiBMYXllck9yZGVyR3JvdXAgfCB1bmRlZmluZWQge1xuICBsZXQgZ3JvdXA6IExheWVyT3JkZXJHcm91cCB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXllck9yZGVyLmxlbmd0aCAmJiAhZ3JvdXA7IGkrKykge1xuICAgIGNvbnN0IGVudHJ5ID0gbGF5ZXJPcmRlcltpXTtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGNvbnN0IGdycCA9IGVudHJ5IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgIGdyb3VwID1cbiAgICAgICAgZ3JwLmlkID09PSBsYXllckdyb3VwSWQgPyBncnAgOiBnZXRMYXllckdyb3VwRnJvbUxheWVyT3JkZXIoZ3JwLmxheWVyT3JkZXIsIGxheWVyR3JvdXBJZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBncm91cDtcbn1cblxuLyoqXG4gKiBHcm91cHMgdGhhdCBjb250YWluIGBlbnRyeUlkYCwgbmVhcmVzdCBwYXJlbnQgZmlyc3QuXG4gKiBgZW50cnlJZGAgbWF5IGJlIGEgbGF5ZXIgaWQgb3IgYSBuZXN0ZWQgZ3JvdXAgaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmNlc3RvckxheWVyR3JvdXBzKGxheWVyT3JkZXI6IExheWVyT3JkZXIsIGVudHJ5SWQ6IHN0cmluZyk6IExheWVyT3JkZXJHcm91cFtdIHtcbiAgY29uc3QgYW5jZXN0b3JzOiBMYXllck9yZGVyR3JvdXBbXSA9IFtdO1xuXG4gIGNvbnN0IHZpc2l0ID0gKGVudHJpZXM6IExheWVyT3JkZXIpOiBib29sZWFuID0+IHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmICh0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChlbnRyeSA9PT0gZW50cnlJZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGdyb3VwID0gZW50cnkgYXMgTGF5ZXJPcmRlckdyb3VwO1xuICAgICAgaWYgKGdyb3VwLmlkID09PSBlbnRyeUlkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHZpc2l0KGdyb3VwLmxheWVyT3JkZXIpKSB7XG4gICAgICAgIGFuY2VzdG9ycy5wdXNoKGdyb3VwKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICB2aXNpdChsYXllck9yZGVyKTtcbiAgcmV0dXJuIGFuY2VzdG9ycztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgbGF5ZXIgc2hvdWxkIGJlIGRyYXduIGluIHRoZSBtYXAgbGVnZW5kLlxuICogQSBsYXllciBzdGF5cyBvbiB0aGUgbWFwIHdoZW4gdGhpcyBpcyBmYWxzZS4gTWlzc2luZyBmbGFncyBjb3VudCBhcyBpbmNsdWRlZC5cbiAqIEFuIGFuY2VzdG9yIGdyb3VwIHdpdGggYGlzSW5jbHVkZWRJbkxlZ2VuZDogZmFsc2VgIGhpZGVzIHRoZSBsYXllciBhcyB3ZWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclNob3duSW5MZWdlbmQoXG4gIGxheWVyOiB7aWQ6IHN0cmluZzsgY29uZmlnOiB7aXNJbmNsdWRlZEluTGVnZW5kPzogYm9vbGVhbn19LFxuICBsYXllck9yZGVyPzogTGF5ZXJPcmRlclxuKTogYm9vbGVhbiB7XG4gIGlmIChsYXllci5jb25maWcuaXNJbmNsdWRlZEluTGVnZW5kID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWxheWVyT3JkZXI/Lmxlbmd0aCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBnZXRBbmNlc3RvckxheWVyR3JvdXBzKGxheWVyT3JkZXIsIGxheWVyLmlkKS5ldmVyeShcbiAgICBncm91cCA9PiBncm91cC5pc0luY2x1ZGVkSW5MZWdlbmQgIT09IGZhbHNlXG4gICk7XG59XG5cbi8qKlxuICogRmluZCB0aGUgcGFyZW50IGdyb3VwIHRoYXQgY29udGFpbnMgYSBnaXZlbiBsYXllciBJRC5cbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBsYXllciBpcyBhdCB0aGUgcm9vdCBsZXZlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQYXJlbnRHcm91cEZvckxheWVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcklkOiBzdHJpbmdcbik6IExheWVyT3JkZXJHcm91cCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgbGF5ZXJPcmRlcikge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGVudHJ5KSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICBpZiAoZ3JvdXAubGF5ZXJPcmRlci5zb21lKGUgPT4gdHlwZW9mIGUgPT09ICdzdHJpbmcnICYmIGUgPT09IGxheWVySWQpKSB7XG4gICAgICAgIHJldHVybiBncm91cDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5lc3RlZCA9IGZpbmRQYXJlbnRHcm91cEZvckxheWVyKGdyb3VwLmxheWVyT3JkZXIsIGxheWVySWQpO1xuICAgICAgaWYgKG5lc3RlZCkgcmV0dXJuIG5lc3RlZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluZGV4RnJvbUxheWVyRW50cnlJZChsYXllck9yZGVyOiBMYXllck9yZGVyLCBsYXllckVudHJ5SWQ6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBsYXllck9yZGVyLmZpbmRJbmRleChlbnRyeSA9PlxuICAgIGlzUGxhaW5PYmplY3QoZW50cnkpID8gKGVudHJ5IGFzIExheWVyT3JkZXJHcm91cCkuaWQgPT09IGxheWVyRW50cnlJZCA6IGVudHJ5ID09PSBsYXllckVudHJ5SWRcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGF5ZXJQcmVzZW50SW5MYXllck9yZGVyKGxheWVyT3JkZXI6IExheWVyT3JkZXIsIGxheWVySWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXllck9yZGVyLmxlbmd0aCAmJiAhZm91bmQ7IGkrKykge1xuICAgIGNvbnN0IGVudHJ5ID0gbGF5ZXJPcmRlcltpXTtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGZvdW5kID0gaXNMYXllclByZXNlbnRJbkxheWVyT3JkZXIoKGVudHJ5IGFzIExheWVyT3JkZXJHcm91cCkubGF5ZXJPcmRlciwgbGF5ZXJJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvdW5kID0gbGF5ZXJJZCA9PT0gZW50cnk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VMYXllckVudHJ5SW5MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBvbGRFbnRyeTogTGF5ZXJPcmRlckVudHJ5LFxuICBuZXdFbnRyeTogTGF5ZXJPcmRlckVudHJ5XG4pOiBMYXllck9yZGVyIHtcbiAgY29uc3Qgb2xkRW50cnlJZCA9IHR5cGVvZiBvbGRFbnRyeSA9PT0gJ3N0cmluZycgPyBvbGRFbnRyeSA6IG9sZEVudHJ5LmlkO1xuICByZXR1cm4gbGF5ZXJPcmRlci5tYXAoZW50cnkgPT4ge1xuICAgIGlmICh0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZW50cnkgPT09IG9sZEVudHJ5SWQgPyBuZXdFbnRyeSA6IGVudHJ5O1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChlbnRyeSkpIHtcbiAgICAgIGNvbnN0IGdycCA9IGVudHJ5IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgIGlmIChncnAuaWQgPT09IG9sZEVudHJ5SWQpIHtcbiAgICAgICAgcmV0dXJuIG5ld0VudHJ5O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JwLFxuICAgICAgICBsYXllck9yZGVyOiByZXBsYWNlTGF5ZXJFbnRyeUluTGF5ZXJPcmRlcihncnAubGF5ZXJPcmRlciwgb2xkRW50cnksIG5ld0VudHJ5KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxheWVyR3JvdXBJbkxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IExheWVyT3JkZXIsXG4gIG5ld0xheWVyR3JvdXA6IExheWVyT3JkZXJHcm91cFxuKTogTGF5ZXJPcmRlciB7XG4gIHJldHVybiBsYXllck9yZGVyLm1hcChlbnRyeSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoZW50cnkpKSB7XG4gICAgICBjb25zdCBncnAgPSBlbnRyeSBhcyBMYXllck9yZGVyR3JvdXA7XG4gICAgICBpZiAoZ3JwLmlkID09PSBuZXdMYXllckdyb3VwLmlkKSB7XG4gICAgICAgIHJldHVybiBuZXdMYXllckdyb3VwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZ3JwLFxuICAgICAgICBsYXllck9yZGVyOiB1cGRhdGVMYXllckdyb3VwSW5MYXllck9yZGVyKGdycC5sYXllck9yZGVyLCBuZXdMYXllckdyb3VwKVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsYXRMYXllck9yZGVyKGxheWVyT3JkZXI6IExheWVyT3JkZXIpOiBGbGF0TGF5ZXJPcmRlciB7XG4gIHJldHVybiBsYXllck9yZGVyLnJlZHVjZSgoYWNjLCBvcmRlckVudHJ5KSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3Qob3JkZXJFbnRyeSkpIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCAuLi5nZXRGbGF0TGF5ZXJPcmRlcigob3JkZXJFbnRyeSBhcyBMYXllck9yZGVyR3JvdXApLmxheWVyT3JkZXIpXTtcbiAgICB9XG4gICAgcmV0dXJuIFsuLi5hY2MsIG9yZGVyRW50cnkgYXMgc3RyaW5nXTtcbiAgfSwgW10gYXMgRmxhdExheWVyT3JkZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRMYXllck9yZGVySGllcmFyY2h5KFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcnM/OiBMYXllcltdIHwgcmVhZG9ubHkgTGF5ZXJbXVxuKTogTGF5ZXJPcmRlckhpZXJhcmNoeSB7XG4gIGNvbnN0IHZhbGlkTGF5ZXJzID0gbGF5ZXJzPy5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBsYXllck9yZGVyLnJlZHVjZSgoYWNjLCBlbGVtZW50KSA9PiB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCBbJ2xheWVyR3JvdXAnLCBlbGVtZW50IGFzIExheWVyT3JkZXJHcm91cF0gYXMgY29uc3RdO1xuICAgIH1cbiAgICBjb25zdCBsYXllciA9IHZhbGlkTGF5ZXJzPy5maW5kKGwgPT4gbC5pZCA9PT0gZWxlbWVudCk7XG4gICAgaWYgKCFsYXllciB8fCBsYXllci5jb25maWcuaGlkZGVuKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLmFjYywgWydsYXllcicsIGxheWVyXSBhcyBjb25zdF07XG4gIH0sIFtdIGFzIExheWVyT3JkZXJIaWVyYXJjaHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlR2hvc3RMYXllckZyb21MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBMYXllck9yZGVyLFxuICBsYXllcnM6IHtpZDogc3RyaW5nfVtdXG4pOiBMYXllck9yZGVyIHtcbiAgcmV0dXJuIGxheWVyT3JkZXIucmVkdWNlKChhY2MsIGVudHJ5KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChsYXllcnMuZmluZChsID0+IGwuaWQgPT09IGVudHJ5KSkge1xuICAgICAgICBhY2MucHVzaChlbnRyeSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGdycCA9IGVudHJ5IGFzIExheWVyT3JkZXJHcm91cDtcbiAgICAgIGlmIChncnAubGF5ZXJPcmRlcikge1xuICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgLi4uZ3JwLFxuICAgICAgICAgIGxheWVyT3JkZXI6IHJlbW92ZUdob3N0TGF5ZXJGcm9tTGF5ZXJPcmRlcihncnAubGF5ZXJPcmRlciwgbGF5ZXJzKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10gYXMgTGF5ZXJPcmRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyTGF5ZXJPcmRlcihcbiAgbGF5ZXJPcmRlcjogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSxcbiAgb3JpZ2luTGF5ZXJJZDogc3RyaW5nLFxuICBkZXN0aW5hdGlvbkxheWVySWQ6IHN0cmluZ1xuKTogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSB7XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gZ2V0SW5kZXhGcm9tTGF5ZXJFbnRyeUlkKGxheWVyT3JkZXIsIG9yaWdpbkxheWVySWQpO1xuICBjb25zdCBvdmVySW5kZXggPSBnZXRJbmRleEZyb21MYXllckVudHJ5SWQobGF5ZXJPcmRlciwgZGVzdGluYXRpb25MYXllcklkKTtcblxuICBpZiAoYWN0aXZlSW5kZXggPT09IC0xIHx8IG92ZXJJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gbGF5ZXJPcmRlcjtcbiAgfVxuICByZXR1cm4gYXJyYXlNb3ZlKGxheWVyT3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGF5ZXJUb0xheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IFZpc1N0YXRlWydsYXllck9yZGVyJ10sXG4gIGxheWVySWQ6IHN0cmluZ1xuKTogTGF5ZXJPcmRlciB7XG4gIHJldHVybiBbbGF5ZXJJZCwgLi4ubGF5ZXJPcmRlcl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllckhvdmVyUHJvcFZhbHVlKFxuICBkYXRhOiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IGFueVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgZmllbGRJbmRleDogbnVtYmVyXG4pIHtcbiAgaWYgKCFkYXRhKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIERhdGFSb3cpIHJldHVybiBkYXRhLnZhbHVlQXQoZmllbGRJbmRleCk7XG4gIHJldHVybiBkYXRhW2ZpZWxkSW5kZXhdO1xufVxuXG4vKiogQ2hlY2tzIGlmIGFueSBEZWNrIGxheWVycyBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcmVBbnlEZWNrTGF5ZXJzTG9hZGluZyhsYXllcnM6IERlY2tMYXllcltdKTogYm9vbGVhbiB7XG4gIHJldHVybiBsYXllcnMuc29tZShcbiAgICAvLyBsYXllci5pc0xvYWRlZCBjaGFuZ2VzIGZyZXF1ZW50bHkgaW4gRGVjayAoZXZlbiBvbiBob3Zlcikgc28gd2UgY2hlY2sgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXG4gICAgbGF5ZXIgPT4gbGF5ZXIuaW50ZXJuYWxTdGF0ZSAmJiAhbGF5ZXIuaXNMb2FkZWRcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFxQkEsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBV0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssaUJBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUE2RCxTQUFBTywyQkFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEseUJBQUFDLE1BQUEsSUFBQUgsQ0FBQSxDQUFBRyxNQUFBLENBQUFDLFFBQUEsS0FBQUosQ0FBQSxxQkFBQUUsQ0FBQSxRQUFBRyxLQUFBLENBQUFDLE9BQUEsQ0FBQU4sQ0FBQSxNQUFBRSxDQUFBLEdBQUFLLDJCQUFBLENBQUFQLENBQUEsTUFBQUMsQ0FBQSxJQUFBRCxDQUFBLHVCQUFBQSxDQUFBLENBQUFRLE1BQUEsSUFBQU4s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