@kepler.gl/components 3.3.0-alpha.6 → 3.3.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/cjs/common/data-table/cell-size.js +40 -23
  2. package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
  3. package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
  4. package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
  5. package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
  6. package/dist/cjs/common/data-table/header-cell.js +123 -44
  7. package/dist/cjs/common/data-table/index.js +102 -29
  8. package/dist/cjs/common/histogram-plot.js +1 -1
  9. package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
  10. package/dist/cjs/common/icons/index.js +15 -1
  11. package/dist/cjs/common/icons/line-string.js +60 -0
  12. package/dist/cjs/common/toolbar-item.js +24 -3
  13. package/dist/cjs/editor/editor.js +26 -8
  14. package/dist/cjs/editor/feature-action-panel.js +34 -12
  15. package/dist/cjs/editor/feature-properties-editor.js +215 -0
  16. package/dist/cjs/editor/filter-feature-badges.js +92 -0
  17. package/dist/cjs/index.js +33 -1
  18. package/dist/cjs/kepler-gl.js +20 -3
  19. package/dist/cjs/map/map-control-toolbar.js +2 -2
  20. package/dist/cjs/map/map-control.js +13 -7
  21. package/dist/cjs/map/map-draw-panel.js +65 -15
  22. package/dist/cjs/map/theme-toggle-button.js +64 -0
  23. package/dist/cjs/map-container.js +16 -5
  24. package/dist/cjs/modal-container.js +2 -1
  25. package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
  26. package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
  27. package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
  28. package/dist/cjs/modals/cloud-tile.js +52 -38
  29. package/dist/cjs/modals/data-table-modal.js +37 -25
  30. package/dist/cjs/modals/export-video-modal.js +28 -1
  31. package/dist/cjs/modals/export-video-modal.spec.js +56 -10
  32. package/dist/cjs/modals/globe-export-video-container.js +19 -3
  33. package/dist/cjs/modals/globe-export-video-preview.js +25 -7
  34. package/dist/cjs/modals/hubble-utils.js +8 -3
  35. package/dist/cjs/modals/swipe-composite-utils.js +9 -1
  36. package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
  37. package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
  38. package/dist/cjs/side-panel/layer-manager.js +11 -3
  39. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
  40. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
  41. package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
  42. package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
  43. package/dist/common/data-table/column-statistics-components.d.ts +31 -0
  44. package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
  45. package/dist/common/data-table/column-statistics-time.d.ts +19 -0
  46. package/dist/common/data-table/header-cell.d.ts +7 -5
  47. package/dist/common/data-table/index.d.ts +7 -24
  48. package/dist/common/histogram-plot.d.ts +24 -1
  49. package/dist/common/icons/{arrow-down-solid.d.ts → draw-point.d.ts} +2 -1
  50. package/dist/common/icons/index.d.ts +2 -0
  51. package/dist/common/icons/line-string.d.ts +10 -0
  52. package/dist/common/toolbar-item.d.ts +2 -0
  53. package/dist/editor/editor.d.ts +1 -0
  54. package/dist/editor/feature-action-panel.d.ts +1 -0
  55. package/dist/editor/feature-properties-editor.d.ts +8 -0
  56. package/dist/editor/filter-feature-badges.d.ts +12 -0
  57. package/dist/esm/common/data-table/cell-size.js +40 -23
  58. package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
  59. package/dist/esm/common/data-table/column-statistics-components.js +59 -0
  60. package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
  61. package/dist/esm/common/data-table/column-statistics-time.js +60 -0
  62. package/dist/esm/common/data-table/header-cell.js +125 -46
  63. package/dist/esm/common/data-table/index.js +102 -29
  64. package/dist/esm/common/histogram-plot.js +1 -1
  65. package/dist/esm/common/icons/draw-point.js +44 -0
  66. package/dist/esm/common/icons/index.js +3 -1
  67. package/dist/esm/common/icons/line-string.js +54 -0
  68. package/dist/esm/common/toolbar-item.js +24 -3
  69. package/dist/esm/editor/editor.js +26 -8
  70. package/dist/esm/editor/feature-action-panel.js +37 -15
  71. package/dist/esm/editor/feature-properties-editor.js +208 -0
  72. package/dist/esm/editor/filter-feature-badges.js +85 -0
  73. package/dist/esm/index.js +5 -1
  74. package/dist/esm/kepler-gl.js +20 -3
  75. package/dist/esm/map/map-control-toolbar.js +2 -2
  76. package/dist/esm/map/map-control.js +13 -7
  77. package/dist/esm/map/map-draw-panel.js +63 -11
  78. package/dist/esm/map/theme-toggle-button.js +55 -0
  79. package/dist/esm/map-container.js +16 -5
  80. package/dist/esm/modal-container.js +2 -1
  81. package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
  82. package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
  83. package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
  84. package/dist/esm/modals/cloud-tile.js +52 -38
  85. package/dist/esm/modals/data-table-modal.js +38 -26
  86. package/dist/esm/modals/export-video-modal.js +29 -2
  87. package/dist/esm/modals/export-video-modal.spec.js +56 -10
  88. package/dist/esm/modals/globe-export-video-container.js +20 -4
  89. package/dist/esm/modals/globe-export-video-preview.js +26 -8
  90. package/dist/esm/modals/hubble-utils.js +8 -3
  91. package/dist/esm/modals/swipe-composite-utils.js +9 -1
  92. package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
  93. package/dist/esm/modals/swipe-export-video-preview.js +8 -4
  94. package/dist/esm/side-panel/layer-manager.js +11 -3
  95. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
  96. package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
  97. package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
  98. package/dist/index.d.ts +8 -0
  99. package/dist/kepler-gl.d.ts +3 -0
  100. package/dist/map/map-control.d.ts +6 -2
  101. package/dist/map/map-draw-panel.d.ts +1 -0
  102. package/dist/map/theme-toggle-button.d.ts +18 -0
  103. package/dist/map-container.d.ts +1 -0
  104. package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
  105. package/dist/modals/data-table-modal.d.ts +1 -0
  106. package/dist/modals/globe-export-video-container.d.ts +2 -0
  107. package/dist/modals/globe-export-video-preview.d.ts +3 -0
  108. package/dist/modals/hubble-utils.d.ts +2 -1
  109. package/dist/modals/swipe-composite-utils.d.ts +1 -1
  110. package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
  111. package/package.json +20 -20
  112. package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
  113. package/dist/cjs/modals/storage-map-viewer.js +0 -98
  114. package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
  115. package/dist/esm/common/icons/arrow-down-solid.js +0 -34
  116. package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
  117. package/dist/esm/modals/storage-map-viewer.js +0 -93
  118. package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
  119. package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
  120. package/dist/modals/storage-map-viewer.d.ts +0 -21
  121. package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports["default"] = void 0;
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
12
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
12
13
  var _react = _interopRequireWildcard(require("react"));
13
14
  var _styledComponents = _interopRequireDefault(require("styled-components"));
@@ -18,31 +19,84 @@ var _constants = require("@kepler.gl/constants");
18
19
  var _optionDropdown = _interopRequireWildcard(require("./option-dropdown"));
19
20
  var _utils = require("@kepler.gl/utils");
20
21
  var _fieldToken = _interopRequireDefault(require("../../common/field-token"));
21
- var _templateObject; // SPDX-License-Identifier: MIT
22
+ var _loadingSpinner = _interopRequireDefault(require("../loading-spinner"));
23
+ var _columnStatisticsCategoric = _interopRequireDefault(require("./column-statistics-categoric"));
24
+ var _columnStatisticsNumeric = _interopRequireDefault(require("./column-statistics-numeric"));
25
+ var _columnStatisticsTime = _interopRequireDefault(require("./column-statistics-time"));
26
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT
22
27
  // Copyright contributors to the kepler.gl project
23
28
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
24
- var StyledHeaderCell = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n border-bottom: 1px solid ", ";\n border-top: 1px solid ", ";\n padding-top: ", "px;\n padding-right: 0;\n padding-bottom: ", "px;\n padding-left: ", "px;\n align-items: center;\n justify-content: space-between;\n display: flex;\n flex-direction: row;\n background-color: ", ";\n\n .n-sort-idx {\n font-size: 9px;\n }\n .details {\n font-weight: 500;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n height: 100%;\n overflow: hidden;\n flex-grow: 1;\n\n .col-name {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n .col-name__left {\n display: flex;\n align-items: center;\n overflow: hidden;\n\n svg {\n margin-left: 6px;\n }\n }\n .col-name__name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n\n .more {\n margin-left: 5px;\n }\n\n .col-name__format svg {\n width: 10px;\n height: 10px;\n stroke-width: 1;\n }\n"])), function (props) {
29
+ var StyledHeaderCell = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n border-bottom: 1px solid ", ";\n border-top: 1px solid ", ";\n border-right: ", ";\n padding-top: ", "px;\n padding-right: 0;\n padding-bottom: ", "px;\n padding-left: ", "px;\n align-items: ", ";\n justify-content: ", ";\n display: flex;\n flex-direction: ", ";\n background-color: ", ";\n overflow: hidden;\n\n .n-sort-idx {\n font-size: 9px;\n }\n .header-cell__top {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n height: ", "px;\n flex: 0 0 auto;\n box-sizing: border-box;\n padding-top: ", "px;\n padding-bottom: ", "px;\n padding-left: ", "px;\n }\n .details {\n font-weight: 500;\n font-size: ", "px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n height: 100%;\n overflow: hidden;\n flex-grow: 1;\n\n .col-name {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-left: 6px;\n min-width: 0;\n flex: 1;\n\n .col-name__left {\n display: flex;\n align-items: center;\n overflow: hidden;\n\n svg {\n margin-left: 6px;\n }\n }\n .col-name__name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n\n .more {\n margin-left: 5px;\n }\n\n .col-name__format svg {\n width: 10px;\n height: 10px;\n stroke-width: 1;\n }\n"])), function (props) {
25
30
  return props.theme.headerCellBorderColor;
26
31
  }, function (props) {
27
32
  return props.theme.headerCellBorderColor;
33
+ }, function (props) {
34
+ return props.$hasStats ? "1px solid ".concat(props.theme.cellBorderColor) : 'none';
35
+ }, function (props) {
36
+ return props.$hasStats ? 0 : props.theme.headerPaddingTop;
37
+ }, function (props) {
38
+ return props.$hasStats ? 0 : props.theme.headerPaddingBottom;
39
+ }, function (props) {
40
+ return props.$hasStats ? 0 : props.theme.cellPaddingSide;
41
+ }, function (props) {
42
+ return props.$hasStats ? 'stretch' : 'center';
43
+ }, function (props) {
44
+ return props.$hasStats ? 'flex-start' : 'space-between';
45
+ }, function (props) {
46
+ return props.$hasStats ? 'column' : 'row';
47
+ }, function (props) {
48
+ return props.theme.headerCellBackground;
49
+ }, function (props) {
50
+ return props.theme.headerRowHeight;
28
51
  }, function (props) {
29
52
  return props.theme.headerPaddingTop;
30
53
  }, function (props) {
31
54
  return props.theme.headerPaddingBottom;
32
55
  }, function (props) {
33
- return props.theme.cellPaddingSide;
56
+ return props.$firstCell ? props.theme.cellPaddingSide + props.theme.edgeCellPaddingSide : props.theme.cellPaddingSide;
34
57
  }, function (props) {
35
- return props.theme.headerCellBackground;
58
+ return props.theme.cellFontSize;
59
+ });
60
+ var StyledBottomStats = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n flex-grow: 1;\n min-height: 0;\n overflow: hidden;\n opacity: ", ";\n transition: opacity 0.5s ease-in-out;\n pointer-events: ", ";\n width: 100%;\n"])), function (props) {
61
+ return props.theme.headerCellStatsBackground;
62
+ }, function (props) {
63
+ return props.$showStats ? 1 : 0;
64
+ }, function (props) {
65
+ return props.$showStats ? 'auto' : 'none';
36
66
  });
37
- var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
38
- var HeaderCell = function HeaderCell(_ref) {
67
+ var StyledLoading = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n padding-top: 16px;\n display: flex;\n justify-content: center;\n"])));
68
+ var StyledStatsSpacer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: ", "px;\n width: 100%;\n flex-grow: 0;\n"])), function (props) {
69
+ return props.theme.headerStatsControlHeight;
70
+ });
71
+ function HeaderCellFactory(FieldToken, ColumnStatisticsNumeric, ColumnStatisticsTime) {
72
+ var ColumnStatisticsSection = function ColumnStatisticsSection(_ref) {
73
+ var columnStats = _ref.columnStats,
74
+ type = _ref.type,
75
+ format = _ref.format;
76
+ switch (columnStats.type) {
77
+ case _utils.ColumnStatsType.numeric:
78
+ return /*#__PURE__*/_react["default"].createElement(ColumnStatisticsNumeric, (0, _extends2["default"])({}, columnStats, {
79
+ type: type
80
+ }));
81
+ case _utils.ColumnStatsType.categorical:
82
+ return /*#__PURE__*/_react["default"].createElement(_columnStatisticsCategoric["default"], columnStats);
83
+ case _utils.ColumnStatsType.time:
84
+ return /*#__PURE__*/_react["default"].createElement(ColumnStatisticsTime, (0, _extends2["default"])({}, columnStats, {
85
+ format: format
86
+ }));
87
+ default:
88
+ return /*#__PURE__*/_react["default"].createElement("div", null);
89
+ }
90
+ };
91
+ var HeaderCell = function HeaderCell(_ref2) {
39
92
  var _colMeta$column;
40
- var cellInfo = _ref.cellInfo,
41
- columns = _ref.columns,
42
- isPinned = _ref.isPinned,
43
- props = _ref.props,
44
- toggleMoreOptions = _ref.toggleMoreOptions,
45
- moreOptionsColumn = _ref.moreOptionsColumn;
93
+ var cellInfo = _ref2.cellInfo,
94
+ columns = _ref2.columns,
95
+ isPinned = _ref2.isPinned,
96
+ showStats = _ref2.showStats,
97
+ props = _ref2.props,
98
+ toggleMoreOptions = _ref2.toggleMoreOptions,
99
+ moreOptionsColumn = _ref2.moreOptionsColumn;
46
100
  var columnIndex = cellInfo.columnIndex,
47
101
  key = cellInfo.key,
48
102
  style = cellInfo.style;
@@ -51,47 +105,57 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
51
105
  sortTableColumn = props.sortTableColumn,
52
106
  pinTableColumn = props.pinTableColumn,
53
107
  copyTableColumn = props.copyTableColumn,
54
- setColumnDisplayFormat = props.setColumnDisplayFormat;
108
+ setColumnDisplayFormat = props.setColumnDisplayFormat,
109
+ hasStats = props.hasStats,
110
+ dataId = props.dataId,
111
+ loadColumnStats = props.loadColumnStats;
55
112
  var _useState = (0, _react.useState)(false),
56
113
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
57
114
  showFormatter = _useState2[0],
58
115
  setShowFormatter = _useState2[1];
59
116
  var column = columns[columnIndex];
60
- var isGhost = column.ghost;
61
- var isSorted = sortColumn[column];
117
+ var isGhost = Boolean(column.ghost);
118
+ var isSorted = isGhost ? false : sortColumn[column];
62
119
  var firstCell = columnIndex === 0;
63
- var isFormatted = Boolean((_colMeta$column = colMeta[column]) === null || _colMeta$column === void 0 ? void 0 : _colMeta$column.displayFormat);
64
- var formatLabels = isFormatted ? (0, _utils.getFieldFormatLabels)(colMeta[column].type) : [];
120
+ var _ref3 = colMeta[isGhost ? '' : column] || {},
121
+ columnStats = _ref3.columnStats,
122
+ isLoadingStats = _ref3.isLoadingStats,
123
+ type = _ref3.type,
124
+ format = _ref3.format;
125
+ var isFormatted = isGhost ? false : Boolean((_colMeta$column = colMeta[column]) === null || _colMeta$column === void 0 ? void 0 : _colMeta$column.displayFormat);
126
+ var formatLabels = isFormatted && !isGhost ? (0, _utils.getFieldFormatLabels)(colMeta[column].type) : [];
127
+ (0, _react.useEffect)(function () {
128
+ if (!isGhost && !columnStats && !isLoadingStats && dataId && showStats && hasStats && loadColumnStats) {
129
+ loadColumnStats(dataId, column);
130
+ }
131
+ }, [isGhost, columnStats, isLoadingStats, column, dataId, showStats, hasStats, loadColumnStats]);
65
132
  var onSortTable = (0, _react.useCallback)(function () {
66
- return sortTableColumn === null || sortTableColumn === void 0 ? void 0 : sortTableColumn(column);
67
- }, [sortTableColumn, column]);
133
+ if (!isGhost) sortTableColumn === null || sortTableColumn === void 0 || sortTableColumn(column);
134
+ }, [sortTableColumn, isGhost, column]);
68
135
  var onToggleOptionMenu = (0, _react.useCallback)(function () {
69
- return toggleMoreOptions(column);
70
- }, [toggleMoreOptions, column]);
136
+ if (!isGhost) toggleMoreOptions(column);
137
+ }, [toggleMoreOptions, isGhost, column]);
71
138
  var onPin = (0, _react.useCallback)(function () {
72
- return pinTableColumn(column);
73
- }, [pinTableColumn, column]);
139
+ if (!isGhost) pinTableColumn(column);
140
+ }, [pinTableColumn, isGhost, column]);
74
141
  var onCopy = (0, _react.useCallback)(function () {
75
- return copyTableColumn(column);
76
- }, [copyTableColumn, column]);
142
+ if (!isGhost) copyTableColumn(column);
143
+ }, [copyTableColumn, isGhost, column]);
77
144
  var onSetDisplayFormat = (0, _react.useCallback)(function (displayFormat) {
78
- setColumnDisplayFormat === null || setColumnDisplayFormat === void 0 || setColumnDisplayFormat((0, _defineProperty2["default"])({}, column, displayFormat.format));
79
- }, [column, setColumnDisplayFormat]);
145
+ if (!isGhost) setColumnDisplayFormat === null || setColumnDisplayFormat === void 0 || setColumnDisplayFormat((0, _defineProperty2["default"])({}, column, displayFormat.format));
146
+ }, [column, isGhost, setColumnDisplayFormat]);
80
147
  var onToggleDisplayFormat = (0, _react.useCallback)(function () {
81
148
  setShowFormatter(!showFormatter);
82
149
  }, [showFormatter]);
83
- return /*#__PURE__*/_react["default"].createElement(StyledHeaderCell, {
84
- className: (0, _classnames2["default"])('header-cell', (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "column-".concat(columnIndex), true), 'pinned-header-cell', isPinned), 'first-cell', firstCell)),
85
- key: key,
86
- style: style,
150
+ var headerDetails = isGhost ? /*#__PURE__*/_react["default"].createElement("div", null) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("section", {
151
+ className: "details",
87
152
  onClick: function onClick(e) {
88
- e.shiftKey ? sortTableColumn(column) : null;
153
+ if (e.shiftKey && !isGhost) sortTableColumn === null || sortTableColumn === void 0 || sortTableColumn(column);
89
154
  },
90
- onDoubleClick: onSortTable,
91
- title: column
92
- }, isGhost ? /*#__PURE__*/_react["default"].createElement("div", null) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("section", {
93
- className: "details"
94
- }, /*#__PURE__*/_react["default"].createElement("div", {
155
+ onDoubleClick: onSortTable
156
+ }, /*#__PURE__*/_react["default"].createElement(FieldToken, {
157
+ type: colMeta[column].type
158
+ }), /*#__PURE__*/_react["default"].createElement("div", {
95
159
  className: "col-name"
96
160
  }, /*#__PURE__*/_react["default"].createElement("div", {
97
161
  className: "col-name__left"
@@ -124,9 +188,7 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
124
188
  onClick: onToggleOptionMenu
125
189
  }, /*#__PURE__*/_react["default"].createElement(_icons.VertThreeDots, {
126
190
  height: "14px"
127
- }))), /*#__PURE__*/_react["default"].createElement(FieldToken, {
128
- type: colMeta[column].type
129
- })), /*#__PURE__*/_react["default"].createElement("section", {
191
+ })))), /*#__PURE__*/_react["default"].createElement("section", {
130
192
  className: "options"
131
193
  }, /*#__PURE__*/_react["default"].createElement(_optionDropdown["default"], {
132
194
  isOpened: moreOptionsColumn === column,
@@ -139,10 +201,27 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
139
201
  pinTableColumn: onPin,
140
202
  copyTableColumn: onCopy,
141
203
  setDisplayFormat: setColumnDisplayFormat ? onSetDisplayFormat : undefined
142
- }))));
204
+ })));
205
+ return /*#__PURE__*/_react["default"].createElement(StyledHeaderCell, {
206
+ className: (0, _classnames2["default"])('header-cell', (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "column-".concat(columnIndex), true), 'pinned-header-cell', isPinned), 'first-cell', firstCell)),
207
+ key: key,
208
+ style: style,
209
+ $hasStats: Boolean(hasStats),
210
+ $firstCell: firstCell,
211
+ title: isGhost ? undefined : column
212
+ }, hasStats && !isGhost ? /*#__PURE__*/_react["default"].createElement("div", {
213
+ className: "header-cell__top"
214
+ }, headerDetails) : headerDetails, hasStats && !isGhost ? /*#__PURE__*/_react["default"].createElement(StyledStatsSpacer, null) : null, hasStats && !isGhost ? /*#__PURE__*/_react["default"].createElement(StyledBottomStats, {
215
+ className: "bottom-stats",
216
+ $showStats: showStats
217
+ }, isLoadingStats ? /*#__PURE__*/_react["default"].createElement(StyledLoading, null, /*#__PURE__*/_react["default"].createElement(_loadingSpinner["default"], null)) : columnStats ? /*#__PURE__*/_react["default"].createElement(ColumnStatisticsSection, {
218
+ columnStats: columnStats,
219
+ type: type,
220
+ format: format
221
+ }) : null) : null);
143
222
  };
144
223
  return HeaderCell;
145
- };
146
- HeaderCellFactory.deps = [_fieldToken["default"]];
224
+ }
225
+ HeaderCellFactory.deps = [_fieldToken["default"], _columnStatisticsNumeric["default"], _columnStatisticsTime["default"]];
147
226
  var _default = exports["default"] = HeaderCellFactory;
148
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lczIiLCJfYnV0dG9uIiwiX2ljb25zIiwiX2NvbnN0YW50cyIsIl9vcHRpb25Ecm9wZG93biIsIl91dGlscyIsIl9maWVsZFRva2VuIiwiX3RlbXBsYXRlT2JqZWN0IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJTdHlsZWRIZWFkZXJDZWxsIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiaGVhZGVyQ2VsbEJvcmRlckNvbG9yIiwiaGVhZGVyUGFkZGluZ1RvcCIsImhlYWRlclBhZGRpbmdCb3R0b20iLCJjZWxsUGFkZGluZ1NpZGUiLCJoZWFkZXJDZWxsQmFja2dyb3VuZCIsIkhlYWRlckNlbGxGYWN0b3J5IiwiRmllbGRUb2tlbiIsIkhlYWRlckNlbGwiLCJfcmVmIiwiX2NvbE1ldGEkY29sdW1uIiwiY2VsbEluZm8iLCJjb2x1bW5zIiwiaXNQaW5uZWQiLCJ0b2dnbGVNb3JlT3B0aW9ucyIsIm1vcmVPcHRpb25zQ29sdW1uIiwiY29sdW1uSW5kZXgiLCJrZXkiLCJzdHlsZSIsImNvbE1ldGEiLCJzb3J0Q29sdW1uIiwic29ydFRhYmxlQ29sdW1uIiwicGluVGFibGVDb2x1bW4iLCJjb3B5VGFibGVDb2x1bW4iLCJzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0IiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2hvd0Zvcm1hdHRlciIsInNldFNob3dGb3JtYXR0ZXIiLCJjb2x1bW4iLCJpc0dob3N0IiwiZ2hvc3QiLCJpc1NvcnRlZCIsImZpcnN0Q2VsbCIsImlzRm9ybWF0dGVkIiwiQm9vbGVhbiIsImRpc3BsYXlGb3JtYXQiLCJmb3JtYXRMYWJlbHMiLCJnZXRGaWVsZEZvcm1hdExhYmVscyIsInR5cGUiLCJvblNvcnRUYWJsZSIsInVzZUNhbGxiYWNrIiwib25Ub2dnbGVPcHRpb25NZW51Iiwib25QaW4iLCJvbkNvcHkiLCJvblNldERpc3BsYXlGb3JtYXQiLCJfZGVmaW5lUHJvcGVydHkyIiwiZm9ybWF0Iiwib25Ub2dnbGVEaXNwbGF5Rm9ybWF0IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNsYXNzbmFtZXMiLCJjb25jYXQiLCJvbkNsaWNrIiwic2hpZnRLZXkiLCJvbkRvdWJsZUNsaWNrIiwidGl0bGUiLCJGcmFnbWVudCIsIm5hbWUiLCJTT1JUX09SREVSIiwiQVNDRU5ESU5HIiwiQXJyb3dVcCIsImhlaWdodCIsIkFycm93RG93biIsIkhhc2giLCJGb3JtYXR0ZXJEcm9wZG93biIsImxlZnQiLCJ0b3AiLCJpc09wZW5lZCIsInNldERpc3BsYXlGb3JtYXQiLCJvbkNsb3NlIiwiVmVydFRocmVlRG90cyIsIm1vZGUiLCJ1bmRlZmluZWQiLCJkZXBzIiwiRmllbGRUb2tlbkZhY3RvcnkiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RhdGEtdGFibGUvaGVhZGVyLWNlbGwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NTU1Byb3BlcnRpZXMsIHVzZVN0YXRlLCB1c2VDYWxsYmFja30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi9idXR0b24nO1xuaW1wb3J0IHtBcnJvd1VwLCBBcnJvd0Rvd24sIFZlcnRUaHJlZURvdHMsIEhhc2h9IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge1NPUlRfT1JERVJ9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBPcHRpb25Ecm9wZG93biwge0Zvcm1hdHRlckRyb3Bkb3dufSBmcm9tICcuL29wdGlvbi1kcm9wZG93bic7XG5pbXBvcnQge2dldEZpZWxkRm9ybWF0TGFiZWxzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7Q29sTWV0YX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQgRmllbGRUb2tlbkZhY3RvcnksIHtGaWVsZFRva2VuUHJvcHN9IGZyb20gJy4uLy4uL2NvbW1vbi9maWVsZC10b2tlbic7XG5pbXBvcnQge0RhdGFUYWJsZVByb3BzfSBmcm9tICcuL2luZGV4JztcblxuY29uc3QgU3R5bGVkSGVhZGVyQ2VsbCA9IHN0eWxlZC5kaXZgXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxCb3JkZXJDb2xvcn07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxCb3JkZXJDb2xvcn07XG4gIHBhZGRpbmctdG9wOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlclBhZGRpbmdUb3B9cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlclBhZGRpbmdCb3R0b219cHg7XG4gIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGV9cHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsQmFja2dyb3VuZH07XG5cbiAgLm4tc29ydC1pZHgge1xuICAgIGZvbnQtc2l6ZTogOXB4O1xuICB9XG4gIC5kZXRhaWxzIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZmxleC1ncm93OiAxO1xuXG4gICAgLmNvbC1uYW1lIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgICAuY29sLW5hbWVfX2xlZnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDZweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNvbC1uYW1lX19uYW1lIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1vcmUge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIH1cblxuICAuY29sLW5hbWVfX2Zvcm1hdCBzdmcge1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgICBzdHJva2Utd2lkdGg6IDE7XG4gIH1cbmA7XG5cbnR5cGUgQ2VsbEluZm8gPSB7XG4gIGNvbHVtbkluZGV4OiBudW1iZXI7XG4gIGlzU2Nyb2xsaW5nOiBib29sZWFuO1xuICBpc1Zpc2libGU6IGJvb2xlYW47XG4gIGtleTogc3RyaW5nO1xuICBwYXJlbnQ6IGFueTtcbiAgcm93SW5kZXg6IG51bWJlcjtcbiAgc3R5bGU6IENTU1Byb3BlcnRpZXM7XG59O1xuXG50eXBlIEhlYWRlckNlbGxQcm9wcyA9IHtcbiAgLy8gcGFzc2VkIGRvd24gZnJvbSByZWFjdCB2aXJ0dWFsaXplZCBHcmlkXG4gIGNlbGxJbmZvOiBDZWxsSW5mbztcbiAgY29sdW1uczogRGF0YVRhYmxlUHJvcHNbJ2NvbHVtbnMnXTtcbiAgY29sTWV0YT86IENvbE1ldGE7XG4gIGlzUGlubmVkPzogYm9vbGVhbjtcbiAgc2hvd1N0YXRzPzogYm9vbGVhbjtcbiAgcHJvcHM6IERhdGFUYWJsZVByb3BzO1xuICB0b2dnbGVNb3JlT3B0aW9uczogKG1vcmVPcHRpb25zQ29sdW1uOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG1vcmVPcHRpb25zQ29sdW1uOiBudWxsIHwgc3RyaW5nO1xuICBzdHlsZTogQ1NTUHJvcGVydGllcztcbn07XG5cbmNvbnN0IEhlYWRlckNlbGxGYWN0b3J5ID0gKEZpZWxkVG9rZW46IFJlYWN0LkZDPEZpZWxkVG9rZW5Qcm9wcz4pID0+IHtcbiAgY29uc3QgSGVhZGVyQ2VsbCA9ICh7XG4gICAgY2VsbEluZm8sXG4gICAgY29sdW1ucyxcbiAgICBpc1Bpbm5lZCxcbiAgICBwcm9wcyxcbiAgICB0b2dnbGVNb3JlT3B0aW9ucyxcbiAgICBtb3JlT3B0aW9uc0NvbHVtblxuICB9OiBIZWFkZXJDZWxsUHJvcHMpID0+IHtcbiAgICBjb25zdCB7Y29sdW1uSW5kZXgsIGtleSwgc3R5bGV9ID0gY2VsbEluZm87XG4gICAgY29uc3Qge1xuICAgICAgY29sTWV0YSxcbiAgICAgIHNvcnRDb2x1bW4sXG4gICAgICBzb3J0VGFibGVDb2x1bW4sXG4gICAgICBwaW5UYWJsZUNvbHVtbixcbiAgICAgIGNvcHlUYWJsZUNvbHVtbixcbiAgICAgIHNldENvbHVtbkRpc3BsYXlGb3JtYXRcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgW3Nob3dGb3JtYXR0ZXIsIHNldFNob3dGb3JtYXR0ZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnNbY29sdW1uSW5kZXhdO1xuXG4gICAgY29uc3QgaXNHaG9zdCA9IGNvbHVtbi5naG9zdDtcbiAgICBjb25zdCBpc1NvcnRlZCA9IHNvcnRDb2x1bW5bY29sdW1uXTtcbiAgICBjb25zdCBmaXJzdENlbGwgPSBjb2x1bW5JbmRleCA9PT0gMDtcbiAgICBjb25zdCBpc0Zvcm1hdHRlZCA9IEJvb2xlYW4oY29sTWV0YVtjb2x1bW5dPy5kaXNwbGF5Rm9ybWF0KTtcbiAgICBjb25zdCBmb3JtYXRMYWJlbHMgPSBpc0Zvcm1hdHRlZCA/IGdldEZpZWxkRm9ybWF0TGFiZWxzKGNvbE1ldGFbY29sdW1uXS50eXBlKSA6IFtdO1xuICAgIGNvbnN0IG9uU29ydFRhYmxlID0gdXNlQ2FsbGJhY2soKCkgPT4gc29ydFRhYmxlQ29sdW1uPy4oY29sdW1uKSwgW3NvcnRUYWJsZUNvbHVtbiwgY29sdW1uXSk7XG4gICAgY29uc3Qgb25Ub2dnbGVPcHRpb25NZW51ID0gdXNlQ2FsbGJhY2soXG4gICAgICAoKSA9PiB0b2dnbGVNb3JlT3B0aW9ucyhjb2x1bW4pLFxuICAgICAgW3RvZ2dsZU1vcmVPcHRpb25zLCBjb2x1bW5dXG4gICAgKTtcbiAgICBjb25zdCBvblBpbiA9IHVzZUNhbGxiYWNrKCgpID0+IHBpblRhYmxlQ29sdW1uKGNvbHVtbiksIFtwaW5UYWJsZUNvbHVtbiwgY29sdW1uXSk7XG4gICAgY29uc3Qgb25Db3B5ID0gdXNlQ2FsbGJhY2soKCkgPT4gY29weVRhYmxlQ29sdW1uKGNvbHVtbiksIFtjb3B5VGFibGVDb2x1bW4sIGNvbHVtbl0pO1xuICAgIGNvbnN0IG9uU2V0RGlzcGxheUZvcm1hdCA9IHVzZUNhbGxiYWNrKFxuICAgICAgZGlzcGxheUZvcm1hdCA9PiB7XG4gICAgICAgIHNldENvbHVtbkRpc3BsYXlGb3JtYXQ/Lih7W2NvbHVtbl06IGRpc3BsYXlGb3JtYXQuZm9ybWF0fSk7XG4gICAgICB9LFxuICAgICAgW2NvbHVtbiwgc2V0Q29sdW1uRGlzcGxheUZvcm1hdF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Ub2dnbGVEaXNwbGF5Rm9ybWF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0U2hvd0Zvcm1hdHRlcighc2hvd0Zvcm1hdHRlcik7XG4gICAgfSwgW3Nob3dGb3JtYXR0ZXJdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkSGVhZGVyQ2VsbFxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2hlYWRlci1jZWxsJywge1xuICAgICAgICAgIFtgY29sdW1uLSR7Y29sdW1uSW5kZXh9YF06IHRydWUsXG4gICAgICAgICAgJ3Bpbm5lZC1oZWFkZXItY2VsbCc6IGlzUGlubmVkLFxuICAgICAgICAgICdmaXJzdC1jZWxsJzogZmlyc3RDZWxsXG4gICAgICAgIH0pfVxuICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICBlLnNoaWZ0S2V5ID8gc29ydFRhYmxlQ29sdW1uKGNvbHVtbikgOiBudWxsO1xuICAgICAgICB9fVxuICAgICAgICBvbkRvdWJsZUNsaWNrPXtvblNvcnRUYWJsZX1cbiAgICAgICAgdGl0bGU9e2NvbHVtbn1cbiAgICAgID5cbiAgICAgICAge2lzR2hvc3QgPyAoXG4gICAgICAgICAgPGRpdiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJkZXRhaWxzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW5hbWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1uYW1lX19sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1uYW1lX19uYW1lXCI+e2NvbE1ldGFbY29sdW1uXS5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJjb2wtbmFtZV9fc29ydFwiIG9uQ2xpY2s9e29uU29ydFRhYmxlfT5cbiAgICAgICAgICAgICAgICAgICAge2lzU29ydGVkID8gKFxuICAgICAgICAgICAgICAgICAgICAgIGlzU29ydGVkID09PSBTT1JUX09SREVSLkFTQ0VORElORyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd1VwIGhlaWdodD1cIjE0cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8QXJyb3dEb3duIGhlaWdodD1cIjE0cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiY29sLW5hbWVfX2Zvcm1hdFwiIG9uQ2xpY2s9e29uVG9nZ2xlRGlzcGxheUZvcm1hdH0+XG4gICAgICAgICAgICAgICAgICAgIHtpc0Zvcm1hdHRlZCA/IDxIYXNoIGhlaWdodD1cIjE0cHhcIiAvPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZXJEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICAgIGxlZnQ9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgdG9wPXswfVxuICAgICAgICAgICAgICAgICAgICAgIGlzT3BlbmVkPXtpc0Zvcm1hdHRlZCAmJiBzaG93Rm9ybWF0dGVyfVxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9e2NvbE1ldGFbY29sdW1uXS5kaXNwbGF5Rm9ybWF0fVxuICAgICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlGb3JtYXQ9e29uU2V0RGlzcGxheUZvcm1hdH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Rm9ybWF0dGVyKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRMYWJlbHM9e2Zvcm1hdExhYmVsc31cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwibW9yZVwiIG9uQ2xpY2s9e29uVG9nZ2xlT3B0aW9uTWVudX0+XG4gICAgICAgICAgICAgICAgICA8VmVydFRocmVlRG90cyBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxGaWVsZFRva2VuIHR5cGU9e2NvbE1ldGFbY29sdW1uXS50eXBlfSAvPlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJvcHRpb25zXCI+XG4gICAgICAgICAgICAgIDxPcHRpb25Ecm9wZG93blxuICAgICAgICAgICAgICAgIGlzT3BlbmVkPXttb3JlT3B0aW9uc0NvbHVtbiA9PT0gY29sdW1ufVxuICAgICAgICAgICAgICAgIGNvbHVtbj17Y29sdW1ufVxuICAgICAgICAgICAgICAgIGNvbE1ldGE9e2NvbE1ldGF9XG4gICAgICAgICAgICAgICAgdG9nZ2xlTW9yZU9wdGlvbnM9e3RvZ2dsZU1vcmVPcHRpb25zfVxuICAgICAgICAgICAgICAgIHNvcnRUYWJsZUNvbHVtbj17XG4gICAgICAgICAgICAgICAgICBzb3J0VGFibGVDb2x1bW4gPyBtb2RlID0+IHNvcnRUYWJsZUNvbHVtbihjb2x1bW4sIG1vZGUpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBpblRhYmxlQ29sdW1uPXtvblBpbn1cbiAgICAgICAgICAgICAgICBjb3B5VGFibGVDb2x1bW49e29uQ29weX1cbiAgICAgICAgICAgICAgICBzZXREaXNwbGF5Rm9ybWF0PXtzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0ID8gb25TZXREaXNwbGF5Rm9ybWF0IDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9TdHlsZWRIZWFkZXJDZWxsPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBIZWFkZXJDZWxsO1xufTtcbkhlYWRlckNlbGxGYWN0b3J5LmRlcHMgPSBbRmllbGRUb2tlbkZhY3RvcnldO1xuZXhwb3J0IGRlZmF1bHQgSGVhZGVyQ2VsbEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGVBQUEsR0FBQVIsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQUVBLElBQUFTLFdBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUE0RSxJQUFBVSxlQUFBLEVBWjVFO0FBQ0E7QUFBQSxTQUFBWCx3QkFBQVksQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9B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RSxDQUFFO01BQ1BDLFFBQVEsRUFBRWxDLFdBQVcsSUFBSVAsYUFBYztNQUN2Q1MsYUFBYSxFQUFFbkIsT0FBTyxDQUFDWSxNQUFNLENBQUMsQ0FBQ08sYUFBYztNQUM3Q2lDLGdCQUFnQixFQUFFeEIsa0JBQW1CO01BQ3JDeUIsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7UUFBQSxPQUFRMUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO01BQUEsQ0FBQztNQUN2Q1MsWUFBWSxFQUFFQTtJQUFhLENBQzVCLENBQ0ssQ0FDTCxDQUFDLGVBQ043RSxNQUFBLFlBQUF5RixhQUFBLENBQUNuRixPQUFBLFdBQU07TUFBQ29GLFNBQVMsRUFBQyxNQUFNO01BQUNHLE9BQU8sRUFBRVg7SUFBbUIsZ0JBQ25EbEYsTUFBQSxZQUFBeUYsYUFBQSxDQUFDbEYsTUFBQSxDQUFBd0csYUFBYTtNQUFDVCxNQUFNLEVBQUM7SUFBTSxDQUFFLENBQ3hCLENBQ0wsQ0FBQyxlQUNOdEcsTUFBQSxZQUFBeUYsYUFBQSxDQUFDNUMsVUFBVTtNQUFDa0MsSUFBSSxFQUFFdEIsT0FBTyxDQUFDWSxNQUFNLENBQUMsQ0FBQ1U7SUFBSyxDQUFFLENBQ2xDLENBQUMsZUFFVi9FLE1BQUEsWUFBQXlGLGFBQUE7TUFBU0MsU0FBUyxFQUFDO0lBQVMsZ0JBQzFCMUYsTUFBQSxZQUFBeUYsYUFBQSxDQUFDaEYsZUFBQSxXQUFjO01BQ2JtRyxRQUFRLEVBQUV2RCxpQkFBaUIsS0FBS2dCLE1BQU87TUFDdkNBLE1BQU0sRUFBRUEsTUFBTztNQUNmWixPQUFPLEVBQUVBLE9BQVE7TUFDakJMLGlCQUFpQixFQUFFQSxpQkFBa0I7TUFDckNPLGVBQWUsRUFDYkEsZUFBZSxHQUFHLFVBQUFxRCxJQUFJO1FBQUEsT0FBSXJELGVBQWUsQ0FBQ1UsTUFBTSxFQUFFMkMsSUFBSSxDQUFDO01BQUEsSUFBR0MsU0FDM0Q7TUFDRHJELGNBQWMsRUFBRXVCLEtBQU07TUFDdEJ0QixlQUFlLEVBQUV1QixNQUFPO01BQ3hCeUIsZ0JBQWdCLEVBQUUvQyxzQkFBc0IsR0FBR3VCLGtCQUFrQixHQUFHNEI7SUFBVSxDQUMzRSxDQUNNLENBQ1QsQ0FFWSxDQUFDO0VBRXZCLENBQUM7RUFDRCxPQUFPbkUsVUFBVTtBQUNuQixDQUFDO0FBQ0RGLGlCQUFpQixDQUFDc0UsSUFBSSxHQUFHLENBQUNDLHNCQUFpQixDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUFBQyxPQUFBLGNBQzlCekUsaUJBQWlCIiwiaWdub3JlTGlzdCI6W119
227
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lczIiLCJfYnV0dG9uIiwiX2ljb25zIiwiX2NvbnN0YW50cyIsIl9vcHRpb25Ecm9wZG93biIsIl91dGlscyIsIl9maWVsZFRva2VuIiwiX2xvYWRpbmdTcGlubmVyIiwiX2NvbHVtblN0YXRpc3RpY3NDYXRlZ29yaWMiLCJfY29sdW1uU3RhdGlzdGljc051bWVyaWMiLCJfY29sdW1uU3RhdGlzdGljc1RpbWUiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIlN0eWxlZEhlYWRlckNlbGwiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJoZWFkZXJDZWxsQm9yZGVyQ29sb3IiLCIkaGFzU3RhdHMiLCJjb25jYXQiLCJjZWxsQm9yZGVyQ29sb3IiLCJoZWFkZXJQYWRkaW5nVG9wIiwiaGVhZGVyUGFkZGluZ0JvdHRvbSIsImNlbGxQYWRkaW5nU2lkZSIsImhlYWRlckNlbGxCYWNrZ3JvdW5kIiwiaGVhZGVyUm93SGVpZ2h0IiwiJGZpcnN0Q2VsbCIsImVkZ2VDZWxsUGFkZGluZ1NpZGUiLCJjZWxsRm9udFNpemUiLCJTdHlsZWRCb3R0b21TdGF0cyIsImhlYWRlckNlbGxTdGF0c0JhY2tncm91bmQiLCIkc2hvd1N0YXRzIiwiU3R5bGVkTG9hZGluZyIsIlN0eWxlZFN0YXRzU3BhY2VyIiwiaGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0IiwiSGVhZGVyQ2VsbEZhY3RvcnkiLCJGaWVsZFRva2VuIiwiQ29sdW1uU3RhdGlzdGljc051bWVyaWMiLCJDb2x1bW5TdGF0aXN0aWNzVGltZSIsIkNvbHVtblN0YXRpc3RpY3NTZWN0aW9uIiwiX3JlZiIsImNvbHVtblN0YXRzIiwidHlwZSIsImZvcm1hdCIsIkNvbHVtblN0YXRzVHlwZSIsIm51bWVyaWMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwiY2F0ZWdvcmljYWwiLCJ0aW1lIiwiSGVhZGVyQ2VsbCIsIl9yZWYyIiwiX2NvbE1ldGEkY29sdW1uIiwiY2VsbEluZm8iLCJjb2x1bW5zIiwiaXNQaW5uZWQiLCJzaG93U3RhdHMiLCJ0b2dnbGVNb3JlT3B0aW9ucyIsIm1vcmVPcHRpb25zQ29sdW1uIiwiY29sdW1uSW5kZXgiLCJrZXkiLCJzdHlsZSIsImNvbE1ldGEiLCJzb3J0Q29sdW1uIiwic29ydFRhYmxlQ29sdW1uIiwicGluVGFibGVDb2x1bW4iLCJjb3B5VGFibGVDb2x1bW4iLCJzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0IiwiaGFzU3RhdHMiLCJkYXRhSWQiLCJsb2FkQ29sdW1uU3RhdHMiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzaG93Rm9ybWF0dGVyIiwic2V0U2hvd0Zvcm1hdHRlciIsImNvbHVtbiIsImlzR2hvc3QiLCJCb29sZWFuIiwiZ2hvc3QiLCJpc1NvcnRlZCIsImZpcnN0Q2VsbCIsIl9yZWYzIiwiaXNMb2FkaW5nU3RhdHMiLCJpc0Zvcm1hdHRlZCIsImRpc3BsYXlGb3JtYXQiLCJmb3JtYXRMYWJlbHMiLCJnZXRGaWVsZEZvcm1hdExhYmVscyIsInVzZUVmZmVjdCIsIm9uU29ydFRhYmxlIiwidXNlQ2FsbGJhY2siLCJvblRvZ2dsZU9wdGlvbk1lbnUiLCJvblBpbiIsIm9uQ29weSIsIm9uU2V0RGlzcGxheUZvcm1hdCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJvblRvZ2dsZURpc3BsYXlGb3JtYXQiLCJoZWFkZXJEZXRhaWxzIiwiRnJhZ21lbnQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwic2hpZnRLZXkiLCJvbkRvdWJsZUNsaWNrIiwibmFtZSIsIlNPUlRfT1JERVIiLCJBU0NFTkRJTkciLCJBcnJvd1VwIiwiaGVpZ2h0IiwiQXJyb3dEb3duIiwiSGFzaCIsIkZvcm1hdHRlckRyb3Bkb3duIiwibGVmdCIsInRvcCIsImlzT3BlbmVkIiwic2V0RGlzcGxheUZvcm1hdCIsIm9uQ2xvc2UiLCJWZXJ0VGhyZWVEb3RzIiwibW9kZSIsInVuZGVmaW5lZCIsImNsYXNzbmFtZXMiLCJ0aXRsZSIsImRlcHMiLCJGaWVsZFRva2VuRmFjdG9yeSIsIkNvbHVtblN0YXRpc3RpY3NOdW1lcmljRmFjdG9yeSIsIkNvbHVtblN0YXRpc3RpY3NUaW1lRmFjdG9yeSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vZGF0YS10YWJsZS9oZWFkZXItY2VsbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q1NTUHJvcGVydGllcywgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4vYnV0dG9uJztcbmltcG9ydCB7QXJyb3dVcCwgQXJyb3dEb3duLCBWZXJ0VGhyZWVEb3RzLCBIYXNofSBmcm9tICcuLi8uLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtTT1JUX09SREVSfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgT3B0aW9uRHJvcGRvd24sIHtGb3JtYXR0ZXJEcm9wZG93bn0gZnJvbSAnLi9vcHRpb24tZHJvcGRvd24nO1xuaW1wb3J0IHtDb2x1bW5TdGF0c1R5cGUsIGdldEZpZWxkRm9ybWF0TGFiZWxzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7Q29sTWV0YX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQgRmllbGRUb2tlbkZhY3RvcnksIHtGaWVsZFRva2VuUHJvcHN9IGZyb20gJy4uLy4uL2NvbW1vbi9maWVsZC10b2tlbic7XG5pbXBvcnQge0RhdGFUYWJsZVByb3BzfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICcuLi9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IENvbHVtblN0YXRpc3RpY3NDYXRlZ29yaWNhbCBmcm9tICcuL2NvbHVtbi1zdGF0aXN0aWNzLWNhdGVnb3JpYyc7XG5pbXBvcnQgQ29sdW1uU3RhdGlzdGljc051bWVyaWNGYWN0b3J5LCB7XG4gIENvbHVtblN0YXRpc3RpY3NOdW1lcmljUHJvcHNcbn0gZnJvbSAnLi9jb2x1bW4tc3RhdGlzdGljcy1udW1lcmljJztcbmltcG9ydCBDb2x1bW5TdGF0aXN0aWNzVGltZUZhY3RvcnksIHtDb2x1bW5TdGF0aXN0aWNzVGltZVByb3BzfSBmcm9tICcuL2NvbHVtbi1zdGF0aXN0aWNzLXRpbWUnO1xuXG5jb25zdCBTdHlsZWRIZWFkZXJDZWxsID0gc3R5bGVkLmRpdjx7JGhhc1N0YXRzPzogYm9vbGVhbjsgJGZpcnN0Q2VsbD86IGJvb2xlYW59PmBcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyQ2VsbEJvcmRlckNvbG9yfTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyQ2VsbEJvcmRlckNvbG9yfTtcbiAgYm9yZGVyLXJpZ2h0OiAke3Byb3BzID0+IChwcm9wcy4kaGFzU3RhdHMgPyBgMXB4IHNvbGlkICR7cHJvcHMudGhlbWUuY2VsbEJvcmRlckNvbG9yfWAgOiAnbm9uZScpfTtcbiAgcGFkZGluZy10b3A6ICR7cHJvcHMgPT4gKHByb3BzLiRoYXNTdGF0cyA/IDAgOiBwcm9wcy50aGVtZS5oZWFkZXJQYWRkaW5nVG9wKX1weDtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206ICR7cHJvcHMgPT4gKHByb3BzLiRoYXNTdGF0cyA/IDAgOiBwcm9wcy50aGVtZS5oZWFkZXJQYWRkaW5nQm90dG9tKX1weDtcbiAgcGFkZGluZy1sZWZ0OiAke3Byb3BzID0+IChwcm9wcy4kaGFzU3RhdHMgPyAwIDogcHJvcHMudGhlbWUuY2VsbFBhZGRpbmdTaWRlKX1weDtcbiAgYWxpZ24taXRlbXM6ICR7cHJvcHMgPT4gKHByb3BzLiRoYXNTdGF0cyA/ICdzdHJldGNoJyA6ICdjZW50ZXInKX07XG4gIGp1c3RpZnktY29udGVudDogJHtwcm9wcyA9PiAocHJvcHMuJGhhc1N0YXRzID8gJ2ZsZXgtc3RhcnQnIDogJ3NwYWNlLWJldHdlZW4nKX07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiAke3Byb3BzID0+IChwcm9wcy4kaGFzU3RhdHMgPyAnY29sdW1uJyA6ICdyb3cnKX07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyQ2VsbEJhY2tncm91bmR9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC5uLXNvcnQtaWR4IHtcbiAgICBmb250LXNpemU6IDlweDtcbiAgfVxuICAuaGVhZGVyLWNlbGxfX3RvcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJSb3dIZWlnaHR9cHg7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nLXRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJQYWRkaW5nVG9wfXB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlclBhZGRpbmdCb3R0b219cHg7XG4gICAgcGFkZGluZy1sZWZ0OiAke3Byb3BzID0+XG4gICAgICBwcm9wcy4kZmlyc3RDZWxsXG4gICAgICAgID8gcHJvcHMudGhlbWUuY2VsbFBhZGRpbmdTaWRlICsgcHJvcHMudGhlbWUuZWRnZUNlbGxQYWRkaW5nU2lkZVxuICAgICAgICA6IHByb3BzLnRoZW1lLmNlbGxQYWRkaW5nU2lkZX1weDtcbiAgfVxuICAuZGV0YWlscyB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbEZvbnRTaXplfXB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAuY29sLW5hbWUge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgZmxleDogMTtcblxuICAgICAgLmNvbC1uYW1lX19sZWZ0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5jb2wtbmFtZV9fbmFtZSB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tb3JlIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICB9XG5cbiAgLmNvbC1uYW1lX19mb3JtYXQgc3ZnIHtcbiAgICB3aWR0aDogMTBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgc3Ryb2tlLXdpZHRoOiAxO1xuICB9XG5gO1xuXG50eXBlIFN0eWxlZEJvdHRvbVN0YXRzUHJvcHMgPSB7XG4gICRzaG93U3RhdHM/OiBib29sZWFuO1xufTtcblxuY29uc3QgU3R5bGVkQm90dG9tU3RhdHMgPSBzdHlsZWQuZGl2PFN0eWxlZEJvdHRvbVN0YXRzUHJvcHM+YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxTdGF0c0JhY2tncm91bmR9O1xuICBmbGV4LWdyb3c6IDE7XG4gIG1pbi1oZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG9wYWNpdHk6ICR7cHJvcHMgPT4gKHByb3BzLiRzaG93U3RhdHMgPyAxIDogMCl9O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7XG4gIHBvaW50ZXItZXZlbnRzOiAke3Byb3BzID0+IChwcm9wcy4kc2hvd1N0YXRzID8gJ2F1dG8nIDogJ25vbmUnKX07XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkTG9hZGluZyA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLXRvcDogMTZweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5gO1xuXG5jb25zdCBTdHlsZWRTdGF0c1NwYWNlciA9IHN0eWxlZC5kaXZgXG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJTdGF0c0NvbnRyb2xIZWlnaHR9cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBmbGV4LWdyb3c6IDA7XG5gO1xuXG50eXBlIENlbGxJbmZvID0ge1xuICBjb2x1bW5JbmRleDogbnVtYmVyO1xuICBpc1Njcm9sbGluZzogYm9vbGVhbjtcbiAgaXNWaXNpYmxlOiBib29sZWFuO1xuICBrZXk6IHN0cmluZztcbiAgcGFyZW50OiBhbnk7XG4gIHJvd0luZGV4OiBudW1iZXI7XG4gIHN0eWxlOiBDU1NQcm9wZXJ0aWVzO1xufTtcblxuZXhwb3J0IHR5cGUgSGVhZGVyQ2VsbFByb3BzID0ge1xuICAvLyBwYXNzZWQgZG93biBmcm9tIHJlYWN0IHZpcnR1YWxpemVkIEdyaWRcbiAgY2VsbEluZm86IENlbGxJbmZvO1xuICBjb2x1bW5zOiBEYXRhVGFibGVQcm9wc1snY29sdW1ucyddO1xuICBjb2xNZXRhPzogQ29sTWV0YTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xuICBzaG93U3RhdHM/OiBib29sZWFuO1xuICBwcm9wczogRGF0YVRhYmxlUHJvcHM7XG4gIHRvZ2dsZU1vcmVPcHRpb25zOiAobW9yZU9wdGlvbnNDb2x1bW46IHN0cmluZykgPT4gdm9pZDtcbiAgbW9yZU9wdGlvbnNDb2x1bW46IG51bGwgfCBzdHJpbmc7XG4gIHN0eWxlOiBDU1NQcm9wZXJ0aWVzO1xufTtcblxuZnVuY3Rpb24gSGVhZGVyQ2VsbEZhY3RvcnkoXG4gIEZpZWxkVG9rZW46IFJlYWN0LkZDPEZpZWxkVG9rZW5Qcm9wcz4sXG4gIENvbHVtblN0YXRpc3RpY3NOdW1lcmljOiBSZWFjdC5GQzxDb2x1bW5TdGF0aXN0aWNzTnVtZXJpY1Byb3BzPixcbiAgQ29sdW1uU3RhdGlzdGljc1RpbWU6IFJlYWN0LkZDPENvbHVtblN0YXRpc3RpY3NUaW1lUHJvcHM+XG4pIHtcbiAgY29uc3QgQ29sdW1uU3RhdGlzdGljc1NlY3Rpb246IFJlYWN0LkZDPHtcbiAgICBjb2x1bW5TdGF0czogYW55O1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XG4gIH0+ID0gKHtjb2x1bW5TdGF0cywgdHlwZSwgZm9ybWF0fSkgPT4ge1xuICAgIHN3aXRjaCAoY29sdW1uU3RhdHMudHlwZSkge1xuICAgICAgY2FzZSBDb2x1bW5TdGF0c1R5cGUubnVtZXJpYzpcbiAgICAgICAgcmV0dXJuIDxDb2x1bW5TdGF0aXN0aWNzTnVtZXJpYyB7Li4uY29sdW1uU3RhdHN9IHR5cGU9e3R5cGV9IC8+O1xuICAgICAgY2FzZSBDb2x1bW5TdGF0c1R5cGUuY2F0ZWdvcmljYWw6XG4gICAgICAgIHJldHVybiA8Q29sdW1uU3RhdGlzdGljc0NhdGVnb3JpY2FsIHsuLi5jb2x1bW5TdGF0c30gLz47XG4gICAgICBjYXNlIENvbHVtblN0YXRzVHlwZS50aW1lOlxuICAgICAgICByZXR1cm4gPENvbHVtblN0YXRpc3RpY3NUaW1lIHsuLi5jb2x1bW5TdGF0c30gZm9ybWF0PXtmb3JtYXR9IC8+O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDxkaXYgLz47XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IEhlYWRlckNlbGwgPSAoe1xuICAgIGNlbGxJbmZvLFxuICAgIGNvbHVtbnMsXG4gICAgaXNQaW5uZWQsXG4gICAgc2hvd1N0YXRzLFxuICAgIHByb3BzLFxuICAgIHRvZ2dsZU1vcmVPcHRpb25zLFxuICAgIG1vcmVPcHRpb25zQ29sdW1uXG4gIH06IEhlYWRlckNlbGxQcm9wcykgPT4ge1xuICAgIGNvbnN0IHtjb2x1bW5JbmRleCwga2V5LCBzdHlsZX0gPSBjZWxsSW5mbztcbiAgICBjb25zdCB7XG4gICAgICBjb2xNZXRhLFxuICAgICAgc29ydENvbHVtbixcbiAgICAgIHNvcnRUYWJsZUNvbHVtbixcbiAgICAgIHBpblRhYmxlQ29sdW1uLFxuICAgICAgY29weVRhYmxlQ29sdW1uLFxuICAgICAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdCxcbiAgICAgIGhhc1N0YXRzLFxuICAgICAgZGF0YUlkLFxuICAgICAgbG9hZENvbHVtblN0YXRzXG4gICAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtzaG93Rm9ybWF0dGVyLCBzZXRTaG93Rm9ybWF0dGVyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2NvbHVtbkluZGV4XTtcblxuICAgIGNvbnN0IGlzR2hvc3QgPSBCb29sZWFuKGNvbHVtbi5naG9zdCk7XG4gICAgY29uc3QgaXNTb3J0ZWQgPSBpc0dob3N0ID8gZmFsc2UgOiBzb3J0Q29sdW1uW2NvbHVtbl07XG4gICAgY29uc3QgZmlyc3RDZWxsID0gY29sdW1uSW5kZXggPT09IDA7XG4gICAgY29uc3Qge2NvbHVtblN0YXRzLCBpc0xvYWRpbmdTdGF0cywgdHlwZSwgZm9ybWF0fSA9IGNvbE1ldGFbaXNHaG9zdCA/ICcnIDogY29sdW1uXSB8fCB7fTtcbiAgICBjb25zdCBpc0Zvcm1hdHRlZCA9IGlzR2hvc3QgPyBmYWxzZSA6IEJvb2xlYW4oY29sTWV0YVtjb2x1bW5dPy5kaXNwbGF5Rm9ybWF0KTtcbiAgICBjb25zdCBmb3JtYXRMYWJlbHMgPSBpc0Zvcm1hdHRlZCAmJiAhaXNHaG9zdCA/IGdldEZpZWxkRm9ybWF0TGFiZWxzKGNvbE1ldGFbY29sdW1uXS50eXBlKSA6IFtdO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzR2hvc3QgJiZcbiAgICAgICAgIWNvbHVtblN0YXRzICYmXG4gICAgICAgICFpc0xvYWRpbmdTdGF0cyAmJlxuICAgICAgICBkYXRhSWQgJiZcbiAgICAgICAgc2hvd1N0YXRzICYmXG4gICAgICAgIGhhc1N0YXRzICYmXG4gICAgICAgIGxvYWRDb2x1bW5TdGF0c1xuICAgICAgKSB7XG4gICAgICAgIGxvYWRDb2x1bW5TdGF0cyhkYXRhSWQsIGNvbHVtbik7XG4gICAgICB9XG4gICAgfSwgW1xuICAgICAgaXNHaG9zdCxcbiAgICAgIGNvbHVtblN0YXRzLFxuICAgICAgaXNMb2FkaW5nU3RhdHMsXG4gICAgICBjb2x1bW4sXG4gICAgICBkYXRhSWQsXG4gICAgICBzaG93U3RhdHMsXG4gICAgICBoYXNTdGF0cyxcbiAgICAgIGxvYWRDb2x1bW5TdGF0c1xuICAgIF0pO1xuXG4gICAgY29uc3Qgb25Tb3J0VGFibGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoIWlzR2hvc3QpIHNvcnRUYWJsZUNvbHVtbj8uKGNvbHVtbik7XG4gICAgfSwgW3NvcnRUYWJsZUNvbHVtbiwgaXNHaG9zdCwgY29sdW1uXSk7XG4gICAgY29uc3Qgb25Ub2dnbGVPcHRpb25NZW51ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKCFpc0dob3N0KSB0b2dnbGVNb3JlT3B0aW9ucyhjb2x1bW4pO1xuICAgIH0sIFt0b2dnbGVNb3JlT3B0aW9ucywgaXNHaG9zdCwgY29sdW1uXSk7XG4gICAgY29uc3Qgb25QaW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoIWlzR2hvc3QpIHBpblRhYmxlQ29sdW1uKGNvbHVtbik7XG4gICAgfSwgW3BpblRhYmxlQ29sdW1uLCBpc0dob3N0LCBjb2x1bW5dKTtcbiAgICBjb25zdCBvbkNvcHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoIWlzR2hvc3QpIGNvcHlUYWJsZUNvbHVtbihjb2x1bW4pO1xuICAgIH0sIFtjb3B5VGFibGVDb2x1bW4sIGlzR2hvc3QsIGNvbHVtbl0pO1xuICAgIGNvbnN0IG9uU2V0RGlzcGxheUZvcm1hdCA9IHVzZUNhbGxiYWNrKFxuICAgICAgZGlzcGxheUZvcm1hdCA9PiB7XG4gICAgICAgIGlmICghaXNHaG9zdCkgc2V0Q29sdW1uRGlzcGxheUZvcm1hdD8uKHtbY29sdW1uXTogZGlzcGxheUZvcm1hdC5mb3JtYXR9KTtcbiAgICAgIH0sXG4gICAgICBbY29sdW1uLCBpc0dob3N0LCBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0XVxuICAgICk7XG5cbiAgICBjb25zdCBvblRvZ2dsZURpc3BsYXlGb3JtYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRTaG93Rm9ybWF0dGVyKCFzaG93Rm9ybWF0dGVyKTtcbiAgICB9LCBbc2hvd0Zvcm1hdHRlcl0pO1xuXG4gICAgY29uc3QgaGVhZGVyRGV0YWlscyA9IGlzR2hvc3QgPyAoXG4gICAgICA8ZGl2IC8+XG4gICAgKSA6IChcbiAgICAgIDw+XG4gICAgICAgIDxzZWN0aW9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwiZGV0YWlsc1wiXG4gICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5zaGlmdEtleSAmJiAhaXNHaG9zdCkgc29ydFRhYmxlQ29sdW1uPy4oY29sdW1uKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e29uU29ydFRhYmxlfVxuICAgICAgICA+XG4gICAgICAgICAgPEZpZWxkVG9rZW4gdHlwZT17Y29sTWV0YVtjb2x1bW5dLnR5cGV9IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbmFtZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbmFtZV9fbGVmdFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1uYW1lX19uYW1lXCI+e2NvbE1ldGFbY29sdW1uXS5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImNvbC1uYW1lX19zb3J0XCIgb25DbGljaz17b25Tb3J0VGFibGV9PlxuICAgICAgICAgICAgICAgIHtpc1NvcnRlZCA/IChcbiAgICAgICAgICAgICAgICAgIGlzU29ydGVkID09PSBTT1JUX09SREVSLkFTQ0VORElORyA/IChcbiAgICAgICAgICAgICAgICAgICAgPEFycm93VXAgaGVpZ2h0PVwiMTRweFwiIC8+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8QXJyb3dEb3duIGhlaWdodD1cIjE0cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJjb2wtbmFtZV9fZm9ybWF0XCIgb25DbGljaz17b25Ub2dnbGVEaXNwbGF5Rm9ybWF0fT5cbiAgICAgICAgICAgICAgICB7aXNGb3JtYXR0ZWQgPyA8SGFzaCBoZWlnaHQ9XCIxNHB4XCIgLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZXJEcm9wZG93blxuICAgICAgICAgICAgICAgICAgbGVmdD17MH1cbiAgICAgICAgICAgICAgICAgIHRvcD17MH1cbiAgICAgICAgICAgICAgICAgIGlzT3BlbmVkPXtpc0Zvcm1hdHRlZCAmJiBzaG93Rm9ybWF0dGVyfVxuICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD17Y29sTWV0YVtjb2x1bW5dLmRpc3BsYXlGb3JtYXR9XG4gICAgICAgICAgICAgICAgICBzZXREaXNwbGF5Rm9ybWF0PXtvblNldERpc3BsYXlGb3JtYXR9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Rm9ybWF0dGVyKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgIGZvcm1hdExhYmVscz17Zm9ybWF0TGFiZWxzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cIm1vcmVcIiBvbkNsaWNrPXtvblRvZ2dsZU9wdGlvbk1lbnV9PlxuICAgICAgICAgICAgICA8VmVydFRocmVlRG90cyBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwib3B0aW9uc1wiPlxuICAgICAgICAgIDxPcHRpb25Ecm9wZG93blxuICAgICAgICAgICAgaXNPcGVuZWQ9e21vcmVPcHRpb25zQ29sdW1uID09PSBjb2x1bW59XG4gICAgICAgICAgICBjb2x1bW49e2NvbHVtbn1cbiAgICAgICAgICAgIGNvbE1ldGE9e2NvbE1ldGF9XG4gICAgICAgICAgICB0b2dnbGVNb3JlT3B0aW9ucz17dG9nZ2xlTW9yZU9wdGlvbnN9XG4gICAgICAgICAgICBzb3J0VGFibGVDb2x1bW49e3NvcnRUYWJsZUNvbHVtbiA/IG1vZGUgPT4gc29ydFRhYmxlQ29sdW1uKGNvbHVtbiwgbW9kZSkgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBwaW5UYWJsZUNvbHVtbj17b25QaW59XG4gICAgICAgICAgICBjb3B5VGFibGVDb2x1bW49e29uQ29weX1cbiAgICAgICAgICAgIHNldERpc3BsYXlGb3JtYXQ9e3NldENvbHVtbkRpc3BsYXlGb3JtYXQgPyBvblNldERpc3BsYXlGb3JtYXQgOiB1bmRlZmluZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC8+XG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkSGVhZGVyQ2VsbFxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2hlYWRlci1jZWxsJywge1xuICAgICAgICAgIFtgY29sdW1uLSR7Y29sdW1uSW5kZXh9YF06IHRydWUsXG4gICAgICAgICAgJ3Bpbm5lZC1oZWFkZXItY2VsbCc6IGlzUGlubmVkLFxuICAgICAgICAgICdmaXJzdC1jZWxsJzogZmlyc3RDZWxsXG4gICAgICAgIH0pfVxuICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAkaGFzU3RhdHM9e0Jvb2xlYW4oaGFzU3RhdHMpfVxuICAgICAgICAkZmlyc3RDZWxsPXtmaXJzdENlbGx9XG4gICAgICAgIHRpdGxlPXtpc0dob3N0ID8gdW5kZWZpbmVkIDogY29sdW1ufVxuICAgICAgPlxuICAgICAgICB7aGFzU3RhdHMgJiYgIWlzR2hvc3QgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXItY2VsbF9fdG9wXCI+e2hlYWRlckRldGFpbHN9PC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgaGVhZGVyRGV0YWlsc1xuICAgICAgICApfVxuICAgICAgICB7aGFzU3RhdHMgJiYgIWlzR2hvc3QgPyA8U3R5bGVkU3RhdHNTcGFjZXIgLz4gOiBudWxsfVxuICAgICAgICB7aGFzU3RhdHMgJiYgIWlzR2hvc3QgPyAoXG4gICAgICAgICAgPFN0eWxlZEJvdHRvbVN0YXRzIGNsYXNzTmFtZT1cImJvdHRvbS1zdGF0c1wiICRzaG93U3RhdHM9e3Nob3dTdGF0c30+XG4gICAgICAgICAgICB7aXNMb2FkaW5nU3RhdHMgPyAoXG4gICAgICAgICAgICAgIDxTdHlsZWRMb2FkaW5nPlxuICAgICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgICAgICAgICAgICA8L1N0eWxlZExvYWRpbmc+XG4gICAgICAgICAgICApIDogY29sdW1uU3RhdHMgPyAoXG4gICAgICAgICAgICAgIDxDb2x1bW5TdGF0aXN0aWNzU2VjdGlvbiBjb2x1bW5TdGF0cz17Y29sdW1uU3RhdHN9IHR5cGU9e3R5cGV9IGZvcm1hdD17Zm9ybWF0fSAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TdHlsZWRCb3R0b21TdGF0cz5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1N0eWxlZEhlYWRlckNlbGw+XG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIEhlYWRlckNlbGw7XG59XG5IZWFkZXJDZWxsRmFjdG9yeS5kZXBzID0gW1xuICBGaWVsZFRva2VuRmFjdG9yeSxcbiAgQ29sdW1uU3RhdGlzdGljc051bWVyaWNGYWN0b3J5LFxuICBDb2x1bW5TdGF0aXN0aWNzVGltZUZhY3Rvcnlcbl07XG5leHBvcnQgZGVmYXVsdCBIZWFkZXJDZWxsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGVBQUEsR0FBQVIsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQUVBLElBQUFTLFdBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFVLGVBQUEsR0FBQVIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFXLDBCQUFBLEdBQUFULHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBWSx3QkFBQSxHQUFBVixzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQWEscUJBQUEsR0FBQVgsc0JBQUEsQ0FBQUYsT0FBQTtBQUFnRyxJQUFBYyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBbkJoRztBQUNBO0FBQUEsU0FBQWxCLHdCQUFBbUIsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQXJCLHVCQUFBLFlBQUFBLHdCQUFBbUIsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFB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