@kando-env/kando-ui 1.2.73 → 1.2.75-alpha.10

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 (48) hide show
  1. package/lib/Router.js +8 -2
  2. package/lib/Widgets/Map/Map.js +14 -7
  3. package/lib/Widgets/Map/Map.scss +15 -0
  4. package/lib/Widgets/Map/events/EventIndicatorHover.js +2 -2
  5. package/lib/Widgets/Map/points/PointMarker.js +31 -7
  6. package/lib/Widgets/Map/points/PointMarkers.js +9 -3
  7. package/lib/hooks/useInitializeHeaders.js +2 -3
  8. package/lib/i18n/en.json +51 -37
  9. package/lib/i18n/he.json +29 -0
  10. package/lib/macros/getVersion.js +2 -2
  11. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +4 -2
  12. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +4 -3
  13. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +3 -11
  14. package/lib/pages/ImportFileWizard/FileUploadRespones.js +81 -0
  15. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +44 -0
  16. package/lib/pages/ImportFileWizard/ImportFile.js +80 -0
  17. package/lib/pages/ImportFileWizard/ResponseBody.js +59 -0
  18. package/lib/pages/ImportFileWizard/ValidationForm.js +122 -0
  19. package/lib/pages/ImportFileWizard/ValidationResponse.js +126 -0
  20. package/lib/pages/ImportFileWizard/importFileUtils.js +15 -0
  21. package/lib/pages/ImportFileWizard/index.js +14 -0
  22. package/lib/pages/ImportFileWizard/style.module.scss +145 -0
  23. package/lib/pages/ImportGisPage/importGisUtils.js +4 -11
  24. package/lib/pages/ImportGisPage/style.module.scss +0 -73
  25. package/lib/pages/ImportGisProcess/index.js +66 -0
  26. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +30 -0
  27. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +72 -0
  28. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +53 -0
  29. package/lib/pages/SamplingsPage/DesktopActions/index.js +14 -0
  30. package/lib/pages/SamplingsPage/NewSamplingAction.js +8 -8
  31. package/lib/pages/SamplingsPage/SamplingActionDropdown.js +4 -1
  32. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +4 -4
  33. package/lib/pages/SamplingsPage/SamplingsPage.js +5 -3
  34. package/lib/pages/SamplingsPage/style.module.scss +4 -0
  35. package/lib/pages/UploadLabResult/index.js +45 -0
  36. package/lib/store/ImportGis/actionsCreator.js +8 -3
  37. package/lib/store/ImportGis/reducer.js +8 -3
  38. package/lib/styles.scss +4 -0
  39. package/lib/ui-kit/KandoTable/KandoTable.js +5 -5
  40. package/lib/utilities/urls.js +12 -1
  41. package/package.json +1 -1
  42. package/lib/pages/ImportGisPage/GisFileUploadRespones.js +0 -77
  43. package/lib/pages/ImportGisPage/ImportGisButtomButtons.js +0 -44
  44. package/lib/pages/ImportGisPage/ImportGisProcess.js +0 -69
  45. package/lib/pages/ImportGisPage/ResponseBody.js +0 -55
  46. package/lib/pages/ImportGisPage/ValidationForm.js +0 -135
  47. package/lib/pages/ImportGisPage/ValidationResponse.js +0 -133
  48. package/lib/pages/SamplingsPage/DownloadCSV.js +0 -72
@@ -66,9 +66,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
66
66
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
67
67
 
68
68
  function mapStateToProps(state) {
69
- var events_data = state.events_data;
69
+ var events_data = state.events_data,
70
+ edges_data = state.edges_data;
70
71
  return {
71
- events_data: events_data
72
+ events_data: events_data,
73
+ edges_data: edges_data
72
74
  };
73
75
  }
74
76
 
@@ -76,7 +78,8 @@ var PointMarker = function PointMarker(props) {
76
78
  var L = props.L,
77
79
  map = props.map,
78
80
  point = props.point,
79
- events_data = props.events_data;
81
+ events_data = props.events_data,
82
+ edges_data = props.edges_data;
80
83
  var focusedEvent = events_data.focusedEvent,
81
84
  hoveredEvent = events_data.hoveredEvent;
82
85
  var dispatch = (0, _reactRedux.useDispatch)();
@@ -269,11 +272,10 @@ var PointMarker = function PointMarker(props) {
269
272
  });
270
273
 
271
274
  if (point.relatedEventsAmount) {
272
- // eslint-disable-next-line
273
275
  var pointCustomIcon = L.marker(markerLocation, {
274
276
  icon: L.divIcon({
275
- className: "circle-events-amount ".concat(point.relatedEventsAmount > 2 ? 'alert-color' : ''),
276
- html: "".concat(point.relatedEventsAmount),
277
+ className: "\n ".concat(point.relatedEventsAmount >= 100 ? 'circle-events-amount circle-events-amount--tridigit' : 'circle-events-amount', " \n ").concat(point.relatedEventsAmount > 2 ? 'alert-color' : '', "\n "),
278
+ html: "<p>".concat(point.relatedEventsAmount, "</p>"),
277
279
  iconAnchor: [-5, 42]
278
280
  }),
279
281
  riseOnHover: false
@@ -438,8 +440,30 @@ var PointMarker = function PointMarker(props) {
438
440
  }
439
441
  };
440
442
 
443
+ var customIconForPointsIfPartOfPathAndMonitored = function customIconForPointsIfPartOfPathAndMonitored(markerLocation) {
444
+ if (centeredEvent) {
445
+ var edgesIds = [];
446
+ centeredEvent.path.forEach(function (part) {
447
+ edgesIds.push(part.edge_id);
448
+ });
449
+ var relevantEdges = edges_data.items.filter(function (edge) {
450
+ return edgesIds.includes(edge.id);
451
+ });
452
+ var relevantPoints = [];
453
+ relevantEdges.forEach(function (edge) {
454
+ relevantPoints.push(edge.source_point_id);
455
+ });
456
+
457
+ if (relevantPoints.includes(point.id)) {
458
+ createManholePoint(markerLocation);
459
+ createCustomIconPoint(markerLocation);
460
+ }
461
+ }
462
+ };
463
+
441
464
  (0, _react.useEffect)(function () {
442
465
  var markerLocation = [point['latitude'], point['longitude']];
466
+ customIconForPointsIfPartOfPathAndMonitored(markerLocation);
443
467
  if (!point.eventsViewHovered) createManholePoint(markerLocation);
444
468
 
445
469
  if (markerLocation[0] !== null) {
@@ -489,4 +513,4 @@ var _default = connector( /*#__PURE__*/_react.default.memo(PointMarker, function
489
513
  }));
490
514
 
491
515
  exports.default = _default;
492
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRNYXJrZXIudHN4Il0sIm5hbWVzIjpbIm1hcFN0YXRlVG9Qcm9wcyIsInN0YXRlIiwiZXZlbnRzX2RhdGEiLCJQb2ludE1hcmtlciIsInByb3BzIiwiTCIsIm1hcCIsInBvaW50IiwiZm9jdXNlZEV2ZW50IiwiaG92ZXJlZEV2ZW50IiwiZGlzcGF0Y2giLCJjZW50ZXJlZEV2ZW50Iiwic2VsZWN0ZWRCYWNrZ3JvdW5kIiwiaWNvbiIsImljb25VcmwiLCJyZWRQaW5SZWRTaGFkb3ciLCJpY29uU2l6ZSIsImljb25BbmNob3IiLCJwb3B1cEFuY2hvciIsImJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQiLCJ3aGl0ZVBpblJlZFNoYWRvdyIsInN0YW5kYXJkQmFja2dyb3VuZCIsInNlY29uZGFyeSIsInRoaXJkIiwid2hpdGVQaW5CbGFja1NoYWRvdyIsImNvbWJpbmVkRmFjdG9yeUljb24iLCJ5ZWxsb3dDaXJjbGVVUkwiLCJwbGFudEljb25VUkwiLCJjb21iaW5lZFB1bXBTdGF0aW9uSWNvbiIsImdyZWVuQ2lyY2xlVVJMIiwicHVtcFN0YXRpb25JY29uVVJMIiwiY29tYmluZWRDb2xsZWN0b3JzSWNvbiIsImNvbGxlY3Rvckljb24iLCJjb21iaW5lZFdXVFBJY29uIiwiYnJpZ2h0Qmx1ZUNpcmNsZVVSTCIsIldXVFBJY29uVVJMIiwibWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UiLCJzb3VyY2UiLCJzb3VyY2VzIiwiZmlsdGVyIiwicG9pbnRfaWQiLCJpZCIsInNlbGVjdGVkX3NvdXJjZSIsIm1hcmtlckJlbG9uZ3NUb1NvdXJjZSIsImlzQ29sbGVjdG9yRm9jdXNlZCIsIm9ic2VydmF0aW9ucyIsImxlbmd0aCIsIm1hdGNoSWNvblRvUG9pbnQiLCJncm91cCIsInR5cGUiLCJ1bnNoaWZ0Iiwid2F0ZXJJY29uTm9CYWNrZ3JvdW5kIiwiY3JlYXRlTWFuaG9sZVBvaW50IiwibWFya2VyTG9jYXRpb24iLCJwb2ludEljb24iLCJ3aGl0ZVBvaW50IiwibWFuaG9sZUljb24iLCJtYXJrZXIiLCJyaXNlT25Ib3ZlciIsImFkZFRvIiwiYmluZFRvb2x0aXAiLCJuYW1lIiwiY3JlYXRlQ3VzdG9tSWNvblBvaW50IiwiZm9yRWFjaCIsInBvaW50Q3VzdG9tSWNvbiIsInJlbGF0ZWRFdmVudHNBbW91bnQiLCJkaXZJY29uIiwiY2xhc3NOYW1lIiwiaHRtbCIsImNyZWF0ZVNhbXBsaW5nSWNvblBvaW50Iiwic2Vjb25kYXJ5SWNvbiIsInNhbXBsaW5nSWNvbiIsImJsdWVDaXJjbGVVUkwiLCJzYW1wbGluZ0ljb25VUkwiLCJjcmVhdGVPYnNlcnZhdGlvbkljb25Qb2ludCIsIm9ic2VydmF0aW9uSWNvbiIsInBpbmtDaXJjbGVVUkwiLCJvYnNlcnZhdGlvbkljb25VUkwiLCJwb3B1cENvbnRlbnQiLCJvYnMiLCJHcmFwaEljb24iLCJpMThuIiwidCIsInNldmVyaXR5IiwicG9pbnRJc09ic2VydmF0aW9uIiwicG9pbnRCZWxvbmdzVG9FdmVudCIsImJpbmRQb3B1cFRvUG9pbnQiLCJsYXllcnMiLCJfbGF5ZXJzIiwicHJvcGVydHkiLCJpbmNsdWRlcyIsImthbmRvX29iamVjdCIsImthbmRvX29iamVjdF9pZCIsImJpbmRQb3B1cCIsIm1pbldpZHRoIiwib24iLCJlIiwiZmlyc3RTZWVuIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwibGFzdFNlZW4iLCJzZWN0b3IiLCJSZWFjdERPTSIsInJlbmRlciIsInN0YXJ0X3RpbWUiLCJ0aW1lX3pvbmUiLCJsYXN0X3NlZW5fdGltZSIsInNlY3Rvcl9uYW1lIiwic2VjdG9yX2ljb25fbmFtZSIsInNldFRpbWVvdXQiLCJhcHBlbmQiLCJhdHRhY2hDbGlja0V2ZW50Iiwic2VsZWN0b3IiLCJvYnNlcnZhdGlvbiIsImJvZHkiLCJvcGVuUG9wdXAiLCJldmVudHNWaWV3SG92ZXJlZCIsInBhcnRfb2ZfbW9uaXRvcmVkX3BhdGgiLCJoYXNfZGV2aWNlIiwiaGFzUHJpbWFyeUljb24iLCJzYW1wbGluZ3MiLCJjbGVhbnVwIiwiY29ubmVjdG9yIiwiUmVhY3QiLCJtZW1vIiwicHJldlByb3BzIiwibmV4dFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0E7Ozs7QUFFQTs7QUFDQTs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBS0E7O0FBQ0E7Ozs7OztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEtBQXpCLEVBQTJDO0FBQ3pDLE1BQVFDLFdBQVIsR0FBd0JELEtBQXhCLENBQVFDLFdBQVI7QUFFQSxTQUFPO0FBQ0xBLElBQUFBLFdBQVcsRUFBWEE7QUFESyxHQUFQO0FBR0Q7O0FBUUQsSUFBTUMsV0FBNEIsR0FBRyxTQUEvQkEsV0FBK0IsQ0FBQ0MsS0FBRCxFQUFXO0FBQzlDLE1BQVFDLENBQVIsR0FBdUNELEtBQXZDLENBQVFDLENBQVI7QUFBQSxNQUFXQyxHQUFYLEdBQXVDRixLQUF2QyxDQUFXRSxHQUFYO0FBQUEsTUFBZ0JDLEtBQWhCLEdBQXVDSCxLQUF2QyxDQUFnQkcsS0FBaEI7QUFBQSxNQUF1QkwsV0FBdkIsR0FBdUNFLEtBQXZDLENBQXVCRixXQUF2QjtBQUNBLE1BQVFNLFlBQVIsR0FBdUNOLFdBQXZDLENBQVFNLFlBQVI7QUFBQSxNQUFzQkMsWUFBdEIsR0FBdUNQLFdBQXZDLENBQXNCTyxZQUF0QjtBQUNBLE1BQU1DLFFBQVEsR0FBRyw4QkFBakI7QUFFQSxNQUFNQyxhQUFhLEdBQUcsb0JBQ3BCO0FBQUEsV0FBTUgsWUFBWSxJQUFJQyxZQUF0QjtBQUFBLEdBRG9CLEVBRXBCLENBQUNELFlBQUQsRUFBZUMsWUFBZixDQUZvQixDQUF0QixDQUw4QyxDQVM5QztBQUNBOztBQUNBLE1BQU1HLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBcUIsR0FBTTtBQUMvQixXQUFPUCxDQUFDLENBQUNRLElBQUYsQ0FBTztBQUNaQyxNQUFBQSxPQUFPLEVB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cXVlcnknO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgY29ubmVjdCwgQ29ubmVjdGVkUHJvcHMsIHVzZURpc3BhdGNoIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IEdyYXBoSWNvbiBmcm9tICdzcmMvYXNzZXRzL2xpbmUtY2hhcnQuc3ZnJztcbmltcG9ydCBjb2xsZWN0b3JJY29uIGZyb20gJ3NyYy9hc3NldHMvbWFwL3Bpbi13YXRlci5zdmcnO1xuaW1wb3J0IHdhdGVySWNvbk5vQmFja2dyb3VuZCBmcm9tICdzcmMvYXNzZXRzL3BvaW50X2ljb25zL3dhdGVyLW5vLWJhY2tncm91bmQuc3ZnJztcbmltcG9ydCBibHVlQ2lyY2xlVVJMIGZyb20gJ3NyYy9hc3NldHMvcG9pbnRfaWNvbnMvYmx1ZS1jaXJjbGUuc3ZnJztcbmltcG9ydCBicmlnaHRCbHVlQ2lyY2xlVVJMIGZyb20gJ3NyYy9hc3NldHMvcG9pbnRfaWNvbnMvYnJpZ2h0LWJsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgcGxhbnRJY29uVVJMIGZyb20gJ3NyYy9hc3NldHMvcG9pbnRfaWNvbnMvZmFjdG9yeS1pY29uLnN2Zyc7XG5pbXBvcnQgZ3JlZW5DaXJjbGVVUkwgZnJvbSAnc3JjL2Fzc2V0cy9wb2ludF9pY29ucy9ncmVlbi1jaXJjbGUuc3ZnJztcbmltcG9ydCBvYnNlcnZhdGlvbkljb25VUkwgZnJvbSAnc3JjL2Fzc2V0cy9wb2ludF9pY29ucy9vYnNlcnZhdGlvbi1pY29uLnN2Zyc7XG5pbXBvcnQgcGlua0NpcmNsZVVSTCBmcm9tICdzcmMvYXNzZXRzL3BvaW50X2ljb25zL3BpbmstY2lyY2xlLnN2Zyc7XG5pbXBvcnQgcHVtcFN0YXRpb25JY29uVVJMIGZyb20gJ3NyYy9hc3NldHMvcG9pbnRfaWNvbnMvcHVtcC1zdGF0aW9uLWljb24uc3ZnJztcbmltcG9ydCByZWRQaW5SZWRTaGFkb3cgZnJvbSAnc3JjL2Fzc2V0cy9wb2ludF9pY29ucy9yZWQtcGluLXJlZC1zaGFkb3cucG5nJztcbmltcG9ydCBzYW1wbGluZ0ljb25VUkwgZnJvbSAnc3JjL2Fzc2V0cy9wb2ludF9pY29ucy9zYW1wbGluZy1pY29uLnN2Zyc7XG5pbXBvcnQgd2hpdGVQaW5CbGFja1NoYWRvdyBmcm9tICdzcmMvYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1ibGFjay1zaGFkb3cucG5nJztcbmltcG9ydCB3aGl0ZVBpblJlZFNoYWRvdyBmcm9tICdzcmMvYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1yZWQtc2hhZG93LnBuZyc7XG5pbXBvcnQgV1dUUEljb25VUkwgZnJvbSAnc3JjL2Fzc2V0cy9wb2ludF9pY29ucy9XV1RQLWljb24uc3ZnJztcbmltcG9ydCB5ZWxsb3dDaXJjbGVVUkwgZnJvbSAnc3JjL2Fzc2V0cy9wb2ludF9pY29ucy95ZWxsb3ctY2lyY2xlLnN2Zyc7XG5pbXBvcnQgd2hpdGVQb2ludCBmcm9tICdzcmMvYXNzZXRzL3doaXRlLXBvaW50LnBuZyc7XG5pbXBvcnQgU2VjdG9yIGZyb20gJ3NyYy9jb21wb25lbnRzL1NlY3Rvcic7XG5pbXBvcnQgdXNlUmVtb3ZlRXhpc3RpbmdMYXllcnMsIHtcbiAgcmVtb3ZlRnJvbU1hcCxcbn0gZnJvbSAnc3JjL2hvb2tzL3VzZVJlbW92ZUV4aXN0aW5nTGF5ZXJzJztcbmltcG9ydCB7IElBcHBTdGF0ZSB9IGZyb20gJ3NyYy9tb2RlbHMvSUFwcFN0YXRlJztcbmltcG9ydCB7XG4gIGNsb3NlRmxvYXRpbmdHcmFwaCxcbiAgb3BlbkZsb2F0aW5nR3JhcGgsXG59IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvYWN0aW9ucyc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCBUaW1lRm9ybWF0IGZyb20gJ3NyYy91dGlsaXRpZXMvVGltZUZvcm1hdCc7XG5cbmZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZTogSUFwcFN0YXRlKSB7XG4gIGNvbnN0IHsgZXZlbnRzX2RhdGEgfSA9IHN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgZXZlbnRzX2RhdGEsXG4gIH07XG59XG5cbnR5cGUgUHJvcHMgPSBDb25uZWN0ZWRQcm9wczx0eXBlb2YgY29ubmVjdG9yPiAmIHtcbiAgbWFwOiBhbnk7XG4gIEw6IGFueTtcbiAgcG9pbnQ6IElQb2ludDtcbn07XG5cbmNvbnN0IFBvaW50TWFya2VyOiBSZWFjdC5GQzxQcm9wcz4gPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBMLCBtYXAsIHBvaW50LCBldmVudHNfZGF0YSB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgZm9jdXNlZEV2ZW50LCBob3ZlcmVkRXZlbnQgfSA9IGV2ZW50c19kYXRhO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgY29uc3QgY2VudGVyZWRFdmVudCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZm9jdXNlZEV2ZW50IHx8IGhvdmVyZWRFdmVudCxcbiAgICBbZm9jdXNlZEV2ZW50LCBob3ZlcmVkRXZlbnRdLFxuICApO1xuICAvLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuICAvLyBJY29uIEFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuICBjb25zdCBzZWxlY3RlZEJhY2tncm91bmQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiByZWRQaW5SZWRTaGFkb3csXG4gICAgICBpY29uU2l6ZTogWzY3LCA3MF0sXG4gICAgICBpY29uQW5jaG9yOiBbMzIsIDU0XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kID0gKCkgPT4ge1xuICAgIHJldHVybiBMLmljb24oe1xuICAgICAgaWNvblVybDogd2hpdGVQaW5SZWRTaGFkb3csXG4gICAgICBpY29uU2l6ZTogWzY3LCA3MF0sXG4gICAgICBpY29uQW5jaG9yOiBbMzIsIDU0XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBzdGFuZGFyZEJhY2tncm91bmQgPSAoXG4gICAgc2Vjb25kYXJ5OiBib29sZWFuID0gZmFsc2UsXG4gICAgdGhpcmQ6IGJvb2xlYW4gPSBmYWxzZSxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiB3aGl0ZVBpbkJsYWNrU2hhZG93LFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeSA/IFsyMCwgMjBdIDogWzQzLCA0Nl0sXG4gICAgICBpY29uQW5jaG9yOlxuICAgICAgICBzZWNvbmRhcnkgJiYgdGhpcmQgPyBbLTIsIDE5XSA6IHNlY29uZGFyeSA/IFstMiwgNDRdIDogWzIwLCA0Ml0sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgY29tYmluZWRGYWN0b3J5SWNvbiA9IFtcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogeWVsbG93Q2lyY2xlVVJMLFxuICAgICAgaWNvblNpemU6IFsyNSwgMjRdLFxuICAgICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBwbGFudEljb25VUkwsXG4gICAgICBpY29uU2l6ZTogWzE1LCAxNV0sXG4gICAgICBpY29uQW5jaG9yOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGNvbnN0IGNvbWJpbmVkUHVtcFN0YXRpb25JY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBncmVlbkNpcmNsZVVSTCxcbiAgICAgIGljb25TaXplOiBbMjUsIDI0XSxcbiAgICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogcHVtcFN0YXRpb25JY29uVVJMLFxuICAgICAgaWNvblNpemU6IFsyMCwgMjBdLFxuICAgICAgaWNvbkFuY2hvcjogWzcsIDMyXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBjb25zdCBjb21iaW5lZENvbGxlY3RvcnNJY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBjb2xsZWN0b3JJY29uLFxuICAgICAgaWNvblNpemU6IFs0NSwgNDVdLFxuXG4gICAgICBpY29uQW5jaG9yOiBbMjUsIDUwXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBjb25zdCBjb21iaW5lZFdXVFBJY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBicmlnaHRCbHVlQ2lyY2xlVVJMLFxuICAgICAgaWNvblNpemU6IFsyNSwgMjVdLFxuICAgICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBXV1RQSWNvblVSTCxcbiAgICAgIGljb25TaXplOiBbMjAsIDIwXSxcbiAgICAgIGljb25BbmNob3I6IFs4LCAzMV0sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gIF07XG5cbiAgY29uc3QgbWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UgPSAoKSA9PiB7XG4gICAgbGV0IHNvdXJjZTtcblxuICAgIGlmIChjZW50ZXJlZEV2ZW50ICE9PSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSBjZW50ZXJlZEV2ZW50LnNvdXJjZXMuZmlsdGVyKFxuICAgICAgICAoc291cmNlKSA9PiBzb3VyY2UucG9pbnRfaWQgPT09IHBvaW50LmlkLFxuICAgICAgKVswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgY2VudGVyZWRFdmVudCAhPT0gbnVsbCAmJlxuICAgICAgc291cmNlICYmXG4gICAgICBjZW50ZXJlZEV2ZW50LnNlbGVjdGVkX3NvdXJjZSA9PT0gc291cmNlLnBvaW50X2lkXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBtYXJrZXJCZWxvbmdzVG9Tb3VyY2UgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNlbnRlcmVkRXZlbnQgIT09IG51bGwgJiZcbiAgICAgIGNlbnRlcmVkRXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF1cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGlzQ29sbGVjdG9yRm9jdXNlZCA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNlbnRlcmVkRXZlbnQ/Lm9ic2VydmF0aW9ucz8ubGVuZ3RoID09PSAxICYmXG4gICAgICBwb2ludC5pZCA9PT0gY2VudGVyZWRFdmVudC5vYnNlcnZhdGlvbnNbMF0ucG9pbnRfaWRcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IG1hdGNoSWNvblRvUG9pbnQgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICAgIHN3aXRjaCAocG9pbnQuZ3JvdXAudHlwZSkge1xuICAgICAgY2FzZSAnR3JvdXBzOjpGYWN0b3J5JzpcbiAgICAgICAgaWYgKGNvbWJpbmVkRmFjdG9yeUljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKCkpIHtcbiAgICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoKSkge1xuICAgICAgICAgICAgY29tYmluZWRGYWN0b3J5SWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVkRmFjdG9yeUljb247XG4gICAgICBjYXNlICdHcm91cHM6OlB1bXBTdGF0aW9uJzpcbiAgICAgICAgaWYgKGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSgpKSB7XG4gICAgICAgICAgICBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZSgpKSB7XG4gICAgICAgICAgICBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbjtcbiAgICAgIGNhc2UgJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50JzpcbiAgICAgICAgaWYgKGNvbWJpbmVkV1dUUEljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKCkpIHtcbiAgICAgICAgICAgIGNvbWJpbmVkV1dUUEljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoKSkge1xuICAgICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbWJpbmVkV1dUUEljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVkV1dUUEljb247XG5cbiAgICAgIGNhc2UgJ0dyb3Vwczo6Q29sbGVjdG9ycyc6XG4gICAgICAgIGlmIChpc0NvbGxlY3RvckZvY3VzZWQocG9pbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIEwuaWNvbih7XG4gICAgICAgICAgICAgIGljb25Vcmw6IHJlZFBpblJlZFNoYWRvdyxcbiAgICAgICAgICAgICAgaWNvblNpemU6IFs2MiwgNjJdLFxuICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMzAsIDUyXSxcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgICBpY29uVXJsOiB3YXRlckljb25Ob0JhY2tncm91bmQsXG4gICAgICAgICAgICAgIGljb25TaXplOiBbNDYsIDQ2XSxcblxuICAgICAgICAgICAgICBpY29uQW5jaG9yOiBbMjIsIDQ0XSxcbiAgICAgICAgICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21iaW5lZENvbGxlY3RvcnNJY29uO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY3JlYXRlTWFuaG9sZVBvaW50ID0gKG1hcmtlckxvY2F0aW9uOiBvYmplY3QpID0+IHtcbiAgICBsZXQgcG9pbnRJY29uID0gTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHdoaXRlUG9pbnQsXG4gICAgICBpY29uU2l6ZTogWzksIDldLFxuICAgICAgaWNvbkFuY2hvcjogWzQuNSwgNC41XSxcbiAgICB9KTtcbiAgICBsZXQgbWFuaG9sZUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBwb2ludEljb24sXG4gICAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgICB9KS5hZGRUbyhtYXApO1xuICAgIG1hbmhvbGVJY29uLmJpbmRUb29sdGlwKGAke3BvaW50Lmdyb3VwLm5hbWV9ICgke3BvaW50LmlkfSlgKTtcbiAgICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnQnO1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZUN1c3RvbUljb25Qb2ludCA9IChtYXJrZXJMb2NhdGlvbjogb2JqZWN0KSA9PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG1hdGNoSWNvblRvUG9pbnQocG9pbnQpICE9PSBudWxsICYmXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBtYXRjaEljb25Ub1BvaW50KHBvaW50KS5mb3JFYWNoKChpY29uOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgICAgICBpY29uOiBpY29uLFxuICAgICAgICAgIHJpc2VPbkhvdmVyOiBmYWxzZSxcbiAgICAgICAgfSkuYWRkVG8obWFwKTtcbiAgICAgICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGAke3BvaW50Lmdyb3VwLm5hbWV9ICgke3BvaW50LmlkfSlgKTtcbiAgICAgICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgICAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgICAgIH0pO1xuXG4gICAgaWYgKHBvaW50LnJlbGF0ZWRFdmVudHNBbW91bnQpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgbGV0IHBvaW50Q3VzdG9tSWNvbiA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICAgIGljb246IEwuZGl2SWNvbih7XG4gICAgICAgICAgY2xhc3NOYW1lOiBgY2lyY2xlLWV2ZW50cy1hbW91bnQgJHtcbiAgICAgICAgICAgIHBvaW50LnJlbGF0ZWRFdmVudHNBbW91bnQgPiAyID8gJ2FsZXJ0LWNvbG9yJyA6ICcnXG4gICAgICAgICAgfWAsXG4gICAgICAgICAgaHRtbDogYCR7cG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudH1gLFxuICAgICAgICAgIGljb25BbmNob3I6IFstNSwgNDJdLFxuICAgICAgICB9KSxcbiAgICAgICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICAgICAgfSkuYWRkVG8obWFwKTtcblxuICAgICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdJY29uTnVtYmVyJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQgPSAoXG4gICAgbWFya2VyTG9jYXRpb246IG9iamVjdCxcbiAgICBzZWNvbmRhcnlJY29uOiBib29sZWFuLFxuICApID0+IHtcbiAgICAvLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuICAgIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gICAgbGV0IHNhbXBsaW5nSWNvbiA9IFtcbiAgICAgIEwuaWNvbih7XG4gICAgICAgIGljb25Vcmw6IGJsdWVDaXJjbGVVUkwsXG4gICAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzEwLCAxMF0gOiBbMjUsIDI0XSxcbiAgICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstNywgMTVdIDogWzEwLjcsIDMzLjddLFxuICAgICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgICB9KSxcbiAgICAgIEwuaWNvbih7XG4gICAgICAgIGljb25Vcmw6IHNhbXBsaW5nSWNvblVSTCxcbiAgICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbNywgN10gOiBbMTMsIDE1XSxcbiAgICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstOCwgMTNdIDogWzUsIDMwXSxcbiAgICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgICAgfSksXG4gICAgXTtcblxuICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSgpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgICBzYW1wbGluZ0ljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoKSAmJiAhc2Vjb25kYXJ5SWNvbikge1xuICAgICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKHNlY29uZGFyeUljb24sIHRydWUpKTtcbiAgICB9XG5cbiAgICBzYW1wbGluZ0ljb24uZm9yRWFjaCgoaWNvbikgPT4ge1xuICAgICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgICAgaWNvbjogaWNvbixcbiAgICAgICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICAgICAgfSkuYWRkVG8obWFwKTtcbiAgICAgIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChgJHtwb2ludC5ncm91cC5uYW1lfSAoJHtwb2ludC5pZH0pYCk7XG4gICAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1NhbXBsaW5nJztcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBjcmVhdGVPYnNlcnZhdGlvbkljb25Qb2ludCA9IChcbiAgICBtYXJrZXJMb2NhdGlvbjogb2JqZWN0LFxuICAgIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gICkgPT4ge1xuICAgIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gICAgLy8gSWNvbiBBbmNob3I6IFsoLXJpZ2h0KSgrbGVmdCksICgtZG93bikoK3VwKV1cbiAgICBsZXQgb2JzZXJ2YXRpb25JY29uID0gW1xuICAgICAgTC5pY29uKHtcbiAgICAgICAgaWNvblVybDogcGlua0NpcmNsZVVSTCxcbiAgICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMTAsIDEwXSA6IFsyNSwgMjRdLFxuICAgICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy03LCA0MF0gOiBbMTAuNywgMzMuN10sXG4gICAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICAgIH0pLFxuICAgICAgTC5pY29uKHtcbiAgICAgICAgaWNvblVybDogb2JzZXJ2YXRpb25JY29uVVJMLFxuICAgICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFs3LCA3XSA6IFsxMywgMTVdLFxuICAgICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAzOF0gOiBbNSwgMzBdLFxuICAgICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgICB9KSxcbiAgICBdO1xuXG4gICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICAgIG9ic2VydmF0aW9uSWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZSgpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoc2Vjb25kYXJ5SWNvbikpO1xuICAgIH1cblxuICAgIG9ic2VydmF0aW9uSWNvbi5mb3JFYWNoKChpY29uKSA9PiB7XG4gICAgICBsZXQgcG9pbnRDdXN0b21JY29uOiBhbnkgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgICAgICBpY29uOiBpY29uLFxuICAgICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICB9KS5hZGRUbyhtYXApO1xuICAgICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGAke3BvaW50Lmdyb3VwLm5hbWV9ICgke3BvaW50LmlkfSlgKTtcbiAgICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnT2JzZXJ2YXRpb24nO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHBvcHVwQ29udGVudCA9IChvYnM6IGFueSkgPT4ge1xuICAgIGlmIChvYnMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcG9wdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZ3JhcGgtaWNvbiBwb3B1cC1ncmFwaC1pY29uLSR7cG9pbnQuaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtHcmFwaEljb259XCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NpdGUtbmFtZVwiPjxiPiR7cG9pbnQuZ3JvdXAubmFtZX08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJzZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1wb3B1cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1ncmFwaC1pY29uIHBvcHVwLWdyYXBoLWljb24tJHtvYnMuaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtHcmFwaEljb259XCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NpdGUtbmFtZVwiPjxiPiR7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnQuZ3JvdXAubmFtZVxuICAgICAgICAgICAgICAgICAgICB9PC9iPjwvaDU+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1wXCI+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuc2V2ZXJpdHlgLFxuICAgICAgICAgICAgICAgICAgICAgICAgKX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIiR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwb3B1cC1jb250ZW50X19zZXZlcml0eS0tJyArIG9icy5zZXZlcml0eVxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LnNldmVyaXRpZXMuJHtvYnMuc2V2ZXJpdHl9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwicG9wdXAtY29udGVudF9faHJcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50X19kaXNjaGFyZ2UtdGltZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuZmlyc3Rfc2VlbmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX06PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiIGlkPVwiZmlyc3Qtc2Vlbi1wb3B1cFwiPjwvYj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1wXCI+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3Lmxhc3Rfc2VlbmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX06PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiIGlkPVwibGFzdC1zZWVuLXBvcHVwXCI+PC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBgO1xuICAgIH1cbiAgfTtcblxuICB1c2VSZW1vdmVFeGlzdGluZ0xheWVycyhtYXAsIHBvaW50LCAnUG9pbnQnKTtcbiAgdXNlUmVtb3ZlRXhpc3RpbmdMYXllcnMobWFwLCBwb2ludCwgJ09ic2VydmF0aW9uJyk7XG4gIHVzZVJlbW92ZUV4aXN0aW5nTGF5ZXJzKG1hcCwgcG9pbnQsICdTYW1wbGluZycpO1xuICB1c2VSZW1vdmVFeGlzdGluZ0xheWVycyhtYXAsIHBvaW50LCAnSWNvbk51bWJlcicpO1xuXG4gIGNvbnN0IHBvaW50SXNPYnNlcnZhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgY2VudGVyZWRFdmVudCAhPT0gbnVsbCAmJlxuICAgICAgY2VudGVyZWRFdmVudC5vYnNlcnZhdGlvbnMuZmlsdGVyKChvYnMpID0+IG9icy5wb2ludF9pZCA9PT0gcG9pbnQuaWQpWzBdXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBwb2ludEJlbG9uZ3NUb0V2ZW50ID0gKCkgPT4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGJpbmRQb3B1cFRvUG9pbnQgPSAob2JzOiBhbnkgPSBudWxsKSA9PiB7XG4gICAgbGV0IGxheWVycyA9IG1hcC5fbGF5ZXJzO1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbGF5ZXJzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIFsnUG9pbnQnLCAnT2JzZXJ2YXRpb24nXS5pbmNsdWRlcyhsYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCkgJiZcbiAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3RfaWQgPT09IHBvaW50LmlkXG4gICAgICApIHtcbiAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5iaW5kUG9wdXAocG9wdXBDb250ZW50KG9icyksIHtcbiAgICAgICAgICBtaW5XaWR0aDogMjAwLFxuICAgICAgICB9KTtcbiAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5vbigncG9wdXBvcGVuJywgZnVuY3Rpb24gKGU6IGFueSkge1xuICAgICAgICAgIGlmIChmb2N1c2VkRXZlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBmaXJzdFNlZW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgIGxldCBsYXN0U2VlbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgbGV0IHNlY3RvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgICAgICAgICBpZiAob2JzICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgICAgICAgICAgICA8VGltZUZvcm1hdFxuICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPXtvYnMuc3RhcnRfdGltZX1cbiAgICAgICAgICAgICAgICAgIHRpbWVfem9uZT17b2JzLnRpbWVfem9uZX1cbiAgICAgICAgICAgICAgICAvPixcbiAgICAgICAgICAgICAgICBmaXJzdFNlZW4sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgICAgICAgICAgICA8VGltZUZvcm1hdFxuICAgICAgICAgICAgICAgICAgdGltZXN0YW1wPXtvYnMubGFzdF9zZWVuX3RpbWV9XG4gICAgICAgICAgICAgICAgICB0aW1lX3pvbmU9e29icy50aW1lX3pvbmV9XG4gICAgICAgICAgICAgICAgLz4sXG4gICAgICAgICAgICAgICAgbGFzdFNlZW4sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBSZWFjdERPTS5yZW5kZXIoXG4gICAgICAgICAgICAgICAgPFNlY3RvclxuICAgICAgICAgICAgICAgICAgc2VjdG9yTmFtZT17cG9pbnQuZ3JvdXAuc2VjdG9yX25hbWV9XG4gICAgICAgICAgICAgICAgICBzZWN0b3JJY29uTmFtZT17cG9pbnQuZ3JvdXAuc2VjdG9yX2ljb25fbmFtZX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMzdcIlxuICAgICAgICAgICAgICAgIC8+LFxuICAgICAgICAgICAgICAgIHNlY3RvcixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICQoJyNmaXJzdC1zZWVuLXBvcHVwJykuYXBwZW5kKGZpcnN0U2Vlbik7XG4gICAgICAgICAgICAgICQoJyNsYXN0LXNlZW4tcG9wdXAnKS5hcHBlbmQobGFzdFNlZW4pO1xuICAgICAgICAgICAgICAkKCcjc2VjdG9yJykuYXBwZW5kKHNlY3Rvcik7XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBhdHRhY2hDbGlja0V2ZW50ID0gKHNlbGVjdG9yOiBzdHJpbmcsIG9ic2VydmF0aW9uOiBhbnkpID0+IHtcbiAgICAgICAgICAgICQoZG9jdW1lbnQuYm9keSkub24oJ2NsaWNrJywgc2VsZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgZGlzcGF0Y2goY2xvc2VGbG9hdGluZ0dyYXBoKCkpO1xuICAgICAgICAgICAgICBkaXNwYXRjaChvcGVuRmxvYXRpbmdHcmFwaCh0cnVlLCBvYnNlcnZhdGlvbiwgcG9pbnQpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAob2JzICE9PSBudWxsKSB7XG4gICAgICAgICAgICBhdHRhY2hDbGlja0V2ZW50KCcucG9wdXAtZ3JhcGgtaWNvbi0nICsgb2JzLmlkLCBvYnMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhdHRhY2hDbGlja0V2ZW50KCcucG9wdXAtZ3JhcGgtaWNvbi0nICsgcG9pbnQuaWQsIG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGxheWVyc1twcm9wZXJ0eV0ub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgIGxheWVyc1twcm9wZXJ0eV0ub3BlblBvcHVwKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBtYXJrZXJMb2NhdGlvbiA9IFtwb2ludFsnbGF0aXR1ZGUnXSwgcG9pbnRbJ2xvbmdpdHVkZSddXTtcbiAgICBpZiAoIXBvaW50LmV2ZW50c1ZpZXdIb3ZlcmVkKSBjcmVhdGVNYW5ob2xlUG9pbnQobWFya2VyTG9jYXRpb24pO1xuXG4gICAgaWYgKG1hcmtlckxvY2F0aW9uWzBdICE9PSBudWxsKSB7XG4gICAgICBpZiAocG9pbnQucGFydF9vZl9tb25pdG9yZWRfcGF0aCAmJiAhcG9pbnQuaGFzX2RldmljZSkgcmV0dXJuO1xuICAgICAgaWYgKFxuICAgICAgICBtYXRjaEljb25Ub1BvaW50KHBvaW50KSAhPT0gbnVsbCAmJlxuICAgICAgICAoY2VudGVyZWRFdmVudCA9PT0gbnVsbCB8fFxuICAgICAgICAgIChjZW50ZXJlZEV2ZW50ICE9PSBudWxsICYmIHBvaW50SXNPYnNlcnZhdGlvbigpKSB8fFxuICAgICAgICAgIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCcpXG4gICAgICApIHtcbiAgICAgICAgaWYgKHBvaW50LmV2ZW50c1ZpZXdIb3ZlcmVkKSBjcmVhdGVNYW5ob2xlUG9pbnQobWFya2VyTG9jYXRpb24pO1xuICAgICAgICBjcmVhdGVDdXN0b21JY29uUG9pbnQobWFya2VyTG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9jdXNlZEV2ZW50ICE9PSBudWxsICYmIHBvaW50SXNPYnNlcnZhdGlvbigpKSB7XG4gICAgICAgIGxldCBoYXNQcmltYXJ5SWNvbiA9IG1hdGNoSWNvblRvUG9pbnQocG9pbnQpICE9PSBudWxsO1xuICAgICAgICBjcmVhdGVPYnNlcnZhdGlvbkljb25Qb2ludChtYXJrZXJMb2NhdGlvbiwgaGFzUHJpbWFyeUljb24pO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmb2N1c2VkRXZlbnQgIT09IG51bGwgJiZcbiAgICAgICAgICBmb2N1c2VkRXZlbnQuc2FtcGxpbmdzLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgICAgIGZvY3VzZWRFdmVudC5zYW1wbGluZ3NbMF0ucG9pbnRfaWQgPT09IHBvaW50LmlkXG4gICAgICAgICkge1xuICAgICAgICAgIGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50KG1hcmtlckxvY2F0aW9uLCBoYXNQcmltYXJ5SWNvbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNlbnRlcmVkRXZlbnQgIT09IG51bGwgJiYgcG9pbnRCZWxvbmdzVG9FdmVudCgpKSB7XG4gICAgICAgIGxldCBvYnMgPSBjZW50ZXJlZEV2ZW50Lm9ic2VydmF0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgKG9icykgPT4gb2JzLnBvaW50X2lkID09PSBwb2ludC5pZCxcbiAgICAgICAgKVswXTtcbiAgICAgICAgYmluZFBvcHVwVG9Qb2ludChvYnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgLy8gVU5CSU5EIFBPUFVQXG4gICAgICByZW1vdmVGcm9tTWFwKG1hcCwgcG9pbnQsICdPYnNlcnZhdGlvbicpO1xuICAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnUG9pbnQnKTtcbiAgICAgIHJlbW92ZUZyb21NYXAobWFwLCBwb2ludCwgJ1NhbXBsaW5nJyk7XG4gICAgICByZW1vdmVGcm9tTWFwKG1hcCwgcG9pbnQsICdJY29uTnVtYmVyJyk7XG4gICAgfTtcbiAgfSwgW2NlbnRlcmVkRXZlbnRdKTtcblxuICByZXR1cm4gPGRpdj48L2Rpdj47XG59O1xuXG5jb25zdCBjb25uZWN0b3IgPSBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcyk7XG5leHBvcnQgZGVmYXVsdCBjb25uZWN0b3IoXG4gIFJlYWN0Lm1lbW8oUG9pbnRNYXJrZXIsIChwcmV2UHJvcHMsIG5leHRQcm9wcykgPT4ge1xuICAgIGlmIChcbiAgICAgIHByZXZQcm9wcy5ldmVudHNfZGF0YS5mb2N1c2VkRXZlbnQgIT09IG5leHRQcm9wcy5ldmVudHNfZGF0YS5mb2N1c2VkRXZlbnRcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSksXG4pO1xuIl19
516
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRNYXJrZXIudHN4Il0sIm5hbWVzIjpbIm1hcFN0YXRlVG9Qcm9wcyIsInN0YXRlIiwiZXZlbnRzX2RhdGEiLCJlZGdlc19kYXRhIiwiUG9pbnRNYXJrZXIiLCJwcm9wcyIsIkwiLCJtYXAiLCJwb2ludCIsImZvY3VzZWRFdmVudCIsImhvdmVyZWRFdmVudCIsImRpc3BhdGNoIiwiY2VudGVyZWRFdmVudCIsInNlbGVjdGVkQmFja2dyb3VuZCIsImljb24iLCJpY29uVXJsIiwicmVkUGluUmVkU2hhZG93IiwiaWNvblNpemUiLCJpY29uQW5jaG9yIiwicG9wdXBBbmNob3IiLCJiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kIiwid2hpdGVQaW5SZWRTaGFkb3ciLCJzdGFuZGFyZEJhY2tncm91bmQiLCJzZWNvbmRhcnkiLCJ0aGlyZCIsIndoaXRlUGluQmxhY2tTaGFkb3ciLCJjb21iaW5lZEZhY3RvcnlJY29uIiwieWVsbG93Q2lyY2xlVVJMIiwicGxhbnRJY29uVVJMIiwiY29tYmluZWRQdW1wU3RhdGlvbkljb24iLCJncmVlbkNpcmNsZVVSTCIsInB1bXBTdGF0aW9uSWNvblVSTCIsImNvbWJpbmVkQ29sbGVjdG9yc0ljb24iLCJjb2xsZWN0b3JJY29uIiwiY29tYmluZWRXV1RQSWNvbiIsImJyaWdodEJsdWVDaXJjbGVVUkwiLCJXV1RQSWNvblVSTCIsIm1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlIiwic291cmNlIiwic291cmNlcyIsImZpbHRlciIsInBvaW50X2lkIiwiaWQiLCJzZWxlY3RlZF9zb3VyY2UiLCJtYXJrZXJCZWxvbmdzVG9Tb3VyY2UiLCJpc0NvbGxlY3RvckZvY3VzZWQiLCJvYnNlcnZhdGlvbnMiLCJsZW5ndGgiLCJtYXRjaEljb25Ub1BvaW50IiwiZ3JvdXAiLCJ0eXBlIiwidW5zaGlmdCIsIndhdGVySWNvbk5vQmFja2dyb3VuZCIsImNyZWF0ZU1hbmhvbGVQb2ludCIsIm1hcmtlckxvY2F0aW9uIiwicG9pbnRJY29uIiwid2hpdGVQb2ludCIsIm1hbmhvbGVJY29uIiwibWFya2VyIiwicmlzZU9uSG92ZXIiLCJhZGRUbyIsImJpbmRUb29sdGlwIiwibmFtZSIsImNyZWF0ZUN1c3RvbUljb25Qb2ludCIsImZvckVhY2giLCJwb2ludEN1c3RvbUljb24iLCJyZWxhdGVkRXZlbnRzQW1vdW50IiwiZGl2SWNvbiIsImNsYXNzTmFtZSIsImh0bWwiLCJjcmVhdGVTYW1wbGluZ0ljb25Qb2ludCIsInNlY29uZGFyeUljb24iLCJzYW1wbGluZ0ljb24iLCJibHVlQ2lyY2xlVVJMIiwic2FtcGxpbmdJY29uVVJMIiwiY3JlYXRlT2JzZXJ2YXRpb25JY29uUG9pbnQiLCJvYnNlcnZhdGlvbkljb24iLCJwaW5rQ2lyY2xlVVJMIiwib2JzZXJ2YXRpb25JY29uVVJMIiwicG9wdXBDb250ZW50Iiwib2JzIiwiR3JhcGhJY29uIiwiaTE4biIsInQiLCJzZXZlcml0eSIsInBvaW50SXNPYnNlcnZhdGlvbiIsInBvaW50QmVsb25nc1RvRXZlbnQiLCJiaW5kUG9wdXBUb1BvaW50IiwibGF5ZXJzIiwiX2xheWVycyIsInByb3BlcnR5IiwiaW5jbHVkZXMiLCJrYW5kb19vYmplY3QiLCJrYW5kb19vYmplY3RfaWQiLCJiaW5kUG9wdXAiLCJtaW5XaWR0aCIsIm9uIiwiZSIsImZpcnN0U2VlbiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImxhc3RTZWVuIiwic2VjdG9yIiwiUmVhY3RET00iLCJyZW5kZXIiLCJzdGFydF90aW1lIiwidGltZV96b25lIiwibGFzdF9zZWVuX3RpbWUiLCJzZWN0b3JfbmFtZSIsInNlY3Rvcl9pY29uX25hbWUiLCJzZXRUaW1lb3V0IiwiYXBwZW5kIiwiYXR0YWNoQ2xpY2tFdmVudCIsInNlbGVjdG9yIiwib2JzZXJ2YXRpb24iLCJib2R5Iiwib3BlblBvcHVwIiwiY3VzdG9tSWNvbkZvclBvaW50c0lmUGFydE9mUGF0aEFuZE1vbml0b3JlZCIsImVkZ2VzSWRzIiwicGF0aCIsInBhcnQiLCJwdXNoIiwiZWRnZV9pZCIsInJlbGV2YW50RWRnZXMiLCJpdGVtcyIsImVkZ2UiLCJyZWxldmFudFBvaW50cyIsInNvdXJjZV9wb2ludF9pZCIsImV2ZW50c1ZpZXdIb3ZlcmVkIiwicGFydF9vZl9tb25pdG9yZWRfcGF0aCIsImhhc19kZXZpY2UiLCJoYXNQcmltYXJ5SWNvbiIsInNhbXBsaW5ncyIsImNsZWFudXAiLCJjb25uZWN0b3IiLCJSZWFjdCIsIm1lbW8iLCJwcmV2UHJvcHMiLCJuZXh0UHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQTs7OztBQUVBOztBQUNBOzs7Ozs7QUFHQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFLQTs7QUFDQTs7Ozs7O0FBRUEsU0FBU0EsZUFBVCxDQUF5QkMsS0FBekIsRUFBMkM7QUFDekMsTUFBUUMsV0FBUixHQUFvQ0QsS0FBcEMsQ0FBUUMsV0FBUjtBQUFBLE1BQXFCQyxVQUFyQixHQUFvQ0YsS0FBcEMsQ0FBcUJFLFVBQXJCO0FBRUEsU0FBTztBQUNMRCxJQUFBQSxXQUFXLEVBQVhBLFdBREs7QUFFTEMsSUFBQUEsVUFBVSxFQUFWQTtBQUZLLEdBQVA7QUFJRDs7QUFRRCxJQUFNQyxXQUE0QixHQUFHLFNBQS9CQSxXQUErQixDQUFDQyxLQUFELEVBQVc7QUFDOUMsTUFBUUMsQ0FBUixHQUFtREQsS0FBbkQsQ0FBUUMsQ0FBUjtBQUFBLE1BQVdDLEdBQVgsR0FBbURGLEtBQW5ELENBQVdFLEdBQVg7QUFBQSxNQUFnQkMsS0FBaEIsR0FBbURILEtBQW5ELENBQWdCRyxLQUFoQjtBQUFBLE1BQXVCTixXQUF2QixHQUFtREcsS0FBbkQsQ0FBdUJILFdBQXZCO0FBQUEsTUFBb0NDLFVBQXBDLEdBQW1ERSxLQUFuRCxDQUFvQ0YsVUFBcEM7QUFDQSxNQUFRTSxZQUFSLEdBQXVDUCxXQUF2QyxDQUFRTyxZQUFSO0FBQUEsTUFB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Q2hELE1BQ0VELFNBQVMsQ0FBQ3ZJLFdBQVYsQ0FBc0JPLFlBQXRCLEtBQXVDaUksU0FBUyxDQUFDeEksV0FBVixDQUFzQk8sWUFEL0QsRUFFRTtBQUNBLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU8sSUFBUDtBQUNELENBUkQsQ0FEc0IsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgeyBjb25uZWN0LCBDb25uZWN0ZWRQcm9wcywgdXNlRGlzcGF0Y2ggfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgR3JhcGhJY29uIGZyb20gJ3NyYy9hc3NldHMvbGluZS1jaGFydC5zdmcnO1xuaW1wb3J0IGNvbGxlY3Rvckljb24gZnJvbSAnc3JjL2Fzc2V0cy9tYXAvcGluLXdhdGVyLnN2Zyc7XG5pbXBvcnQgd2F0ZXJJY29uTm9CYWNrZ3JvdW5kIGZyb20gJ3NyYy9hc3NldHMvcG9pbnRfaWNvbnMvd2F0ZXItbm8tYmFja2dyb3VuZC5zdmcnO1xuaW1wb3J0IGJsdWVDaXJjbGVVUkwgZnJvbSAnc3JjL2Fzc2V0cy9wb2ludF9pY29ucy9ibHVlLWNpcmNsZS5zdmcnO1xuaW1wb3J0IGJyaWdodEJsdWVDaXJjbGVVUkwgZnJvbSAnc3JjL2Fzc2V0cy9wb2ludF9pY29ucy9icmlnaHQtYmx1ZS1jaXJjbGUuc3ZnJztcbmltcG9ydCBwbGFudEljb25VUkwgZnJvbSAnc3JjL2Fzc2V0cy9wb2ludF9pY29ucy9mYWN0b3J5LWljb24uc3ZnJztcbmltcG9ydCBncmVlbkNpcmNsZVVSTCBmcm9tICdzcmMvYXNzZXRzL3BvaW50X2ljb25zL2dyZWVuLWNpcmNsZS5zdmcnO1xuaW1wb3J0IG9ic2VydmF0aW9uSWNvblVSTCBmcm9tICdzcmMvYXNzZXRzL3BvaW50X2ljb25zL29ic2VydmF0aW9uLWljb24uc3ZnJztcbmltcG9ydCBwaW5rQ2lyY2xlVVJMIGZyb20gJ3NyYy9hc3NldHMvcG9pbnRfaWNvbnMvcGluay1jaXJjbGUuc3ZnJztcbmltcG9ydCBwdW1wU3RhdGlvbkljb25VUkwgZnJvbSAnc3JjL2Fzc2V0cy9wb2ludF9pY29ucy9wdW1wLXN0YXRpb24taWNvbi5zdmcnO1xuaW1wb3J0IHJlZFBpblJlZFNoYWRvdyBmcm9tICdzcmMvYXNzZXRzL3BvaW50X2ljb25zL3JlZC1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHNhbXBsaW5nSWNvblVSTCBmcm9tICdzcmMvYXNzZXRzL3BvaW50X2ljb25zL3NhbXBsaW5nLWljb24uc3ZnJztcbmltcG9ydCB3aGl0ZVBpbkJsYWNrU2hhZG93IGZyb20gJ3NyYy9hc3NldHMvcG9pbnRfaWNvbnMvd2hpdGUtcGluLWJsYWNrLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluUmVkU2hhZG93IGZyb20gJ3NyYy9hc3NldHMvcG9pbnRfaWNvbnMvd2hpdGUtcGluLXJlZC1zaGFkb3cucG5nJztcbmltcG9ydCBXV1RQSWNvblVSTCBmcm9tICdzcmMvYXNzZXRzL3BvaW50X2ljb25zL1dXVFAtaWNvbi5zdmcnO1xuaW1wb3J0IHllbGxvd0NpcmNsZVVSTCBmcm9tICdzcmMvYXNzZXRzL3BvaW50X2ljb25zL3llbGxvdy1jaXJjbGUuc3ZnJztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJ3NyYy9hc3NldHMvd2hpdGUtcG9pbnQucG5nJztcbmltcG9ydCBTZWN0b3IgZnJvbSAnc3JjL2NvbXBvbmVudHMvU2VjdG9yJztcbmltcG9ydCB1c2VSZW1vdmVFeGlzdGluZ0xheWVycywge1xuICByZW1vdmVGcm9tTWFwLFxufSBmcm9tICdzcmMvaG9va3MvdXNlUmVtb3ZlRXhpc3RpbmdMYXllcnMnO1xuaW1wb3J0IHsgSUFwcFN0YXRlIH0gZnJvbSAnc3JjL21vZGVscy9JQXBwU3RhdGUnO1xuaW1wb3J0IHtcbiAgY2xvc2VGbG9hdGluZ0dyYXBoLFxuICBvcGVuRmxvYXRpbmdHcmFwaCxcbn0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9hY3Rpb25zJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IFRpbWVGb3JtYXQgZnJvbSAnc3JjL3V0aWxpdGllcy9UaW1lRm9ybWF0JztcblxuZnVuY3Rpb24gbWFwU3RhdGVUb1Byb3BzKHN0YXRlOiBJQXBwU3RhdGUpIHtcbiAgY29uc3QgeyBldmVudHNfZGF0YSwgZWRnZXNfZGF0YSB9ID0gc3RhdGU7XG5cbiAgcmV0dXJuIHtcbiAgICBldmVudHNfZGF0YSxcbiAgICBlZGdlc19kYXRhLFxuICB9O1xufVxuXG50eXBlIFByb3BzID0gQ29ubmVjdGVkUHJvcHM8dHlwZW9mIGNvbm5lY3Rvcj4gJiB7XG4gIG1hcDogYW55O1xuICBMOiBhbnk7XG4gIHBvaW50OiBJUG9pbnQ7XG59O1xuXG5jb25zdCBQb2ludE1hcmtlcjogUmVhY3QuRkM8UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgTCwgbWFwLCBwb2ludCwgZXZlbnRzX2RhdGEsIGVkZ2VzX2RhdGEgfSA9IHByb3BzO1xuICBjb25zdCB7IGZvY3VzZWRFdmVudCwgaG92ZXJlZEV2ZW50IH0gPSBldmVudHNfZGF0YTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IGNlbnRlcmVkRXZlbnQgPSB1c2VNZW1vKFxuICAgICgpID0+IGZvY3VzZWRFdmVudCB8fCBob3ZlcmVkRXZlbnQsXG4gICAgW2ZvY3VzZWRFdmVudCwgaG92ZXJlZEV2ZW50XSxcbiAgKTtcbiAgLy8gaWNvblNpemU6IFt3aWR0aCwgaGVpZ2h0XSxcbiAgLy8gSWNvbiBBbmNob3I6IFsoLXJpZ2h0KSgrbGVmdCksICgtZG93bikoK3VwKV1cbiAgY29uc3Qgc2VsZWN0ZWRCYWNrZ3JvdW5kID0gKCkgPT4ge1xuICAgIHJldHVybiBMLmljb24oe1xuICAgICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgICAgaWNvblNpemU6IFs2NywgNzBdLFxuICAgICAgaWNvbkFuY2hvcjogWzMyLCA1NF0sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgICByZXR1cm4gTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHdoaXRlUGluUmVkU2hhZG93LFxuICAgICAgaWNvblNpemU6IFs2NywgNzBdLFxuICAgICAgaWNvbkFuY2hvcjogWzMyLCA1NF0sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgc3RhbmRhcmRCYWNrZ3JvdW5kID0gKFxuICAgIHNlY29uZGFyeTogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHRoaXJkOiBib29sZWFuID0gZmFsc2UsXG4gICkgPT4ge1xuICAgIHJldHVybiBMLmljb24oe1xuICAgICAgaWNvblVybDogd2hpdGVQaW5CbGFja1NoYWRvdyxcbiAgICAgIGljb25TaXplOiBzZWNvbmRhcnkgPyBbMjAsIDIwXSA6IFs0MywgNDZdLFxuICAgICAgaWNvbkFuY2hvcjpcbiAgICAgICAgc2Vjb25kYXJ5ICYmIHRoaXJkID8gWy0yLCAxOV0gOiBzZWNvbmRhcnkgPyBbLTIsIDQ0XSA6IFsyMCwgNDJdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGNvbWJpbmVkRmFjdG9yeUljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHllbGxvd0NpcmNsZVVSTCxcbiAgICAgIGljb25TaXplOiBbMjUsIDI0XSxcbiAgICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogcGxhbnRJY29uVVJMLFxuICAgICAgaWNvblNpemU6IFsxNSwgMTVdLFxuICAgICAgaWNvbkFuY2hvcjogWzUsIDMwXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBjb25zdCBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbiA9IFtcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogZ3JlZW5DaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogWzI1LCAyNF0sXG4gICAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHB1bXBTdGF0aW9uSWNvblVSTCxcbiAgICAgIGljb25TaXplOiBbMjAsIDIwXSxcbiAgICAgIGljb25BbmNob3I6IFs3LCAzMl0sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gIF07XG5cbiAgY29uc3QgY29tYmluZWRDb2xsZWN0b3JzSWNvbiA9IFtcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogY29sbGVjdG9ySWNvbixcbiAgICAgIGljb25TaXplOiBbNDUsIDQ1XSxcblxuICAgICAgaWNvbkFuY2hvcjogWzI1LCA1MF0sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gIF07XG5cbiAgY29uc3QgY29tYmluZWRXV1RQSWNvbiA9IFtcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogYnJpZ2h0Qmx1ZUNpcmNsZVVSTCxcbiAgICAgIGljb25TaXplOiBbMjUsIDI1XSxcbiAgICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogV1dUUEljb25VUkwsXG4gICAgICBpY29uU2l6ZTogWzIwLCAyMF0sXG4gICAgICBpY29uQW5jaG9yOiBbOCwgMzFdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlID0gKCkgPT4ge1xuICAgIGxldCBzb3VyY2U7XG5cbiAgICBpZiAoY2VudGVyZWRFdmVudCAhPT0gbnVsbCkge1xuICAgICAgc291cmNlID0gY2VudGVyZWRFdmVudC5zb3VyY2VzLmZpbHRlcihcbiAgICAgICAgKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZCxcbiAgICAgIClbMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIGNlbnRlcmVkRXZlbnQgIT09IG51bGwgJiZcbiAgICAgIHNvdXJjZSAmJlxuICAgICAgY2VudGVyZWRFdmVudC5zZWxlY3RlZF9zb3VyY2UgPT09IHNvdXJjZS5wb2ludF9pZFxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgbWFya2VyQmVsb25nc1RvU291cmNlID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBjZW50ZXJlZEV2ZW50ICE9PSBudWxsICYmXG4gICAgICBjZW50ZXJlZEV2ZW50LnNvdXJjZXMuZmlsdGVyKChzb3VyY2UpID0+IHNvdXJjZS5wb2ludF9pZCA9PT0gcG9pbnQuaWQpWzBdXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBpc0NvbGxlY3RvckZvY3VzZWQgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBjZW50ZXJlZEV2ZW50Py5vYnNlcnZhdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgICAgcG9pbnQuaWQgPT09IGNlbnRlcmVkRXZlbnQub2JzZXJ2YXRpb25zWzBdLnBvaW50X2lkXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBtYXRjaEljb25Ub1BvaW50ID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgICBzd2l0Y2ggKHBvaW50Lmdyb3VwLnR5cGUpIHtcbiAgICAgIGNhc2UgJ0dyb3Vwczo6RmFjdG9yeSc6XG4gICAgICAgIGlmIChjb21iaW5lZEZhY3RvcnlJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSgpKSB7XG4gICAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKCkpIHtcbiAgICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21iaW5lZEZhY3RvcnlJY29uO1xuICAgICAgY2FzZSAnR3JvdXBzOjpQdW1wU3RhdGlvbic6XG4gICAgICAgIGlmIChjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoKSkge1xuICAgICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoKSkge1xuICAgICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tYmluZWRQdW1wU3RhdGlvbkljb247XG4gICAgICBjYXNlICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc6XG4gICAgICAgIGlmIChjb21iaW5lZFdXVFBJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSgpKSB7XG4gICAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKCkpIHtcbiAgICAgICAgICAgIGNvbWJpbmVkV1dUUEljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21iaW5lZFdXVFBJY29uO1xuXG4gICAgICBjYXNlICdHcm91cHM6OkNvbGxlY3RvcnMnOlxuICAgICAgICBpZiAoaXNDb2xsZWN0b3JGb2N1c2VkKHBvaW50KSkge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgICBpY29uVXJsOiByZWRQaW5SZWRTaGFkb3csXG4gICAgICAgICAgICAgIGljb25TaXplOiBbNjIsIDYyXSxcbiAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMwLCA1Ml0sXG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgTC5pY29uKHtcbiAgICAgICAgICAgICAgaWNvblVybDogd2F0ZXJJY29uTm9CYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICBpY29uU2l6ZTogWzQ2LCA0Nl0sXG5cbiAgICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIyLCA0NF0sXG4gICAgICAgICAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tYmluZWRDb2xsZWN0b3JzSWNvbjtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZU1hbmhvbGVQb2ludCA9IChtYXJrZXJMb2NhdGlvbjogb2JqZWN0KSA9PiB7XG4gICAgbGV0IHBvaW50SWNvbiA9IEwuaWNvbih7XG4gICAgICBpY29uVXJsOiB3aGl0ZVBvaW50LFxuICAgICAgaWNvblNpemU6IFs5LCA5XSxcbiAgICAgIGljb25BbmNob3I6IFs0LjUsIDQuNV0sXG4gICAgfSk7XG4gICAgbGV0IG1hbmhvbGVJY29uOiBhbnkgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgICAgaWNvbjogcG9pbnRJY29uLFxuICAgICAgcmlzZU9uSG92ZXI6IHRydWUsXG4gICAgfSkuYWRkVG8obWFwKTtcbiAgICBtYW5ob2xlSWNvbi5iaW5kVG9vbHRpcChgJHtwb2ludC5ncm91cC5uYW1lfSAoJHtwb2ludC5pZH0pYCk7XG4gICAgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgfTtcblxuICBjb25zdCBjcmVhdGVDdXN0b21JY29uUG9pbnQgPSAobWFya2VyTG9jYXRpb246IG9iamVjdCkgPT4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBtYXRjaEljb25Ub1BvaW50KHBvaW50KSAhPT0gbnVsbCAmJlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWF0Y2hJY29uVG9Qb2ludChwb2ludCkuZm9yRWFjaCgoaWNvbjogYW55KSA9PiB7XG4gICAgICAgIGxldCBwb2ludEN1c3RvbUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICAgICAgaWNvbjogaWNvbixcbiAgICAgICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICAgIH0pLmFkZFRvKG1hcCk7XG4gICAgICAgIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChgJHtwb2ludC5ncm91cC5uYW1lfSAoJHtwb2ludC5pZH0pYCk7XG4gICAgICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICAgICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gICAgICB9KTtcblxuICAgIGlmIChwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50KSB7XG4gICAgICBsZXQgcG9pbnRDdXN0b21JY29uID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgICAgaWNvbjogTC5kaXZJY29uKHtcbiAgICAgICAgICBjbGFzc05hbWU6IGBcbiAgICAgICAgICAke1xuICAgICAgICAgICAgcG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCA+PSAxMDBcbiAgICAgICAgICAgICAgPyAnY2lyY2xlLWV2ZW50cy1hbW91bnQgY2lyY2xlLWV2ZW50cy1hbW91bnQtLXRyaWRpZ2l0J1xuICAgICAgICAgICAgICA6ICdjaXJjbGUtZXZlbnRzLWFtb3VudCdcbiAgICAgICAgICB9IFxuICAgICAgICAgICR7cG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCA+IDIgPyAnYWxlcnQtY29sb3InIDogJyd9XG4gICAgICAgICAgICBgLFxuICAgICAgICAgIGh0bWw6IGA8cD4ke3BvaW50LnJlbGF0ZWRFdmVudHNBbW91bnR9PC9wPmAsXG4gICAgICAgICAgaWNvbkFuY2hvcjogWy01LCA0Ml0sXG4gICAgICAgIH0pLFxuICAgICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICB9KS5hZGRUbyhtYXApO1xuXG4gICAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ0ljb25OdW1iZXInO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjcmVhdGVTYW1wbGluZ0ljb25Qb2ludCA9IChcbiAgICBtYXJrZXJMb2NhdGlvbjogb2JqZWN0LFxuICAgIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gICkgPT4ge1xuICAgIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gICAgLy8gSWNvbiBBbmNob3I6IFsoLXJpZ2h0KSgrbGVmdCksICgtZG93bikoK3VwKV1cbiAgICBsZXQgc2FtcGxpbmdJY29uID0gW1xuICAgICAgTC5pY29uKHtcbiAgICAgICAgaWNvblVybDogYmx1ZUNpcmNsZVVSTCxcbiAgICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMTAsIDEwXSA6IFsyNSwgMjRdLFxuICAgICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy03LCAxNV0gOiBbMTAuNywgMzMuN10sXG4gICAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICAgIH0pLFxuICAgICAgTC5pY29uKHtcbiAgICAgICAgaWNvblVybDogc2FtcGxpbmdJY29uVVJMLFxuICAgICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFs3LCA3XSA6IFsxMywgMTVdLFxuICAgICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAxM10gOiBbNSwgMzBdLFxuICAgICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgICB9KSxcbiAgICBdO1xuXG4gICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICAgIHNhbXBsaW5nSWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZSgpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgICBzYW1wbGluZ0ljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYW1wbGluZ0ljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoc2Vjb25kYXJ5SWNvbiwgdHJ1ZSkpO1xuICAgIH1cblxuICAgIHNhbXBsaW5nSWNvbi5mb3JFYWNoKChpY29uKSA9PiB7XG4gICAgICBsZXQgcG9pbnRDdXN0b21JY29uOiBhbnkgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgICAgICBpY29uOiBpY29uLFxuICAgICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICB9KS5hZGRUbyhtYXApO1xuICAgICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGAke3BvaW50Lmdyb3VwLm5hbWV9ICgke3BvaW50LmlkfSlgKTtcbiAgICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnU2FtcGxpbmcnO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50ID0gKFxuICAgIG1hcmtlckxvY2F0aW9uOiBvYmplY3QsXG4gICAgc2Vjb25kYXJ5SWNvbjogYm9vbGVhbixcbiAgKSA9PiB7XG4gICAgLy8gaWNvblNpemU6IFt3aWR0aCwgaGVpZ2h0XSxcbiAgICAvLyBJY29uIEFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuICAgIGxldCBvYnNlcnZhdGlvbkljb24gPSBbXG4gICAgICBMLmljb24oe1xuICAgICAgICBpY29uVXJsOiBwaW5rQ2lyY2xlVVJMLFxuICAgICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFsxMCwgMTBdIDogWzI1LCAyNF0sXG4gICAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDQwXSA6IFsxMC43LCAzMy43XSxcbiAgICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgICAgfSksXG4gICAgICBMLmljb24oe1xuICAgICAgICBpY29uVXJsOiBvYnNlcnZhdGlvbkljb25VUkwsXG4gICAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzcsIDddIDogWzEzLCAxNV0sXG4gICAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTgsIDM4XSA6IFs1LCAzMF0sXG4gICAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICAgIH0pLFxuICAgIF07XG5cbiAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoKSAmJiAhc2Vjb25kYXJ5SWNvbikge1xuICAgICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICAgIG9ic2VydmF0aW9uSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ic2VydmF0aW9uSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZChzZWNvbmRhcnlJY29uKSk7XG4gICAgfVxuXG4gICAgb2JzZXJ2YXRpb25JY29uLmZvckVhY2goKGljb24pID0+IHtcbiAgICAgIGxldCBwb2ludEN1c3RvbUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICAgIGljb246IGljb24sXG4gICAgICAgIHJpc2VPbkhvdmVyOiBmYWxzZSxcbiAgICAgIH0pLmFkZFRvKG1hcCk7XG4gICAgICBwb2ludEN1c3RvbUljb24uYmluZFRvb2x0aXAoYCR7cG9pbnQuZ3JvdXAubmFtZX0gKCR7cG9pbnQuaWR9KWApO1xuICAgICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdPYnNlcnZhdGlvbic7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgcG9wdXBDb250ZW50ID0gKG9iczogYW55KSA9PiB7XG4gICAgaWYgKG9icyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1wb3B1cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1ncmFwaC1pY29uIHBvcHVwLWdyYXBoLWljb24tJHtwb2ludC5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtwb2ludC5ncm91cC5uYW1lfTwvYj48L2g1PlxuICAgICAgICAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInNlY3RvclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXBvcHVwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWdyYXBoLWljb24gcG9wdXAtZ3JhcGgtaWNvbi0ke29icy5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5zZXZlcml0eWAsXG4gICAgICAgICAgICAgICAgICAgICAgICApfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcHVwLWNvbnRlbnRfX3NldmVyaXR5LS0nICsgb2JzLnNldmVyaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuc2V2ZXJpdGllcy4ke29icy5zZXZlcml0eX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19oclwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX2Rpc2NoYXJnZS10aW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5maXJzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJmaXJzdC1zZWVuLXBvcHVwXCI+PC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcubGFzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJsYXN0LXNlZW4tcG9wdXBcIj48L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGA7XG4gICAgfVxuICB9O1xuXG4gIHVzZVJlbW92ZUV4aXN0aW5nTGF5ZXJzKG1hcCwgcG9pbnQsICdQb2ludCcpO1xuICB1c2VSZW1vdmVFeGlzdGluZ0xheWVycyhtYXAsIHBvaW50LCAnT2JzZXJ2YXRpb24nKTtcbiAgdXNlUmVtb3ZlRXhpc3RpbmdMYXllcnMobWFwLCBwb2ludCwgJ1NhbXBsaW5nJyk7XG4gIHVzZVJlbW92ZUV4aXN0aW5nTGF5ZXJzKG1hcCwgcG9pbnQsICdJY29uTnVtYmVyJyk7XG5cbiAgY29uc3QgcG9pbnRJc09ic2VydmF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBjZW50ZXJlZEV2ZW50ICE9PSBudWxsICYmXG4gICAgICBjZW50ZXJlZEV2ZW50Lm9ic2VydmF0aW9ucy5maWx0ZXIoKG9icykgPT4gb2JzLnBvaW50X2lkID09PSBwb2ludC5pZClbMF1cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHBvaW50QmVsb25nc1RvRXZlbnQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgY29uc3QgYmluZFBvcHVwVG9Qb2ludCA9IChvYnM6IGFueSA9IG51bGwpID0+IHtcbiAgICBsZXQgbGF5ZXJzID0gbWFwLl9sYXllcnM7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBsYXllcnMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgWydQb2ludCcsICdPYnNlcnZhdGlvbiddLmluY2x1ZGVzKGxheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0KSAmJlxuICAgICAgICBsYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdF9pZCA9PT0gcG9pbnQuaWRcbiAgICAgICkge1xuICAgICAgICBsYXllcnNbcHJvcGVydHldLmJpbmRQb3B1cChwb3B1cENvbnRlbnQob2JzKSwge1xuICAgICAgICAgIG1pbldpZHRoOiAyMDAsXG4gICAgICAgIH0pO1xuICAgICAgICBsYXllcnNbcHJvcGVydHldLm9uKCdwb3B1cG9wZW4nLCBmdW5jdGlvbiAoZTogYW55KSB7XG4gICAgICAgICAgaWYgKGZvY3VzZWRFdmVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IGZpcnN0U2VlbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgbGV0IGxhc3RTZWVuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICBsZXQgc2VjdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICAgICAgICAgIGlmIChvYnMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgUmVhY3RET00ucmVuZGVyKFxuICAgICAgICAgICAgICAgIDxUaW1lRm9ybWF0XG4gICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9e29icy5zdGFydF90aW1lfVxuICAgICAgICAgICAgICAgICAgdGltZV96b25lPXtvYnMudGltZV96b25lfVxuICAgICAgICAgICAgICAgIC8+LFxuICAgICAgICAgICAgICAgIGZpcnN0U2VlbixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgUmVhY3RET00ucmVuZGVyKFxuICAgICAgICAgICAgICAgIDxUaW1lRm9ybWF0XG4gICAgICAgICAgICAgICAgICB0aW1lc3RhbXA9e29icy5sYXN0X3NlZW5fdGltZX1cbiAgICAgICAgICAgICAgICAgIHRpbWVfem9uZT17b2JzLnRpbWVfem9uZX1cbiAgICAgICAgICAgICAgICAvPixcbiAgICAgICAgICAgICAgICBsYXN0U2VlbixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgICAgICAgICAgICA8U2VjdG9yXG4gICAgICAgICAgICAgICAgICBzZWN0b3JOYW1lPXtwb2ludC5ncm91cC5zZWN0b3JfbmFtZX1cbiAgICAgICAgICAgICAgICAgIHNlY3Rvckljb25OYW1lPXtwb2ludC5ncm91cC5zZWN0b3JfaWNvbl9uYW1lfVxuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIzN1wiXG4gICAgICAgICAgICAgICAgLz4sXG4gICAgICAgICAgICAgICAgc2VjdG9yLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgJCgnI2ZpcnN0LXNlZW4tcG9wdXAnKS5hcHBlbmQoZmlyc3RTZWVuKTtcbiAgICAgICAgICAgICAgJCgnI2xhc3Qtc2Vlbi1wb3B1cCcpLmFwcGVuZChsYXN0U2Vlbik7XG4gICAgICAgICAgICAgICQoJyNzZWN0b3InKS5hcHBlbmQoc2VjdG9yKTtcbiAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGF0dGFjaENsaWNrRXZlbnQgPSAoc2VsZWN0b3I6IHN0cmluZywgb2JzZXJ2YXRpb246IGFueSkgPT4ge1xuICAgICAgICAgICAgJChkb2N1bWVudC5ib2R5KS5vbignY2xpY2snLCBzZWxlY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgICBkaXNwYXRjaChjbG9zZUZsb2F0aW5nR3JhcGgoKSk7XG4gICAgICAgICAgICAgIGRpc3BhdGNoKG9wZW5GbG9hdGluZ0dyYXBoKHRydWUsIG9ic2VydmF0aW9uLCBwb2ludCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChvYnMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGF0dGFjaENsaWNrRXZlbnQoJy5wb3B1cC1ncmFwaC1pY29uLScgKyBvYnMuaWQsIG9icyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF0dGFjaENsaWNrRXZlbnQoJy5wb3B1cC1ncmFwaC1pY29uLScgKyBwb2ludC5pZCwgbnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5vcGVuUG9wdXAoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGN1c3RvbUljb25Gb3JQb2ludHNJZlBhcnRPZlBhdGhBbmRNb25pdG9yZWQgPSAobWFya2VyTG9jYXRpb24pID0+IHtcbiAgICBpZiAoY2VudGVyZWRFdmVudCkge1xuICAgICAgbGV0IGVkZ2VzSWRzOiBudW1iZXJbXSA9IFtdO1xuICAgICAgY2VudGVyZWRFdmVudC5wYXRoLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgICAgZWRnZXNJZHMucHVzaChwYXJ0LmVkZ2VfaWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGxldCByZWxldmFudEVkZ2VzID0gZWRnZXNfZGF0YS5pdGVtcy5maWx0ZXIoKGVkZ2UpID0+XG4gICAgICAgIGVkZ2VzSWRzLmluY2x1ZGVzKGVkZ2UuaWQpLFxuICAgICAgKTtcblxuICAgICAgbGV0IHJlbGV2YW50UG9pbnRzOiBudW1iZXJbXSA9IFtdO1xuICAgICAgcmVsZXZhbnRFZGdlcy5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgICAgIHJlbGV2YW50UG9pbnRzLnB1c2goZWRnZS5zb3VyY2VfcG9pbnRfaWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZWxldmFudFBvaW50cy5pbmNsdWRlcyhwb2ludC5pZCkpIHtcbiAgICAgICAgY3JlYXRlTWFuaG9sZVBvaW50KG1hcmtlckxvY2F0aW9uKTtcbiAgICAgICAgY3JlYXRlQ3VzdG9tSWNvblBvaW50KG1hcmtlckxvY2F0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgbWFya2VyTG9jYXRpb24gPSBbcG9pbnRbJ2xhdGl0dWRlJ10sIHBvaW50Wydsb25naXR1ZGUnXV07XG4gICAgY3VzdG9tSWNvbkZvclBvaW50c0lmUGFydE9mUGF0aEFuZE1vbml0b3JlZChtYXJrZXJMb2NhdGlvbik7XG4gICAgaWYgKCFwb2ludC5ldmVudHNWaWV3SG92ZXJlZCkgY3JlYXRlTWFuaG9sZVBvaW50KG1hcmtlckxvY2F0aW9uKTtcbiAgICBpZiAobWFya2VyTG9jYXRpb25bMF0gIT09IG51bGwpIHtcbiAgICAgIGlmIChwb2ludC5wYXJ0X29mX21vbml0b3JlZF9wYXRoICYmICFwb2ludC5oYXNfZGV2aWNlKSByZXR1cm47XG4gICAgICBpZiAoXG4gICAgICAgIG1hdGNoSWNvblRvUG9pbnQocG9pbnQpICE9PSBudWxsICYmXG4gICAgICAgIChjZW50ZXJlZEV2ZW50ID09PSBudWxsIHx8XG4gICAgICAgICAgKGNlbnRlcmVkRXZlbnQgIT09IG51bGwgJiYgcG9pbnRJc09ic2VydmF0aW9uKCkpIHx8XG4gICAgICAgICAgcG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50JylcbiAgICAgICkge1xuICAgICAgICBpZiAocG9pbnQuZXZlbnRzVmlld0hvdmVyZWQpIGNyZWF0ZU1hbmhvbGVQb2ludChtYXJrZXJMb2NhdGlvbik7XG4gICAgICAgIGNyZWF0ZUN1c3RvbUljb25Qb2ludChtYXJrZXJMb2NhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb2N1c2VkRXZlbnQgIT09IG51bGwgJiYgcG9pbnRJc09ic2VydmF0aW9uKCkpIHtcbiAgICAgICAgbGV0IGhhc1ByaW1hcnlJY29uID0gbWF0Y2hJY29uVG9Qb2ludChwb2ludCkgIT09IG51bGw7XG4gICAgICAgIGNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50KG1hcmtlckxvY2F0aW9uLCBoYXNQcmltYXJ5SWNvbik7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZvY3VzZWRFdmVudCAhPT0gbnVsbCAmJlxuICAgICAgICAgIGZvY3VzZWRFdmVudC5zYW1wbGluZ3MubGVuZ3RoICE9PSAwICYmXG4gICAgICAgICAgZm9jdXNlZEV2ZW50LnNhbXBsaW5nc1swXS5wb2ludF9pZCA9PT0gcG9pbnQuaWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQobWFya2VyTG9jYXRpb24sIGhhc1ByaW1hcnlJY29uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2VudGVyZWRFdmVudCAhPT0gbnVsbCAmJiBwb2ludEJlbG9uZ3NUb0V2ZW50KCkpIHtcbiAgICAgICAgbGV0IG9icyA9IGNlbnRlcmVkRXZlbnQub2JzZXJ2YXRpb25zLmZpbHRlcihcbiAgICAgICAgICAob2JzKSA9PiBvYnMucG9pbnRfaWQgPT09IHBvaW50LmlkLFxuICAgICAgICApWzBdO1xuICAgICAgICBiaW5kUG9wdXBUb1BvaW50KG9icyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICAvLyBVTkJJTkQgUE9QVVBcbiAgICAgIHJlbW92ZUZyb21NYXAobWFwLCBwb2ludCwgJ09ic2VydmF0aW9uJyk7XG4gICAgICByZW1vdmVGcm9tTWFwKG1hcCwgcG9pbnQsICdQb2ludCcpO1xuICAgICAgcmVtb3ZlRnJvbU1hcChtYXAsIHBvaW50LCAnU2FtcGxpbmcnKTtcbiAgICAgIHJlbW92ZUZyb21NYXAobWFwLCBwb2ludCwgJ0ljb25OdW1iZXInKTtcbiAgICB9O1xuICB9LCBbY2VudGVyZWRFdmVudF0pO1xuXG4gIHJldHVybiA8ZGl2PjwvZGl2Pjtcbn07XG5cbmNvbnN0IGNvbm5lY3RvciA9IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzKTtcbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3RvcihcbiAgUmVhY3QubWVtbyhQb2ludE1hcmtlciwgKHByZXZQcm9wcywgbmV4dFByb3BzKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcHJldlByb3BzLmV2ZW50c19kYXRhLmZvY3VzZWRFdmVudCAhPT0gbmV4dFByb3BzLmV2ZW50c19kYXRhLmZvY3VzZWRFdmVudFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KSxcbik7XG4iXX0=
@@ -16,9 +16,15 @@ var PointMarkers = function PointMarkers(props) {
16
16
  points = props.points,
17
17
  map = props.map,
18
18
  _props$includeUnmonit = props.includeUnmonitoredPoints,
19
- includeUnmonitoredPoints = _props$includeUnmonit === void 0 ? false : _props$includeUnmonit;
19
+ includeUnmonitoredPoints = _props$includeUnmonit === void 0 ? false : _props$includeUnmonit,
20
+ event = props.event;
21
+
22
+ var filterStatement = function filterStatement(point) {
23
+ return (includeUnmonitoredPoints ? point.part_of_monitored_path : point.has_device) && !point.hide || point.group.type === 'Groups::WastewaterTreatmentPlant' || point.part_of_monitored_path && event && point.has_device;
24
+ };
25
+
20
26
  return /*#__PURE__*/_react.default.createElement("div", null, points.length !== 0 && points.filter(function (point) {
21
- return (includeUnmonitoredPoints ? point.part_of_monitored_path : point.has_device) && !point.hide;
27
+ return filterStatement(point);
22
28
  }).map(function (point) {
23
29
  return /*#__PURE__*/_react.default.createElement(_PointMarker.default, {
24
30
  map: map,
@@ -30,4 +36,4 @@ var PointMarkers = function PointMarkers(props) {
30
36
  };
31
37
 
32
38
  exports.PointMarkers = PointMarkers;
33
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRNYXJrZXJzLnRzeCJdLCJuYW1lcyI6WyJQb2ludE1hcmtlcnMiLCJwcm9wcyIsIkwiLCJwb2ludHMiLCJtYXAiLCJpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMiLCJsZW5ndGgiLCJmaWx0ZXIiLCJwb2ludCIsInBhcnRfb2ZfbW9uaXRvcmVkX3BhdGgiLCJoYXNfZGV2aWNlIiwiaGlkZSIsImlkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFTTyxJQUFNQSxZQUE2QixHQUFHLFNBQWhDQSxZQUFnQyxDQUFDQyxLQUFELEVBQVc7QUFDdEQsTUFBUUMsQ0FBUixHQUE2REQsS0FBN0QsQ0FBUUMsQ0FBUjtBQUFBLE1BQVdDLE1BQVgsR0FBNkRGLEtBQTdELENBQVdFLE1BQVg7QUFBQSxNQUFtQkMsR0FBbkIsR0FBNkRILEtBQTdELENBQW1CRyxHQUFuQjtBQUFBLDhCQUE2REgsS0FBN0QsQ0FBd0JJLHdCQUF4QjtBQUFBLE1BQXdCQSx3QkFBeEIsc0NBQW1ELEtBQW5EO0FBRUEsc0JBQ0UsMENBQ0dGLE1BQU0sQ0FBQ0csTUFBUCxLQUFrQixDQUFsQixJQUNDSCxNQUFNLENBQ0hJLE1BREgsQ0FFSSxVQUFDQyxLQUFEO0FBQUEsV0FDRSxDQUFDSCx3QkFBd0IsR0FDckJHLEtBQUssQ0FBQ0Msc0JBRGUsR0FFckJELEtBQUssQ0FBQ0UsVUFGVixLQUV5QixDQUFDRixLQUFLLENBQUNHLElBSGxDO0FBQUEsR0FGSixFQU9HUCxHQVBILENBT08sVUFBQ0ksS0FBRDtBQUFBLHdCQUNILDZCQUFDLG9CQUFEO0FBQWEsTUFBQSxHQUFHLEVBQUVKLEdBQWxCO0FBQXVCLE1BQUEsQ0FBQyxFQUFFRixDQUExQjtBQUE2QixNQUFBLEtBQUssRUFBRU0sS0FBcEM7QUFBMkMsTUFBQSxHQUFHLEVBQUVBLEtBQUssQ0FBQ0k7QUFBdEQsTUFERztBQUFBLEdBUFAsQ0FGSixDQURGO0FBZUQsQ0FsQk0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnc3JjL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCBQb2ludE1hcmtlciBmcm9tICcuL1BvaW50TWFya2VyJztcblxudHlwZSBQcm9wcyA9IHtcbiAgbWFwOiBhbnk7XG4gIEw6IGFueTtcbiAgcG9pbnRzOiBhbnk7XG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50czogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBQb2ludE1hcmtlcnM6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IEwsIHBvaW50cywgbWFwLCBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMgPSBmYWxzZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAge3BvaW50cy5sZW5ndGggIT09IDAgJiZcbiAgICAgICAgcG9pbnRzXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChwb2ludDogSVBvaW50KSA9PlxuICAgICAgICAgICAgICAoaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzXG4gICAgICAgICAgICAgICAgPyBwb2ludC5wYXJ0X29mX21vbml0b3JlZF9wYXRoXG4gICAgICAgICAgICAgICAgOiBwb2ludC5oYXNfZGV2aWNlKSAmJiAhcG9pbnQuaGlkZSxcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcCgocG9pbnQ6IElQb2ludCkgPT4gKFxuICAgICAgICAgICAgPFBvaW50TWFya2VyIG1hcD17bWFwfSBMPXtMfSBwb2ludD17cG9pbnR9IGtleT17cG9pbnQuaWR9IC8+XG4gICAgICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRNYXJrZXJzLnRzeCJdLCJuYW1lcyI6WyJQb2ludE1hcmtlcnMiLCJwcm9wcyIsIkwiLCJwb2ludHMiLCJtYXAiLCJpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMiLCJldmVudCIsImZpbHRlclN0YXRlbWVudCIsInBvaW50IiwicGFydF9vZl9tb25pdG9yZWRfcGF0aCIsImhhc19kZXZpY2UiLCJoaWRlIiwiZ3JvdXAiLCJ0eXBlIiwibGVuZ3RoIiwiZmlsdGVyIiwiaWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQVVPLElBQU1BLFlBQTZCLEdBQUcsU0FBaENBLFlBQWdDLENBQUNDLEtBQUQsRUFBVztBQUN0RCxNQUFRQyxDQUFSLEdBQW9FRCxLQUFwRSxDQUFRQyxDQUFSO0FBQUEsTUFBV0MsTUFBWCxHQUFvRUYsS0FBcEUsQ0FBV0UsTUFBWDtBQUFBLE1BQW1CQyxHQUFuQixHQUFvRUgsS0FBcEUsQ0FBbUJHLEdBQW5CO0FBQUEsOEJBQW9FSCxLQUFwRSxDQUF3Qkksd0JBQXhCO0FBQUEsTUFBd0JBLHdCQUF4QixzQ0FBbUQsS0FBbkQ7QUFBQSxNQUEwREMsS0FBMUQsR0FBb0VMLEtBQXBFLENBQTBESyxLQUExRDs7QUFDQSxNQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUNDLEtBQUQsRUFBVztBQUNqQyxXQUNHLENBQUNILHdCQUF3QixHQUN0QkcsS0FBSyxDQUFDQyxzQkFEZ0IsR0FFdEJELEtBQUssQ0FBQ0UsVUFGVCxLQUdDLENBQUNGLEtBQUssQ0FBQ0csSUFIVCxJQUlBSCxLQUFLLENBQUNJLEtBQU4sQ0FBWUMsSUFBWixLQUFxQixrQ0FKckIsSUFLQ0wsS0FBSyxDQUFDQyxzQkFBTixJQUFnQ0gsS0FBaEMsSUFBeUNFLEtBQUssQ0FBQ0UsVUFObEQ7QUFRRCxHQVREOztBQVdBLHNCQUNFLDBDQUNHUCxNQUFNLENBQUNXLE1BQVAsS0FBa0IsQ0FBbEIsSUFDQ1gsTUFBTSxDQUNIWSxNQURILENBQ1UsVUFBQ1AsS0FBRDtBQUFBLFdBQW1CRCxlQUFlLENBQUNDLEtBQUQsQ0FBbEM7QUFBQSxHQURWLEVBRUdKLEdBRkgsQ0FFTyxVQUFDSSxLQUFEO0FBQUEsd0JBQ0gsNkJBQUMsb0JBQUQ7QUFBYSxNQUFBLEdBQUcsRUFBRUosR0FBbEI7QUFBdUIsTUFBQSxDQUFDLEVBQUVGLENBQTFCO0FBQTZCLE1BQUEsS0FBSyxFQUFFTSxLQUFwQztBQUEyQyxNQUFBLEdBQUcsRUFBRUEsS0FBSyxDQUFDUTtBQUF0RCxNQURHO0FBQUEsR0FGUCxDQUZKLENBREY7QUFVRCxDQXZCTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IFBvaW50TWFya2VyIGZyb20gJy4vUG9pbnRNYXJrZXInO1xuXG50eXBlIFByb3BzID0ge1xuICBtYXA6IGFueTtcbiAgTDogYW55O1xuICBwb2ludHM6IGFueTtcbiAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzOiBib29sZWFuO1xuICBldmVudD86IGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCBQb2ludE1hcmtlcnM6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IEwsIHBvaW50cywgbWFwLCBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMgPSBmYWxzZSwgZXZlbnQgfSA9IHByb3BzO1xuICBjb25zdCBmaWx0ZXJTdGF0ZW1lbnQgPSAocG9pbnQpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgKChpbmNsdWRlVW5tb25pdG9yZWRQb2ludHNcbiAgICAgICAgPyBwb2ludC5wYXJ0X29mX21vbml0b3JlZF9wYXRoXG4gICAgICAgIDogcG9pbnQuaGFzX2RldmljZSkgJiZcbiAgICAgICAgIXBvaW50LmhpZGUpIHx8XG4gICAgICBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpXYXN0ZXdhdGVyVHJlYXRtZW50UGxhbnQnIHx8XG4gICAgICAocG9pbnQucGFydF9vZl9tb25pdG9yZWRfcGF0aCAmJiBldmVudCAmJiBwb2ludC5oYXNfZGV2aWNlKVxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAge3BvaW50cy5sZW5ndGggIT09IDAgJiZcbiAgICAgICAgcG9pbnRzXG4gICAgICAgICAgLmZpbHRlcigocG9pbnQ6IElQb2ludCkgPT4gZmlsdGVyU3RhdGVtZW50KHBvaW50KSlcbiAgICAgICAgICAubWFwKChwb2ludDogSVBvaW50KSA9PiAoXG4gICAgICAgICAgICA8UG9pbnRNYXJrZXIgbWFwPXttYXB9IEw9e0x9IHBvaW50PXtwb2ludH0ga2V5PXtwb2ludC5pZH0gLz5cbiAgICAgICAgICApKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iXX0=
@@ -16,12 +16,11 @@ var useInitializeHeaders = function useInitializeHeaders() {
16
16
  var DOMToken = document.querySelector('meta[name=csrf-token]');
17
17
 
18
18
  if (DOMToken) {
19
- var csrfToken = DOMToken.content;
20
- _axios.default.defaults.headers.common['X-CSRF-TOKEN'] = csrfToken;
19
+ _axios.default.defaults.headers.common['X-CSRF-TOKEN'] = DOMToken.content;
21
20
  _axios.default.defaults.headers.common['Accept'] = 'application/json';
22
21
  }
23
22
  }, []);
24
23
  };
25
24
 
26
25
  exports.useInitializeHeaders = useInitializeHeaders;
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VJbml0aWFsaXplSGVhZGVycy50cyJdLCJuYW1lcyI6WyJ1c2VJbml0aWFsaXplSGVhZGVycyIsIkRPTVRva2VuIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY3NyZlRva2VuIiwiY29udGVudCIsImF4aW9zIiwiZGVmYXVsdHMiLCJoZWFkZXJzIiwiY29tbW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFTyxJQUFNQSxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQXVCLEdBQU07QUFDeEMsd0JBQVUsWUFBTTtBQUNkLFFBQUlDLFFBQWdDLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUNyQyx1QkFEcUMsQ0FBdkM7O0FBSUEsUUFBSUYsUUFBSixFQUFjO0FBQ1osVUFBSUcsU0FBUyxHQUFHSCxRQUFRLENBQUNJLE9BQXpCO0FBQ0FDLHFCQUFNQyxRQUFOLENBQWVDLE9BQWYsQ0FBdUJDLE1BQXZCLENBQThCLGNBQTlCLElBQWdETCxTQUFoRDtBQUNBRSxxQkFBTUMsUUFBTixDQUFlQyxPQUFmLENBQXVCQyxNQUF2QixDQUE4QixRQUE5QixJQUEwQyxrQkFBMUM7QUFDRDtBQUNGLEdBVkQsRUFVRyxFQVZIO0FBV0QsQ0FaTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0aWFsaXplSGVhZGVycyA9ICgpID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgRE9NVG9rZW46IEhUTUxNZXRhRWxlbWVudCB8IG51bGwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ21ldGFbbmFtZT1jc3JmLXRva2VuXScsXG4gICAgKTtcblxuICAgIGlmIChET01Ub2tlbikge1xuICAgICAgbGV0IGNzcmZUb2tlbiA9IERPTVRva2VuLmNvbnRlbnQ7XG4gICAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1DU1JGLVRPS0VOJ10gPSBjc3JmVG9rZW47XG4gICAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnQWNjZXB0J10gPSAnYXBwbGljYXRpb24vanNvbic7XG4gICAgfVxuICB9LCBbXSk7XG59O1xuIl19
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VJbml0aWFsaXplSGVhZGVycy50cyJdLCJuYW1lcyI6WyJ1c2VJbml0aWFsaXplSGVhZGVycyIsIkRPTVRva2VuIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiYXhpb3MiLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJjb250ZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFTyxJQUFNQSxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQXVCLEdBQU07QUFDeEMsd0JBQVUsWUFBTTtBQUNkLFFBQUlDLFFBQWdDLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUNyQyx1QkFEcUMsQ0FBdkM7O0FBSUEsUUFBSUYsUUFBSixFQUFjO0FBQ1pHLHFCQUFNQyxRQUFOLENBQWVDLE9BQWYsQ0FBdUJDLE1BQXZCLENBQThCLGNBQTlCLElBQWdETixRQUFRLENBQUNPLE9BQXpEO0FBQ0FKLHFCQUFNQyxRQUFOLENBQWVDLE9BQWYsQ0FBdUJDLE1BQXZCLENBQThCLFFBQTlCLElBQTBDLGtCQUExQztBQUNEO0FBQ0YsR0FURCxFQVNHLEVBVEg7QUFVRCxDQVhNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRpYWxpemVIZWFkZXJzID0gKCkgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBET01Ub2tlbjogSFRNTE1ldGFFbGVtZW50IHwgbnVsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnbWV0YVtuYW1lPWNzcmYtdG9rZW5dJyxcbiAgICApO1xuXG4gICAgaWYgKERPTVRva2VuKSB7XG4gICAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1DU1JGLVRPS0VOJ10gPSBET01Ub2tlbi5jb250ZW50O1xuICAgICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0FjY2VwdCddID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgIH1cbiAgfSwgW10pO1xufTtcbiJdfQ==
package/lib/i18n/en.json CHANGED
@@ -2926,7 +2926,7 @@
2926
2926
  "clear": "Clear",
2927
2927
  "polluted": "Polluted"
2928
2928
  },
2929
- "no-sources-title": "No suspects were detected",
2929
+ "no-sources-title": "Could not detect source",
2930
2930
  "go_back_factory": "Go to site dashboard",
2931
2931
  "not-identified": "Not identified",
2932
2932
  "event_details": "Event Details",
@@ -3619,6 +3619,55 @@
3619
3619
  "wbe_alert": "when there is a potential outbreak"
3620
3620
  }
3621
3621
  },
3622
+ "import_file_wizard": {
3623
+ "errors": "errors",
3624
+ "warnings": "warnings",
3625
+ "file_input_label": "File",
3626
+ "file_input_placeholder": "Supported format: {{type}}",
3627
+ "file_input_button": "Choose File",
3628
+ "cancel_button": "Cancel",
3629
+ "next_button": "Next",
3630
+ "back_button": "Back",
3631
+ "close_button": "Close",
3632
+ "done_button": "Done",
3633
+ "proceed_update_button": "Proceed & Update",
3634
+ "steps": ["Select File", "Validate", "Summary"],
3635
+ "validation_results_warning": "Before proceeding please review the below validation results",
3636
+ "validation_failed": "Validation failed! ",
3637
+ "validation_results_error": "We cannot proceed with the import due to the following errors",
3638
+ "upload_success_msg": "Update has been completed",
3639
+ "upload_in_progress_msg": "Update is in progress...",
3640
+ "upload_in_progress_description": "Updating is taking place, please return later to check it was completed successfully."
3641
+ },
3642
+ "upload_lab_result": {
3643
+ "title": "Upload Lab Results for {{waterAuthorityName}}",
3644
+ "warnings": {
3645
+ "missing_parameter": "The following parameter ids could not be identified and were not updated",
3646
+ "no_lab_mapping": "The following labs has no parameters"
3647
+ }
3648
+ },
3649
+ "import_gis_process": {
3650
+ "title": "Import planning for {{waterAuthorityName}}",
3651
+ "title_input_label": "Title",
3652
+ "title_input_placeholder": "Write here short text that will describe the upload content",
3653
+ "warnings": {
3654
+ "slop": "The slop value might be too big in the following sites",
3655
+ "diameter": "The diameter value might be too big in the following sites",
3656
+ "point_update": "A manhole with the same id exists and will be updated",
3657
+ "multipolygon_update": "An area with the same id exists and will be updated",
3658
+ "polygon_update": "An area with the same id exists and will be updated",
3659
+ "wbe": "The main site is missing in the following areas",
3660
+ "area_no_polygons": "The following areas do not have a polygon",
3661
+ "daily_water_consumption": "The daily_water_consumption value might be too small in the following sites",
3662
+ "sector": "Sector could not be found in the following sites",
3663
+ "city": "City could not be found in the following sites",
3664
+ "update_type": "Site type will be changed"
3665
+ },
3666
+ "point_new": "New manholes were created",
3667
+ "polygon_new": "New areas were created",
3668
+ "point_updated": "Manholes has been updated",
3669
+ "polygon_updated": "Areas has been updated"
3670
+ },
3622
3671
  "samplings_page": {
3623
3672
  "was_not_selected": "Was not selected",
3624
3673
  "no_contact": "No contact",
@@ -3630,6 +3679,7 @@
3630
3679
  "site_required": "Site is required",
3631
3680
  "new_button": "New",
3632
3681
  "download_csv": "Download CSV",
3682
+ "upload_lab_result": "Upload lab Result",
3633
3683
  "create_button": "Create",
3634
3684
  "add_new_sampling": "Add New Sampling",
3635
3685
  "site_placeholder": "Select or type...",
@@ -3682,7 +3732,6 @@
3682
3732
  },
3683
3733
  "importGisPage": {
3684
3734
  "page_title": "Plannings for {{waterAuthorityName}}",
3685
- "loading_timeout": "The loading may take time, check the upload status later",
3686
3735
  "table_cols": {
3687
3736
  "date": "Date",
3688
3737
  "user": "User",
@@ -3690,45 +3739,10 @@
3690
3739
  "status": "Status",
3691
3740
  "file": "File"
3692
3741
  },
3693
- "warnings": {
3694
- "slop": "The slop value might be too big in the following sites",
3695
- "diameter": "The diameter value might be too big in the following sites",
3696
- "point_update": "A manhole with the same id exists and will be updated",
3697
- "multipolygon_update": "An area with the same id exists and will be updated",
3698
- "wbe": "The main site is missing in the following areas",
3699
- "area_no_polygons": "The following areas do not have a polygon",
3700
- "daily_water_consumption": "The daily_water_consumption value might be too small in the following sites",
3701
- "sector": "Sector could not be found in the following sites",
3702
- "city": "City could not be found in the following sites",
3703
- "update_type": "Site type will be changed"
3704
- },
3705
- "point_new": "New manholes were created",
3706
- "polygon_new": "New areas were created",
3707
- "point_updated": "Manholes has been updated",
3708
- "polygon_updated": "Areas has been updated",
3709
3742
  "download": "Download File",
3710
3743
  "no_files_found": "No file found",
3711
3744
  "upload_new": "Upload new file",
3712
- "Import_planning_title": "Import planning for {{waterAuthorityName}}",
3713
- "title_input_lable": "Title",
3714
- "title_input_placeholder": "Write here short text that will describe the upload content",
3715
- "file_input_lable": "File",
3716
- "file_input_placeholder": "Supported format: GeoJson",
3717
- "file_input_button": "Choose File",
3718
- "cancle_button": "Cancel",
3719
- "next_button": "Next",
3720
- "back_button": "Back",
3721
- "close_button": "Close",
3722
- "done_button": "Done",
3723
- "proceed_update_button": "Proceed & Update",
3724
3745
  "file_status": ["In progress", "Completed", "Failed"],
3725
- "steps": ["Select File", "Validate", "Summary"],
3726
- "validation_results_warning": "Before proceeding please review the below validation results",
3727
- "validation_failed": "Validation failed! ",
3728
- "validation_results_error": "We cannot proceed with the import due to the following errors",
3729
- "upload_success_msg": "Update has been completed",
3730
- "upload_in_progress_msg": "Update is in progress...",
3731
- "upload_in_progress_description": "Updating is taking place, please return later to check it was completed successfully.",
3732
3746
  "file_type_error": "File format not supported, please upload only GeoJson files",
3733
3747
  "no_data": "No data available for this water Authority"
3734
3748
  }
package/lib/i18n/he.json CHANGED
@@ -3582,6 +3582,33 @@
3582
3582
  "wbe_alert": "כשיש התפרצות פוטנציאלית"
3583
3583
  }
3584
3584
  },
3585
+ "import_file_wizard": {
3586
+ "errors": "שגיאות",
3587
+ "warnings": "אזהרות",
3588
+ "file_input_label": "קובץ",
3589
+ "file_input_placeholder": "פורמט נתמך: {{type}}",
3590
+ "file_input_button": "בחר קובץ",
3591
+ "cancel_button": "ביטול",
3592
+ "next_button": "הבא",
3593
+ "back_button": "חזור",
3594
+ "close_button": "סגור",
3595
+ "done_button": "סיים",
3596
+ "proceed_update_button": "עדכן והמשך",
3597
+ "steps": ["בחר קובץ", "בדיקת תקינות", "סיכום"],
3598
+ "validation_results_warning": "בטרם תמשיך אנא בחן את תוצאות התקינות",
3599
+ "validation_failed": "הבדיקה נכשלה! ",
3600
+ "validation_results_error": "לא ניתן להמשיך בשל השגיאות הבאות",
3601
+ "upload_success_msg": "העדכון בוצע בהצלחה",
3602
+ "upload_in_progress_msg": "העדכון בתהליך",
3603
+ "upload_in_progress_description": "העדכון מתבצע, אנא חזור מאוחר יותר לבדוק כי הסתיים בהצלחה"
3604
+ },
3605
+ "upload_lab_result": {
3606
+ "title": "העלאת תוצאות מעבדה עבור {{waterAuthorityName}}",
3607
+ "warnings": {
3608
+ "missing_parameter": "הפרמטרים הבאים לא נמצאו ולא עודכנו",
3609
+ "no_lab_mapping": "לא הוגדרו פרמטרים עבור המעבדות הבאות"
3610
+ }
3611
+ },
3585
3612
  "samplings_page": {
3586
3613
  "was_not_selected": "לא נבחרה",
3587
3614
  "no_contact": "אין איש קשר",
@@ -3613,6 +3640,8 @@
3613
3640
  "yes_delete": "כן מחק",
3614
3641
  "collect": "איסוף",
3615
3642
  "new_button": "דיגום חדש",
3643
+ "download_csv": "הורד CSV",
3644
+ "upload_lab_result": "העלאת תוצאות מעבדה",
3616
3645
  "create_button": "יצירה",
3617
3646
  "add_new_sampling": "יצירת דיגום חדש",
3618
3647
  "site_placeholder": "בחר או הקלד...",
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var packageJsonVersion = "1.2.73";
3
+ var packageJsonVersion = "1.2.75-alpha.10";
4
4
 
5
5
  if (typeof packageJsonVersion === 'string') {
6
6
  // eslint-disable-next-line no-console
@@ -8,4 +8,4 @@ if (typeof packageJsonVersion === 'string') {
8
8
  } else {
9
9
  console.error('getVersion.js got bad version from package.json, expected string.');
10
10
  }
11
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYWNyb3MvZ2V0VmVyc2lvbi5qcyJdLCJuYW1lcyI6WyJwYWNrYWdlSnNvblZlcnNpb24iLCJjb25zb2xlIiwibG9nIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7O0FBRUEsSUFBTUEsa0JBQWtCLFdBQXhCOztBQUNBLElBQUksT0FBT0Esa0JBQVAsS0FBOEIsUUFBbEMsRUFBNEM7QUFDMUM7QUFDQUMsRUFBQUEsT0FBTyxDQUFDQyxHQUFSLDJCQUNxQkYsa0JBRHJCLFFBRUUsMERBRkYsRUFHRSw2RUFIRiwwQkFJbUJHLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUovQjtBQU1ELENBUkQsTUFRTztBQUNMSixFQUFBQSxPQUFPLENBQUNLLEtBQVIsQ0FDRSxtRUFERjtBQUdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByZXZhbCBmcm9tICdwcmV2YWwubWFjcm8nO1xuXG5jb25zdCBwYWNrYWdlSnNvblZlcnNpb24gPSBwcmV2YWxgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9iaW4vZ2V0VmVyc2lvbkZyb21QYWNrYWdlSnNvbi5qcycpYDtcbmlmICh0eXBlb2YgcGFja2FnZUpzb25WZXJzaW9uID09PSAnc3RyaW5nJykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhcbiAgICBgJWMgS2FuZG8gVUkgJWMgdiR7cGFja2FnZUpzb25WZXJzaW9ufSBgLFxuICAgICdmb250LXNpemU6IDE1cHg7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGNvbG9yOiAjZTIwZjUzOycsXG4gICAgJ2ZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDE1cHg7IGJhY2tncm91bmQtY29sb3I6ICNlMjBmNTM7IGNvbG9yOiAjZmZmOycsXG4gICAgYHdpdGggTk9ERV9FTlY9JHtwcm9jZXNzLmVudi5OT0RFX0VOVn1gLFxuICApO1xufSBlbHNlIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICAnZ2V0VmVyc2lvbi5qcyBnb3QgYmFkIHZlcnNpb24gZnJvbSBwYWNrYWdlLmpzb24sIGV4cGVjdGVkIHN0cmluZy4nLFxuICApO1xufVxuIl19
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYWNyb3MvZ2V0VmVyc2lvbi5qcyJdLCJuYW1lcyI6WyJwYWNrYWdlSnNvblZlcnNpb24iLCJjb25zb2xlIiwibG9nIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7O0FBRUEsSUFBTUEsa0JBQWtCLG9CQUF4Qjs7QUFDQSxJQUFJLE9BQU9BLGtCQUFQLEtBQThCLFFBQWxDLEVBQTRDO0FBQzFDO0FBQ0FDLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBUiwyQkFDcUJGLGtCQURyQixRQUVFLDBEQUZGLEVBR0UsNkVBSEYsMEJBSW1CRyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFKL0I7QUFNRCxDQVJELE1BUU87QUFDTEosRUFBQUEsT0FBTyxDQUFDSyxLQUFSLENBQ0UsbUVBREY7QUFHRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcmV2YWwgZnJvbSAncHJldmFsLm1hY3JvJztcblxuY29uc3QgcGFja2FnZUpzb25WZXJzaW9uID0gcHJldmFsYG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vYmluL2dldFZlcnNpb25Gcm9tUGFja2FnZUpzb24uanMnKWA7XG5pZiAodHlwZW9mIHBhY2thZ2VKc29uVmVyc2lvbiA9PT0gJ3N0cmluZycpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coXG4gICAgYCVjIEthbmRvIFVJICVjIHYke3BhY2thZ2VKc29uVmVyc2lvbn0gYCxcbiAgICAnZm9udC1zaXplOiAxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBjb2xvcjogI2UyMGY1MzsnLFxuICAgICdmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTIwZjUzOyBjb2xvcjogI2ZmZjsnLFxuICAgIGB3aXRoIE5PREVfRU5WPSR7cHJvY2Vzcy5lbnYuTk9ERV9FTlZ9YCxcbiAgKTtcbn0gZWxzZSB7XG4gIGNvbnNvbGUuZXJyb3IoXG4gICAgJ2dldFZlcnNpb24uanMgZ290IGJhZCB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uLCBleHBlY3RlZCBzdHJpbmcuJyxcbiAgKTtcbn1cbiJdfQ==
@@ -104,7 +104,9 @@ var Sites = function Sites(_ref) {
104
104
  }));
105
105
  }, [allSites]);
106
106
  (0, _react.useEffect)(function () {
107
- var sites = selectedTabIndex === _Tabs.tabsEnum['factories'] ? factories : nonFactories;
107
+ var sites = selectedTabIndex === _Tabs.tabsEnum['factories'] ? factories : nonFactories.sort(function (a, b) {
108
+ return b.site_score - a.site_score;
109
+ });
108
110
 
109
111
  if (sites.length > MAX_COLLAPSED_ITEMS) {
110
112
  setIsShowMoreEnabled(true);
@@ -158,4 +160,4 @@ var Sites = function Sites(_ref) {
158
160
  };
159
161
 
160
162
  exports.Sites = Sites;
161
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wYWdlcy9BcmVhUGFnZS9EYXNoYm9hcmQvU2l0ZXMvU2l0ZXMudHN4Il0sIm5hbWVzIjpbIk1BWF9DT0xMQVBTRURfSVRFTVMiLCJTaXRlcyIsImVuZFBvaW50Iiwib3RoZXJzIiwicmVxdWVzdFBhcmFtcyIsImZhY3RvcmllcyIsInNldEZhY3RvcmllcyIsIm5vbkZhY3RvcmllcyIsInNldE5vbkZhY3RvcmllcyIsImRpc3BsYXllZFNpdGVzIiwic2V0RGlzcGxheWVkU2l0ZXMiLCJ3aW5kb3dTaXplIiwiaXNTaG93TW9yZSIsInNldElzU2hvd01vcmUiLCJpc1Nob3dNb3JlRW5hYmxlZCIsInNldElzU2hvd01vcmVFbmFibGVkIiwidGFic0VudW0iLCJzZWxlY3RlZFRhYkluZGV4Iiwic2V0U2VsZWN0ZWRUYWJJbmRleCIsInJlc3BvbnNlIiwiaXNMb2FkaW5nIiwiZXJyb3IiLCJhbGxTaXRlcyIsImRhdGEiLCJvcmRlcmVkU2l0ZXMiLCJzbGljZSIsInNvcnQiLCJhIiwiYiIsInNjb3JlIiwiZmlsdGVyIiwic2l0ZSIsInNpdGVfdHlwZSIsInNpdGVzIiwibGVuZ3RoIiwid2lkdGgiLCJpMThuIiwidCIsIm1hcCIsImluZGV4Iiwic2l0ZV9uYW1lIiwicG9pbnRfaWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFRQTtBQUNBLElBQU1BLG1CQUFtQixHQUFHLENBQTVCOztBQUVPLElBQU1DLEtBQTJCLEdBQUcsU0FBOUJBLEtBQThCLE9BSXJDO0FBQUEsTUFISkMsUUFHSSxRQUhKQSxRQUdJO0FBQUEseUJBRkpDLE1BRUk7QUFBQSxNQUZKQSxNQUVJLDRCQUZLLEtBRUw7QUFBQSxNQURKQyxhQUNJLFFBREpBLGFBQ0k7O0FBQ0osa0JBQWtDLHFCQUFvQixFQUFwQixDQUFsQztBQUFB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICdzcmMvY29tcG9uZW50cy9TcGlubmVyL1NwaW5uZXInO1xuaW1wb3J0IHsgdXNlV2luZG93U2l6ZSB9IGZyb20gJ3NyYy9ob29rcy91c2VXaW5kb3dTaXplJztcbmltcG9ydCB7IHVzZUFwaVdpdGhEYXNoYm9hcmRRdWVyeSB9IGZyb20gJ3NyYy9ob29rcy91c2VBcGlXaXRoRGFzaGJvYXJkUXVlcnknO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZSB9IGZyb20gJ3NyYy9XaWRnZXRzL01vc3RQb2xsdXRpbmcvRW1wdHlTdGF0ZS9FbXB0eVN0YXRlJztcbmltcG9ydCB7IFNob3dNb3JlIH0gZnJvbSAnc3JjL1dpZGdldHMvTW9zdFBvbGx1dGluZy9TaG93TW9yZS9TaG93TW9yZSc7XG5pbXBvcnQgeyBTcGlubmVySG9sZGVyIH0gZnJvbSAnc3JjL1dpZGdldHMvTW9zdFBvbGx1dGluZy9zdHlsZXMnO1xuaW1wb3J0IHsgRmFjdG9yaWVzUmVzcG9uc2UsIEZhY3RvcnkgfSBmcm9tICcuL1NpdGVzUmVzcG9uc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbnRhaW5lciwgR3JpZEJveENvbnRhaW5lciB9IGZyb20gJy4vc3R5bGVzJztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyBUYWJzLCB0YWJzRW51bSB9IGZyb20gJ3NyYy9jb21wb25lbnRzL1RhYnMvVGFicyc7XG5pbXBvcnQgeyBGYWN0b3J5Qm94IH0gZnJvbSAnc3JjL1dpZGdldHMvTW9zdFBvbGx1dGluZy9GYWN0b3JpZXMvRmFjdG9yeUJveC9GYWN0b3J5Qm94JztcblxuaW50ZXJmYWNlIFNpdGVzUHJvcHMge1xuICBvdGhlcnM/OiBib29sZWFuO1xuICBlbmRQb2ludDogc3RyaW5nO1xuICByZXF1ZXN0UGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLy8gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgYmVmb3JlIFNob3cgTW9yZSBpcyBleHBhbmRlZFxuY29uc3QgTUFYX0NPTExBUFNFRF9JVEVNUyA9IDQ7XG5cbmV4cG9ydCBjb25zdCBTaXRlczogUmVhY3QuRkM8U2l0ZXNQcm9wcz4gPSAoe1xuICBlbmRQb2ludCxcbiAgb3RoZXJzID0gZmFsc2UsXG4gIHJlcXVlc3RQYXJhbXMsXG59KSA9PiB7XG4gIGNvbnN0IFtmYWN0b3JpZXMsIHNldEZhY3Rvcmllc10gPSB1c2VTdGF0ZTxGYWN0b3J5W10+KFtdKTtcbiAgY29uc3QgW25vbkZhY3Rvcmllcywgc2V0Tm9uRmFjdG9yaWVzXSA9IHVzZVN0YXRlPEZhY3RvcnlbXT4oW10pO1xuICBjb25zdCBbZGlzcGxheWVkU2l0ZXMsIHNldERpc3BsYXllZFNpdGVzXSA9IHVzZVN0YXRlPEZhY3RvcnlbXT4oW10pO1xuICBjb25zdCB3aW5kb3dTaXplID0gdXNlV2luZG93U2l6ZSgpO1xuICBjb25zdCBbaXNTaG93TW9yZSwgc2V0SXNTaG93TW9yZV0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtpc1Nob3dNb3JlRW5hYmxlZCwgc2V0SXNTaG93TW9yZUVuYWJsZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2VsZWN0ZWRUYWJJbmRleCwgc2V0U2VsZWN0ZWRUYWJJbmRleF0gPSB1c2VTdGF0ZTxudW1iZXI+KFxuICAgIHRhYnNFbnVtWydmYWN0b3JpZXMnXSxcbiAgKTtcblxuICBjb25zdCBbcmVzcG9uc2UsIGlzTG9hZGluZywgZXJyb3JdID1cbiAgICB1c2VBcGlXaXRoRGFzaGJvYXJkUXVlcnk8RmFjdG9yaWVzUmVzcG9uc2U+KGVuZFBvaW50LCByZXF1ZXN0UGFyYW1zKTtcbiAgY29uc3QgYWxsU2l0ZXMgPSByZXNwb25zZT8uZGF0YTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWxsU2l0ZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmRlcmVkU2l0ZXMgPSBhbGxTaXRlcy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IC1hLnNjb3JlICsgYi5zY29yZSk7XG4gICAgLy8gIFJlZmxlY3QgdXNlcidzIGFjdGl2ZSB0YWIgc2VsZWN0aW9uLiBGaWx0ZXIgb25seSBmYWN0b3JpZXMgb3IgdGhlIHJlc3QgKGNvbGxlY3RvcnMsIHd3dHAsIGV0Yy4uKVxuICAgIHNldEZhY3RvcmllcyhvcmRlcmVkU2l0ZXMuZmlsdGVyKChzaXRlKSA9PiBzaXRlLnNpdGVfdHlwZSA9PT0gJ2ZhY3RvcnknKSk7XG4gICAgc2V0Tm9uRmFjdG9yaWVzKFxuICAgICAgb3JkZXJlZFNpdGVzLmZpbHRlcigoc2l0ZSkgPT4gc2l0ZS5zaXRlX3R5cGUgIT09ICdmYWN0b3J5JyksXG4gICAgKTtcbiAgfSwgW2FsbFNpdGVzXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzaXRlcyA9XG4gICAgICBzZWxlY3RlZFRhYkluZGV4ID09PSB0YWJzRW51bVsnZmFjdG9yaWVzJ10gPyBmYWN0b3JpZXMgOiBub25GYWN0b3JpZXM7XG5cbiAgICBpZiAoc2l0ZXMubGVuZ3RoID4gTUFYX0NPTExBUFNFRF9JVEVNUykge1xuICAgICAgc2V0SXNTaG93TW9yZUVuYWJsZWQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldElzU2hvd01vcmVFbmFibGVkKGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAod2luZG93U2l6ZS53aWR0aCkge1xuICAgICAgaWYgKCFpc1Nob3dNb3JlKSB7XG4gICAgICAgIHNldERpc3BsYXllZFNpdGVzKHNpdGVzLnNsaWNlKDAsIE1BWF9DT0xMQVBTRURfSVRFTVMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERpc3BsYXllZFNpdGVzKHNpdGVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBzZWxlY3RlZFRhYkluZGV4LFxuICAgIGlzU2hvd01vcmUsXG4gICAgd2luZG93U2l6ZS53aWR0aCxcbiAgICBmYWN0b3JpZXMubGVuZ3RoLFxuICAgIG5vbkZhY3Rvcmllcy5sZW5ndGgsXG4gIF0pO1xuXG4gIGlmIChpc0xvYWRpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNwaW5uZXJIb2xkZXI+XG4gICAgICAgIDxTcGlubmVyIGxlbmd0aD1cIjgwcHhcIiAvPlxuICAgICAgPC9TcGlubmVySG9sZGVyPlxuICAgICk7XG4gIH1cblxuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4gPGRpdj57aTE4bi50KGBlcnJvcnMucmVxdWVzdF9lcnJvcmApfTwvZGl2PjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lcj5cbiAgICAgIDxUYWJzXG4gICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZFRhYkluZGV4fVxuICAgICAgICBvbkNsaWNrPXtzZXRTZWxlY3RlZFRhYkluZGV4fVxuICAgICAgICBkaXNwbGF5ZWQ9e1t0YWJzRW51bVsnZmFjdG9yaWVzJ10sIHRhYnNFbnVtWydjb2xsZWN0b3JzJ11dfVxuICAgICAgLz5cbiAgICAgIHtkaXNwbGF5ZWRTaXRlcy5sZW5ndGggPT09IDAgJiYgPEVtcHR5U3RhdGUgdHlwZT1cImFyZWFEYXNoXCIgLz59XG4gICAgICA8R3JpZEJveENvbnRhaW5lclxuICAgICAgICBjbGFzc05hbWU9e2BcbiAgICAgICAgICAgICAgICAgICAgJHtcbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ZWRTaXRlcy5sZW5ndGggPCBNQVhfQ09MTEFQU0VEX0lURU1TXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdvbmx5LW9uZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgICAgICAgfSR7aXNTaG93TW9yZSA/ICcnIDogJyBvbmx5LTItcm93cyd9YH1cbiAgICAgID5cbiAgICAgICAge2Rpc3BsYXllZFNpdGVzLm1hcCgoc2l0ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZhY3RvcnlCb3hcbiAgICAgICAgICAgICAga2V5PXtgJHtzaXRlLnNpdGVfbmFtZX0tJHtpbmRleH1gfVxuICAgICAgICAgICAgICBmYWN0b3J5PXt7XG4gICAgICAgICAgICAgICAgLi4uc2l0ZSxcbiAgICAgICAgICAgICAgICBzY29yZTogc2l0ZVsnc2l0ZV9zY29yZSddLFxuICAgICAgICAgICAgICAgIHBvaW50X2lkOiBzaXRlWydzaXRlX2lkJ10sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHNob3dJbmZvVG9vbHRpcD17aW5kZXggPT09IDB9XG4gICAgICAgICAgICAgIHR5cGU9e3NpdGUuc2l0ZV90eXBlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvR3JpZEJveENvbnRhaW5lcj5cbiAgICAgIHtpc1Nob3dNb3JlRW5hYmxlZCAmJiAoXG4gICAgICAgIDxTaG93TW9yZVxuICAgICAgICAgIGFjdGl2ZT17aXNTaG93TW9yZX1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc1Nob3dNb3JlKCFpc1Nob3dNb3JlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuIl19
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wYWdlcy9BcmVhUGFnZS9EYXNoYm9hcmQvU2l0ZXMvU2l0ZXMudHN4Il0sIm5hbWVzIjpbIk1BWF9DT0xMQVBTRURfSVRFTVMiLCJTaXRlcyIsImVuZFBvaW50Iiwib3RoZXJzIiwicmVxdWVzdFBhcmFtcyIsImZhY3RvcmllcyIsInNldEZhY3RvcmllcyIsIm5vbkZhY3RvcmllcyIsInNldE5vbkZhY3RvcmllcyIsImRpc3BsYXllZFNpdGVzIiwic2V0RGlzcGxheWVkU2l0ZXMiLCJ3aW5kb3dTaXplIiwiaXNTaG93TW9yZSIsInNldElzU2hvd01vcmUiLCJpc1Nob3dNb3JlRW5hYmxlZCIsInNldElzU2hvd01vcmVFbmFibGVkIiwidGFic0VudW0iLCJzZWxlY3RlZFRhYkluZGV4Iiwic2V0U2VsZWN0ZWRUYWJJbmRleCIsInJlc3BvbnNlIiwiaXNMb2FkaW5nIiwiZXJyb3IiLCJhbGxTaXRlcyIsImRhdGEiLCJvcmRlcmVkU2l0ZXMiLCJzbGljZSIsInNvcnQiLCJhIiwiYiIsInNjb3JlIiwiZmlsdGVyIiwic2l0ZSIsInNpdGVfdHlwZSIsInNpdGVzIiwic2l0ZV9zY29yZSIsImxlbmd0aCIsIndpZHRoIiwiaTE4biIsInQiLCJtYXAiLCJpbmRleCIsInNpdGVfbmFtZSIsInBvaW50X2lkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBUUE7QUFDQSxJQUFNQSxtQkFBbUIsR0FBRyxDQUE1Qjs7QUFFTyxJQUFNQyxLQUEyQixHQUFHLFNBQTlCQSxLQUE4QixPQUlyQztBQUFBLE1BSEpDLFFBR0ksUUFISkEsUUFHSTtBQUFBLHlCQUZKQyxNQUVJO0FBQUEsTUFGSkEsTUFFSSw0QkFGSyxLQUVMO0FBQUEsTUFESkMsYUFDSSxRQURKQSxhQUNJOztBQUNKLGtCQUFrQyxxQkFBb0IsRUFB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SUFBQSxNQUFNLEVBQUVGLFVBRFY7QUFFRSxJQUFBLE9BQU8sRUFBRTtBQUFBLGFBQU1DLGFBQWEsQ0FBQyxDQUFDRCxVQUFGLENBQW5CO0FBQUE7QUFGWCxJQS9CSixDQURGO0FBdUNELENBOUdNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyJztcbmltcG9ydCB7IHVzZVdpbmRvd1NpemUgfSBmcm9tICdzcmMvaG9va3MvdXNlV2luZG93U2l6ZSc7XG5pbXBvcnQgeyB1c2VBcGlXaXRoRGFzaGJvYXJkUXVlcnkgfSBmcm9tICdzcmMvaG9va3MvdXNlQXBpV2l0aERhc2hib2FyZFF1ZXJ5JztcbmltcG9ydCB7IEVtcHR5U3RhdGUgfSBmcm9tICdzcmMvV2lkZ2V0cy9Nb3N0UG9sbHV0aW5nL0VtcHR5U3RhdGUvRW1wdHlTdGF0ZSc7XG5pbXBvcnQgeyBTaG93TW9yZSB9IGZyb20gJ3NyYy9XaWRnZXRzL01vc3RQb2xsdXRpbmcvU2hvd01vcmUvU2hvd01vcmUnO1xuaW1wb3J0IHsgU3Bpbm5lckhvbGRlciB9IGZyb20gJ3NyYy9XaWRnZXRzL01vc3RQb2xsdXRpbmcvc3R5bGVzJztcbmltcG9ydCB7IEZhY3Rvcmllc1Jlc3BvbnNlLCBGYWN0b3J5IH0gZnJvbSAnLi9TaXRlc1Jlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb250YWluZXIsIEdyaWRCb3hDb250YWluZXIgfSBmcm9tICcuL3N0eWxlcyc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgVGFicywgdGFic0VudW0gfSBmcm9tICdzcmMvY29tcG9uZW50cy9UYWJzL1RhYnMnO1xuaW1wb3J0IHsgRmFjdG9yeUJveCB9IGZyb20gJ3NyYy9XaWRnZXRzL01vc3RQb2xsdXRpbmcvRmFjdG9yaWVzL0ZhY3RvcnlCb3gvRmFjdG9yeUJveCc7XG5cbmludGVyZmFjZSBTaXRlc1Byb3BzIHtcbiAgb3RoZXJzPzogYm9vbGVhbjtcbiAgZW5kUG9pbnQ6IHN0cmluZztcbiAgcmVxdWVzdFBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8vIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIGJlZm9yZSBTaG93IE1vcmUgaXMgZXhwYW5kZWRcbmNvbnN0IE1BWF9DT0xMQVBTRURfSVRFTVMgPSA0O1xuXG5leHBvcnQgY29uc3QgU2l0ZXM6IFJlYWN0LkZDPFNpdGVzUHJvcHM+ID0gKHtcbiAgZW5kUG9pbnQsXG4gIG90aGVycyA9IGZhbHNlLFxuICByZXF1ZXN0UGFyYW1zLFxufSkgPT4ge1xuICBjb25zdCBbZmFjdG9yaWVzLCBzZXRGYWN0b3JpZXNdID0gdXNlU3RhdGU8RmFjdG9yeVtdPihbXSk7XG4gIGNvbnN0IFtub25GYWN0b3JpZXMsIHNldE5vbkZhY3Rvcmllc10gPSB1c2VTdGF0ZTxGYWN0b3J5W10+KFtdKTtcbiAgY29uc3QgW2Rpc3BsYXllZFNpdGVzLCBzZXREaXNwbGF5ZWRTaXRlc10gPSB1c2VTdGF0ZTxGYWN0b3J5W10+KFtdKTtcbiAgY29uc3Qgd2luZG93U2l6ZSA9IHVzZVdpbmRvd1NpemUoKTtcbiAgY29uc3QgW2lzU2hvd01vcmUsIHNldElzU2hvd01vcmVdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbaXNTaG93TW9yZUVuYWJsZWQsIHNldElzU2hvd01vcmVFbmFibGVkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3NlbGVjdGVkVGFiSW5kZXgsIHNldFNlbGVjdGVkVGFiSW5kZXhdID0gdXNlU3RhdGU8bnVtYmVyPihcbiAgICB0YWJzRW51bVsnZmFjdG9yaWVzJ10sXG4gICk7XG5cbiAgY29uc3QgW3Jlc3BvbnNlLCBpc0xvYWRpbmcsIGVycm9yXSA9XG4gICAgdXNlQXBpV2l0aERhc2hib2FyZFF1ZXJ5PEZhY3Rvcmllc1Jlc3BvbnNlPihlbmRQb2ludCwgcmVxdWVzdFBhcmFtcyk7XG4gIGNvbnN0IGFsbFNpdGVzID0gcmVzcG9uc2U/LmRhdGE7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFsbFNpdGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXJlZFNpdGVzID0gYWxsU2l0ZXMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiAtYS5zY29yZSArIGIuc2NvcmUpO1xuICAgIC8vICBSZWZsZWN0IHVzZXIncyBhY3RpdmUgdGFiIHNlbGVjdGlvbi4gRmlsdGVyIG9ubHkgZmFjdG9yaWVzIG9yIHRoZSByZXN0IChjb2xsZWN0b3JzLCB3d3RwLCBldGMuLilcbiAgICBzZXRGYWN0b3JpZXMob3JkZXJlZFNpdGVzLmZpbHRlcigoc2l0ZSkgPT4gc2l0ZS5zaXRlX3R5cGUgPT09ICdmYWN0b3J5JykpO1xuICAgIHNldE5vbkZhY3RvcmllcyhcbiAgICAgIG9yZGVyZWRTaXRlcy5maWx0ZXIoKHNpdGUpID0+IHNpdGUuc2l0ZV90eXBlICE9PSAnZmFjdG9yeScpLFxuICAgICk7XG4gIH0sIFthbGxTaXRlc10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2l0ZXMgPVxuICAgICAgc2VsZWN0ZWRUYWJJbmRleCA9PT0gdGFic0VudW1bJ2ZhY3RvcmllcyddXG4gICAgICAgID8gZmFjdG9yaWVzXG4gICAgICAgIDogbm9uRmFjdG9yaWVzLnNvcnQoKGEsIGIpID0+IGIuc2l0ZV9zY29yZSAtIGEuc2l0ZV9zY29yZSk7XG5cbiAgICBpZiAoc2l0ZXMubGVuZ3RoID4gTUFYX0NPTExBUFNFRF9JVEVNUykge1xuICAgICAgc2V0SXNTaG93TW9yZUVuYWJsZWQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldElzU2hvd01vcmVFbmFibGVkKGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAod2luZG93U2l6ZS53aWR0aCkge1xuICAgICAgaWYgKCFpc1Nob3dNb3JlKSB7XG4gICAgICAgIHNldERpc3BsYXllZFNpdGVzKHNpdGVzLnNsaWNlKDAsIE1BWF9DT0xMQVBTRURfSVRFTVMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERpc3BsYXllZFNpdGVzKHNpdGVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBzZWxlY3RlZFRhYkluZGV4LFxuICAgIGlzU2hvd01vcmUsXG4gICAgd2luZG93U2l6ZS53aWR0aCxcbiAgICBmYWN0b3JpZXMubGVuZ3RoLFxuICAgIG5vbkZhY3Rvcmllcy5sZW5ndGgsXG4gIF0pO1xuXG4gIGlmIChpc0xvYWRpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNwaW5uZXJIb2xkZXI+XG4gICAgICAgIDxTcGlubmVyIGxlbmd0aD1cIjgwcHhcIiAvPlxuICAgICAgPC9TcGlubmVySG9sZGVyPlxuICAgICk7XG4gIH1cblxuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4gPGRpdj57aTE4bi50KGBlcnJvcnMucmVxdWVzdF9lcnJvcmApfTwvZGl2PjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lcj5cbiAgICAgIDxUYWJzXG4gICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZFRhYkluZGV4fVxuICAgICAgICBvbkNsaWNrPXtzZXRTZWxlY3RlZFRhYkluZGV4fVxuICAgICAgICBkaXNwbGF5ZWQ9e1t0YWJzRW51bVsnZmFjdG9yaWVzJ10sIHRhYnNFbnVtWydjb2xsZWN0b3JzJ11dfVxuICAgICAgLz5cbiAgICAgIHtkaXNwbGF5ZWRTaXRlcy5sZW5ndGggPT09IDAgJiYgPEVtcHR5U3RhdGUgdHlwZT1cImFyZWFEYXNoXCIgLz59XG4gICAgICA8R3JpZEJveENvbnRhaW5lclxuICAgICAgICBjbGFzc05hbWU9e2BcbiAgICAgICAgICAgICAgICAgICAgJHtcbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ZWRTaXRlcy5sZW5ndGggPCBNQVhfQ09MTEFQU0VEX0lURU1TXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdvbmx5LW9uZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgICAgICAgfSR7aXNTaG93TW9yZSA/ICcnIDogJyBvbmx5LTItcm93cyd9YH1cbiAgICAgID5cbiAgICAgICAge2Rpc3BsYXllZFNpdGVzLm1hcCgoc2l0ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZhY3RvcnlCb3hcbiAgICAgICAgICAgICAga2V5PXtgJHtzaXRlLnNpdGVfbmFtZX0tJHtpbmRleH1gfVxuICAgICAgICAgICAgICBmYWN0b3J5PXt7XG4gICAgICAgICAgICAgICAgLi4uc2l0ZSxcbiAgICAgICAgICAgICAgICBzY29yZTogc2l0ZVsnc2l0ZV9zY29yZSddLFxuICAgICAgICAgICAgICAgIHBvaW50X2lkOiBzaXRlWydzaXRlX2lkJ10sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHNob3dJbmZvVG9vbHRpcD17aW5kZXggPT09IDB9XG4gICAgICAgICAgICAgIHR5cGU9e3NpdGUuc2l0ZV90eXBlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvR3JpZEJveENvbnRhaW5lcj5cbiAgICAgIHtpc1Nob3dNb3JlRW5hYmxlZCAmJiAoXG4gICAgICAgIDxTaG93TW9yZVxuICAgICAgICAgIGFjdGl2ZT17aXNTaG93TW9yZX1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc1Nob3dNb3JlKCFpc1Nob3dNb3JlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuIl19