@kepler.gl/components 3.3.0-alpha.0 → 3.3.0-alpha.2
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.
- package/dist/annotations/annotation-node.d.ts +11 -0
- package/dist/annotations/annotation-node.js +145 -0
- package/dist/annotations/annotation-overlay.d.ts +16 -0
- package/dist/annotations/annotation-overlay.js +166 -0
- package/dist/annotations/annotation-panel.d.ts +24 -0
- package/dist/annotations/annotation-panel.js +362 -0
- package/dist/annotations/annotation-text.d.ts +16 -0
- package/dist/annotations/annotation-text.js +150 -0
- package/dist/annotations/annotation-utils.d.ts +39 -0
- package/dist/annotations/annotation-utils.js +156 -0
- package/dist/annotations/index.d.ts +7 -0
- package/dist/annotations/index.js +53 -0
- package/dist/annotations/lexical-editor/clickable-link-plugin.d.ts +3 -0
- package/dist/annotations/lexical-editor/clickable-link-plugin.js +71 -0
- package/dist/annotations/lexical-editor/floating-link-editor.d.ts +1 -0
- package/dist/annotations/lexical-editor/floating-link-editor.js +194 -0
- package/dist/annotations/lexical-editor/index.d.ts +7 -0
- package/dist/annotations/lexical-editor/index.js +78 -0
- package/dist/annotations/lexical-editor/lexical-constants.d.ts +12 -0
- package/dist/annotations/lexical-editor/lexical-constants.js +22 -0
- package/dist/annotations/lexical-editor/lexical-nodes.d.ts +3 -0
- package/dist/annotations/lexical-editor/lexical-nodes.js +13 -0
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.d.ts +15 -0
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +122 -0
- package/dist/annotations/lexical-editor/lexical-theme.d.ts +15 -0
- package/dist/annotations/lexical-editor/lexical-theme.js +25 -0
- package/dist/annotations/lexical-editor/lexical-toolbar.d.ts +7 -0
- package/dist/annotations/lexical-editor/lexical-toolbar.js +293 -0
- package/dist/annotations/lexical-editor/lexical-utils.d.ts +4 -0
- package/dist/annotations/lexical-editor/lexical-utils.js +45 -0
- package/dist/annotations/lexical-editor/use-lexical-toolbar.d.ts +36 -0
- package/dist/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
- package/dist/bottom-widget.d.ts +1 -1
- package/dist/bottom-widget.js +12 -6
- package/dist/common/action-panel.js +1 -1
- package/dist/common/animation-control/animation-control.d.ts +1 -0
- package/dist/common/animation-control/animation-control.js +3 -1
- package/dist/common/animation-control/animation-controller.js +8 -6
- package/dist/common/animation-control/export-video-control.d.ts +9 -0
- package/dist/common/animation-control/export-video-control.js +43 -0
- package/dist/common/animation-control/playback-controls.d.ts +4 -2
- package/dist/common/animation-control/playback-controls.js +7 -4
- package/dist/common/checkbox.d.ts +5 -21
- package/dist/common/checkbox.js +58 -70
- package/dist/common/color-legend.d.ts +1 -1
- package/dist/common/color-legend.js +3 -3
- package/dist/common/data-table/canvas.d.ts +1 -1
- package/dist/common/data-table/index.d.ts +2 -2
- package/dist/common/data-table/index.js +3 -3
- package/dist/common/dnd-layer-items.d.ts +4 -0
- package/dist/common/dnd-layer-items.js +6 -2
- package/dist/common/error-boundary.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.js +4 -4
- package/dist/common/flex-container.d.ts +15 -7
- package/dist/common/histogram-plot.js +102 -53
- package/dist/common/icon-button.d.ts +53 -6
- package/dist/common/icons/3d-models/airplane.d.ts +14 -0
- package/dist/common/icons/3d-models/airplane.js +104 -0
- package/dist/common/icons/3d-models/bicycle.d.ts +14 -0
- package/dist/common/icons/3d-models/bicycle.js +426 -0
- package/dist/common/icons/3d-models/boeing.d.ts +14 -0
- package/dist/common/icons/3d-models/boeing.js +119 -0
- package/dist/common/icons/3d-models/car.d.ts +14 -0
- package/dist/common/icons/3d-models/car.js +110 -0
- package/dist/common/icons/3d-models/cargoship.d.ts +14 -0
- package/dist/common/icons/3d-models/cargoship.js +246 -0
- package/dist/common/icons/3d-models/evtol.d.ts +14 -0
- package/dist/common/icons/3d-models/evtol.js +134 -0
- package/dist/common/icons/3d-models/glider.d.ts +14 -0
- package/dist/common/icons/3d-models/glider.js +62 -0
- package/dist/common/icons/3d-models/helicopter.d.ts +14 -0
- package/dist/common/icons/3d-models/helicopter.js +110 -0
- package/dist/common/icons/3d-models/scooter.d.ts +14 -0
- package/dist/common/icons/3d-models/scooter.js +159 -0
- package/dist/common/icons/3d-models/semitruck.d.ts +14 -0
- package/dist/common/icons/3d-models/semitruck.js +177 -0
- package/dist/common/icons/3d-models/truck.d.ts +14 -0
- package/dist/common/icons/3d-models/truck.js +122 -0
- package/dist/common/icons/anchor_window.d.ts +1 -8
- package/dist/common/icons/anchor_window.js +17 -10
- package/dist/common/icons/annotation-text.d.ts +9 -0
- package/dist/common/icons/annotation-text.js +56 -0
- package/dist/common/icons/arrow-down-full.d.ts +2 -1
- package/dist/common/icons/arrow-down-full.js +1 -1
- package/dist/common/icons/folder.d.ts +10 -0
- package/dist/common/icons/folder.js +51 -0
- package/dist/common/icons/index.d.ts +2 -0
- package/dist/common/icons/index.js +15 -1
- package/dist/common/icons/timeline-marker.d.ts +2 -1
- package/dist/common/icons/timeline-marker.js +1 -1
- package/dist/common/item-selector/chickleted-input.d.ts +1 -1
- package/dist/common/item-selector/chickleted-input.js +5 -5
- package/dist/common/item-selector/dropdown-list.d.ts +1 -1
- package/dist/common/item-selector/dropdown-list.js +1 -1
- package/dist/common/item-selector/dropdown-select.d.ts +13 -7
- package/dist/common/item-selector/item-selector.d.ts +1 -1
- package/dist/common/item-selector/item-selector.js +1 -1
- package/dist/common/item-selector/typeahead.d.ts +4 -4
- package/dist/common/item-selector/typeahead.js +1 -3
- package/dist/common/layout-splitter.d.ts +45 -0
- package/dist/common/layout-splitter.js +231 -0
- package/dist/common/line-chart.d.ts +10 -3
- package/dist/common/line-chart.js +219 -52
- package/dist/common/modal.d.ts +11 -5
- package/dist/common/modal.js +1 -1
- package/dist/common/portaled.d.ts +17 -17
- package/dist/common/range-plot.js +4 -2
- package/dist/common/range-slider.d.ts +2 -0
- package/dist/common/range-slider.js +108 -45
- package/dist/common/slider/mouse-event.d.ts +1 -1
- package/dist/common/slider/mouse-event.js +1 -2
- package/dist/common/slider/slider-bar-handle.d.ts +1 -1
- package/dist/common/slider/slider-bar-handle.js +1 -1
- package/dist/common/slider/slider-handle.d.ts +3 -3
- package/dist/common/slider/slider-handle.js +1 -1
- package/dist/common/slider/slider.d.ts +8 -4
- package/dist/common/slider/slider.js +78 -35
- package/dist/common/styled-components.d.ts +628 -178
- package/dist/common/styled-components.js +2 -2
- package/dist/common/time-range-slider-time-title.d.ts +1 -1
- package/dist/common/time-range-slider-time-title.js +5 -5
- package/dist/common/time-range-slider.d.ts +2 -1
- package/dist/common/time-range-slider.js +19 -7
- package/dist/common/timeline-helpers.d.ts +3 -0
- package/dist/common/timeline-helpers.js +57 -0
- package/dist/common/timeline-slider.js +21 -12
- package/dist/common/toolbar-item.js +5 -5
- package/dist/common/toolbar.d.ts +1 -1
- package/dist/common/toolbar.js +4 -4
- package/dist/common/vertical-toolbar.d.ts +13 -3
- package/dist/container.d.ts +3 -2
- package/dist/container.js +2 -2
- package/dist/context.d.ts +1 -1
- package/dist/context.js +1 -1
- package/dist/dnd-context.d.ts +4 -3
- package/dist/dnd-context.js +64 -9
- package/dist/effects/compact-color-picker.d.ts +1 -1
- package/dist/effects/effect-configurator.d.ts +5 -6
- package/dist/effects/effect-configurator.js +213 -52
- package/dist/effects/effect-manager.js +3 -3
- package/dist/effects/effect-panel-header.js +34 -17
- package/dist/effects/effect-panel.d.ts +4 -4
- package/dist/effects/effect-panel.js +61 -86
- package/dist/effects/effect-time-configurator.js +10 -10
- package/dist/effects/effect-type-dropdown-list.d.ts +1 -0
- package/dist/effects/effect-type-dropdown-list.js +1 -1
- package/dist/effects/effect-type-list-item.d.ts +2 -1
- package/dist/effects/effect-type-list-item.js +23 -7
- package/dist/effects/effect-type-selector.d.ts +1 -0
- package/dist/effects/effect-type-selector.js +2 -2
- package/dist/effects/surface-fog-section.d.ts +14 -0
- package/dist/effects/surface-fog-section.js +263 -0
- package/dist/filters/components.d.ts +7 -5
- package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +6 -2
- package/dist/filters/index.d.ts +1 -0
- package/dist/filters/index.js +8 -1
- package/dist/filters/polygon-filter.js +2 -2
- package/dist/filters/time-range-filter.js +3 -1
- package/dist/filters/time-widget-settings.d.ts +14 -0
- package/dist/filters/time-widget-settings.js +312 -0
- package/dist/filters/time-widget-top.d.ts +2 -3
- package/dist/filters/time-widget-top.js +32 -39
- package/dist/filters/time-widget.d.ts +3 -2
- package/dist/filters/time-widget.js +285 -9
- package/dist/filters/types.d.ts +3 -3
- package/dist/filters/types.js +1 -1
- package/dist/geocoder/geocoder.d.ts +4 -1
- package/dist/geocoder/geocoder.js +61 -14
- package/dist/geocoder-panel.d.ts +3 -2
- package/dist/geocoder-panel.js +11 -8
- package/dist/hooks/use-dnd-layers.d.ts +4 -3
- package/dist/hooks/use-dnd-layers.js +103 -42
- package/dist/index.d.ts +17 -2
- package/dist/index.js +161 -9
- package/dist/injector.d.ts +1 -1
- package/dist/kepler-gl.d.ts +179 -27
- package/dist/kepler-gl.js +91 -12
- package/dist/loading-indicator.d.ts +3 -1
- package/dist/loading-indicator.js +6 -3
- package/dist/map/annotations/annotation-control.d.ts +16 -0
- package/dist/map/annotations/annotation-control.js +56 -0
- package/dist/map/layer-hover-info.d.ts +7 -3
- package/dist/map/layer-hover-info.js +124 -55
- package/dist/map/locale-panel.d.ts +1 -1
- package/dist/map/locale-panel.js +2 -2
- package/dist/map/map-control-panel.js +3 -2
- package/dist/map/map-control-toolbar.d.ts +33 -8
- package/dist/map/map-control.d.ts +14 -4
- package/dist/map/map-control.js +18 -8
- package/dist/map/map-draw-panel.d.ts +1 -1
- package/dist/map/map-draw-panel.js +7 -4
- package/dist/map/map-legend-panel.d.ts +11 -2
- package/dist/map/map-legend-panel.js +25 -8
- package/dist/map/map-legend.d.ts +20 -3
- package/dist/map/map-legend.js +145 -31
- package/dist/map/map-navigation-control.d.ts +13 -0
- package/dist/map/map-navigation-control.js +143 -0
- package/dist/map/map-popover.js +2 -2
- package/dist/map/split-map-button.d.ts +6 -1
- package/dist/map/split-map-button.js +113 -19
- package/dist/map-container.d.ts +13 -3
- package/dist/map-container.js +269 -59
- package/dist/map-view-state-context.d.ts +1 -0
- package/dist/map-view-state-context.js +1 -1
- package/dist/maps-layout.d.ts +3 -0
- package/dist/maps-layout.js +86 -26
- package/dist/modal-container.d.ts +3 -2
- package/dist/modal-container.js +28 -6
- package/dist/modals/add-map-style-modal.js +173 -200
- package/dist/modals/cloud-tile.d.ts +1 -2
- package/dist/modals/data-table-modal.d.ts +1 -1
- package/dist/modals/data-table-modal.js +146 -194
- package/dist/modals/export-data-modal.js +117 -139
- package/dist/modals/export-map-modal/components.d.ts +9 -5
- package/dist/modals/export-video-modal.d.ts +28 -0
- package/dist/modals/export-video-modal.js +371 -0
- package/dist/modals/export-video-modal.spec.d.ts +1 -0
- package/dist/modals/export-video-modal.spec.js +686 -0
- package/dist/modals/fog-height-animation.d.ts +8 -0
- package/dist/modals/fog-height-animation.js +97 -0
- package/dist/modals/hubble-utils.d.ts +41 -0
- package/dist/modals/hubble-utils.js +294 -0
- package/dist/modals/hubble-utils.spec.d.ts +1 -0
- package/dist/modals/hubble-utils.spec.js +397 -0
- package/dist/modals/modal-dialog.d.ts +1 -1
- package/dist/modals/share-map-modal.d.ts +2 -4
- package/dist/modals/swipe-composite-utils.d.ts +10 -0
- package/dist/modals/swipe-composite-utils.js +108 -0
- package/dist/modals/swipe-export-settings.d.ts +24 -0
- package/dist/modals/swipe-export-settings.js +370 -0
- package/dist/modals/swipe-export-video-container.d.ts +122 -0
- package/dist/modals/swipe-export-video-container.js +630 -0
- package/dist/modals/swipe-export-video-preview.d.ts +68 -0
- package/dist/modals/swipe-export-video-preview.js +339 -0
- package/dist/modals/tilesets-modals/load-data-footer.js +2 -2
- package/dist/modals/tilesets-modals/load-tileset.js +21 -10
- package/dist/modals/tilesets-modals/tileset-bitmap-form.d.ts +14 -0
- package/dist/modals/tilesets-modals/tileset-bitmap-form.js +284 -0
- package/dist/modals/tilesets-modals/tileset-raster-form.js +90 -11
- package/dist/modals/tilesets-modals/tileset-tile3d-form.js +3 -2
- package/dist/modals/tilesets-modals/tileset-vector-form.js +58 -4
- package/dist/modals/tilesets-modals/tileset-wms-form.js +4 -3
- package/dist/notification-panel/notification-item.d.ts +1 -53
- package/dist/notification-panel/notification-item.js +47 -75
- package/dist/notification-panel.d.ts +1 -1
- package/dist/notification-panel.js +20 -42
- package/dist/plot-container.js +7 -6
- package/dist/side-panel/add-by-dataset-button.js +3 -3
- package/dist/side-panel/common/dataset-info.js +2 -2
- package/dist/side-panel/filter-panel/filter-panel-header.d.ts +7 -3
- package/dist/side-panel/interaction-panel/geocoder-config.d.ts +11 -0
- package/dist/side-panel/interaction-panel/geocoder-config.js +45 -0
- package/dist/side-panel/interaction-panel/interaction-panel.d.ts +3 -2
- package/dist/side-panel/interaction-panel/interaction-panel.js +10 -3
- package/dist/side-panel/layer-manager.d.ts +5 -4
- package/dist/side-panel/layer-manager.js +26 -6
- package/dist/side-panel/layer-panel/color-scale-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/color-scale-selector.js +1 -1
- package/dist/side-panel/layer-panel/color-selector.d.ts +6 -4
- package/dist/side-panel/layer-panel/custom-palette.d.ts +3 -5
- package/dist/side-panel/layer-panel/custom-palette.js +5 -5
- package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +2 -1
- package/dist/side-panel/layer-panel/dataset-layer-group.js +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +2 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.js +19 -3
- package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -11
- package/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -2
- package/dist/side-panel/layer-panel/layer-configurator.js +450 -76
- package/dist/side-panel/layer-panel/layer-group-header.d.ts +15 -0
- package/dist/side-panel/layer-panel/layer-group-header.js +179 -0
- package/dist/side-panel/layer-panel/layer-list.d.ts +9 -4
- package/dist/side-panel/layer-panel/layer-list.js +197 -40
- package/dist/side-panel/layer-panel/layer-panel-header.js +2 -2
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +1 -1
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +127 -27
- package/dist/side-panel/layer-panel/scenegraph-model-selector.d.ts +24 -0
- package/dist/side-panel/layer-panel/scenegraph-model-selector.js +123 -0
- package/dist/side-panel/layer-panel/text-label-panel.d.ts +1 -1
- package/dist/side-panel/layer-panel/text-label-panel.js +11 -2
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +1 -1
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +2 -10
- package/dist/side-panel/layer-panel/vis-config-slider.d.ts +2 -0
- package/dist/side-panel/layer-panel/vis-config-slider.js +7 -3
- package/dist/side-panel/panel-header.d.ts +1 -0
- package/dist/side-panel/panel-header.js +9 -2
- package/dist/side-panel/panel-tab.d.ts +2 -4
- package/dist/side-panel/panel-tab.js +4 -4
- package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
- package/dist/side-panel/side-bar.d.ts +1 -6
- package/dist/side-panel.d.ts +1 -1
- package/dist/side-panel.js +5 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -1
- package/package.json +53 -48
- package/dist/map/layer-selector-panel.d.ts +0 -21
- package/dist/map/layer-selector-panel.js +0 -85
- package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +0 -11
- package/dist/side-panel/layer-panel/radius-by-zoom-input.js +0 -220
package/dist/map/map-legend.js
CHANGED
|
@@ -28,7 +28,8 @@ var _localization = require("@kepler.gl/localization");
|
|
|
28
28
|
var _viewportMercatorProject = require("viewport-mercator-project");
|
|
29
29
|
var _icons = require("../common/icons");
|
|
30
30
|
var _panelHeaderAction = _interopRequireDefault(require("../side-panel/panel-header-action"));
|
|
31
|
-
var
|
|
31
|
+
var _reducers = require("@kepler.gl/reducers");
|
|
32
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6; // SPDX-License-Identifier: MIT
|
|
32
33
|
// Copyright contributors to the kepler.gl project
|
|
33
34
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
34
35
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
@@ -43,7 +44,7 @@ var StyledMapControlLegend = exports.StyledMapControlLegend = _styledComponents[
|
|
|
43
44
|
}, function (props) {
|
|
44
45
|
return props.theme.panelBorderColor;
|
|
45
46
|
}, function (props) {
|
|
46
|
-
return props
|
|
47
|
+
return props.$last ? 0 : '1px';
|
|
47
48
|
}, function (props) {
|
|
48
49
|
return props.width;
|
|
49
50
|
}, function (props) {
|
|
@@ -63,12 +64,19 @@ var StyledMapControlLegend = exports.StyledMapControlLegend = _styledComponents[
|
|
|
63
64
|
});
|
|
64
65
|
var StyledLegendHeaderRow = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n"])));
|
|
65
66
|
var StyledVisibilityToggle = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n color: ", ";\n display: flex;\n align-items: center;\n margin-left: 8px;\n opacity: ", ";\n\n &:hover {\n color: ", ";\n opacity: 1;\n }\n"])), function (props) {
|
|
66
|
-
return props
|
|
67
|
+
return props.$isVisible ? props.theme.textColor : props.theme.subtextColor;
|
|
67
68
|
}, function (props) {
|
|
68
|
-
return props
|
|
69
|
+
return props.$isVisible ? 1 : 0.5;
|
|
69
70
|
}, function (props) {
|
|
70
71
|
return props.theme.textColorHl;
|
|
71
72
|
});
|
|
73
|
+
var StyledSplitVisibilityControls = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n margin-left: 8px;\n gap: 4px;\n\n ", " {\n margin-left: 0;\n }\n"])), StyledVisibilityToggle);
|
|
74
|
+
var StyledSplitSeparator = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n width: 1px;\n height: 12px;\n background: ", ";\n opacity: 0.3;\n"])), function (props) {
|
|
75
|
+
return props.$isVisible ? props.theme.textColor : props.theme.subtextColor;
|
|
76
|
+
});
|
|
77
|
+
var StyledExpandToggle = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n display: flex;\n align-items: center;\n margin-left: 6px;\n color: ", ";\n opacity: 0.7;\n\n &:hover {\n opacity: 1;\n }\n"])), function (props) {
|
|
78
|
+
return props.theme.textColor;
|
|
79
|
+
});
|
|
72
80
|
var VisualChannelMetric = exports.VisualChannelMetric = function VisualChannelMetric(_ref) {
|
|
73
81
|
var name = _ref.name;
|
|
74
82
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -248,25 +256,68 @@ var isRadiusChannel = function isRadiusChannel(visualChannel) {
|
|
|
248
256
|
};
|
|
249
257
|
function LayerLegendHeaderFactory() {
|
|
250
258
|
var LayerLegendHeader = function LayerLegendHeader(_ref6) {
|
|
259
|
+
var _splitMaps$, _splitMaps$2;
|
|
251
260
|
var options = _ref6.options,
|
|
252
261
|
layer = _ref6.layer,
|
|
253
|
-
|
|
262
|
+
isExport = _ref6.isExport,
|
|
263
|
+
onToggleLayerVisibility = _ref6.onToggleLayerVisibility,
|
|
264
|
+
isSplit = _ref6.isSplit,
|
|
265
|
+
splitMaps = _ref6.splitMaps,
|
|
266
|
+
onMapToggleLayer = _ref6.onMapToggleLayer,
|
|
267
|
+
isExpanded = _ref6.isExpanded,
|
|
268
|
+
onToggleExpanded = _ref6.onToggleExpanded;
|
|
254
269
|
var isVisible = layer.config.isVisible;
|
|
255
270
|
var onToggle = (0, _react.useCallback)(function () {
|
|
256
271
|
if (onToggleLayerVisibility) {
|
|
257
272
|
onToggleLayerVisibility(layer);
|
|
258
273
|
}
|
|
259
274
|
}, [layer, onToggleLayerVisibility]);
|
|
275
|
+
var onToggleLeft = (0, _react.useCallback)(function () {
|
|
276
|
+
if (onMapToggleLayer) {
|
|
277
|
+
onMapToggleLayer(0, layer.id);
|
|
278
|
+
}
|
|
279
|
+
}, [layer, onMapToggleLayer]);
|
|
280
|
+
var onToggleRight = (0, _react.useCallback)(function () {
|
|
281
|
+
if (onMapToggleLayer) {
|
|
282
|
+
onMapToggleLayer(1, layer.id);
|
|
283
|
+
}
|
|
284
|
+
}, [layer, onMapToggleLayer]);
|
|
260
285
|
if ((options === null || options === void 0 ? void 0 : options.showLayerName) === false) {
|
|
261
286
|
return null;
|
|
262
287
|
}
|
|
288
|
+
var isLeftVisible = isSplit && splitMaps && splitMaps.length > 1 ? isVisible && Boolean((_splitMaps$ = splitMaps[0]) === null || _splitMaps$ === void 0 || (_splitMaps$ = _splitMaps$.layers) === null || _splitMaps$ === void 0 ? void 0 : _splitMaps$[layer.id]) : isVisible;
|
|
289
|
+
var isRightVisible = isSplit && splitMaps && splitMaps.length > 1 ? isVisible && Boolean((_splitMaps$2 = splitMaps[1]) === null || _splitMaps$2 === void 0 || (_splitMaps$2 = _splitMaps$2.layers) === null || _splitMaps$2 === void 0 ? void 0 : _splitMaps$2[layer.id]) : isVisible;
|
|
290
|
+
var isAnyVisible = isLeftVisible || isRightVisible;
|
|
263
291
|
return /*#__PURE__*/_react["default"].createElement(StyledLegendHeaderRow, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
264
292
|
className: "legend--layer_name",
|
|
265
293
|
style: {
|
|
266
|
-
opacity:
|
|
294
|
+
opacity: isAnyVisible ? 1 : 0.5,
|
|
295
|
+
flex: 1
|
|
267
296
|
}
|
|
268
|
-
}, layer.config.label),
|
|
269
|
-
|
|
297
|
+
}, layer.config.label), onToggleExpanded ? /*#__PURE__*/_react["default"].createElement(StyledExpandToggle, {
|
|
298
|
+
onClick: onToggleExpanded
|
|
299
|
+
}, isExpanded ? /*#__PURE__*/_react["default"].createElement(_icons.ArrowDown, {
|
|
300
|
+
height: "12px"
|
|
301
|
+
}) : /*#__PURE__*/_react["default"].createElement(_icons.ArrowRight, {
|
|
302
|
+
height: "12px"
|
|
303
|
+
})) : null, !isExport && onMapToggleLayer && isSplit && splitMaps && splitMaps.length > 1 ? /*#__PURE__*/_react["default"].createElement(StyledSplitVisibilityControls, null, /*#__PURE__*/_react["default"].createElement(StyledVisibilityToggle, {
|
|
304
|
+
$isVisible: isLeftVisible,
|
|
305
|
+
onClick: onToggleLeft
|
|
306
|
+
}, isLeftVisible ? /*#__PURE__*/_react["default"].createElement(_icons.EyeSeen, {
|
|
307
|
+
height: "12px"
|
|
308
|
+
}) : /*#__PURE__*/_react["default"].createElement(_icons.EyeUnseen, {
|
|
309
|
+
height: "12px"
|
|
310
|
+
})), /*#__PURE__*/_react["default"].createElement(StyledSplitSeparator, {
|
|
311
|
+
$isVisible: isAnyVisible
|
|
312
|
+
}), /*#__PURE__*/_react["default"].createElement(StyledVisibilityToggle, {
|
|
313
|
+
$isVisible: isRightVisible,
|
|
314
|
+
onClick: onToggleRight
|
|
315
|
+
}, isRightVisible ? /*#__PURE__*/_react["default"].createElement(_icons.EyeSeen, {
|
|
316
|
+
height: "12px"
|
|
317
|
+
}) : /*#__PURE__*/_react["default"].createElement(_icons.EyeUnseen, {
|
|
318
|
+
height: "12px"
|
|
319
|
+
}))) : !isExport && onToggleLayerVisibility ? /*#__PURE__*/_react["default"].createElement(StyledVisibilityToggle, {
|
|
320
|
+
$isVisible: isVisible,
|
|
270
321
|
onClick: onToggle
|
|
271
322
|
}, isVisible ? /*#__PURE__*/_react["default"].createElement(_icons.EyeSeen, {
|
|
272
323
|
height: "12px"
|
|
@@ -349,48 +400,111 @@ function LayerLegendContentFactory(LayerColorLegend) {
|
|
|
349
400
|
}
|
|
350
401
|
MapLegendFactory.deps = [LayerLegendHeaderFactory, LayerLegendContentFactory];
|
|
351
402
|
function MapLegendFactory(LayerLegendHeader, LayerLegendContent) {
|
|
352
|
-
var
|
|
353
|
-
var
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
403
|
+
var LayerLegendItem = function LayerLegendItem(_ref8) {
|
|
404
|
+
var layer = _ref8.layer,
|
|
405
|
+
containerW = _ref8.containerW,
|
|
406
|
+
isLast = _ref8.isLast,
|
|
407
|
+
isLayerVisible = _ref8.isLayerVisible,
|
|
408
|
+
isExport = _ref8.isExport,
|
|
357
409
|
options = _ref8.options,
|
|
410
|
+
mapState = _ref8.mapState,
|
|
358
411
|
disableEdit = _ref8.disableEdit,
|
|
359
|
-
isExport = _ref8.isExport,
|
|
360
412
|
onLayerVisConfigChange = _ref8.onLayerVisConfigChange,
|
|
361
413
|
onToggleLayerVisibility = _ref8.onToggleLayerVisibility,
|
|
362
|
-
|
|
363
|
-
|
|
414
|
+
onMapToggleLayer = _ref8.onMapToggleLayer,
|
|
415
|
+
isSplit = _ref8.isSplit,
|
|
416
|
+
splitMaps = _ref8.splitMaps,
|
|
417
|
+
actionIcons = _ref8.actionIcons;
|
|
418
|
+
var _useState3 = (0, _react.useState)(true),
|
|
419
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
420
|
+
isExpanded = _useState4[0],
|
|
421
|
+
setIsExpanded = _useState4[1];
|
|
422
|
+
var handleToggleExpanded = (0, _react.useCallback)(function () {
|
|
423
|
+
return setIsExpanded(function (prev) {
|
|
424
|
+
return !prev;
|
|
425
|
+
});
|
|
426
|
+
}, []);
|
|
427
|
+
return /*#__PURE__*/_react["default"].createElement(StyledMapControlLegend, {
|
|
428
|
+
className: "legend--layer",
|
|
429
|
+
$last: isLast,
|
|
430
|
+
width: containerW
|
|
431
|
+
}, /*#__PURE__*/_react["default"].createElement(LayerLegendHeader, {
|
|
432
|
+
isExport: isExport,
|
|
433
|
+
options: options,
|
|
434
|
+
layer: layer,
|
|
435
|
+
onToggleLayerVisibility: onToggleLayerVisibility,
|
|
436
|
+
isSplit: isSplit,
|
|
437
|
+
splitMaps: splitMaps,
|
|
438
|
+
onMapToggleLayer: onMapToggleLayer,
|
|
439
|
+
isExpanded: isExpanded,
|
|
440
|
+
onToggleExpanded: isExport ? undefined : handleToggleExpanded
|
|
441
|
+
}), isExpanded ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
442
|
+
style: {
|
|
443
|
+
opacity: isLayerVisible ? 1 : 0.5
|
|
444
|
+
}
|
|
445
|
+
}, /*#__PURE__*/_react["default"].createElement(LayerLegendContent, {
|
|
446
|
+
containerW: containerW,
|
|
447
|
+
layer: layer,
|
|
448
|
+
mapState: mapState,
|
|
449
|
+
disableEdit: disableEdit,
|
|
450
|
+
isExport: isExport,
|
|
451
|
+
onLayerVisConfigChange: onLayerVisConfigChange,
|
|
452
|
+
actionIcons: actionIcons
|
|
453
|
+
})) : null);
|
|
454
|
+
};
|
|
455
|
+
var MapLegend = function MapLegend(_ref9) {
|
|
456
|
+
var _ref9$layers = _ref9.layers,
|
|
457
|
+
layers = _ref9$layers === void 0 ? [] : _ref9$layers,
|
|
458
|
+
layerOrder = _ref9.layerOrder,
|
|
459
|
+
width = _ref9.width,
|
|
460
|
+
mapState = _ref9.mapState,
|
|
461
|
+
options = _ref9.options,
|
|
462
|
+
disableEdit = _ref9.disableEdit,
|
|
463
|
+
isExport = _ref9.isExport,
|
|
464
|
+
onLayerVisConfigChange = _ref9.onLayerVisConfigChange,
|
|
465
|
+
onToggleLayerVisibility = _ref9.onToggleLayerVisibility,
|
|
466
|
+
onMapToggleLayer = _ref9.onMapToggleLayer,
|
|
467
|
+
isSplit = _ref9.isSplit,
|
|
468
|
+
splitMaps = _ref9.splitMaps,
|
|
469
|
+
_ref9$actionIcons = _ref9.actionIcons,
|
|
470
|
+
actionIcons = _ref9$actionIcons === void 0 ? defaultActionIcons : _ref9$actionIcons;
|
|
471
|
+
var orderedLayers = layerOrder ? (0, _reducers.getFlatLayerOrder)(layerOrder).reduce(function (acc, id) {
|
|
472
|
+
var layer = layers.find(function (l) {
|
|
473
|
+
return l.id === id;
|
|
474
|
+
});
|
|
475
|
+
if (layer) acc.push(layer);
|
|
476
|
+
return acc;
|
|
477
|
+
}, []) : layers;
|
|
364
478
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
365
479
|
className: "map-legend"
|
|
366
|
-
},
|
|
480
|
+
}, orderedLayers.map(function (layer, index) {
|
|
481
|
+
var _splitMaps$3, _splitMaps$4;
|
|
367
482
|
if (!layer.isValidToSave() || layer.config.hidden) {
|
|
368
483
|
return null;
|
|
369
484
|
}
|
|
370
485
|
var containerW = width || _constants.DIMENSIONS.mapControl.width;
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
key: index,
|
|
375
|
-
width: containerW
|
|
376
|
-
}, /*#__PURE__*/_react["default"].createElement(LayerLegendHeader, {
|
|
377
|
-
isExport: isExport,
|
|
378
|
-
options: options,
|
|
486
|
+
var isLayerVisible = isSplit && splitMaps && splitMaps.length > 1 ? layer.config.isVisible && (Boolean((_splitMaps$3 = splitMaps[0]) === null || _splitMaps$3 === void 0 || (_splitMaps$3 = _splitMaps$3.layers) === null || _splitMaps$3 === void 0 ? void 0 : _splitMaps$3[layer.id]) || Boolean((_splitMaps$4 = splitMaps[1]) === null || _splitMaps$4 === void 0 || (_splitMaps$4 = _splitMaps$4.layers) === null || _splitMaps$4 === void 0 ? void 0 : _splitMaps$4[layer.id])) : layer.config.isVisible;
|
|
487
|
+
return /*#__PURE__*/_react["default"].createElement(LayerLegendItem, {
|
|
488
|
+
key: layer.id,
|
|
379
489
|
layer: layer,
|
|
380
|
-
onToggleLayerVisibility: onToggleLayerVisibility
|
|
381
|
-
}), /*#__PURE__*/_react["default"].createElement(LayerLegendContent, {
|
|
382
490
|
containerW: containerW,
|
|
383
|
-
|
|
491
|
+
isLast: index === orderedLayers.length - 1,
|
|
492
|
+
isLayerVisible: isLayerVisible,
|
|
493
|
+
isExport: isExport,
|
|
494
|
+
options: options,
|
|
384
495
|
mapState: mapState,
|
|
385
496
|
disableEdit: disableEdit,
|
|
386
|
-
isExport: isExport,
|
|
387
497
|
onLayerVisConfigChange: onLayerVisConfigChange,
|
|
498
|
+
onToggleLayerVisibility: onToggleLayerVisibility,
|
|
499
|
+
onMapToggleLayer: onMapToggleLayer,
|
|
500
|
+
isSplit: isSplit,
|
|
501
|
+
splitMaps: splitMaps,
|
|
388
502
|
actionIcons: actionIcons
|
|
389
|
-
})
|
|
503
|
+
});
|
|
390
504
|
}));
|
|
391
505
|
};
|
|
392
506
|
MapLegend.displayName = 'MapLegend';
|
|
393
507
|
return MapLegend;
|
|
394
508
|
}
|
|
395
509
|
var _default = exports["default"] = MapLegendFactory;
|
|
396
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZDNDb2xvciIsIl9kM0Zvcm1hdCIsIl9yZWFjdEludGwiLCJfY29sb3JMZWdlbmQiLCJfcmFkaXVzTGVnZW5kIiwiX2NvbnN0YW50cyIsIl9sb2NhbGl6YXRpb24iLCJfdmlld3BvcnRNZXJjYXRvclByb2plY3QiLCJfaWNvbnMiLCJfcGFuZWxIZWFkZXJBY3Rpb24iLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlN0eWxlZE1hcENvbnRyb2xMZWdlbmQiLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwibWFwQ29udHJvbCIsInBhZGRpbmciLCJmb250RmFtaWx5IiwicGFuZWxCb3JkZXJDb2xvciIsImxhc3QiLCJ3aWR0aCIsInRleHRDb2xvciIsInN1YnRleHRDb2xvciIsInRleHRDb2xvckhsIiwiU3R5bGVkTGVnZW5kSGVhZGVyUm93IiwiU3R5bGVkVmlzaWJpbGl0eVRvZ2dsZSIsImlzVmlzaWJsZSIsIlZpc3VhbENoYW5uZWxNZXRyaWMiLCJfcmVmIiwibmFtZSIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiaWQiLCJMYXllckRlZmF1bHRMZWdlbmQiLCJfcmVmMiIsImxhYmVsIiwiU2luZ2xlQ29sb3JMZWdlbmRGYWN0b3J5IiwiZGVwcyIsIkxlZ2VuZFJvd0ZhY3RvcnkiLCJMZWdlbmRSb3ciLCJTaW5nbGVDb2xvckxlZ2VuZCIsIl9yZWYzIiwiY29sb3IiLCJkaXNwbGF5TGFiZWwiLCJCb29sZWFuIiwiQXJyYXkiLCJpc0FycmF5IiwicmdiIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInRvU3RyaW5nIiwiZGlzcGxheU5hbWUiLCJSZWFjdCIsIm1lbW8iLCJMYXllckNvbG9yTGVnZW5kRmFjdG9yeSIsIkNvbG9yTGVnZW5kRmFjdG9yeSIsIlBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSIsIkNvbG9yTGVnZW5kIiwiUGFuZWxIZWFkZXJBY3Rpb24iLCJMYXllckNvbG9yTGVnZW5kIiwiX3JlZjQiLCJkZXNjcmlwdGlvbiIsImNvbmZpZyIsImxheWVyIiwiY29sb3JDaGFubmVsIiwiZGlzYWJsZUVkaXQiLCJvbkxheWVyVmlzQ29uZmlnQ2hhbmdlIiwiaXNFeHBvcnQiLCJtYXBTdGF0ZSIsImFjdGlvbkljb25zIiwiaW50bCIsInVzZUludGwiLCJlbmFibGVDb2xvckJ5IiwibWVhc3VyZSIsInNjYWxlIiwiZmllbGQiLCJkb21haW4iLCJyYW5nZSIsInByb3BlcnR5IiwiZml4ZWQiLCJfbWFwIiwibWFwIiwiayIsIl9tYXAyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29sb3JTY2FsZSIsImNvbG9yRmllbGQiLCJjb2xvckRvbWFpbiIsImlzRml4ZWQiLCJ2aXNDb25maWciLCJjb2xvclJhbmdlIiwib25VcGRhdGVDb2xvckxlZ2VuZCIsInVzZUNhbGxiYWNrIiwiY29sb3JMZWdlbmRzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJoYW5kbGVUb2dnbGVFeHBhbmRlZCIsIm9uQ2xpY2siLCJJY29uQ29tcG9uZW50IiwiZXhwYW5kZWQiLCJjb2xsYXBzZWQiLCJzY2FsZVR5cGUiLCJmaWVsZFR5cGUiLCJ0eXBlIiwibGFiZWxGb3JtYXQiLCJkaXNwbGF5Rm9ybWF0IiwiZDNGb3JtYXQiLCJmb3JtYXRNZXNzYWdlIiwiY29uY2F0Iiwia2V5IiwiZGVmYXVsdE1lc3NhZ2UiLCJnZXRMYXllclJhZGl1c1NjYWxlTWV0ZXJzVG9QaXhlbHNNdWx0aXBsaWVyIiwiX2dldERpc3RhbmNlU2NhbGVzIiwiZ2V0RGlzdGFuY2VTY2FsZXMiLCJtZXRlcnNQZXJQaXhlbCIsImZpeGVkUmFkaXVzIiwic2l6ZUZpZWxkIiwiZ2V0UmFkaXVzU2NhbGVCeVpvb20iLCJMYXllclJhZGl1c0xlZ2VuZCIsIl9yZWY1IiwidmlzdWFsQ2hhbm5lbCIsImdldFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbiIsImVuYWJsZVNpemVCeSIsIl9tYXAzIiwiX21hcDQiLCJzaXplU2NhbGUiLCJzaXplRG9tYWluIiwic2l6ZVJhbmdlIiwicmFkaXVzTXVsdGlwbGllciIsInYiLCJpc0NvbG9yQ2hhbm5lbCIsIkNIQU5ORUxfU0NBTEVTIiwiY29sb3JBZ2dyIiwiaW5jbHVkZXMiLCJjaGFubmVsU2NhbGVUeXBlIiwiaXNSYWRpdXNDaGFubmVsIiwicmFkaXVzIiwiTGF5ZXJMZWdlbmRIZWFkZXJGYWN0b3J5IiwiTGF5ZXJMZWdlbmRIZWFkZXIiLCJfcmVmNiIsIm9wdGlvbnMiLCJvblRvZ2dsZUxheWVyVmlzaWJpbGl0eSIsIm9uVG9nZ2xlIiwic2hvd0xheWVyTmFtZSIsInN0eWxlIiwib3BhY2l0eSIsIkV5ZVNlZW4iLCJoZWlnaHQiLCJFeWVVbnNlZW4iLCJkZWZhdWx0QWN0aW9uSWNvbnMiLCJBcnJvd0Rvd24iLCJBcnJvd1JpZ2h0IiwiTGF5ZXJMZWdlbmRDb250ZW50RmFjdG9yeSIsIkxheWVyTGVnZW5kQ29udGVudCIsIl9yZWY3IiwiY29udGFpbmVyVyIsInZpc3VhbENoYW5uZWxzIiwiZ2V0TGVnZW5kVmlzdWFsQ2hhbm5lbHMiLCJjaGFubmVsS2V5cyIsInZhbHVlcyIsImNvbG9yQ2hhbm5lbHMiLCJub25Db2xvckNoYW5uZWxzIiwidmMiLCJESU1FTlNJT05TIiwiY29sb3JDaGFubmVsVG9SZW5kZXIiLCJjYyIsIl9sYXllciRnZXRWaXN1YWxDaGFubiIsImNvbmRpdGlvbiIsIkZyYWdtZW50IiwibWF0Y2hDb25kaXRpb24iLCJlbmFibGVkIiwiZGVmYXVsdE1lYXN1cmUiLCJNYXBMZWdlbmRGYWN0b3J5IiwiTWFwTGVnZW5kIiwiX3JlZjgiLCJfcmVmOCRsYXllcnMiLCJsYXllcnMiLCJfcmVmOCRhY3Rpb25JY29ucyIsImluZGV4IiwiaXNWYWxpZFRvU2F2ZSIsImhpZGRlbiIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC9tYXAtbGVnZW5kLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtGQywgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCBDb21wb25lbnRUeXBlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7cmdifSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge2Zvcm1hdCBhcyBkM0Zvcm1hdH0gZnJvbSAnZDMtZm9ybWF0JztcbmltcG9ydCB7dXNlSW50bH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgQ29sb3JMZWdlbmRGYWN0b3J5LCB7TGVnZW5kUm93RmFjdG9yeX0gZnJvbSAnLi4vY29tbW9uL2NvbG9yLWxlZ2VuZCc7XG5pbXBvcnQgUmFkaXVzTGVnZW5kIGZyb20gJy4uL2NvbW1vbi9yYWRpdXMtbGVnZW5kJztcbmltcG9ydCB7Q0hBTk5FTF9TQ0FMRVMsIERJTUVOU0lPTlN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtMYXllciwgTGF5ZXJCYXNlQ29uZmlnLCBWaXN1YWxDaGFubmVsLCBWaXN1YWxDaGFubmVsRGVzY3JpcHRpb259IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7TGF5ZXJWaXNDb25maWcsIE1hcFN0YXRlLCBSR0JDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2dldERpc3RhbmNlU2NhbGVzfSBmcm9tICd2aWV3cG9ydC1tZXJjYXRvci1wcm9qZWN0JztcbmltcG9ydCB7QXJyb3dEb3duLCBBcnJvd1JpZ2h0LCBFeWVTZWVuLCBFeWVVbnNlZW59IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IGZyb20gJy4uL3NpZGUtcGFuZWwvcGFuZWwtaGVhZGVyLWFjdGlvbic7XG5cbmludGVyZmFjZSBTdHlsZWRNYXBDb250cm9sTGVnZW5kUHJvcHMge1xuICB3aWR0aD86IG51bWJlcjtcbiAgbGFzdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRNYXBDb250cm9sTGVnZW5kID0gc3R5bGVkLmRpdjxTdHlsZWRNYXBDb250cm9sTGVnZW5kUHJvcHM+YFxuICBwYWRkaW5nOiAxMHB4ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4IDEwcHhcbiAgICAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1hcENvbnRyb2wucGFkZGluZ31weDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJvcmRlckNvbG9yfTtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR7cHJvcHMgPT4gKHByb3BzLmxhc3QgPyAwIDogJzFweCcpfTtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGh9cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfbmFtZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgfVxuICAubGVnZW5kLS1sYXllcl90eXBlIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfc2l6ZS10aXRsZS1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAubGVnZW5kLS1sYXllcl9fdGl0bGUge1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfX2l0ZW0ge1xuICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XG4gIH1cbiAgLmxlZ2VuZC0tbGF5ZXJfYnkge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcn07XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfY29sb3JfZmllbGQge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfY29sb3ItbGVnZW5kIHtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZExlZ2VuZEhlYWRlclJvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbmA7XG5cbmNvbnN0IFN0eWxlZFZpc2liaWxpdHlUb2dnbGUgPSBzdHlsZWQuZGl2PHtpc1Zpc2libGU6IGJvb2xlYW59PmBcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuaXNWaXNpYmxlID8gcHJvcHMudGhlbWUudGV4dENvbG9yIDogcHJvcHMudGhlbWUuc3VidGV4dENvbG9yKX07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIG9wYWNpdHk6ICR7cHJvcHMgPT4gKHByb3BzLmlzVmlzaWJsZSA/IDEgOiAwLjUpfTtcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFZpc3VhbENoYW5uZWxNZXRyaWMgPSAoe25hbWV9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX190aXRsZVwiPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9jb2xvcl9maWVsZFwiPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17bmFtZX0gLz5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCB0eXBlIExheWVyU2l6ZUxlZ2VuZFByb3BzID0ge1xuICBsYWJlbDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgTGF5ZXJEZWZhdWx0TGVnZW5kOiBSZWFjdC5GQzxMYXllclNpemVMZWdlbmRQcm9wcz4gPSAoe2xhYmVsLCBuYW1lfSkgPT5cbiAgbGFiZWwgPyAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX3NpemUtc2NoZW1hXCI+XG4gICAgICA8cD5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9ieVwiPntsYWJlbCA/IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXtsYWJlbH0gLz4gOiBudWxsfTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9ieVwiPiBieSA8L3NwYW4+XG4gICAgICA8L3A+XG4gICAgICB7bmFtZSAmJiA8VmlzdWFsQ2hhbm5lbE1ldHJpYyBuYW1lPXtuYW1lfSAvPn1cbiAgICA8L2Rpdj5cbiAgKSA6IG51bGw7XG5cbmV4cG9ydCB0eXBlIFNpbmdsZUNvbG9yTGVnZW5kUHJvcHMgPSB7XG4gIGNvbG9yOiBSR0JDb2xvcjtcbiAgbGFiZWw/OiBzdHJpbmc7XG59O1xuXG5TaW5nbGVDb2xvckxlZ2VuZEZhY3RvcnkuZGVwcyA9IFtMZWdlbmRSb3dGYWN0b3J5XTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNpbmdsZUNvbG9yTGVnZW5kRmFjdG9yeShMZWdlbmRSb3c6IFJldHVyblR5cGU8dHlwZW9mIExlZ2VuZFJvd0ZhY3Rvcnk+KSB7XG4gIGNvbnN0IFNpbmdsZUNvbG9yTGVnZW5kOiBSZWFjdC5GQzxTaW5nbGVDb2xvckxlZ2VuZFByb3BzPiA9ICh7Y29sb3IsIGxhYmVsfSkgPT4gKFxuICAgIDxMZWdlbmRSb3dcbiAgICAgIGxhYmVsPXtsYWJlbCA/PyAnJ31cbiAgICAgIGRpc3BsYXlMYWJlbD17Qm9vbGVhbihsYWJlbCl9XG4gICAgICBjb2xvcj17QXJyYXkuaXNBcnJheShjb2xvcikgPyByZ2IoLi4uY29sb3IpLnRvU3RyaW5nKCkgOiBjb2xvcn1cbiAgICAvPlxuICApO1xuXG4gIFNpbmdsZUNvbG9yTGVnZW5kLmRpc3BsYXlOYW1lID0gJ1NpbmdsZUNvbG9yTGVnZW5kJztcblxuICByZXR1cm4gUmVhY3QubWVtbyhTaW5nbGVDb2xvckxlZ2VuZCk7XG59XG5cbmV4cG9ydCB0eXBlIExheWVyQ29sb3JMZWdlbmRQcm9wcyA9IHtcbiAgZGVzY3JpcHRpb246IFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbjtcbiAgY29uZmlnOiBMYXllckJhc2VDb25maWc7XG4gIGNvbG9yQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbDtcbiAgb25MYXllclZpc0NvbmZpZ0NoYW5nZT86IChvbGRMYXllcjogTGF5ZXIsIG5ld1Zpc0NvbmZpZzogUGFydGlhbDxMYXllclZpc0NvbmZpZz4pID0+IHZvaWQ7XG4gIGxheWVyOiBMYXllcjtcbiAgZGlzYWJsZUVkaXQ/OiBib29sZWFuO1xuICBpc0V4cG9ydD86IGJvb2xlYW47XG4gIG1hcFN0YXRlPzogTWFwU3RhdGU7XG4gIGFjdGlvbkljb25zOiBNYXBMZWdlbmRJY29ucztcbn07XG5cbkxheWVyQ29sb3JMZWdlbmRGYWN0b3J5LmRlcHMgPSBbXG4gIENvbG9yTGVnZW5kRmFjdG9yeSxcbiAgU2luZ2xlQ29sb3JMZWdlbmRGYWN0b3J5LFxuICBQYW5lbEhlYWRlckFjdGlvbkZhY3Rvcnlcbl07XG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJDb2xvckxlZ2VuZEZhY3RvcnkoXG4gIENvbG9yTGVnZW5kOiBSZXR1cm5UeXBlPHR5cGVvZiBDb2xvckxlZ2VuZEZhY3Rvcnk+LFxuICBTaW5nbGVDb2xvckxlZ2VuZDogUmV0dXJuVHlwZTx0eXBlb2YgU2luZ2xlQ29sb3JMZWdlbmRGYWN0b3J5PixcbiAgUGFuZWxIZWFkZXJBY3Rpb246IFJldHVyblR5cGU8dHlwZW9mIFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeT5cbikge1xuICBjb25zdCBMYXllckNvbG9yTGVnZW5kOiBSZWFjdC5GQzxMYXllckNvbG9yTGVnZW5kUHJvcHM+ID0gKHtcbiAgICBkZXNjcmlwdGlvbixcbiAgICBjb25maWcsXG4gICAgbGF5ZXIsXG4gICAgY29sb3JDaGFubmVsLFxuICAgIGRpc2FibGVFZGl0LFxuICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2UsXG4gICAgaXNFeHBvcnQsXG4gICAgbWFwU3RhdGUsXG4gICAgYWN0aW9uSWNvbnNcbiAgfSkgPT4ge1xuICAgIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG4gICAgY29uc3QgZW5hYmxlQ29sb3JCeSA9IGRlc2NyaXB0aW9uLm1lYXN1cmU7XG4gICAgY29uc3Qge3NjYWxlLCBmaWVsZCwgZG9tYWluLCByYW5nZSwgcHJvcGVydHksIGZpeGVkfSA9IGNvbG9yQ2hhbm5lbDtcbiAgICBjb25zdCBbY29sb3JTY2FsZSwgY29sb3JGaWVsZCwgY29sb3JEb21haW5dID0gW3NjYWxlLCBmaWVsZCwgZG9tYWluXS5tYXAoayA9PiBjb25maWdba10pO1xuICAgIGNvbnN0IGlzRml4ZWQgPSBmaXhlZCAmJiBjb25maWcudmlzQ29uZmlnW2ZpeGVkXTtcblxuICAgIGNvbnN0IGNvbG9yUmFuZ2UgPSBjb25maWcudmlzQ29uZmlnW3JhbmdlXTtcbiAgICBjb25zdCBvblVwZGF0ZUNvbG9yTGVnZW5kID0gdXNlQ2FsbGJhY2soXG4gICAgICBjb2xvckxlZ2VuZHMgPT4ge1xuICAgICAgICBpZiAob25MYXllclZpc0NvbmZpZ0NoYW5nZSkge1xuICAgICAgICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2UobGF5ZXIsIHtcbiAgICAgICAgICAgIFtyYW5nZV06IHtcbiAgICAgICAgICAgICAgLi4uY29sb3JSYW5nZSxcbiAgICAgICAgICAgICAgY29sb3JMZWdlbmRzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbbGF5ZXIsIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2UsIGNvbG9yUmFuZ2UsIHJhbmdlXVxuICAgICk7XG4gICAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoaXNFeHBvcnQpO1xuICAgIGNvbnN0IGhhbmRsZVRvZ2dsZUV4cGFuZGVkID0gKCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9faXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfY29sb3Itc2NoZW1hXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIHtlbmFibGVDb2xvckJ5ID8gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfc2l6ZS10aXRsZS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8VmlzdWFsQ2hhbm5lbE1ldHJpYyBuYW1lPXtlbmFibGVDb2xvckJ5fSAvPlxuICAgICAgICAgICAgICAgIHshaXNFeHBvcnQgPyAoXG4gICAgICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJsZWdlbmQtY29sbGFwc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlVG9nZ2xlRXhwYW5kZWR9XG4gICAgICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2lzRXhwYW5kZWQgPyBhY3Rpb25JY29ucy5leHBhbmRlZCA6IGFjdGlvbkljb25zLmNvbGxhcHNlZH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfY29sb3ItbGVnZW5kXCI+XG4gICAgICAgICAgICAgIHtlbmFibGVDb2xvckJ5ID8gKFxuICAgICAgICAgICAgICAgIDxDb2xvckxlZ2VuZFxuICAgICAgICAgICAgICAgICAgbGF5ZXI9e2xheWVyfVxuICAgICAgICAgICAgICAgICAgaXNFeHBhbmRlZD17aXNFeHBhbmRlZH1cbiAgICAgICAgICAgICAgICAgIHNjYWxlVHlwZT17Y29sb3JTY2FsZX1cbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlMYWJlbFxuICAgICAgICAgICAgICAgICAgZG9tYWluPXtjb2xvckRvbWFpbn1cbiAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZT17KGNvbG9yRmllbGQgJiYgY29sb3JGaWVsZC50eXBlKSB8fCAncmVhbCd9XG4gICAgICAgICAgICAgICAgICByYW5nZT17Y29sb3JSYW5nZX1cbiAgICAgICAgICAgICAgICAgIG9uVXBkYXRlQ29sb3JMZWdlbmQ9e29uVXBkYXRlQ29sb3JMZWdlbmR9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlRWRpdD17ZGlzYWJsZUVkaXQgfHwgQm9vbGVhbihpc0V4cG9ydCl9XG4gICAgICAgICAgICAgICAgICBpc0ZpeGVkPXtpc0ZpeGVkfVxuICAgICAgICAgICAgICAgICAgbWFwU3RhdGU9e21hcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgbGFiZWxGb3JtYXQ9e1xuICAgICAgICAgICAgICAgICAgICBjb2xvckZpZWxkPy5kaXNwbGF5Rm9ybWF0ID8gZDNGb3JtYXQoY29sb3JGaWVsZD8uZGlzcGxheUZvcm1hdCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8U2luZ2xlQ29sb3JMZWdlbmRcbiAgICAgICAgICAgICAgICAgIGNvbG9yPXtjb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XSB8fCBjb25maWdbcHJvcGVydHldIHx8IGNvbmZpZy5jb2xvcn1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICBpZDogYG1hcExlZ2VuZC5sYXllcnMuJHtsYXllci50eXBlfS5zaW5nbGVDb2xvci4ke2NvbG9yQ2hhbm5lbC5rZXl9YCxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6IGludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IGBtYXBMZWdlbmQubGF5ZXJzLmRlZmF1bHQuc2luZ2xlQ29sb3IuJHtjb2xvckNoYW5uZWwua2V5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICcgJyAvLyBtdXN0bid0IGJlIGVtcHR5IHN0cmluZyBvciBpZCB3aWxsIGJlIHVzZWRcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xuXG4gIExheWVyQ29sb3JMZWdlbmQuZGlzcGxheU5hbWUgPSAnTGF5ZXJDb2xvckxlZ2VuZCc7XG4gIHJldHVybiBSZWFjdC5tZW1vKExheWVyQ29sb3JMZWdlbmQpO1xufVxuXG5mdW5jdGlvbiBnZXRMYXllclJhZGl1c1NjYWxlTWV0ZXJzVG9QaXhlbHNNdWx0aXBsaWVyKGxheWVyLCBtYXBTdGF0ZSkge1xuICAvLyBAdHMtaWdub3JlIHRoaXMgYWN0dWFsbHkgZXhpc3RcbiAgY29uc3Qge21ldGVyc1BlclBpeGVsfSA9IGdldERpc3RhbmNlU2NhbGVzKG1hcFN0YXRlKTtcbiAgLy8gaWYgbm8gZmllbGQgc2l6ZSBpcyBkZWZpbmVkIHdlIG5lZWQgdG8gcGFzcyBmaXhlZCByYWRpdXMgPSBmYWxzZVxuICBjb25zdCBmaXhlZFJhZGl1cyA9IGxheWVyLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgJiYgQm9vbGVhbihsYXllci5jb25maWcuc2l6ZUZpZWxkKTtcbiAgcmV0dXJuIGxheWVyLmdldFJhZGl1c1NjYWxlQnlab29tKG1hcFN0YXRlLCBmaXhlZFJhZGl1cykgLyBtZXRlcnNQZXJQaXhlbFswXTtcbn1cblxuZXhwb3J0IHR5cGUgTWFwTGVnZW5kSWNvbnMgPSB7XG4gIGV4cGFuZGVkOiBDb21wb25lbnRUeXBlPGFueT47XG4gIGNvbGxhcHNlZDogQ29tcG9uZW50VHlwZTxhbnk+O1xufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJSYWRpdXNMZWdlbmRQcm9wcyA9IHtcbiAgbGF5ZXI6IExheWVyO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xuICB3aWR0aDogbnVtYmVyO1xuICBpc0V4cG9ydD86IGJvb2xlYW47XG4gIHZpc3VhbENoYW5uZWw6IFZpc3VhbENoYW5uZWw7XG59O1xuXG5leHBvcnQgY29uc3QgTGF5ZXJSYWRpdXNMZWdlbmQ6IEZDPExheWVyUmFkaXVzTGVnZW5kUHJvcHM+ID0gUmVhY3QubWVtbyhcbiAgKHtsYXllciwgd2lkdGgsIHZpc3VhbENoYW5uZWwsIG1hcFN0YXRlfSkgPT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gbGF5ZXIuZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uKHZpc3VhbENoYW5uZWwua2V5KTtcbiAgICBjb25zdCBjb25maWcgPSBsYXllci5jb25maWc7XG5cbiAgICBjb25zdCBlbmFibGVTaXplQnkgPSBkZXNjcmlwdGlvbi5tZWFzdXJlO1xuICAgIGNvbnN0IHtzY2FsZSwgZmllbGQsIGRvbWFpbiwgcmFuZ2V9ID0gdmlzdWFsQ2hhbm5lbDtcbiAgICBjb25zdCBbc2l6ZVNjYWxlLCBzaXplRmllbGQsIHNpemVEb21haW5dID0gW3NjYWxlLCBmaWVsZCwgZG9tYWluXS5tYXAoayA9PiBjb25maWdba10pO1xuICAgIGxldCBzaXplUmFuZ2UgPSBjb25maWcudmlzQ29uZmlnW3JhbmdlXTtcblxuICAgIGlmIChtYXBTdGF0ZSkge1xuICAgICAgY29uc3QgcmFkaXVzTXVsdGlwbGllciA9IGdldExheWVyUmFkaXVzU2NhbGVNZXRlcnNUb1BpeGVsc011bHRpcGxpZXIobGF5ZXIsIG1hcFN0YXRlKTtcbiAgICAgIHNpemVSYW5nZSA9IHNpemVSYW5nZS5tYXAodiA9PiB2ICogcmFkaXVzTXVsdGlwbGllcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9zaXplLXNjaGVtYVwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7ZW5hYmxlU2l6ZUJ5ID8gPFZpc3VhbENoYW5uZWxNZXRyaWMgbmFtZT17ZW5hYmxlU2l6ZUJ5fSAvPiA6IG51bGx9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfc2l6ZS1sZWdlbmRcIj5cbiAgICAgICAgICAgICAge2VuYWJsZVNpemVCeSA/IChcbiAgICAgICAgICAgICAgICA8UmFkaXVzTGVnZW5kXG4gICAgICAgICAgICAgICAgICBzY2FsZVR5cGU9e3NpemVTY2FsZX1cbiAgICAgICAgICAgICAgICAgIGRvbWFpbj17c2l6ZURvbWFpbn1cbiAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZT17KHNpemVGaWVsZCAmJiBzaXplRmllbGQudHlwZSkgfHwgJ3JlYWwnfVxuICAgICAgICAgICAgICAgICAgcmFuZ2U9e3NpemVSYW5nZX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbik7XG5cbmNvbnN0IGlzQ29sb3JDaGFubmVsID0gdmlzdWFsQ2hhbm5lbCA9PlxuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3IsIENIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl0uaW5jbHVkZXModmlzdWFsQ2hhbm5lbC5jaGFubmVsU2NhbGVUeXBlKTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJMZWdlbmRIZWFkZXJQcm9wcyA9IHtcbiAgbGF5ZXI6IExheWVyO1xuICBvcHRpb25zPzoge1xuICAgIHNob3dMYXllck5hbWU/OiBib29sZWFuO1xuICB9O1xuICBpc0V4cG9ydD86IGJvb2xlYW47XG4gIG9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5PzogKGxheWVyOiBMYXllcikgPT4gdm9pZDtcbn07XG5cbmNvbnN0IGlzUmFkaXVzQ2hhbm5lbCA9IHZpc3VhbENoYW5uZWwgPT5cbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c10uaW5jbHVkZXModmlzdWFsQ2hhbm5lbC5jaGFubmVsU2NhbGVUeXBlKTtcblxuZXhwb3J0IGZ1bmN0aW9uIExheWVyTGVnZW5kSGVhZGVyRmFjdG9yeSgpIHtcbiAgY29uc3QgTGF5ZXJMZWdlbmRIZWFkZXI6IFJlYWN0LkZDPExheWVyTGVnZW5kSGVhZGVyUHJvcHM+ID0gKHtcbiAgICBvcHRpb25zLFxuICAgIGxheWVyLFxuICAgIG9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5XG4gIH0pID0+IHtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBsYXllci5jb25maWcuaXNWaXNpYmxlO1xuICAgIGNvbnN0IG9uVG9nZ2xlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKG9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5KSB7XG4gICAgICAgIG9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5KGxheWVyKTtcbiAgICAgIH1cbiAgICB9LCBbbGF5ZXIsIG9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5XSk7XG5cbiAgICBpZiAob3B0aW9ucz8uc2hvd0xheWVyTmFtZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkTGVnZW5kSGVhZGVyUm93PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfbmFtZVwiIHN0eWxlPXt7b3BhY2l0eTogaXNWaXNpYmxlID8gMSA6IDAuNX19PlxuICAgICAgICAgIHtsYXllci5jb25maWcubGFiZWx9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7b25Ub2dnbGVMYXllclZpc2liaWxpdHkgPyAoXG4gICAgICAgICAgPFN0eWxlZFZpc2liaWxpdHlUb2dnbGUgaXNWaXNpYmxlPXtpc1Zpc2libGV9IG9uQ2xpY2s9e29uVG9nZ2xlfT5cbiAgICAgICAgICAgIHtpc1Zpc2libGUgPyA8RXllU2VlbiBoZWlnaHQ9XCIxMnB4XCIgLz4gOiA8RXllVW5zZWVuIGhlaWdodD1cIjEycHhcIiAvPn1cbiAgICAgICAgICA8L1N0eWxlZFZpc2liaWxpdHlUb2dnbGU+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TdHlsZWRMZWdlbmRIZWFkZXJSb3c+XG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIExheWVyTGVnZW5kSGVhZGVyO1xufVxuXG5jb25zdCBkZWZhdWx0QWN0aW9uSWNvbnMgPSB7XG4gIGV4cGFuZGVkOiBBcnJvd0Rvd24sXG4gIGNvbGxhcHNlZDogQXJyb3dSaWdodFxufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJMZWdlbmRDb250ZW50UHJvcHMgPSB7XG4gIGxheWVyOiBMYXllcjtcbiAgY29udGFpbmVyVzogbnVtYmVyO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xuICBkaXNhYmxlRWRpdD86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgb25MYXllclZpc0NvbmZpZ0NoYW5nZT86IChvbGRMYXllcjogTGF5ZXIsIG5ld1Zpc0NvbmZpZzogUGFydGlhbDxMYXllclZpc0NvbmZpZz4pID0+IHZvaWQ7XG4gIGFjdGlvbkljb25zOiBNYXBMZWdlbmRJY29ucztcbn07XG5cbkxheWVyTGVnZW5kQ29udGVudEZhY3RvcnkuZGVwcyA9IFtMYXllckNvbG9yTGVnZW5kRmFjdG9yeV07XG5cbmV4cG9ydCBmdW5jdGlvbiBMYXllckxlZ2VuZENvbnRlbnRGYWN0b3J5KFxuICBMYXllckNvbG9yTGVnZW5kOiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckNvbG9yTGVnZW5kRmFjdG9yeT5cbikge1xuICBjb25zdCBMYXllckxlZ2VuZENvbnRlbnQ6IFJlYWN0LkZDPExheWVyTGVnZW5kQ29udGVudFByb3BzPiA9ICh7XG4gICAgbGF5ZXIsXG4gICAgY29udGFpbmVyVyxcbiAgICBtYXBTdGF0ZSxcbiAgICBkaXNhYmxlRWRpdCxcbiAgICBpc0V4cG9ydCxcbiAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlLFxuICAgIGFjdGlvbkljb25zXG4gIH0pID0+IHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVscyA9IGxheWVyLmdldExlZ2VuZFZpc3VhbENoYW5uZWxzKCk7XG4gICAgY29uc3QgY2hhbm5lbEtleXMgPSBPYmplY3QudmFsdWVzKHZpc3VhbENoYW5uZWxzKTtcbiAgICBjb25zdCBjb2xvckNoYW5uZWxzID0gY2hhbm5lbEtleXMuZmlsdGVyKGlzQ29sb3JDaGFubmVsKSBhcyBWaXN1YWxDaGFubmVsW107XG4gICAgY29uc3Qgbm9uQ29sb3JDaGFubmVscyA9IGNoYW5uZWxLZXlzLmZpbHRlcih2YyA9PiAhaXNDb2xvckNoYW5uZWwodmMpKTtcbiAgICBjb25zdCB3aWR0aCA9IGNvbnRhaW5lclcgLSAyICogRElNRU5TSU9OUy5tYXBDb250cm9sLnBhZGRpbmc7XG5cbiAgICAvLyByZW5kZXIgY29sb3IgYnkgY2hhbmVsIG9ubHlcbiAgICBsZXQgY29sb3JDaGFubmVsVG9SZW5kZXIgPSBjb2xvckNoYW5uZWxzLmZpbHRlcihcbiAgICAgIGNjID0+XG4gICAgICAgICghY2MuY29uZGl0aW9uIHx8IGNjLmNvbmRpdGlvbihsYXllci5jb25maWcpKSAmJlxuICAgICAgICBsYXllci5nZXRWaXN1YWxDaGFubmVsRGVzY3JpcHRpb24oY2Mua2V5KT8ubWVhc3VyZVxuICAgICk7XG4gICAgLy8gaWYgbm8gY29sb3IgYnkgY2hhbmVsLCByZW5kZXIgcmVzdFxuICAgIGlmICghY29sb3JDaGFubmVsVG9SZW5kZXIubGVuZ3RoKSB7XG4gICAgICBjb2xvckNoYW5uZWxUb1JlbmRlciA9IGNvbG9yQ2hhbm5lbHMuZmlsdGVyKFxuICAgICAgICBjYyA9PiAhY2MuY29uZGl0aW9uIHx8IGNjLmNvbmRpdGlvbihsYXllci5jb25maWcpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2NvbG9yQ2hhbm5lbFRvUmVuZGVyLm1hcChjb2xvckNoYW5uZWwgPT4gKFxuICAgICAgICAgIDxMYXllckNvbG9yTGVnZW5kXG4gICAgICAgICAgICBrZXk9e2NvbG9yQ2hhbm5lbC5rZXl9XG4gICAgICAgICAgICBjb2xvckNoYW5uZWw9e2NvbG9yQ2hhbm5lbH1cbiAgICAgICAgICAgIGNvbmZpZz17bGF5ZXIuY29uZmlnfVxuICAgICAgICAgICAgZGVzY3JpcHRpb249e2xheWVyLmdldFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbihjb2xvckNoYW5uZWwua2V5KX1cbiAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgICAgICAgIGRpc2FibGVFZGl0PXtkaXNhYmxlRWRpdH1cbiAgICAgICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U9e29uTGF5ZXJWaXNDb25maWdDaGFuZ2V9XG4gICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICAgIHtub25Db2xvckNoYW5uZWxzLm1hcCgodmlzdWFsQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1hdGNoQ29uZGl0aW9uID0gIXZpc3VhbENoYW5uZWwuY29uZGl0aW9uIHx8IHZpc3VhbENoYW5uZWwuY29uZGl0aW9uKGxheWVyLmNvbmZpZyk7XG4gICAgICAgICAgY29uc3QgZW5hYmxlZCA9IGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsLmZpZWxkXSB8fCB2aXN1YWxDaGFubmVsLmRlZmF1bHRNZWFzdXJlO1xuXG4gICAgICAgICAgaWYgKG1hdGNoQ29uZGl0aW9uICYmIGVuYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gbGF5ZXIuZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uKHZpc3VhbENoYW5uZWwua2V5KTtcbiAgICAgICAgICAgIGlmIChpc1JhZGl1c0NoYW5uZWwodmlzdWFsQ2hhbm5lbCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TGF5ZXJSYWRpdXNMZWdlbmRcbiAgICAgICAgICAgICAgICAgIGtleT17dmlzdWFsQ2hhbm5lbC5rZXl9XG4gICAgICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgICAgICAgICB2aXN1YWxDaGFubmVsPXt2aXN1YWxDaGFubmVsfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8TGF5ZXJEZWZhdWx0TGVnZW5kXG4gICAgICAgICAgICAgICAga2V5PXt2aXN1YWxDaGFubmVsLmtleX1cbiAgICAgICAgICAgICAgICBsYWJlbD17ZGVzY3JpcHRpb24ubGFiZWx9XG4gICAgICAgICAgICAgICAgbmFtZT17ZGVzY3JpcHRpb24ubWVhc3VyZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KX1cbiAgICAgIDwvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIExheWVyTGVnZW5kQ29udGVudDtcbn1cblxuZXhwb3J0IHR5cGUgTWFwTGVnZW5kUHJvcHMgPSB7XG4gIGxheWVycz86IFJlYWRvbmx5QXJyYXk8TGF5ZXI+O1xuICB3aWR0aD86IG51bWJlcjtcbiAgbWFwU3RhdGU/OiBNYXBTdGF0ZTtcbiAgb3B0aW9ucz86IHtcbiAgICBzaG93TGF5ZXJOYW1lPzogYm9vbGVhbjtcbiAgfTtcbiAgZGlzYWJsZUVkaXQ/OiBib29sZWFuO1xuICBpc0V4cG9ydD86IGJvb2xlYW47XG4gIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U/OiAob2xkTGF5ZXI6IExheWVyLCBuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+KSA9PiB2b2lkO1xuICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eT86IChsYXllcjogTGF5ZXIpID0+IHZvaWQ7XG4gIGFjdGlvbkljb25zPzogTWFwTGVnZW5kSWNvbnM7XG59O1xuXG5NYXBMZWdlbmRGYWN0b3J5LmRlcHMgPSBbTGF5ZXJMZWdlbmRIZWFkZXJGYWN0b3J5LCBMYXllckxlZ2VuZENvbnRlbnRGYWN0b3J5XTtcblxuZnVuY3Rpb24gTWFwTGVnZW5kRmFjdG9yeShcbiAgTGF5ZXJMZWdlbmRIZWFkZXI6IFJldHVyblR5cGU8dHlwZW9mIExheWVyTGVnZW5kSGVhZGVyRmFjdG9yeT4sXG4gIExheWVyTGVnZW5kQ29udGVudDogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJMZWdlbmRDb250ZW50RmFjdG9yeT5cbikge1xuICBjb25zdCBNYXBMZWdlbmQ6IFJlYWN0LkZDPE1hcExlZ2VuZFByb3BzPiA9ICh7XG4gICAgbGF5ZXJzID0gW10sXG4gICAgd2lkdGgsXG4gICAgbWFwU3RhdGUsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNhYmxlRWRpdCxcbiAgICBpc0V4cG9ydCxcbiAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlLFxuICAgIG9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5LFxuICAgIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zXG4gIH0pID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1hcC1sZWdlbmRcIj5cbiAgICAgIHtsYXllcnMubWFwKChsYXllciwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFsYXllci5pc1ZhbGlkVG9TYXZlKCkgfHwgbGF5ZXIuY29uZmlnLmhpZGRlbikge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclcgPSB3aWR0aCB8fCBESU1FTlNJT05TLm1hcENvbnRyb2wud2lkdGg7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8U3R5bGVkTWFwQ29udHJvbExlZ2VuZFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllclwiXG4gICAgICAgICAgICBsYXN0PXtpbmRleCA9PT0gbGF5ZXJzLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgd2lkdGg9e2NvbnRhaW5lcld9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExheWVyTGVnZW5kSGVhZGVyXG4gICAgICAgICAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgICAgbGF5ZXI9e2xheWVyfVxuICAgICAgICAgICAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eT17b25Ub2dnbGVMYXllclZpc2liaWxpdHl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPExheWVyTGVnZW5kQ29udGVudFxuICAgICAgICAgICAgICBjb250YWluZXJXPXtjb250YWluZXJXfVxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICAgICAgZGlzYWJsZUVkaXQ9e2Rpc2FibGVFZGl0fVxuICAgICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U9e29uTGF5ZXJWaXNDb25maWdDaGFuZ2V9XG4gICAgICAgICAgICAgIGFjdGlvbkljb25zPXthY3Rpb25JY29uc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdHlsZWRNYXBDb250cm9sTGVnZW5kPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC9kaXY+XG4gICk7XG5cbiAgTWFwTGVnZW5kLmRpc3BsYXlOYW1lID0gJ01hcExlZ2VuZCc7XG5cbiAgcmV0dXJuIE1hcExlZ2VuZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFwTGVnZW5kRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQVAsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLFVBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGFBQUEsR0FBQVQsT0FBQTtBQUdBLElBQUFVLHdCQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxNQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxrQkFBQSxHQUFBVixzQkFBQSxDQUFBRixPQUFBO0FBQXlFLElBQUFhLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFoQnpF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
|
|
510
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZDNDb2xvciIsIl9kM0Zvcm1hdCIsIl9yZWFjdEludGwiLCJfY29sb3JMZWdlbmQiLCJfcmFkaXVzTGVnZW5kIiwiX2NvbnN0YW50cyIsIl9sb2NhbGl6YXRpb24iLCJfdmlld3BvcnRNZXJjYXRvclByb2plY3QiLCJfaWNvbnMiLCJfcGFuZWxIZWFkZXJBY3Rpb24iLCJfcmVkdWNlcnMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlN0eWxlZE1hcENvbnRyb2xMZWdlbmQiLCJleHBvcnRzIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwibWFwQ29udHJvbCIsInBhZGRpbmciLCJmb250RmFtaWx5IiwicGFuZWxCb3JkZXJDb2xvciIsIiRsYXN0Iiwid2lkdGgiLCJ0ZXh0Q29sb3IiLCJzdWJ0ZXh0Q29sb3IiLCJ0ZXh0Q29sb3JIbCIsIlN0eWxlZExlZ2VuZEhlYWRlclJvdyIsIlN0eWxlZFZpc2liaWxpdHlUb2dnbGUiLCIkaXNWaXNpYmxlIiwiU3R5bGVkU3BsaXRWaXNpYmlsaXR5Q29udHJvbHMiLCJTdHlsZWRTcGxpdFNlcGFyYXRvciIsIlN0eWxlZEV4cGFuZFRvZ2dsZSIsIlZpc3VhbENoYW5uZWxNZXRyaWMiLCJfcmVmIiwibmFtZSIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiaWQiLCJMYXllckRlZmF1bHRMZWdlbmQiLCJfcmVmMiIsImxhYmVsIiwiU2luZ2xlQ29sb3JMZWdlbmRGYWN0b3J5IiwiZGVwcyIsIkxlZ2VuZFJvd0ZhY3RvcnkiLCJMZWdlbmRSb3ciLCJTaW5nbGVDb2xvckxlZ2VuZCIsIl9yZWYzIiwiY29sb3IiLCJkaXNwbGF5TGFiZWwiLCJCb29sZWFuIiwiQXJyYXkiLCJpc0FycmF5IiwicmdiIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInRvU3RyaW5nIiwiZGlzcGxheU5hbWUiLCJSZWFjdCIsIm1lbW8iLCJMYXllckNvbG9yTGVnZW5kRmFjdG9yeSIsIkNvbG9yTGVnZW5kRmFjdG9yeSIsIlBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSIsIkNvbG9yTGVnZW5kIiwiUGFuZWxIZWFkZXJBY3Rpb24iLCJMYXllckNvbG9yTGVnZW5kIiwiX3JlZjQiLCJkZXNjcmlwdGlvbiIsImNvbmZpZyIsImxheWVyIiwiY29sb3JDaGFubmVsIiwiZGlzYWJsZUVkaXQiLCJvbkxheWVyVmlzQ29uZmlnQ2hhbmdlIiwiaXNFeHBvcnQiLCJtYXBTdGF0ZSIsImFjdGlvbkljb25zIiwiaW50bCIsInVzZUludGwiLCJlbmFibGVDb2xvckJ5IiwibWVhc3VyZSIsInNjYWxlIiwiZmllbGQiLCJkb21haW4iLCJyYW5nZSIsInByb3BlcnR5IiwiZml4ZWQiLCJfbWFwIiwibWFwIiwiayIsIl9tYXAyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29sb3JTY2FsZSIsImNvbG9yRmllbGQiLCJjb2xvckRvbWFpbiIsImlzRml4ZWQiLCJ2aXNDb25maWciLCJjb2xvclJhbmdlIiwib25VcGRhdGVDb2xvckxlZ2VuZCIsInVzZUNhbGxiYWNrIiwiY29sb3JMZWdlbmRzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJoYW5kbGVUb2dnbGVFeHBhbmRlZCIsIm9uQ2xpY2siLCJJY29uQ29tcG9uZW50IiwiZXhwYW5kZWQiLCJjb2xsYXBzZWQiLCJzY2FsZVR5cGUiLCJmaWVsZFR5cGUiLCJ0eXBlIiwibGFiZWxGb3JtYXQiLCJkaXNwbGF5Rm9ybWF0IiwiZDNGb3JtYXQiLCJmb3JtYXRNZXNzYWdlIiwiY29uY2F0Iiwia2V5IiwiZGVmYXVsdE1lc3NhZ2UiLCJnZXRMYXllclJhZGl1c1NjYWxlTWV0ZXJzVG9QaXhlbHNNdWx0aXBsaWVyIiwiX2dldERpc3RhbmNlU2NhbGVzIiwiZ2V0RGlzdGFuY2VTY2FsZXMiLCJtZXRlcnNQZXJQaXhlbCIsImZpeGVkUmFkaXVzIiwic2l6ZUZpZWxkIiwiZ2V0UmFkaXVzU2NhbGVCeVpvb20iLCJMYXllclJhZGl1c0xlZ2VuZCIsIl9yZWY1IiwidmlzdWFsQ2hhbm5lbCIsImdldFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbiIsImVuYWJsZVNpemVCeSIsIl9tYXAzIiwiX21hcDQiLCJzaXplU2NhbGUiLCJzaXplRG9tYWluIiwic2l6ZVJhbmdlIiwicmFkaXVzTXVsdGlwbGllciIsInYiLCJpc0NvbG9yQ2hhbm5lbCIsIkNIQU5ORUxfU0NBTEVTIiwiY29sb3JBZ2dyIiwiaW5jbHVkZXMiLCJjaGFubmVsU2NhbGVUeXBlIiwiaXNSYWRpdXNDaGFubmVsIiwicmFkaXVzIiwiTGF5ZXJMZWdlbmRIZWFkZXJGYWN0b3J5IiwiTGF5ZXJMZWdlbmRIZWFkZXIiLCJfcmVmNiIsIl9zcGxpdE1hcHMkIiwiX3NwbGl0TWFwcyQyIiwib3B0aW9ucyIsIm9uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5IiwiaXNTcGxpdCIsInNwbGl0TWFwcyIsIm9uTWFwVG9nZ2xlTGF5ZXIiLCJvblRvZ2dsZUV4cGFuZGVkIiwiaXNWaXNpYmxlIiwib25Ub2dnbGUiLCJvblRvZ2dsZUxlZnQiLCJvblRvZ2dsZVJpZ2h0Iiwic2hvd0xheWVyTmFtZSIsImlzTGVmdFZpc2libGUiLCJsYXllcnMiLCJpc1JpZ2h0VmlzaWJsZSIsImlzQW55VmlzaWJsZSIsInN0eWxlIiwib3BhY2l0eSIsImZsZXgiLCJBcnJvd0Rvd24iLCJoZWlnaHQiLCJBcnJvd1JpZ2h0IiwiRXllU2VlbiIsIkV5ZVVuc2VlbiIsImRlZmF1bHRBY3Rpb25JY29ucyIsIkxheWVyTGVnZW5kQ29udGVudEZhY3RvcnkiLCJMYXllckxlZ2VuZENvbnRlbnQiLCJfcmVmNyIsImNvbnRhaW5lclciLCJ2aXN1YWxDaGFubmVscyIsImdldExlZ2VuZFZpc3VhbENoYW5uZWxzIiwiY2hhbm5lbEtleXMiLCJ2YWx1ZXMiLCJjb2xvckNoYW5uZWxzIiwibm9uQ29sb3JDaGFubmVscyIsInZjIiwiRElNRU5TSU9OUyIsImNvbG9yQ2hhbm5lbFRvUmVuZGVyIiwiY2MiLCJfbGF5ZXIkZ2V0VmlzdWFsQ2hhbm4iLCJjb25kaXRpb24iLCJGcmFnbWVudCIsIm1hdGNoQ29uZGl0aW9uIiwiZW5hYmxlZCIsImRlZmF1bHRNZWFzdXJlIiwiTWFwTGVnZW5kRmFjdG9yeSIsIkxheWVyTGVnZW5kSXRlbSIsIl9yZWY4IiwiaXNMYXN0IiwiaXNMYXllclZpc2libGUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInByZXYiLCJ1bmRlZmluZWQiLCJNYXBMZWdlbmQiLCJfcmVmOSIsIl9yZWY5JGxheWVycyIsImxheWVyT3JkZXIiLCJfcmVmOSRhY3Rpb25JY29ucyIsIm9yZGVyZWRMYXllcnMiLCJnZXRGbGF0TGF5ZXJPcmRlciIsInJlZHVjZSIsImFjYyIsImZpbmQiLCJsIiwiaW5kZXgiLCJfc3BsaXRNYXBzJDMiLCJfc3BsaXRNYXBzJDQiLCJpc1ZhbGlkVG9TYXZlIiwiaGlkZGVuIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFwL21hcC1sZWdlbmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0ZDLCB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIENvbXBvbmVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtyZ2J9IGZyb20gJ2QzLWNvbG9yJztcbmltcG9ydCB7Zm9ybWF0IGFzIGQzRm9ybWF0fSBmcm9tICdkMy1mb3JtYXQnO1xuaW1wb3J0IHt1c2VJbnRsfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBDb2xvckxlZ2VuZEZhY3RvcnksIHtMZWdlbmRSb3dGYWN0b3J5fSBmcm9tICcuLi9jb21tb24vY29sb3ItbGVnZW5kJztcbmltcG9ydCBSYWRpdXNMZWdlbmQgZnJvbSAnLi4vY29tbW9uL3JhZGl1cy1sZWdlbmQnO1xuaW1wb3J0IHtDSEFOTkVMX1NDQUxFUywgRElNRU5TSU9OU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge0xheWVyLCBMYXllckJhc2VDb25maWcsIFZpc3VhbENoYW5uZWwsIFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtMYXllclZpc0NvbmZpZywgTGF5ZXJPcmRlciwgTWFwU3RhdGUsIFJHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7Z2V0RGlzdGFuY2VTY2FsZXN9IGZyb20gJ3ZpZXdwb3J0LW1lcmNhdG9yLXByb2plY3QnO1xuaW1wb3J0IHtBcnJvd0Rvd24sIEFycm93UmlnaHQsIEV5ZVNlZW4sIEV5ZVVuc2Vlbn0gZnJvbSAnLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCBQYW5lbEhlYWRlckFjdGlvbkZhY3RvcnkgZnJvbSAnLi4vc2lkZS1wYW5lbC9wYW5lbC1oZWFkZXItYWN0aW9uJztcbmltcG9ydCB7Z2V0RmxhdExheWVyT3JkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuXG5pbnRlcmZhY2UgU3R5bGVkTWFwQ29udHJvbExlZ2VuZFByb3BzIHtcbiAgd2lkdGg/OiBudW1iZXI7XG4gICRsYXN0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IFN0eWxlZE1hcENvbnRyb2xMZWdlbmQgPSBzdHlsZWQuZGl2PFN0eWxlZE1hcENvbnRyb2xMZWdlbmRQcm9wcz5gXG4gIHBhZGRpbmc6IDEwcHggJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5tYXBDb250cm9sLnBhZGRpbmd9cHggMTBweFxuICAgICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICBmb250LXNpemU6IDExcHg7XG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRGYW1pbHl9O1xuICBib3JkZXItYm90dG9tLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQm9yZGVyQ29sb3J9O1xuICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHtwcm9wcyA9PiAocHJvcHMuJGxhc3QgPyAwIDogJzFweCcpfTtcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMud2lkdGh9cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfbmFtZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgfVxuICAubGVnZW5kLS1sYXllcl90eXBlIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfc2l6ZS10aXRsZS1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubWFwQ29udHJvbC5wYWRkaW5nfXB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAubGVnZW5kLS1sYXllcl9fdGl0bGUge1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfX2l0ZW0ge1xuICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XG4gIH1cbiAgLmxlZ2VuZC0tbGF5ZXJfYnkge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcn07XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfY29sb3JfZmllbGQge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgLmxlZ2VuZC0tbGF5ZXJfY29sb3ItbGVnZW5kIHtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZExlZ2VuZEhlYWRlclJvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbmA7XG5cbmNvbnN0IFN0eWxlZFZpc2liaWxpdHlUb2dnbGUgPSBzdHlsZWQuZGl2PHskaXNWaXNpYmxlOiBib29sZWFufT5gXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICR7cHJvcHMgPT4gKHByb3BzLiRpc1Zpc2libGUgPyBwcm9wcy50aGVtZS50ZXh0Q29sb3IgOiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3IpfTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgb3BhY2l0eTogJHtwcm9wcyA9PiAocHJvcHMuJGlzVmlzaWJsZSA/IDEgOiAwLjUpfTtcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkU3BsaXRWaXNpYmlsaXR5Q29udHJvbHMgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tbGVmdDogOHB4O1xuICBnYXA6IDRweDtcblxuICAke1N0eWxlZFZpc2liaWxpdHlUb2dnbGV9IHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkU3BsaXRTZXBhcmF0b3IgPSBzdHlsZWQuZGl2PHskaXNWaXNpYmxlOiBib29sZWFufT5gXG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMTJweDtcbiAgYmFja2dyb3VuZDogJHtwcm9wcyA9PiAocHJvcHMuJGlzVmlzaWJsZSA/IHByb3BzLnRoZW1lLnRleHRDb2xvciA6IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcil9O1xuICBvcGFjaXR5OiAwLjM7XG5gO1xuXG5jb25zdCBTdHlsZWRFeHBhbmRUb2dnbGUgPSBzdHlsZWQuZGl2YFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiA2cHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIG9wYWNpdHk6IDAuNztcblxuICAmOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgVmlzdWFsQ2hhbm5lbE1ldHJpYyA9ICh7bmFtZX0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfX3RpdGxlXCI+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX2NvbG9yX2ZpZWxkXCI+XG4gICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXtuYW1lfSAvPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJTaXplTGVnZW5kUHJvcHMgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBMYXllckRlZmF1bHRMZWdlbmQ6IFJlYWN0LkZDPExheWVyU2l6ZUxlZ2VuZFByb3BzPiA9ICh7bGFiZWwsIG5hbWV9KSA9PlxuICBsYWJlbCA/IChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfc2l6ZS1zY2hlbWFcIj5cbiAgICAgIDxwPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX2J5XCI+e2xhYmVsID8gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e2xhYmVsfSAvPiA6IG51bGx9PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX2J5XCI+IGJ5IDwvc3Bhbj5cbiAgICAgIDwvcD5cbiAgICAgIHtuYW1lICYmIDxWaXN1YWxDaGFubmVsTWV0cmljIG5hbWU9e25hbWV9IC8+fVxuICAgIDwvZGl2PlxuICApIDogbnVsbDtcblxuZXhwb3J0IHR5cGUgU2luZ2xlQ29sb3JMZWdlbmRQcm9wcyA9IHtcbiAgY29sb3I6IFJHQkNvbG9yO1xuICBsYWJlbD86IHN0cmluZztcbn07XG5cblNpbmdsZUNvbG9yTGVnZW5kRmFjdG9yeS5kZXBzID0gW0xlZ2VuZFJvd0ZhY3RvcnldO1xuXG5leHBvcnQgZnVuY3Rpb24gU2luZ2xlQ29sb3JMZWdlbmRGYWN0b3J5KExlZ2VuZFJvdzogUmV0dXJuVHlwZTx0eXBlb2YgTGVnZW5kUm93RmFjdG9yeT4pIHtcbiAgY29uc3QgU2luZ2xlQ29sb3JMZWdlbmQ6IFJlYWN0LkZDPFNpbmdsZUNvbG9yTGVnZW5kUHJvcHM+ID0gKHtjb2xvciwgbGFiZWx9KSA9PiAoXG4gICAgPExlZ2VuZFJvd1xuICAgICAgbGFiZWw9e2xhYmVsID8/ICcnfVxuICAgICAgZGlzcGxheUxhYmVsPXtCb29sZWFuKGxhYmVsKX1cbiAgICAgIGNvbG9yPXtBcnJheS5pc0FycmF5KGNvbG9yKSA/IHJnYiguLi5jb2xvcikudG9TdHJpbmcoKSA6IGNvbG9yfVxuICAgIC8+XG4gICk7XG5cbiAgU2luZ2xlQ29sb3JMZWdlbmQuZGlzcGxheU5hbWUgPSAnU2luZ2xlQ29sb3JMZWdlbmQnO1xuXG4gIHJldHVybiBSZWFjdC5tZW1vKFNpbmdsZUNvbG9yTGVnZW5kKTtcbn1cblxuZXhwb3J0IHR5cGUgTGF5ZXJDb2xvckxlZ2VuZFByb3BzID0ge1xuICBkZXNjcmlwdGlvbjogVmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uO1xuICBjb25maWc6IExheWVyQmFzZUNvbmZpZztcbiAgY29sb3JDaGFubmVsOiBWaXN1YWxDaGFubmVsO1xuICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPzogKG9sZExheWVyOiBMYXllciwgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPikgPT4gdm9pZDtcbiAgbGF5ZXI6IExheWVyO1xuICBkaXNhYmxlRWRpdD86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgbWFwU3RhdGU/OiBNYXBTdGF0ZTtcbiAgYWN0aW9uSWNvbnM6IE1hcExlZ2VuZEljb25zO1xufTtcblxuTGF5ZXJDb2xvckxlZ2VuZEZhY3RvcnkuZGVwcyA9IFtcbiAgQ29sb3JMZWdlbmRGYWN0b3J5LFxuICBTaW5nbGVDb2xvckxlZ2VuZEZhY3RvcnksXG4gIFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeVxuXTtcbmV4cG9ydCBmdW5jdGlvbiBMYXllckNvbG9yTGVnZW5kRmFjdG9yeShcbiAgQ29sb3JMZWdlbmQ6IFJldHVyblR5cGU8dHlwZW9mIENvbG9yTGVnZW5kRmFjdG9yeT4sXG4gIFNpbmdsZUNvbG9yTGVnZW5kOiBSZXR1cm5UeXBlPHR5cGVvZiBTaW5nbGVDb2xvckxlZ2VuZEZhY3Rvcnk+LFxuICBQYW5lbEhlYWRlckFjdGlvbjogUmV0dXJuVHlwZTx0eXBlb2YgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5PlxuKSB7XG4gIGNvbnN0IExheWVyQ29sb3JMZWdlbmQ6IFJlYWN0LkZDPExheWVyQ29sb3JMZWdlbmRQcm9wcz4gPSAoe1xuICAgIGRlc2NyaXB0aW9uLFxuICAgIGNvbmZpZyxcbiAgICBsYXllcixcbiAgICBjb2xvckNoYW5uZWwsXG4gICAgZGlzYWJsZUVkaXQsXG4gICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZSxcbiAgICBpc0V4cG9ydCxcbiAgICBtYXBTdGF0ZSxcbiAgICBhY3Rpb25JY29uc1xuICB9KSA9PiB7XG4gICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgICBjb25zdCBlbmFibGVDb2xvckJ5ID0gZGVzY3JpcHRpb24ubWVhc3VyZTtcbiAgICBjb25zdCB7c2NhbGUsIGZpZWxkLCBkb21haW4sIHJhbmdlLCBwcm9wZXJ0eSwgZml4ZWR9ID0gY29sb3JDaGFubmVsO1xuICAgIGNvbnN0IFtjb2xvclNjYWxlLCBjb2xvckZpZWxkLCBjb2xvckRvbWFpbl0gPSBbc2NhbGUsIGZpZWxkLCBkb21haW5dLm1hcChrID0+IGNvbmZpZ1trXSk7XG4gICAgY29uc3QgaXNGaXhlZCA9IGZpeGVkICYmIGNvbmZpZy52aXNDb25maWdbZml4ZWRdO1xuXG4gICAgY29uc3QgY29sb3JSYW5nZSA9IGNvbmZpZy52aXNDb25maWdbcmFuZ2VdO1xuICAgIGNvbnN0IG9uVXBkYXRlQ29sb3JMZWdlbmQgPSB1c2VDYWxsYmFjayhcbiAgICAgIGNvbG9yTGVnZW5kcyA9PiB7XG4gICAgICAgIGlmIChvbkxheWVyVmlzQ29uZmlnQ2hhbmdlKSB7XG4gICAgICAgICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZShsYXllciwge1xuICAgICAgICAgICAgW3JhbmdlXToge1xuICAgICAgICAgICAgICAuLi5jb2xvclJhbmdlLFxuICAgICAgICAgICAgICBjb2xvckxlZ2VuZHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtsYXllciwgb25MYXllclZpc0NvbmZpZ0NoYW5nZSwgY29sb3JSYW5nZSwgcmFuZ2VdXG4gICAgKTtcbiAgICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZShpc0V4cG9ydCk7XG4gICAgY29uc3QgaGFuZGxlVG9nZ2xlRXhwYW5kZWQgPSAoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX19pdGVtXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9jb2xvci1zY2hlbWFcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAge2VuYWJsZUNvbG9yQnkgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9zaXplLXRpdGxlLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxWaXN1YWxDaGFubmVsTWV0cmljIG5hbWU9e2VuYWJsZUNvbG9yQnl9IC8+XG4gICAgICAgICAgICAgICAgeyFpc0V4cG9ydCA/IChcbiAgICAgICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgICAgICBpZD1cImxlZ2VuZC1jb2xsYXBzZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVUb2dnbGVFeHBhbmRlZH1cbiAgICAgICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17aXNFeHBhbmRlZCA/IGFjdGlvbkljb25zLmV4cGFuZGVkIDogYWN0aW9uSWNvbnMuY29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9jb2xvci1sZWdlbmRcIj5cbiAgICAgICAgICAgICAge2VuYWJsZUNvbG9yQnkgPyAoXG4gICAgICAgICAgICAgICAgPENvbG9yTGVnZW5kXG4gICAgICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgICAgICBpc0V4cGFuZGVkPXtpc0V4cGFuZGVkfVxuICAgICAgICAgICAgICAgICAgc2NhbGVUeXBlPXtjb2xvclNjYWxlfVxuICAgICAgICAgICAgICAgICAgZGlzcGxheUxhYmVsXG4gICAgICAgICAgICAgICAgICBkb21haW49e2NvbG9yRG9tYWlufVxuICAgICAgICAgICAgICAgICAgZmllbGRUeXBlPXsoY29sb3JGaWVsZCAmJiBjb2xvckZpZWxkLnR5cGUpIHx8ICdyZWFsJ31cbiAgICAgICAgICAgICAgICAgIHJhbmdlPXtjb2xvclJhbmdlfVxuICAgICAgICAgICAgICAgICAgb25VcGRhdGVDb2xvckxlZ2VuZD17b25VcGRhdGVDb2xvckxlZ2VuZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVFZGl0PXtkaXNhYmxlRWRpdCB8fCBCb29sZWFuKGlzRXhwb3J0KX1cbiAgICAgICAgICAgICAgICAgIGlzRml4ZWQ9e2lzRml4ZWR9XG4gICAgICAgICAgICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgICAgICAgICBsYWJlbEZvcm1hdD17XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yRmllbGQ/LmRpc3BsYXlGb3JtYXQgPyBkM0Zvcm1hdChjb2xvckZpZWxkPy5kaXNwbGF5Rm9ybWF0KSA6IG51bGxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxTaW5nbGVDb2xvckxlZ2VuZFxuICAgICAgICAgICAgICAgICAgY29sb3I9e2NvbmZpZy52aXNDb25maWdbcHJvcGVydHldIHx8IGNvbmZpZ1twcm9wZXJ0eV0gfHwgY29uZmlnLmNvbG9yfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBgbWFwTGVnZW5kLmxheWVycy4ke2xheWVyLnR5cGV9LnNpbmdsZUNvbG9yLiR7Y29sb3JDaGFubmVsLmtleX1gLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogaW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogYG1hcExlZ2VuZC5sYXllcnMuZGVmYXVsdC5zaW5nbGVDb2xvci4ke2NvbG9yQ2hhbm5lbC5rZXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJyAnIC8vIG11c3RuJ3QgYmUgZW1wdHkgc3RyaW5nIG9yIGlkIHdpbGwgYmUgdXNlZFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH07XG5cbiAgTGF5ZXJDb2xvckxlZ2VuZC5kaXNwbGF5TmFtZSA9ICdMYXllckNvbG9yTGVnZW5kJztcbiAgcmV0dXJuIFJlYWN0Lm1lbW8oTGF5ZXJDb2xvckxlZ2VuZCk7XG59XG5cbmZ1bmN0aW9uIGdldExheWVyUmFkaXVzU2NhbGVNZXRlcnNUb1BpeGVsc011bHRpcGxpZXIobGF5ZXIsIG1hcFN0YXRlKSB7XG4gIC8vIEB0cy1pZ25vcmUgdGhpcyBhY3R1YWxseSBleGlzdFxuICBjb25zdCB7bWV0ZXJzUGVyUGl4ZWx9ID0gZ2V0RGlzdGFuY2VTY2FsZXMobWFwU3RhdGUpO1xuICAvLyBpZiBubyBmaWVsZCBzaXplIGlzIGRlZmluZWQgd2UgbmVlZCB0byBwYXNzIGZpeGVkIHJhZGl1cyA9IGZhbHNlXG4gIGNvbnN0IGZpeGVkUmFkaXVzID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5maXhlZFJhZGl1cyAmJiBCb29sZWFuKGxheWVyLmNvbmZpZy5zaXplRmllbGQpO1xuICByZXR1cm4gbGF5ZXIuZ2V0UmFkaXVzU2NhbGVCeVpvb20obWFwU3RhdGUsIGZpeGVkUmFkaXVzKSAvIG1ldGVyc1BlclBpeGVsWzBdO1xufVxuXG5leHBvcnQgdHlwZSBNYXBMZWdlbmRJY29ucyA9IHtcbiAgZXhwYW5kZWQ6IENvbXBvbmVudFR5cGU8YW55PjtcbiAgY29sbGFwc2VkOiBDb21wb25lbnRUeXBlPGFueT47XG59O1xuXG5leHBvcnQgdHlwZSBMYXllclJhZGl1c0xlZ2VuZFByb3BzID0ge1xuICBsYXllcjogTGF5ZXI7XG4gIG1hcFN0YXRlPzogTWFwU3RhdGU7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgdmlzdWFsQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbDtcbn07XG5cbmV4cG9ydCBjb25zdCBMYXllclJhZGl1c0xlZ2VuZDogRkM8TGF5ZXJSYWRpdXNMZWdlbmRQcm9wcz4gPSBSZWFjdC5tZW1vKFxuICAoe2xheWVyLCB3aWR0aCwgdmlzdWFsQ2hhbm5lbCwgbWFwU3RhdGV9KSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBsYXllci5nZXRWaXN1YWxDaGFubmVsRGVzY3JpcHRpb24odmlzdWFsQ2hhbm5lbC5rZXkpO1xuICAgIGNvbnN0IGNvbmZpZyA9IGxheWVyLmNvbmZpZztcblxuICAgIGNvbnN0IGVuYWJsZVNpemVCeSA9IGRlc2NyaXB0aW9uLm1lYXN1cmU7XG4gICAgY29uc3Qge3NjYWxlLCBmaWVsZCwgZG9tYWluLCByYW5nZX0gPSB2aXN1YWxDaGFubmVsO1xuICAgIGNvbnN0IFtzaXplU2NhbGUsIHNpemVGaWVsZCwgc2l6ZURvbWFpbl0gPSBbc2NhbGUsIGZpZWxkLCBkb21haW5dLm1hcChrID0+IGNvbmZpZ1trXSk7XG4gICAgbGV0IHNpemVSYW5nZSA9IGNvbmZpZy52aXNDb25maWdbcmFuZ2VdO1xuXG4gICAgaWYgKG1hcFN0YXRlKSB7XG4gICAgICBjb25zdCByYWRpdXNNdWx0aXBsaWVyID0gZ2V0TGF5ZXJSYWRpdXNTY2FsZU1ldGVyc1RvUGl4ZWxzTXVsdGlwbGllcihsYXllciwgbWFwU3RhdGUpO1xuICAgICAgc2l6ZVJhbmdlID0gc2l6ZVJhbmdlLm1hcCh2ID0+IHYgKiByYWRpdXNNdWx0aXBsaWVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyX3NpemUtc2NoZW1hXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIHtlbmFibGVTaXplQnkgPyA8VmlzdWFsQ2hhbm5lbE1ldHJpYyBuYW1lPXtlbmFibGVTaXplQnl9IC8+IDogbnVsbH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLS1sYXllcl9zaXplLWxlZ2VuZFwiPlxuICAgICAgICAgICAgICB7ZW5hYmxlU2l6ZUJ5ID8gKFxuICAgICAgICAgICAgICAgIDxSYWRpdXNMZWdlbmRcbiAgICAgICAgICAgICAgICAgIHNjYWxlVHlwZT17c2l6ZVNjYWxlfVxuICAgICAgICAgICAgICAgICAgZG9tYWluPXtzaXplRG9tYWlufVxuICAgICAgICAgICAgICAgICAgZmllbGRUeXBlPXsoc2l6ZUZpZWxkICYmIHNpemVGaWVsZC50eXBlKSB8fCAncmVhbCd9XG4gICAgICAgICAgICAgICAgICByYW5nZT17c2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuKTtcblxuY29uc3QgaXNDb2xvckNoYW5uZWwgPSB2aXN1YWxDaGFubmVsID0+XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvciwgQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXS5pbmNsdWRlcyh2aXN1YWxDaGFubmVsLmNoYW5uZWxTY2FsZVR5cGUpO1xuXG5leHBvcnQgdHlwZSBMYXllckxlZ2VuZEhlYWRlclByb3BzID0ge1xuICBsYXllcjogTGF5ZXI7XG4gIG9wdGlvbnM/OiB7XG4gICAgc2hvd0xheWVyTmFtZT86IGJvb2xlYW47XG4gIH07XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgb25Ub2dnbGVMYXllclZpc2liaWxpdHk/OiAobGF5ZXI6IExheWVyKSA9PiB2b2lkO1xuICBpc1NwbGl0PzogYm9vbGVhbjtcbiAgc3BsaXRNYXBzPzoge2xheWVyczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59fVtdO1xuICBvbk1hcFRvZ2dsZUxheWVyPzogKG1hcEluZGV4OiBudW1iZXIsIGxheWVySWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG4gIG9uVG9nZ2xlRXhwYW5kZWQ/OiAoKSA9PiB2b2lkO1xufTtcblxuY29uc3QgaXNSYWRpdXNDaGFubmVsID0gdmlzdWFsQ2hhbm5lbCA9PlxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXS5pbmNsdWRlcyh2aXN1YWxDaGFubmVsLmNoYW5uZWxTY2FsZVR5cGUpO1xuXG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJMZWdlbmRIZWFkZXJGYWN0b3J5KCkge1xuICBjb25zdCBMYXllckxlZ2VuZEhlYWRlcjogUmVhY3QuRkM8TGF5ZXJMZWdlbmRIZWFkZXJQcm9wcz4gPSAoe1xuICAgIG9wdGlvbnMsXG4gICAgbGF5ZXIsXG4gICAgaXNFeHBvcnQsXG4gICAgb25Ub2dnbGVMYXllclZpc2liaWxpdHksXG4gICAgaXNTcGxpdCxcbiAgICBzcGxpdE1hcHMsXG4gICAgb25NYXBUb2dnbGVMYXllcixcbiAgICBpc0V4cGFuZGVkLFxuICAgIG9uVG9nZ2xlRXhwYW5kZWRcbiAgfSkgPT4ge1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IGxheWVyLmNvbmZpZy5pc1Zpc2libGU7XG5cbiAgICBjb25zdCBvblRvZ2dsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChvblRvZ2dsZUxheWVyVmlzaWJpbGl0eSkge1xuICAgICAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eShsYXllcik7XG4gICAgICB9XG4gICAgfSwgW2xheWVyLCBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eV0pO1xuXG4gICAgY29uc3Qgb25Ub2dnbGVMZWZ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKG9uTWFwVG9nZ2xlTGF5ZXIpIHtcbiAgICAgICAgb25NYXBUb2dnbGVMYXllcigwLCBsYXllci5pZCk7XG4gICAgICB9XG4gICAgfSwgW2xheWVyLCBvbk1hcFRvZ2dsZUxheWVyXSk7XG5cbiAgICBjb25zdCBvblRvZ2dsZVJpZ2h0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKG9uTWFwVG9nZ2xlTGF5ZXIpIHtcbiAgICAgICAgb25NYXBUb2dnbGVMYXllcigxLCBsYXllci5pZCk7XG4gICAgICB9XG4gICAgfSwgW2xheWVyLCBvbk1hcFRvZ2dsZUxheWVyXSk7XG5cbiAgICBpZiAob3B0aW9ucz8uc2hvd0xheWVyTmFtZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTGVmdFZpc2libGUgPVxuICAgICAgaXNTcGxpdCAmJiBzcGxpdE1hcHMgJiYgc3BsaXRNYXBzLmxlbmd0aCA+IDFcbiAgICAgICAgPyBpc1Zpc2libGUgJiYgQm9vbGVhbihzcGxpdE1hcHNbMF0/LmxheWVycz8uW2xheWVyLmlkXSlcbiAgICAgICAgOiBpc1Zpc2libGU7XG4gICAgY29uc3QgaXNSaWdodFZpc2libGUgPVxuICAgICAgaXNTcGxpdCAmJiBzcGxpdE1hcHMgJiYgc3BsaXRNYXBzLmxlbmd0aCA+IDFcbiAgICAgICAgPyBpc1Zpc2libGUgJiYgQm9vbGVhbihzcGxpdE1hcHNbMV0/LmxheWVycz8uW2xheWVyLmlkXSlcbiAgICAgICAgOiBpc1Zpc2libGU7XG4gICAgY29uc3QgaXNBbnlWaXNpYmxlID0gaXNMZWZ0VmlzaWJsZSB8fCBpc1JpZ2h0VmlzaWJsZTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkTGVnZW5kSGVhZGVyUm93PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC0tbGF5ZXJfbmFtZVwiIHN0eWxlPXt7b3BhY2l0eTogaXNBbnlWaXNpYmxlID8gMSA6IDAuNSwgZmxleDogMX19PlxuICAgICAgICAgIHtsYXllci5jb25maWcubGFiZWx9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7b25Ub2dnbGVFeHBhbmRlZCA/IChcbiAgICAgICAgICA8U3R5bGVkRXhwYW5kVG9nZ2xlIG9uQ2xpY2s9e29uVG9nZ2xlRXhwYW5kZWR9PlxuICAgICAgICAgICAge2lzRXhwYW5kZWQgPyA8QXJyb3dEb3duIGhlaWdodD1cIjEycHhcIiAvPiA6IDxBcnJvd1JpZ2h0IGhlaWdodD1cIjEycHhcIiAvPn1cbiAgICAgICAgICA8L1N0eWxlZEV4cGFuZFRvZ2dsZT5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHshaXNFeHBvcnQgJiYgb25NYXBUb2dnbGVMYXllciAmJiBpc1NwbGl0ICYmIHNwbGl0TWFwcyAmJiBzcGxpdE1hcHMubGVuZ3RoID4gMSA/IChcbiAgICAgICAgICA8U3R5bGVkU3BsaXRWaXNpYmlsaXR5Q29udHJvbHM+XG4gICAgICAgICAgICA8U3R5bGVkVmlzaWJpbGl0eVRvZ2dsZSAkaXNWaXNpYmxlPXtpc0xlZnRWaXNpYmxlfSBvbkNsaWNrPXtvblRvZ2dsZUxlZnR9PlxuICAgICAgICAgICAgICB7aXNMZWZ0VmlzaWJsZSA/IDxFeWVTZWVuIGhlaWdodD1cIjEycHhcIiAvPiA6IDxFeWVVbnNlZW4gaGVpZ2h0PVwiMTJweFwiIC8+fVxuICAgICAgICAgICAgPC9TdHlsZWRWaXNpYmlsaXR5VG9nZ2xlPlxuICAgICAgICAgICAgPFN0eWxlZFNwbGl0U2VwYXJhdG9yICRpc1Zpc2libGU9e2lzQW55VmlzaWJsZX0gLz5cbiAgICAgICAgICAgIDxTdHlsZWRWaXNpYmlsaXR5VG9nZ2xlICRpc1Zpc2libGU9e2lzUmlnaHRWaXNpYmxlfSBvbkNsaWNrPXtvblRvZ2dsZVJpZ2h0fT5cbiAgICAgICAgICAgICAge2lzUmlnaHRWaXNpYmxlID8gPEV5ZVNlZW4gaGVpZ2h0PVwiMTJweFwiIC8+IDogPEV5ZVVuc2VlbiBoZWlnaHQ9XCIxMnB4XCIgLz59XG4gICAgICAgICAgICA8L1N0eWxlZFZpc2liaWxpdHlUb2dnbGU+XG4gICAgICAgICAgPC9TdHlsZWRTcGxpdFZpc2liaWxpdHlDb250cm9scz5cbiAgICAgICAgKSA6ICFpc0V4cG9ydCAmJiBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eSA/IChcbiAgICAgICAgICA8U3R5bGVkVmlzaWJpbGl0eVRvZ2dsZSAkaXNWaXNpYmxlPXtpc1Zpc2libGV9IG9uQ2xpY2s9e29uVG9nZ2xlfT5cbiAgICAgICAgICAgIHtpc1Zpc2libGUgPyA8RXllU2VlbiBoZWlnaHQ9XCIxMnB4XCIgLz4gOiA8RXllVW5zZWVuIGhlaWdodD1cIjEycHhcIiAvPn1cbiAgICAgICAgICA8L1N0eWxlZFZpc2liaWxpdHlUb2dnbGU+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TdHlsZWRMZWdlbmRIZWFkZXJSb3c+XG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIExheWVyTGVnZW5kSGVhZGVyO1xufVxuXG5jb25zdCBkZWZhdWx0QWN0aW9uSWNvbnMgPSB7XG4gIGV4cGFuZGVkOiBBcnJvd0Rvd24sXG4gIGNvbGxhcHNlZDogQXJyb3dSaWdodFxufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJMZWdlbmRDb250ZW50UHJvcHMgPSB7XG4gIGxheWVyOiBMYXllcjtcbiAgY29udGFpbmVyVzogbnVtYmVyO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xuICBkaXNhYmxlRWRpdD86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgb25MYXllclZpc0NvbmZpZ0NoYW5nZT86IChvbGRMYXllcjogTGF5ZXIsIG5ld1Zpc0NvbmZpZzogUGFydGlhbDxMYXllclZpc0NvbmZpZz4pID0+IHZvaWQ7XG4gIGFjdGlvbkljb25zOiBNYXBMZWdlbmRJY29ucztcbn07XG5cbkxheWVyTGVnZW5kQ29udGVudEZhY3RvcnkuZGVwcyA9IFtMYXllckNvbG9yTGVnZW5kRmFjdG9yeV07XG5cbmV4cG9ydCBmdW5jdGlvbiBMYXllckxlZ2VuZENvbnRlbnRGYWN0b3J5KFxuICBMYXllckNvbG9yTGVnZW5kOiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckNvbG9yTGVnZW5kRmFjdG9yeT5cbikge1xuICBjb25zdCBMYXllckxlZ2VuZENvbnRlbnQ6IFJlYWN0LkZDPExheWVyTGVnZW5kQ29udGVudFByb3BzPiA9ICh7XG4gICAgbGF5ZXIsXG4gICAgY29udGFpbmVyVyxcbiAgICBtYXBTdGF0ZSxcbiAgICBkaXNhYmxlRWRpdCxcbiAgICBpc0V4cG9ydCxcbiAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlLFxuICAgIGFjdGlvbkljb25zXG4gIH0pID0+IHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVscyA9IGxheWVyLmdldExlZ2VuZFZpc3VhbENoYW5uZWxzKCk7XG4gICAgY29uc3QgY2hhbm5lbEtleXMgPSBPYmplY3QudmFsdWVzKHZpc3VhbENoYW5uZWxzKTtcbiAgICBjb25zdCBjb2xvckNoYW5uZWxzID0gY2hhbm5lbEtleXMuZmlsdGVyKGlzQ29sb3JDaGFubmVsKSBhcyBWaXN1YWxDaGFubmVsW107XG4gICAgY29uc3Qgbm9uQ29sb3JDaGFubmVscyA9IGNoYW5uZWxLZXlzLmZpbHRlcih2YyA9PiAhaXNDb2xvckNoYW5uZWwodmMpKTtcbiAgICBjb25zdCB3aWR0aCA9IGNvbnRhaW5lclcgLSAyICogRElNRU5TSU9OUy5tYXBDb250cm9sLnBhZGRpbmc7XG5cbiAgICAvLyByZW5kZXIgY29sb3IgYnkgY2hhbmVsIG9ubHlcbiAgICBsZXQgY29sb3JDaGFubmVsVG9SZW5kZXIgPSBjb2xvckNoYW5uZWxzLmZpbHRlcihcbiAgICAgIGNjID0+XG4gICAgICAgICghY2MuY29uZGl0aW9uIHx8IGNjLmNvbmRpdGlvbihsYXllci5jb25maWcpKSAmJlxuICAgICAgICBsYXllci5nZXRWaXN1YWxDaGFubmVsRGVzY3JpcHRpb24oY2Mua2V5KT8ubWVhc3VyZVxuICAgICk7XG4gICAgLy8gaWYgbm8gY29sb3IgYnkgY2hhbmVsLCByZW5kZXIgcmVzdFxuICAgIGlmICghY29sb3JDaGFubmVsVG9SZW5kZXIubGVuZ3RoKSB7XG4gICAgICBjb2xvckNoYW5uZWxUb1JlbmRlciA9IGNvbG9yQ2hhbm5lbHMuZmlsdGVyKFxuICAgICAgICBjYyA9PiAhY2MuY29uZGl0aW9uIHx8IGNjLmNvbmRpdGlvbihsYXllci5jb25maWcpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2NvbG9yQ2hhbm5lbFRvUmVuZGVyLm1hcChjb2xvckNoYW5uZWwgPT4gKFxuICAgICAgICAgIDxMYXllckNvbG9yTGVnZW5kXG4gICAgICAgICAgICBrZXk9e2NvbG9yQ2hhbm5lbC5rZXl9XG4gICAgICAgICAgICBjb2xvckNoYW5uZWw9e2NvbG9yQ2hhbm5lbH1cbiAgICAgICAgICAgIGNvbmZpZz17bGF5ZXIuY29uZmlnfVxuICAgICAgICAgICAgZGVzY3JpcHRpb249e2xheWVyLmdldFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbihjb2xvckNoYW5uZWwua2V5KX1cbiAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgICAgICAgIGRpc2FibGVFZGl0PXtkaXNhYmxlRWRpdH1cbiAgICAgICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U9e29uTGF5ZXJWaXNDb25maWdDaGFuZ2V9XG4gICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICAgIHtub25Db2xvckNoYW5uZWxzLm1hcCgodmlzdWFsQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1hdGNoQ29uZGl0aW9uID0gIXZpc3VhbENoYW5uZWwuY29uZGl0aW9uIHx8IHZpc3VhbENoYW5uZWwuY29uZGl0aW9uKGxheWVyLmNvbmZpZyk7XG4gICAgICAgICAgY29uc3QgZW5hYmxlZCA9IGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsLmZpZWxkXSB8fCB2aXN1YWxDaGFubmVsLmRlZmF1bHRNZWFzdXJlO1xuXG4gICAgICAgICAgaWYgKG1hdGNoQ29uZGl0aW9uICYmIGVuYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gbGF5ZXIuZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uKHZpc3VhbENoYW5uZWwua2V5KTtcbiAgICAgICAgICAgIGlmIChpc1JhZGl1c0NoYW5uZWwodmlzdWFsQ2hhbm5lbCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TGF5ZXJSYWRpdXNMZWdlbmRcbiAgICAgICAgICAgICAgICAgIGtleT17dmlzdWFsQ2hhbm5lbC5rZXl9XG4gICAgICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgICAgICAgICB2aXN1YWxDaGFubmVsPXt2aXN1YWxDaGFubmVsfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8TGF5ZXJEZWZhdWx0TGVnZW5kXG4gICAgICAgICAgICAgICAga2V5PXt2aXN1YWxDaGFubmVsLmtleX1cbiAgICAgICAgICAgICAgICBsYWJlbD17ZGVzY3JpcHRpb24ubGFiZWx9XG4gICAgICAgICAgICAgICAgbmFtZT17ZGVzY3JpcHRpb24ubWVhc3VyZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KX1cbiAgICAgIDwvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIExheWVyTGVnZW5kQ29udGVudDtcbn1cblxuZXhwb3J0IHR5cGUgTWFwTGVnZW5kUHJvcHMgPSB7XG4gIGxheWVycz86IFJlYWRvbmx5QXJyYXk8TGF5ZXI+O1xuICBsYXllck9yZGVyPzogTGF5ZXJPcmRlcjtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIG1hcFN0YXRlPzogTWFwU3RhdGU7XG4gIG9wdGlvbnM/OiB7XG4gICAgc2hvd0xheWVyTmFtZT86IGJvb2xlYW47XG4gIH07XG4gIGRpc2FibGVFZGl0PzogYm9vbGVhbjtcbiAgaXNFeHBvcnQ/OiBib29sZWFuO1xuICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPzogKG9sZExheWVyOiBMYXllciwgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPikgPT4gdm9pZDtcbiAgb25Ub2dnbGVMYXllclZpc2liaWxpdHk/OiAobGF5ZXI6IExheWVyKSA9PiB2b2lkO1xuICBvbk1hcFRvZ2dsZUxheWVyPzogKG1hcEluZGV4OiBudW1iZXIsIGxheWVySWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgaXNTcGxpdD86IGJvb2xlYW47XG4gIHNwbGl0TWFwcz86IHtsYXllcnM6IHtba2V5OiBzdHJpbmddOiBib29sZWFufX1bXTtcbiAgYWN0aW9uSWNvbnM/OiBNYXBMZWdlbmRJY29ucztcbn07XG5cbk1hcExlZ2VuZEZhY3RvcnkuZGVwcyA9IFtMYXllckxlZ2VuZEhlYWRlckZhY3RvcnksIExheWVyTGVnZW5kQ29udGVudEZhY3RvcnldO1xuXG5mdW5jdGlvbiBNYXBMZWdlbmRGYWN0b3J5KFxuICBMYXllckxlZ2VuZEhlYWRlcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJMZWdlbmRIZWFkZXJGYWN0b3J5PixcbiAgTGF5ZXJMZWdlbmRDb250ZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckxlZ2VuZENvbnRlbnRGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IExheWVyTGVnZW5kSXRlbTogUmVhY3QuRkM8e1xuICAgIGxheWVyOiBMYXllcjtcbiAgICBjb250YWluZXJXOiBudW1iZXI7XG4gICAgaXNMYXN0OiBib29sZWFuO1xuICAgIGlzTGF5ZXJWaXNpYmxlOiBib29sZWFuO1xuICAgIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgICBvcHRpb25zPzoge3Nob3dMYXllck5hbWU/OiBib29sZWFufTtcbiAgICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xuICAgIGRpc2FibGVFZGl0PzogYm9vbGVhbjtcbiAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPzogKG9sZExheWVyOiBMYXllciwgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPikgPT4gdm9pZDtcbiAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eT86IChsYXllcjogTGF5ZXIpID0+IHZvaWQ7XG4gICAgb25NYXBUb2dnbGVMYXllcj86IChtYXBJbmRleDogbnVtYmVyLCBsYXllcklkOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgaXNTcGxpdD86IGJvb2xlYW47XG4gICAgc3BsaXRNYXBzPzoge2xheWVyczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59fVtdO1xuICAgIGFjdGlvbkljb25zOiBNYXBMZWdlbmRJY29ucztcbiAgfT4gPSAoe1xuICAgIGxheWVyLFxuICAgIGNvbnRhaW5lclcsXG4gICAgaXNMYXN0LFxuICAgIGlzTGF5ZXJWaXNpYmxlLFxuICAgIGlzRXhwb3J0LFxuICAgIG9wdGlvbnMsXG4gICAgbWFwU3RhdGUsXG4gICAgZGlzYWJsZUVkaXQsXG4gICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZSxcbiAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eSxcbiAgICBvbk1hcFRvZ2dsZUxheWVyLFxuICAgIGlzU3BsaXQsXG4gICAgc3BsaXRNYXBzLFxuICAgIGFjdGlvbkljb25zXG4gIH0pID0+IHtcbiAgICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBoYW5kbGVUb2dnbGVFeHBhbmRlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHNldElzRXhwYW5kZWQocHJldiA9PiAhcHJldiksIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkTWFwQ29udHJvbExlZ2VuZCBjbGFzc05hbWU9XCJsZWdlbmQtLWxheWVyXCIgJGxhc3Q9e2lzTGFzdH0gd2lkdGg9e2NvbnRhaW5lcld9PlxuICAgICAgICA8TGF5ZXJMZWdlbmRIZWFkZXJcbiAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgb25Ub2dnbGVMYXllclZpc2liaWxpdHk9e29uVG9nZ2xlTGF5ZXJWaXNpYmlsaXR5fVxuICAgICAgICAgIGlzU3BsaXQ9e2lzU3BsaXR9XG4gICAgICAgICAgc3BsaXRNYXBzPXtzcGxpdE1hcHN9XG4gICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17b25NYXBUb2dnbGVMYXllcn1cbiAgICAgICAgICBpc0V4cGFuZGVkPXtpc0V4cGFuZGVkfVxuICAgICAgICAgIG9uVG9nZ2xlRXhwYW5kZWQ9e2lzRXhwb3J0ID8gdW5kZWZpbmVkIDogaGFuZGxlVG9nZ2xlRXhwYW5kZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtpc0V4cGFuZGVkID8gKFxuICAgICAgICAgIDxkaXYgc3R5bGU9e3tvcGFjaXR5OiBpc0xheWVyVmlzaWJsZSA/IDEgOiAwLjV9fT5cbiAgICAgICAgICAgIDxMYXllckxlZ2VuZENvbnRlbnRcbiAgICAgICAgICAgICAgY29udGFpbmVyVz17Y29udGFpbmVyV31cbiAgICAgICAgICAgICAgbGF5ZXI9e2xheWVyfVxuICAgICAgICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgICAgIGRpc2FibGVFZGl0PXtkaXNhYmxlRWRpdH1cbiAgICAgICAgICAgICAgaXNFeHBvcnQ9e2lzRXhwb3J0fVxuICAgICAgICAgICAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPXtvbkxheWVyVmlzQ29uZmlnQ2hhbmdlfVxuICAgICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU3R5bGVkTWFwQ29udHJvbExlZ2VuZD5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IE1hcExlZ2VuZDogUmVhY3QuRkM8TWFwTGVnZW5kUHJvcHM+ID0gKHtcbiAgICBsYXllcnMgPSBbXSxcbiAgICBsYXllck9yZGVyLFxuICAgIHdpZHRoLFxuICAgIG1hcFN0YXRlLFxuICAgIG9wdGlvbnMsXG4gICAgZGlzYWJsZUVkaXQsXG4gICAgaXNFeHBvcnQsXG4gICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZSxcbiAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eSxcbiAgICBvbk1hcFRvZ2dsZUxheWVyLFxuICAgIGlzU3BsaXQsXG4gICAgc3BsaXRNYXBzLFxuICAgIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zXG4gIH0pID0+IHtcbiAgICBjb25zdCBvcmRlcmVkTGF5ZXJzID0gbGF5ZXJPcmRlclxuICAgICAgPyBnZXRGbGF0TGF5ZXJPcmRlcihsYXllck9yZGVyKS5yZWR1Y2U8TGF5ZXJbXT4oKGFjYywgaWQpID0+IHtcbiAgICAgICAgICBjb25zdCBsYXllciA9IGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gaWQpO1xuICAgICAgICAgIGlmIChsYXllcikgYWNjLnB1c2gobGF5ZXIpO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKVxuICAgICAgOiBsYXllcnM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXAtbGVnZW5kXCI+XG4gICAgICAgIHtvcmRlcmVkTGF5ZXJzLm1hcCgobGF5ZXIsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKCFsYXllci5pc1ZhbGlkVG9TYXZlKCkgfHwgbGF5ZXIuY29uZmlnLmhpZGRlbikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclcgPSB3aWR0aCB8fCBESU1FTlNJT05TLm1hcENvbnRyb2wud2lkdGg7XG5cbiAgICAgICAgICBjb25zdCBpc0xheWVyVmlzaWJsZSA9XG4gICAgICAgICAgICBpc1NwbGl0ICYmIHNwbGl0TWFwcyAmJiBzcGxpdE1hcHMubGVuZ3RoID4gMVxuICAgICAgICAgICAgICA/IGxheWVyLmNvbmZpZy5pc1Zpc2libGUgJiZcbiAgICAgICAgICAgICAgICAoQm9vbGVhbihzcGxpdE1hcHNbMF0/LmxheWVycz8uW2xheWVyLmlkXSkgfHxcbiAgICAgICAgICAgICAgICAgIEJvb2xlYW4oc3BsaXRNYXBzWzFdPy5sYXllcnM/LltsYXllci5pZF0pKVxuICAgICAgICAgICAgICA6IGxheWVyLmNvbmZpZy5pc1Zpc2libGU7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPExheWVyTGVnZW5kSXRlbVxuICAgICAgICAgICAgICBrZXk9e2xheWVyLmlkfVxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIGNvbnRhaW5lclc9e2NvbnRhaW5lcld9XG4gICAgICAgICAgICAgIGlzTGFzdD17aW5kZXggPT09IG9yZGVyZWRMYXllcnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgaXNMYXllclZpc2libGU9e2lzTGF5ZXJWaXNpYmxlfVxuICAgICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICAgICAgZGlzYWJsZUVkaXQ9e2Rpc2FibGVFZGl0fVxuICAgICAgICAgICAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPXtvbkxheWVyVmlzQ29uZmlnQ2hhbmdlfVxuICAgICAgICAgICAgICBvblRvZ2dsZUxheWVyVmlzaWJpbGl0eT17b25Ub2dnbGVMYXllclZpc2liaWxpdHl9XG4gICAgICAgICAgICAgIG9uTWFwVG9nZ2xlTGF5ZXI9e29uTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICAgIGlzU3BsaXQ9e2lzU3BsaXR9XG4gICAgICAgICAgICAgIHNwbGl0TWFwcz17c3BsaXRNYXBzfVxuICAgICAgICAgICAgICBhY3Rpb25JY29ucz17YWN0aW9uSWNvbnN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICBNYXBMZWdlbmQuZGlzcGxheU5hbWUgPSAnTWFwTGVnZW5kJztcblxuICByZXR1cm4gTWFwTGVnZW5kO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNYXBMZWdlbmRGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBUCx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsYUFBQSxHQUFBVCxPQUFBO0FBR0EsSUFBQVUsd0JBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLE1BQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLGtCQUFBLEdBQUFWLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBYSxTQUFBLEdBQUFiLE9BQUE7QUFBc0QsSUFBQWMsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQWpCdEQ7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBdEIsd0JBQUFzQixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFB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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { MapState } from '@kepler.gl/types';
|
|
3
|
+
import { MapStateActions } from '@kepler.gl/actions';
|
|
4
|
+
export type MapNavigationControlProps = {
|
|
5
|
+
mapState: MapState;
|
|
6
|
+
mapIndex: number;
|
|
7
|
+
mapStateActions: typeof MapStateActions;
|
|
8
|
+
};
|
|
9
|
+
declare function MapNavigationControlFactory(): React.NamedExoticComponent<MapNavigationControlProps>;
|
|
10
|
+
declare namespace MapNavigationControlFactory {
|
|
11
|
+
var deps: any[];
|
|
12
|
+
}
|
|
13
|
+
export default MapNavigationControlFactory;
|