@carto/kepler.gl 0.0.86-alpha.deck9.1 → 0.0.86
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/actions/action-wrapper.js +41 -36
- package/dist/actions/actions.js +21 -15
- package/dist/actions/identity-actions.js +20 -14
- package/dist/actions/index.js +16 -16
- package/dist/actions/map-state-actions.js +18 -12
- package/dist/actions/map-style-actions.js +46 -30
- package/dist/actions/provider-actions.js +73 -49
- package/dist/actions/ui-state-actions.js +113 -73
- package/dist/actions/vis-state-actions.js +148 -152
- package/dist/cloud-providers/index.js +7 -6
- package/dist/cloud-providers/provider.js +279 -189
- package/dist/components/bottom-widget.js +117 -105
- package/dist/components/common/action-panel.js +74 -122
- package/dist/components/common/animation-control/animation-control.js +54 -69
- package/dist/components/common/animation-control/animation-controller.js +160 -134
- package/dist/components/common/animation-control/animation-speed-slider.js +54 -47
- package/dist/components/common/animation-control/floating-time-display.js +100 -120
- package/dist/components/common/animation-control/playback-controls.js +144 -147
- package/dist/components/common/animation-control/speed-control.js +23 -31
- package/dist/components/common/checkbox.js +70 -56
- package/dist/components/common/color-legend.js +110 -83
- package/dist/components/common/data-table/button.js +23 -31
- package/dist/components/common/data-table/canvas.js +5 -11
- package/dist/components/common/data-table/cell-size.js +61 -51
- package/dist/components/common/data-table/grid.js +59 -40
- package/dist/components/common/data-table/index.js +348 -464
- package/dist/components/common/data-table/option-dropdown.js +33 -50
- package/dist/components/common/dataset-label.js +13 -17
- package/dist/components/common/error-boundary.js +45 -27
- package/dist/components/common/field-selector.js +139 -99
- package/dist/components/common/field-token.js +9 -24
- package/dist/components/common/file-uploader/file-drop.js +115 -96
- package/dist/components/common/file-uploader/file-upload-progress.js +45 -68
- package/dist/components/common/file-uploader/file-upload.js +187 -215
- package/dist/components/common/file-uploader/upload-button.js +22 -35
- package/dist/components/common/histogram-plot.js +58 -47
- package/dist/components/common/icons/add.js +27 -14
- package/dist/components/common/icons/anchor_window.js +18 -16
- package/dist/components/common/icons/arrow-down-alt.js +27 -14
- package/dist/components/common/icons/arrow-down-solid.js +27 -14
- package/dist/components/common/icons/arrow-down.js +27 -14
- package/dist/components/common/icons/arrow-left.js +30 -17
- package/dist/components/common/icons/arrow-right.js +27 -14
- package/dist/components/common/icons/arrow-up-alt.js +28 -15
- package/dist/components/common/icons/arrow-up-solid.js +27 -14
- package/dist/components/common/icons/arrow-up.js +27 -14
- package/dist/components/common/icons/base.js +57 -39
- package/dist/components/common/icons/bug.js +29 -16
- package/dist/components/common/icons/cancel.js +27 -14
- package/dist/components/common/icons/checkmark.js +31 -18
- package/dist/components/common/icons/chevron-right.js +33 -20
- package/dist/components/common/icons/clipboard.js +28 -15
- package/dist/components/common/icons/clock.js +29 -16
- package/dist/components/common/icons/close.js +32 -19
- package/dist/components/common/icons/code-alt.js +29 -16
- package/dist/components/common/icons/copy.js +31 -18
- package/dist/components/common/icons/crosshairs.js +29 -16
- package/dist/components/common/icons/cube-3d.js +31 -18
- package/dist/components/common/icons/cursor-click.js +31 -18
- package/dist/components/common/icons/data-table.js +28 -15
- package/dist/components/common/icons/db.js +28 -15
- package/dist/components/common/icons/delete.js +29 -16
- package/dist/components/common/icons/docs.js +43 -30
- package/dist/components/common/icons/drag-n-drop.js +29 -16
- package/dist/components/common/icons/draw-polygon.js +46 -33
- package/dist/components/common/icons/email.js +31 -18
- package/dist/components/common/icons/expand.js +29 -16
- package/dist/components/common/icons/eye-seen.js +29 -16
- package/dist/components/common/icons/eye-unseen.js +29 -16
- package/dist/components/common/icons/file-type.js +19 -35
- package/dist/components/common/icons/file.js +27 -14
- package/dist/components/common/icons/files.js +26 -14
- package/dist/components/common/icons/filter-funnel.js +27 -14
- package/dist/components/common/icons/free-window.js +18 -16
- package/dist/components/common/icons/gear.js +29 -16
- package/dist/components/common/icons/hash.js +27 -14
- package/dist/components/common/icons/histogram.js +27 -15
- package/dist/components/common/icons/index.js +156 -156
- package/dist/components/common/icons/info.js +38 -25
- package/dist/components/common/icons/layers.js +27 -14
- package/dist/components/common/icons/left-arrow.js +29 -16
- package/dist/components/common/icons/legend.js +27 -14
- package/dist/components/common/icons/line-chart.js +27 -14
- package/dist/components/common/icons/login.js +30 -17
- package/dist/components/common/icons/logout.js +29 -16
- package/dist/components/common/icons/map-icon.js +32 -18
- package/dist/components/common/icons/map.js +32 -18
- package/dist/components/common/icons/messages.js +27 -14
- package/dist/components/common/icons/minus.js +27 -14
- package/dist/components/common/icons/order-by-dataset.js +17 -15
- package/dist/components/common/icons/order-by-list.js +9 -7
- package/dist/components/common/icons/pause.js +27 -14
- package/dist/components/common/icons/picture.js +26 -14
- package/dist/components/common/icons/pin.js +30 -17
- package/dist/components/common/icons/play.js +27 -14
- package/dist/components/common/icons/polygon.js +48 -35
- package/dist/components/common/icons/rectangle.js +49 -36
- package/dist/components/common/icons/reduce.js +30 -17
- package/dist/components/common/icons/reset.js +27 -14
- package/dist/components/common/icons/rocket.js +27 -14
- package/dist/components/common/icons/save.js +29 -16
- package/dist/components/common/icons/save2.js +33 -20
- package/dist/components/common/icons/search.js +29 -16
- package/dist/components/common/icons/settings.js +29 -16
- package/dist/components/common/icons/share.js +27 -14
- package/dist/components/common/icons/split.js +55 -42
- package/dist/components/common/icons/square-select.js +29 -16
- package/dist/components/common/icons/swap-horizontal.js +31 -18
- package/dist/components/common/icons/table.js +27 -14
- package/dist/components/common/icons/trash.js +29 -16
- package/dist/components/common/icons/upload.js +27 -14
- package/dist/components/common/icons/vert-dots.js +65 -52
- package/dist/components/common/icons/vert-three-dots.js +40 -27
- package/dist/components/common/icons/warning.js +39 -26
- package/dist/components/common/image-preview.js +33 -71
- package/dist/components/common/info-helper.js +29 -36
- package/dist/components/common/item-selector/accessor.js +13 -7
- package/dist/components/common/item-selector/chickleted-input.js +56 -72
- package/dist/components/common/item-selector/dropdown-list.js +214 -182
- package/dist/components/common/item-selector/item-selector-submenu.js +55 -34
- package/dist/components/common/item-selector/item-selector.js +194 -183
- package/dist/components/common/item-selector/typeahead.js +248 -236
- package/dist/components/common/line-chart.js +58 -80
- package/dist/components/common/loading-spinner.js +31 -46
- package/dist/components/common/logo.js +48 -61
- package/dist/components/common/map-layer-selector.js +25 -31
- package/dist/components/common/modal.js +106 -167
- package/dist/components/common/portaled.js +189 -169
- package/dist/components/common/progress-bar.js +24 -27
- package/dist/components/common/range-brush.js +215 -176
- package/dist/components/common/range-plot.js +63 -52
- package/dist/components/common/range-slider.js +231 -206
- package/dist/components/common/slider/mouse-event.js +66 -59
- package/dist/components/common/slider/slider-bar-handle.js +61 -51
- package/dist/components/common/slider/slider-handle.js +102 -127
- package/dist/components/common/slider/slider.js +162 -143
- package/dist/components/common/styled-components.js +256 -518
- package/dist/components/common/switch.js +11 -11
- package/dist/components/common/time-range-slider-time-title.js +32 -49
- package/dist/components/common/time-range-slider.js +45 -56
- package/dist/components/common/time-slider-marker.js +52 -71
- package/dist/components/common/tippy-tooltip.js +59 -89
- package/dist/components/common/toolbar-item.js +45 -53
- package/dist/components/common/toolbar.js +18 -24
- package/dist/components/common/vertical-toolbar.js +6 -13
- package/dist/components/container.js +119 -87
- package/dist/components/context.js +8 -6
- package/dist/components/editor/constants.js +4 -4
- package/dist/components/editor/editor.js +157 -122
- package/dist/components/editor/feature-action-panel.js +59 -52
- package/dist/components/editor/feature-styles.js +29 -46
- package/dist/components/editor/handle-style.js +29 -38
- package/dist/components/filters/components.js +4 -8
- package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +43 -33
- package/dist/components/filters/filter-panels/multi-select-filter-panel.js +21 -20
- package/dist/components/filters/filter-panels/new-filter-panel.js +31 -24
- package/dist/components/filters/filter-panels/polygon-filter-panel.js +31 -26
- package/dist/components/filters/filter-panels/range-filter-panel.js +21 -20
- package/dist/components/filters/filter-panels/single-select-filter-panel.js +21 -20
- package/dist/components/filters/filter-panels/time-range-filter-panel.js +31 -28
- package/dist/components/filters/index.js +10 -10
- package/dist/components/filters/multi-select-filter.js +9 -11
- package/dist/components/filters/polygon-filter.js +41 -26
- package/dist/components/filters/range-filter.js +7 -9
- package/dist/components/filters/single-select-filter.js +13 -11
- package/dist/components/filters/time-range-filter.js +14 -16
- package/dist/components/filters/time-widget.js +84 -125
- package/dist/components/geocoder/geocoder.js +177 -158
- package/dist/components/geocoder-panel.js +87 -66
- package/dist/components/index.js +329 -328
- package/dist/components/injector.js +63 -44
- package/dist/components/kepler-gl.js +361 -325
- package/dist/components/map/coordinate-info.js +16 -18
- package/dist/components/map/layer-hover-info.js +86 -108
- package/dist/components/map/layer-selector-panel.js +48 -50
- package/dist/components/map/locale-panel.js +44 -38
- package/dist/components/map/map-control-panel.js +47 -70
- package/dist/components/map/map-control-toolbar.js +6 -9
- package/dist/components/map/map-control-tooltip.js +8 -10
- package/dist/components/map/map-control.js +27 -35
- package/dist/components/map/map-draw-panel.js +48 -38
- package/dist/components/map/map-legend-panel.js +50 -47
- package/dist/components/map/map-legend.js +116 -133
- package/dist/components/map/map-popover.js +100 -155
- package/dist/components/map/split-map-button.js +34 -30
- package/dist/components/map/toggle-3d-button.js +27 -25
- package/dist/components/map-container.js +359 -313
- package/dist/components/maps-layout.js +26 -16
- package/dist/components/modal-container.js +355 -359
- package/dist/components/modals/add-map-style-modal.js +194 -233
- package/dist/components/modals/cloud-tile.js +67 -96
- package/dist/components/modals/data-table-modal.js +152 -155
- package/dist/components/modals/delete-data-modal.js +20 -20
- package/dist/components/modals/error-display.js +7 -9
- package/dist/components/modals/export-data-modal.js +140 -118
- package/dist/components/modals/export-image-modal.js +69 -82
- package/dist/components/modals/export-map-modal/components.js +18 -20
- package/dist/components/modals/export-map-modal/export-html-map.js +74 -82
- package/dist/components/modals/export-map-modal/export-json-map.js +45 -65
- package/dist/components/modals/export-map-modal/export-map-modal.js +47 -42
- package/dist/components/modals/image-modal-container.js +21 -20
- package/dist/components/modals/load-data-modal.js +30 -28
- package/dist/components/modals/load-storage-map.js +178 -277
- package/dist/components/modals/loading-dialog.js +19 -41
- package/dist/components/modals/modal-dialog.js +6 -4
- package/dist/components/modals/modal-tabs.js +48 -83
- package/dist/components/modals/overwrite-map-modal.js +30 -41
- package/dist/components/modals/provider-modal-container.js +42 -23
- package/dist/components/modals/save-map-modal.js +83 -107
- package/dist/components/modals/share-map-modal.js +95 -101
- package/dist/components/modals/status-panel.js +43 -63
- package/dist/components/modals/storage-map-viewer.js +70 -133
- package/dist/components/notification-panel/notification-item.js +97 -94
- package/dist/components/notification-panel.js +43 -35
- package/dist/components/performance.js +53 -49
- package/dist/components/plot-container.js +169 -151
- package/dist/components/side-panel/cloud-storage-dropdown.js +15 -13
- package/dist/components/side-panel/common/dataset-info.js +12 -16
- package/dist/components/side-panel/common/dataset-tag.js +27 -48
- package/dist/components/side-panel/common/dataset-title.js +116 -119
- package/dist/components/side-panel/common/source-data-catalog.js +32 -31
- package/dist/components/side-panel/common/source-data-selector.js +77 -52
- package/dist/components/side-panel/custom-panel.js +8 -6
- package/dist/components/side-panel/filter-manager.js +62 -48
- package/dist/components/side-panel/filter-panel/filter-panel-header.js +25 -35
- package/dist/components/side-panel/filter-panel/filter-panel.js +64 -46
- package/dist/components/side-panel/interaction-manager.js +18 -20
- package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
- package/dist/components/side-panel/interaction-panel/interaction-panel.js +95 -76
- package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +143 -118
- package/dist/components/side-panel/interaction-panel/tooltip-config.js +76 -95
- package/dist/components/side-panel/layer-manager.js +115 -105
- package/dist/components/side-panel/layer-panel/add-layer-button.js +54 -92
- package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +5 -5
- package/dist/components/side-panel/layer-panel/color-palette.js +37 -50
- package/dist/components/side-panel/layer-panel/color-range-selector.js +207 -196
- package/dist/components/side-panel/layer-panel/color-selector.js +110 -104
- package/dist/components/side-panel/layer-panel/column-selector.js +22 -34
- package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +4 -4
- package/dist/components/side-panel/layer-panel/custom-palette.js +205 -248
- package/dist/components/side-panel/layer-panel/custom-picker.js +69 -51
- package/dist/components/side-panel/layer-panel/dataset-layer-group.js +42 -37
- package/dist/components/side-panel/layer-panel/dataset-layer-section.js +27 -31
- package/dist/components/side-panel/layer-panel/dataset-section.js +35 -45
- package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +13 -14
- package/dist/components/side-panel/layer-panel/hex-column-config.js +55 -32
- package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +5 -5
- package/dist/components/side-panel/layer-panel/layer-column-config.js +46 -42
- package/dist/components/side-panel/layer-panel/layer-config-group.js +144 -178
- package/dist/components/side-panel/layer-panel/layer-configurator.js +830 -826
- package/dist/components/side-panel/layer-panel/layer-list.js +94 -101
- package/dist/components/side-panel/layer-panel/layer-panel-header.js +82 -124
- package/dist/components/side-panel/layer-panel/layer-panel.js +105 -111
- package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +58 -67
- package/dist/components/side-panel/layer-panel/layer-type-list-item.js +32 -47
- package/dist/components/side-panel/layer-panel/layer-type-selector.js +41 -30
- package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +43 -42
- package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +57 -55
- package/dist/components/side-panel/layer-panel/single-color-palette.js +33 -48
- package/dist/components/side-panel/layer-panel/text-label-panel.js +116 -81
- package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +102 -88
- package/dist/components/side-panel/layer-panel/vis-config-slider.js +85 -99
- package/dist/components/side-panel/layer-panel/vis-config-switch.js +29 -38
- package/dist/components/side-panel/map-manager.js +89 -70
- package/dist/components/side-panel/map-style-panel/map-layer-selector.js +60 -72
- package/dist/components/side-panel/map-style-panel/map-style-selector.js +42 -64
- package/dist/components/side-panel/panel-dropdown.js +37 -21
- package/dist/components/side-panel/panel-header-action.js +65 -60
- package/dist/components/side-panel/panel-header.js +184 -165
- package/dist/components/side-panel/panel-tab.js +29 -35
- package/dist/components/side-panel/panel-title.js +18 -15
- package/dist/components/side-panel/panel-toggle.js +31 -30
- package/dist/components/side-panel/side-bar.js +91 -100
- package/dist/components/side-panel.js +123 -108
- package/dist/connect/keplergl-connect.js +26 -17
- package/dist/connect/with-local-selector.js +63 -31
- package/dist/constants/action-types.js +115 -113
- package/dist/constants/color-palette.js +16 -14
- package/dist/constants/color-ranges.js +28 -23
- package/dist/constants/custom-color-ranges.js +12 -12
- package/dist/constants/default-settings.js +254 -323
- package/dist/constants/index.js +63 -63
- package/dist/constants/keyevent.js +4 -4
- package/dist/constants/tooltip.js +5 -5
- package/dist/constants/user-feedbacks.js +5 -9
- package/dist/constants/user-guides.js +10 -10
- package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +63 -37
- package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +56 -52
- package/dist/deckgl-layers/cluster-layer/cluster-layer.js +168 -165
- package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +43 -24
- package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +40 -27
- package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +40 -27
- package/dist/deckgl-layers/layer-utils/cluster-utils.js +68 -60
- package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +282 -276
- package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
- package/dist/deckgl-layers/line-layer/line-layer.js +70 -62
- package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +51 -37
- package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +85 -65
- package/dist/index.js +16 -15
- package/dist/layers/aggregation-layer.js +331 -299
- package/dist/layers/arc-layer/arc-layer-icon.js +41 -27
- package/dist/layers/arc-layer/arc-layer.js +201 -174
- package/dist/layers/base-layer.js +1544 -1371
- package/dist/layers/cluster-layer/cluster-layer-icon.js +44 -30
- package/dist/layers/cluster-layer/cluster-layer.js +103 -89
- package/dist/layers/default-layer-icon.js +53 -39
- package/dist/layers/geojson-layer/geojson-layer-icon.js +55 -42
- package/dist/layers/geojson-layer/geojson-layer.js +353 -292
- package/dist/layers/geojson-layer/geojson-utils.js +36 -31
- package/dist/layers/grid-layer/grid-layer-icon.js +100 -87
- package/dist/layers/grid-layer/grid-layer.js +61 -51
- package/dist/layers/grid-layer/grid-utils.js +9 -13
- package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +35 -21
- package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +260 -225
- package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
- package/dist/layers/heatmap-layer/heatmap-layer-icon.js +52 -39
- package/dist/layers/heatmap-layer/heatmap-layer.js +171 -140
- package/dist/layers/hexagon-layer/hexagon-layer-icon.js +64 -51
- package/dist/layers/hexagon-layer/hexagon-layer.js +63 -49
- package/dist/layers/hexagon-layer/hexagon-utils.js +14 -15
- package/dist/layers/icon-layer/icon-info-modal.js +75 -82
- package/dist/layers/icon-layer/icon-layer-icon.js +37 -24
- package/dist/layers/icon-layer/icon-layer.js +303 -274
- package/dist/layers/index.js +29 -43
- package/dist/layers/layer-factory.js +41 -25
- package/dist/layers/layer-text-label.js +23 -21
- package/dist/layers/layer-update.js +18 -16
- package/dist/layers/line-layer/line-layer-icon.js +43 -30
- package/dist/layers/line-layer/line-layer.js +142 -123
- package/dist/layers/mapbox-utils.js +62 -61
- package/dist/layers/mapboxgl-layer.js +169 -124
- package/dist/layers/point-layer/point-layer-icon.js +59 -45
- package/dist/layers/point-layer/point-layer.js +386 -355
- package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +238 -208
- package/dist/layers/s2-geometry-layer/s2-layer-icon.js +35 -21
- package/dist/layers/s2-geometry-layer/s2-utils.js +8 -9
- package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +25 -24
- package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +115 -102
- package/dist/layers/scenegraph-layer/scenegraph-layer.js +172 -148
- package/dist/layers/trip-layer/trip-info-modal.js +30 -50
- package/dist/layers/trip-layer/trip-layer-icon.js +53 -40
- package/dist/layers/trip-layer/trip-layer.js +307 -239
- package/dist/layers/trip-layer/trip-utils.js +50 -34
- package/dist/layers/types.js +2 -2
- package/dist/localization/formatted-message.js +10 -8
- package/dist/localization/index.js +7 -7
- package/dist/localization/locales.js +9 -6
- package/dist/localization/messages.js +10 -13
- package/dist/localization/translations/ca.js +13 -11
- package/dist/localization/translations/cn.js +13 -11
- package/dist/localization/translations/en.js +13 -11
- package/dist/localization/translations/es.js +13 -11
- package/dist/localization/translations/fi.js +13 -11
- package/dist/localization/translations/ja.js +13 -11
- package/dist/localization/translations/pt.js +13 -11
- package/dist/localization/translations/ru.js +13 -11
- package/dist/middleware/index.js +5 -3
- package/dist/processors/data-processor.js +201 -164
- package/dist/processors/file-handler.js +233 -111
- package/dist/processors/index.js +4 -4
- package/dist/reducers/combined-updaters.js +41 -41
- package/dist/reducers/composer-helpers.js +45 -20
- package/dist/reducers/composers.js +8 -9
- package/dist/reducers/core.js +35 -31
- package/dist/reducers/index.js +22 -21
- package/dist/reducers/map-state-updaters.js +47 -65
- package/dist/reducers/map-state.js +15 -23
- package/dist/reducers/map-style-updaters.js +159 -233
- package/dist/reducers/map-style.js +16 -30
- package/dist/reducers/provider-state-updaters.js +229 -217
- package/dist/reducers/provider-state.js +17 -29
- package/dist/reducers/root.js +58 -86
- package/dist/reducers/ui-state-updaters.js +218 -337
- package/dist/reducers/ui-state.js +16 -45
- package/dist/reducers/vis-state-merger.js +209 -205
- package/dist/reducers/vis-state-selectors.js +19 -5
- package/dist/reducers/vis-state-updaters.js +876 -1003
- package/dist/reducers/vis-state.js +16 -75
- package/dist/schemas/dataset-schema.js +108 -84
- package/dist/schemas/index.js +29 -28
- package/dist/schemas/map-state-schema.js +18 -21
- package/dist/schemas/map-style-schema.js +55 -47
- package/dist/schemas/schema-manager.js +161 -147
- package/dist/schemas/schema-utils.js +9 -8
- package/dist/schemas/schema.js +87 -72
- package/dist/schemas/versions.js +3 -3
- package/dist/schemas/vis-state-schema.js +583 -441
- package/dist/styles/base.js +1021 -1217
- package/dist/styles/index.js +3 -3
- package/dist/styles/media-breakpoints.js +18 -23
- package/dist/tasks/tasks.js +39 -36
- package/dist/templates/export-map-html.js +4 -233
- package/dist/utils/aggregate-utils.js +16 -13
- package/dist/utils/color-utils.js +37 -29
- package/dist/utils/custom-scales.js +3 -3
- package/dist/utils/data-scale-utils.js +13 -6
- package/dist/utils/data-utils.js +83 -60
- package/dist/utils/dataset-utils.js +77 -48
- package/dist/utils/dom-to-image.js +163 -108
- package/dist/utils/dom-utils.js +105 -88
- package/dist/utils/export-utils.js +103 -116
- package/dist/utils/filter-utils.js +374 -379
- package/dist/utils/gl-utils.js +15 -16
- package/dist/utils/gpu-filter-utils.js +73 -54
- package/dist/utils/index.js +48 -47
- package/dist/utils/interaction-utils.js +46 -53
- package/dist/utils/layer-utils.js +78 -89
- package/dist/utils/locale-utils.js +16 -24
- package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +76 -67
- package/dist/utils/map-style-utils/mapbox-utils.js +3 -4
- package/dist/utils/mapbox-utils.js +4 -3
- package/dist/utils/notifications-utils.js +38 -33
- package/dist/utils/observe-dimensions.js +54 -42
- package/dist/utils/projection-utils.js +11 -14
- package/dist/utils/split-map-utils.js +33 -30
- package/dist/utils/table-utils/data-container-utils.js +14 -15
- package/dist/utils/table-utils/data-row.js +65 -58
- package/dist/utils/table-utils/index.js +2 -2
- package/dist/utils/table-utils/indexed-data-container.js +173 -105
- package/dist/utils/table-utils/kepler-table.js +386 -362
- package/dist/utils/table-utils/row-data-container.js +164 -99
- package/dist/utils/utils.js +30 -29
- package/package.json +1 -1
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
|
-
exports.geojsonVisConfigs = exports.geoJsonRequiredColumns = exports.featureAccessor = exports.defaultRadius = exports.defaultLineWidth = exports.defaultElevation = exports
|
|
8
|
+
exports.geojsonVisConfigs = exports.geoJsonRequiredColumns = exports.featureAccessor = exports.defaultRadius = exports.defaultLineWidth = exports.defaultElevation = exports["default"] = void 0;
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
15
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
8
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
17
|
var _uniq = _interopRequireDefault(require("lodash/uniq"));
|
|
10
18
|
var _typeAnalyzer = require("type-analyzer");
|
|
@@ -14,9 +22,13 @@ var _geojsonUtils = require("./geojson-utils");
|
|
|
14
22
|
var _geojsonLayerIcon = _interopRequireDefault(require("./geojson-layer-icon"));
|
|
15
23
|
var _defaultSettings = require("../../constants/default-settings");
|
|
16
24
|
var _layerFactory = require("../layer-factory");
|
|
17
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
18
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" !=
|
|
19
|
-
|
|
25
|
+
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); }
|
|
26
|
+
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; }
|
|
27
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
28
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
29
|
+
function _superPropGet(t, e, o, r) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & r ? t.prototype : t), e, o); return 2 & r && "function" == typeof p ? function (t) { return p.apply(o, t); } : p; }
|
|
30
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
31
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // Copyright (c) 2022 Uber Technologies, Inc.
|
|
20
32
|
//
|
|
21
33
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
22
34
|
// of this software and associated documentation files (the "Software"), to deal
|
|
@@ -35,21 +47,15 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
35
47
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
36
48
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
37
49
|
// THE SOFTWARE.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
[_typeAnalyzer.DATA_TYPES.GEOMETRY]: true,
|
|
41
|
-
[_typeAnalyzer.DATA_TYPES.GEOMETRY_FROM_STRING]: true
|
|
42
|
-
};
|
|
43
|
-
const geojsonVisConfigs = exports.geojsonVisConfigs = {
|
|
50
|
+
var SUPPORTED_ANALYZER_TYPES = (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _typeAnalyzer.DATA_TYPES.GEOMETRY, true), _typeAnalyzer.DATA_TYPES.GEOMETRY_FROM_STRING, true);
|
|
51
|
+
var geojsonVisConfigs = exports.geojsonVisConfigs = {
|
|
44
52
|
opacity: 'opacity',
|
|
45
|
-
strokeOpacity: {
|
|
46
|
-
..._layerFactory.LAYER_VIS_CONFIGS.opacity,
|
|
53
|
+
strokeOpacity: _objectSpread(_objectSpread({}, _layerFactory.LAYER_VIS_CONFIGS.opacity), {}, {
|
|
47
54
|
property: 'strokeOpacity'
|
|
48
|
-
},
|
|
49
|
-
thickness: {
|
|
50
|
-
..._layerFactory.LAYER_VIS_CONFIGS.thickness,
|
|
55
|
+
}),
|
|
56
|
+
thickness: _objectSpread(_objectSpread({}, _layerFactory.LAYER_VIS_CONFIGS.thickness), {}, {
|
|
51
57
|
defaultValue: 1
|
|
52
|
-
},
|
|
58
|
+
}),
|
|
53
59
|
strokeColor: 'strokeColor',
|
|
54
60
|
colorRange: 'colorRange',
|
|
55
61
|
strokeColorRange: 'strokeColorRange',
|
|
@@ -64,299 +70,354 @@ const geojsonVisConfigs = exports.geojsonVisConfigs = {
|
|
|
64
70
|
enable3d: 'enable3d',
|
|
65
71
|
wireframe: 'wireframe'
|
|
66
72
|
};
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
var geoJsonRequiredColumns = exports.geoJsonRequiredColumns = ['geojson'];
|
|
74
|
+
var featureAccessor = exports.featureAccessor = function featureAccessor(_ref) {
|
|
75
|
+
var geojson = _ref.geojson;
|
|
76
|
+
return function (dc) {
|
|
77
|
+
return function (d) {
|
|
78
|
+
return dc.valueAt(d.index, geojson.fieldIdx);
|
|
79
|
+
};
|
|
80
|
+
};
|
|
73
81
|
};
|
|
74
82
|
|
|
75
83
|
// access feature properties from geojson sub layer
|
|
76
|
-
exports.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
get type() {
|
|
89
|
-
return GeoJsonLayer.type;
|
|
90
|
-
}
|
|
91
|
-
static get type() {
|
|
92
|
-
return 'geojson';
|
|
93
|
-
}
|
|
94
|
-
get name() {
|
|
95
|
-
return 'Polygon';
|
|
96
|
-
}
|
|
97
|
-
get layerIcon() {
|
|
98
|
-
return _geojsonLayerIcon.default;
|
|
99
|
-
}
|
|
100
|
-
get requiredLayerColumns() {
|
|
101
|
-
return geoJsonRequiredColumns;
|
|
102
|
-
}
|
|
103
|
-
get visualChannels() {
|
|
104
|
-
const visualChannels = super.visualChannels;
|
|
105
|
-
return {
|
|
106
|
-
color: {
|
|
107
|
-
...visualChannels.color,
|
|
108
|
-
accessor: 'getFillColor',
|
|
109
|
-
condition: config => config.visConfig.filled,
|
|
110
|
-
nullValue: visualChannels.color.nullValue,
|
|
111
|
-
getAttributeValue: config => d => d.properties.fillColor || config.color,
|
|
112
|
-
// used this to get updateTriggers
|
|
113
|
-
defaultValue: config => config.color
|
|
114
|
-
},
|
|
115
|
-
strokeColor: {
|
|
116
|
-
property: 'strokeColor',
|
|
117
|
-
field: 'strokeColorField',
|
|
118
|
-
scale: 'strokeColorScale',
|
|
119
|
-
domain: 'strokeColorDomain',
|
|
120
|
-
range: 'strokeColorRange',
|
|
121
|
-
key: 'strokeColor',
|
|
122
|
-
channelScaleType: _defaultSettings.CHANNEL_SCALES.color,
|
|
123
|
-
accessor: 'getLineColor',
|
|
124
|
-
condition: config => config.visConfig.stroked,
|
|
125
|
-
nullValue: visualChannels.color.nullValue,
|
|
126
|
-
getAttributeValue: config => d => d.properties.lineColor || config.visConfig.strokeColor || config.color,
|
|
127
|
-
// used this to get updateTriggers
|
|
128
|
-
defaultValue: config => config.visConfig.strokeColor || config.color
|
|
129
|
-
},
|
|
130
|
-
size: {
|
|
131
|
-
...visualChannels.size,
|
|
132
|
-
property: 'stroke',
|
|
133
|
-
accessor: 'getLineWidth',
|
|
134
|
-
condition: config => config.visConfig.stroked,
|
|
135
|
-
nullValue: 0,
|
|
136
|
-
getAttributeValue: () => d => d.properties.lineWidth || defaultLineWidth
|
|
137
|
-
},
|
|
138
|
-
height: {
|
|
139
|
-
property: 'height',
|
|
140
|
-
field: 'heightField',
|
|
141
|
-
scale: 'heightScale',
|
|
142
|
-
domain: 'heightDomain',
|
|
143
|
-
range: 'heightRange',
|
|
144
|
-
key: 'height',
|
|
145
|
-
channelScaleType: _defaultSettings.CHANNEL_SCALES.size,
|
|
146
|
-
accessor: 'getElevation',
|
|
147
|
-
condition: config => config.visConfig.enable3d,
|
|
148
|
-
nullValue: 0,
|
|
149
|
-
getAttributeValue: () => d => d.properties.elevation || defaultElevation
|
|
150
|
-
},
|
|
151
|
-
radius: {
|
|
152
|
-
property: 'radius',
|
|
153
|
-
field: 'radiusField',
|
|
154
|
-
scale: 'radiusScale',
|
|
155
|
-
domain: 'radiusDomain',
|
|
156
|
-
range: 'radiusRange',
|
|
157
|
-
key: 'radius',
|
|
158
|
-
channelScaleType: _defaultSettings.CHANNEL_SCALES.radius,
|
|
159
|
-
accessor: 'getRadius',
|
|
160
|
-
nullValue: 0,
|
|
161
|
-
getAttributeValue: () => d => d.properties.radius || defaultRadius
|
|
162
|
-
}
|
|
84
|
+
var defaultElevation = exports.defaultElevation = 500;
|
|
85
|
+
var defaultLineWidth = exports.defaultLineWidth = 1;
|
|
86
|
+
var defaultRadius = exports.defaultRadius = 1;
|
|
87
|
+
var GeoJsonLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
|
|
88
|
+
function GeoJsonLayer(props) {
|
|
89
|
+
var _this;
|
|
90
|
+
(0, _classCallCheck2["default"])(this, GeoJsonLayer);
|
|
91
|
+
_this = _callSuper(this, GeoJsonLayer, [props]);
|
|
92
|
+
_this.dataToFeature = [];
|
|
93
|
+
_this.registerVisConfig(geojsonVisConfigs);
|
|
94
|
+
_this.getPositionAccessor = function (dataContainer) {
|
|
95
|
+
return featureAccessor(_this.config.columns)(dataContainer);
|
|
163
96
|
};
|
|
97
|
+
return _this;
|
|
164
98
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
99
|
+
(0, _inherits2["default"])(GeoJsonLayer, _Layer);
|
|
100
|
+
return (0, _createClass2["default"])(GeoJsonLayer, [{
|
|
101
|
+
key: "type",
|
|
102
|
+
get: function get() {
|
|
103
|
+
return GeoJsonLayer.type;
|
|
104
|
+
}
|
|
105
|
+
}, {
|
|
106
|
+
key: "name",
|
|
107
|
+
get: function get() {
|
|
108
|
+
return 'Polygon';
|
|
109
|
+
}
|
|
110
|
+
}, {
|
|
111
|
+
key: "layerIcon",
|
|
112
|
+
get: function get() {
|
|
113
|
+
return _geojsonLayerIcon["default"];
|
|
114
|
+
}
|
|
115
|
+
}, {
|
|
116
|
+
key: "requiredLayerColumns",
|
|
117
|
+
get: function get() {
|
|
118
|
+
return geoJsonRequiredColumns;
|
|
119
|
+
}
|
|
120
|
+
}, {
|
|
121
|
+
key: "visualChannels",
|
|
122
|
+
get: function get() {
|
|
123
|
+
var visualChannels = _superPropGet(GeoJsonLayer, "visualChannels", this, 1);
|
|
176
124
|
return {
|
|
177
|
-
|
|
125
|
+
color: _objectSpread(_objectSpread({}, visualChannels.color), {}, {
|
|
126
|
+
accessor: 'getFillColor',
|
|
127
|
+
condition: function condition(config) {
|
|
128
|
+
return config.visConfig.filled;
|
|
129
|
+
},
|
|
130
|
+
nullValue: visualChannels.color.nullValue,
|
|
131
|
+
getAttributeValue: function getAttributeValue(config) {
|
|
132
|
+
return function (d) {
|
|
133
|
+
return d.properties.fillColor || config.color;
|
|
134
|
+
};
|
|
135
|
+
},
|
|
136
|
+
// used this to get updateTriggers
|
|
137
|
+
defaultValue: function defaultValue(config) {
|
|
138
|
+
return config.color;
|
|
139
|
+
}
|
|
140
|
+
}),
|
|
141
|
+
strokeColor: {
|
|
142
|
+
property: 'strokeColor',
|
|
143
|
+
field: 'strokeColorField',
|
|
144
|
+
scale: 'strokeColorScale',
|
|
145
|
+
domain: 'strokeColorDomain',
|
|
146
|
+
range: 'strokeColorRange',
|
|
147
|
+
key: 'strokeColor',
|
|
148
|
+
channelScaleType: _defaultSettings.CHANNEL_SCALES.color,
|
|
149
|
+
accessor: 'getLineColor',
|
|
150
|
+
condition: function condition(config) {
|
|
151
|
+
return config.visConfig.stroked;
|
|
152
|
+
},
|
|
153
|
+
nullValue: visualChannels.color.nullValue,
|
|
154
|
+
getAttributeValue: function getAttributeValue(config) {
|
|
155
|
+
return function (d) {
|
|
156
|
+
return d.properties.lineColor || config.visConfig.strokeColor || config.color;
|
|
157
|
+
};
|
|
158
|
+
},
|
|
159
|
+
// used this to get updateTriggers
|
|
160
|
+
defaultValue: function defaultValue(config) {
|
|
161
|
+
return config.visConfig.strokeColor || config.color;
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
size: _objectSpread(_objectSpread({}, visualChannels.size), {}, {
|
|
165
|
+
property: 'stroke',
|
|
166
|
+
accessor: 'getLineWidth',
|
|
167
|
+
condition: function condition(config) {
|
|
168
|
+
return config.visConfig.stroked;
|
|
169
|
+
},
|
|
170
|
+
nullValue: 0,
|
|
171
|
+
getAttributeValue: function getAttributeValue() {
|
|
172
|
+
return function (d) {
|
|
173
|
+
return d.properties.lineWidth || defaultLineWidth;
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}),
|
|
177
|
+
height: {
|
|
178
|
+
property: 'height',
|
|
179
|
+
field: 'heightField',
|
|
180
|
+
scale: 'heightScale',
|
|
181
|
+
domain: 'heightDomain',
|
|
182
|
+
range: 'heightRange',
|
|
183
|
+
key: 'height',
|
|
184
|
+
channelScaleType: _defaultSettings.CHANNEL_SCALES.size,
|
|
185
|
+
accessor: 'getElevation',
|
|
186
|
+
condition: function condition(config) {
|
|
187
|
+
return config.visConfig.enable3d;
|
|
188
|
+
},
|
|
189
|
+
nullValue: 0,
|
|
190
|
+
getAttributeValue: function getAttributeValue() {
|
|
191
|
+
return function (d) {
|
|
192
|
+
return d.properties.elevation || defaultElevation;
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
radius: {
|
|
197
|
+
property: 'radius',
|
|
198
|
+
field: 'radiusField',
|
|
199
|
+
scale: 'radiusScale',
|
|
200
|
+
domain: 'radiusDomain',
|
|
201
|
+
range: 'radiusRange',
|
|
202
|
+
key: 'radius',
|
|
203
|
+
channelScaleType: _defaultSettings.CHANNEL_SCALES.radius,
|
|
204
|
+
accessor: 'getRadius',
|
|
205
|
+
nullValue: 0,
|
|
206
|
+
getAttributeValue: function getAttributeValue() {
|
|
207
|
+
return function (d) {
|
|
208
|
+
return d.properties.radius || defaultRadius;
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
}
|
|
178
212
|
};
|
|
179
213
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
radiusDomain: [0, 1],
|
|
199
|
-
radiusScale: 'linear',
|
|
200
|
-
// add stroke color visual channel
|
|
201
|
-
strokeColorField: null,
|
|
202
|
-
strokeColorDomain: [0, 1],
|
|
203
|
-
strokeColorScale: 'quantile'
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
getHoverData(object, dataContainer) {
|
|
207
|
-
// index of dataContainer is saved to feature.properties
|
|
208
|
-
return dataContainer.row(object.properties.index);
|
|
209
|
-
}
|
|
210
|
-
calculateDataAttribute(_ref3, getPosition) {
|
|
211
|
-
let {
|
|
212
|
-
dataContainer,
|
|
213
|
-
filteredIndex
|
|
214
|
-
} = _ref3;
|
|
215
|
-
return filteredIndex.map(i => this.dataToFeature[i]).filter(d => d);
|
|
216
|
-
}
|
|
217
|
-
formatLayerData(datasets, oldLayerData) {
|
|
218
|
-
if (this.config.dataId === null) {
|
|
219
|
-
return {};
|
|
214
|
+
}, {
|
|
215
|
+
key: "getDefaultLayerConfig",
|
|
216
|
+
value: function getDefaultLayerConfig() {
|
|
217
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
218
|
+
return _objectSpread(_objectSpread({}, _superPropGet(GeoJsonLayer, "getDefaultLayerConfig", this, 3)([props])), {}, {
|
|
219
|
+
// add height visual channel
|
|
220
|
+
heightField: null,
|
|
221
|
+
heightDomain: [0, 1],
|
|
222
|
+
heightScale: 'linear',
|
|
223
|
+
// add radius visual channel
|
|
224
|
+
radiusField: null,
|
|
225
|
+
radiusDomain: [0, 1],
|
|
226
|
+
radiusScale: 'linear',
|
|
227
|
+
// add stroke color visual channel
|
|
228
|
+
strokeColorField: null,
|
|
229
|
+
strokeColorDomain: [0, 1],
|
|
230
|
+
strokeColorScale: 'quantile'
|
|
231
|
+
});
|
|
220
232
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
233
|
+
}, {
|
|
234
|
+
key: "getHoverData",
|
|
235
|
+
value: function getHoverData(object, dataContainer) {
|
|
236
|
+
// index of dataContainer is saved to feature.properties
|
|
237
|
+
return dataContainer.row(object.properties.index);
|
|
238
|
+
}
|
|
239
|
+
}, {
|
|
240
|
+
key: "calculateDataAttribute",
|
|
241
|
+
value: function calculateDataAttribute(_ref2, getPosition) {
|
|
242
|
+
var _this2 = this;
|
|
243
|
+
var dataContainer = _ref2.dataContainer,
|
|
244
|
+
filteredIndex = _ref2.filteredIndex;
|
|
245
|
+
return filteredIndex.map(function (i) {
|
|
246
|
+
return _this2.dataToFeature[i];
|
|
247
|
+
}).filter(function (d) {
|
|
248
|
+
return d;
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
}, {
|
|
252
|
+
key: "formatLayerData",
|
|
253
|
+
value: function formatLayerData(datasets, oldLayerData) {
|
|
254
|
+
if (this.config.dataId === null) {
|
|
255
|
+
return {};
|
|
256
|
+
}
|
|
257
|
+
var _datasets$this$config = datasets[this.config.dataId],
|
|
258
|
+
gpuFilter = _datasets$this$config.gpuFilter,
|
|
259
|
+
dataContainer = _datasets$this$config.dataContainer;
|
|
260
|
+
var _this$updateData = this.updateData(datasets, oldLayerData),
|
|
261
|
+
data = _this$updateData.data;
|
|
262
|
+
var customFilterValueAccessor = function customFilterValueAccessor(dc, d, fieldIndex) {
|
|
263
|
+
return dc.valueAt(d.properties.index, fieldIndex);
|
|
264
|
+
};
|
|
265
|
+
var indexAccessor = function indexAccessor(f) {
|
|
266
|
+
return f.properties.index;
|
|
267
|
+
};
|
|
268
|
+
var dataAccessor = function dataAccessor(dc) {
|
|
269
|
+
return function (d) {
|
|
270
|
+
return {
|
|
271
|
+
index: d.properties.index
|
|
272
|
+
};
|
|
273
|
+
};
|
|
274
|
+
};
|
|
275
|
+
var accessors = this.getAttributeAccessors({
|
|
276
|
+
dataAccessor: dataAccessor,
|
|
277
|
+
dataContainer: dataContainer
|
|
278
|
+
});
|
|
279
|
+
return _objectSpread({
|
|
280
|
+
data: data,
|
|
281
|
+
getFilterValue: gpuFilter.filterValueAccessor(dataContainer)(indexAccessor, customFilterValueAccessor)
|
|
282
|
+
}, accessors);
|
|
283
|
+
}
|
|
284
|
+
}, {
|
|
285
|
+
key: "updateLayerMeta",
|
|
286
|
+
value: function updateLayerMeta(dataContainer) {
|
|
287
|
+
var getFeature = this.getPositionAccessor(dataContainer);
|
|
288
|
+
this.dataToFeature = (0, _geojsonUtils.getGeojsonDataMaps)(dataContainer, getFeature);
|
|
248
289
|
|
|
249
|
-
|
|
250
|
-
|
|
290
|
+
// get bounds from features
|
|
291
|
+
var bounds = (0, _geojsonUtils.getGeojsonBounds)(this.dataToFeature);
|
|
251
292
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
setInitialLayerConfig(_ref4) {
|
|
260
|
-
let {
|
|
261
|
-
dataContainer
|
|
262
|
-
} = _ref4;
|
|
263
|
-
this.updateLayerMeta(dataContainer);
|
|
264
|
-
const {
|
|
265
|
-
featureTypes
|
|
266
|
-
} = this.meta;
|
|
267
|
-
// default settings is stroke: true, filled: false
|
|
268
|
-
if (featureTypes && featureTypes.polygon) {
|
|
269
|
-
// set both fill and stroke to true
|
|
270
|
-
return this.updateLayerVisConfig({
|
|
271
|
-
filled: true,
|
|
272
|
-
stroked: true,
|
|
273
|
-
strokeColor: _baseLayer.colorMaker.next().value
|
|
274
|
-
});
|
|
275
|
-
} else if (featureTypes && featureTypes.point) {
|
|
276
|
-
// set fill to true if detect point
|
|
277
|
-
return this.updateLayerVisConfig({
|
|
278
|
-
filled: true,
|
|
279
|
-
stroked: false
|
|
293
|
+
// keep a record of what type of geometry the collection has
|
|
294
|
+
var featureTypes = (0, _geojsonUtils.getGeojsonFeatureTypes)(this.dataToFeature);
|
|
295
|
+
this.updateMeta({
|
|
296
|
+
bounds: bounds,
|
|
297
|
+
featureTypes: featureTypes
|
|
280
298
|
});
|
|
281
299
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
300
|
+
}, {
|
|
301
|
+
key: "setInitialLayerConfig",
|
|
302
|
+
value: function setInitialLayerConfig(_ref3) {
|
|
303
|
+
var dataContainer = _ref3.dataContainer;
|
|
304
|
+
this.updateLayerMeta(dataContainer);
|
|
305
|
+
var featureTypes = this.meta.featureTypes;
|
|
306
|
+
// default settings is stroke: true, filled: false
|
|
307
|
+
if (featureTypes && featureTypes.polygon) {
|
|
308
|
+
// set both fill and stroke to true
|
|
309
|
+
return this.updateLayerVisConfig({
|
|
310
|
+
filled: true,
|
|
311
|
+
stroked: true,
|
|
312
|
+
strokeColor: _baseLayer.colorMaker.next().value
|
|
313
|
+
});
|
|
314
|
+
} else if (featureTypes && featureTypes.point) {
|
|
315
|
+
// set fill to true if detect point
|
|
316
|
+
return this.updateLayerVisConfig({
|
|
317
|
+
filled: true,
|
|
318
|
+
stroked: false
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
return this;
|
|
322
|
+
}
|
|
323
|
+
}, {
|
|
324
|
+
key: "renderLayer",
|
|
325
|
+
value: function renderLayer(opts) {
|
|
326
|
+
var data = opts.data,
|
|
327
|
+
gpuFilter = opts.gpuFilter,
|
|
328
|
+
objectHovered = opts.objectHovered;
|
|
329
|
+
var featureTypes = this.meta.featureTypes;
|
|
330
|
+
var radiusScale = this.getRadiusScale();
|
|
331
|
+
var visConfig = this.config.visConfig;
|
|
332
|
+
var layerProps = {
|
|
333
|
+
lineWidthScale: visConfig.thickness,
|
|
334
|
+
elevationScale: visConfig.elevationScale,
|
|
335
|
+
pointRadiusScale: radiusScale,
|
|
336
|
+
lineMiterLimit: 4
|
|
337
|
+
};
|
|
338
|
+
var updateTriggers = _objectSpread(_objectSpread({}, this.getVisualChannelUpdateTriggers()), {}, {
|
|
339
|
+
getFilterValue: gpuFilter.filterValueUpdateTriggers
|
|
340
|
+
});
|
|
341
|
+
var defaultLayerProps = this.getDefaultDeckLayerProps(opts);
|
|
342
|
+
var opaOverwrite = {
|
|
343
|
+
opacity: visConfig.strokeOpacity
|
|
344
|
+
};
|
|
345
|
+
var pickable = this.hasInteractivity;
|
|
346
|
+
var hoveredObject = this.hasHoveredObject(objectHovered);
|
|
347
|
+
return [new _layers.GeoJsonLayer(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultLayerProps), layerProps), data), {}, {
|
|
348
|
+
pickable: pickable,
|
|
349
|
+
highlightColor: _defaultSettings.HIGHLIGH_COLOR_3D,
|
|
350
|
+
autoHighlight: visConfig.enable3d && pickable,
|
|
351
|
+
stroked: visConfig.stroked,
|
|
352
|
+
filled: visConfig.filled,
|
|
353
|
+
extruded: visConfig.enable3d,
|
|
354
|
+
wireframe: visConfig.wireframe,
|
|
355
|
+
wrapLongitude: false,
|
|
356
|
+
lineMiterLimit: 2,
|
|
357
|
+
rounded: true,
|
|
358
|
+
radiusUnits: 'pixels',
|
|
359
|
+
lineWidthUnits: 'pixels',
|
|
360
|
+
updateTriggers: updateTriggers,
|
|
361
|
+
_subLayerProps: _objectSpread(_objectSpread(_objectSpread({}, featureTypes !== null && featureTypes !== void 0 && featureTypes.polygon ? {
|
|
332
362
|
'polygons-stroke': opaOverwrite
|
|
333
|
-
} : {}),
|
|
334
|
-
...(featureTypes !== null && featureTypes !== void 0 && featureTypes.line ? {
|
|
363
|
+
} : {}), featureTypes !== null && featureTypes !== void 0 && featureTypes.line ? {
|
|
335
364
|
linestrings: opaOverwrite
|
|
336
|
-
} : {}),
|
|
337
|
-
...(featureTypes !== null && featureTypes !== void 0 && featureTypes.point ? {
|
|
365
|
+
} : {}), featureTypes !== null && featureTypes !== void 0 && featureTypes.point ? {
|
|
338
366
|
points: {
|
|
339
367
|
lineOpacity: visConfig.strokeOpacity
|
|
340
368
|
}
|
|
341
369
|
} : {})
|
|
370
|
+
}))].concat((0, _toConsumableArray2["default"])(hoveredObject && !visConfig.enable3d ? [
|
|
371
|
+
// @ts-expect-error
|
|
372
|
+
new _layers.GeoJsonLayer(_objectSpread(_objectSpread(_objectSpread({}, this.getDefaultHoverLayerProps()), layerProps), {}, {
|
|
373
|
+
wrapLongitude: false,
|
|
374
|
+
data: [hoveredObject],
|
|
375
|
+
getLineWidth: data.getLineWidth,
|
|
376
|
+
getRadius: data.getRadius,
|
|
377
|
+
getElevation: data.getElevation,
|
|
378
|
+
getLineColor: this.config.highlightColor,
|
|
379
|
+
getFillColor: this.config.highlightColor,
|
|
380
|
+
// always draw outline
|
|
381
|
+
stroked: true,
|
|
382
|
+
filled: false
|
|
383
|
+
}))] : []));
|
|
384
|
+
}
|
|
385
|
+
}], [{
|
|
386
|
+
key: "type",
|
|
387
|
+
get: function get() {
|
|
388
|
+
return 'geojson';
|
|
389
|
+
}
|
|
390
|
+
}, {
|
|
391
|
+
key: "findDefaultLayerProps",
|
|
392
|
+
value: function findDefaultLayerProps(_ref4) {
|
|
393
|
+
var _this3 = this;
|
|
394
|
+
var label = _ref4.label,
|
|
395
|
+
_ref4$fields = _ref4.fields,
|
|
396
|
+
fields = _ref4$fields === void 0 ? [] : _ref4$fields;
|
|
397
|
+
var geojsonColumns = fields.filter(function (f) {
|
|
398
|
+
return f.type === 'geojson' && SUPPORTED_ANALYZER_TYPES[f.analyzerType];
|
|
399
|
+
}).map(function (f) {
|
|
400
|
+
return f.name;
|
|
401
|
+
});
|
|
402
|
+
var defaultColumns = {
|
|
403
|
+
geojson: (0, _uniq["default"])([].concat((0, _toConsumableArray2["default"])(_defaultSettings.GEOJSON_FIELDS.geojson), (0, _toConsumableArray2["default"])(geojsonColumns)))
|
|
404
|
+
};
|
|
405
|
+
var foundColumns = this.findDefaultColumnField(defaultColumns, fields);
|
|
406
|
+
if (!foundColumns || !foundColumns.length) {
|
|
407
|
+
return {
|
|
408
|
+
props: []
|
|
409
|
+
};
|
|
342
410
|
}
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
// always draw outline
|
|
356
|
-
stroked: true,
|
|
357
|
-
filled: false
|
|
358
|
-
})] : [])];
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
exports.default = GeoJsonLayer;
|
|
362
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3R5cGVBbmFseXplciIsIl9iYXNlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9sYXllcnMiLCJfZ2VvanNvblV0aWxzIiwiX2dlb2pzb25MYXllckljb24iLCJfZGVmYXVsdFNldHRpbmdzIiwiX2xheWVyRmFjdG9yeSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlNVUFBPUlRFRF9BTkFMWVpFUl9UWVBFUyIsIkRBVEFfVFlQRVMiLCJHRU9NRVRSWSIsIkdFT01FVFJZX0ZST01fU1RSSU5HIiwiZ2VvanNvblZpc0NvbmZpZ3MiLCJleHBvcnRzIiwib3BhY2l0eSIsInN0cm9rZU9wYWNpdHkiLCJMQVlFUl9WSVNfQ09ORklHUyIsInByb3BlcnR5IiwidGhpY2tuZXNzIiwiZGVmYXVsdFZhbHVlIiwic3Ryb2tlQ29sb3IiLCJjb2xvclJhbmdlIiwic3Ryb2tlQ29sb3JSYW5nZSIsInJhZGl1cyIsInNpemVSYW5nZSIsInJhZGl1c1JhbmdlIiwiaGVpZ2h0UmFuZ2UiLCJlbGV2YXRpb25TY2FsZSIsImVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3IiLCJzdHJva2VkIiwiZmlsbGVkIiwiZW5hYmxlM2QiLCJ3aXJlZnJhbWUiLCJnZW9Kc29uUmVxdWlyZWRDb2x1bW5zIiwiZmVhdHVyZUFjY2Vzc29yIiwiX3JlZiIsImdlb2pzb24iLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImRlZmF1bHRFbGV2YXRpb24iLCJkZWZhdWx0TGluZVdpZHRoIiwiZGVmYXVsdFJhZGl1cyIsIkdlb0pzb25MYXllciIsIkxheWVyIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkYXRhVG9GZWF0dXJlIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJ0eXBlIiwibmFtZSIsImxheWVySWNvbiIsIkdlb2pzb25MYXllckljb24iLCJyZXF1aXJlZExheWVyQ29sdW1ucyIsInZpc3VhbENoYW5uZWxzIiwiY29sb3IiLCJhY2Nlc3NvciIsImNvbmRpdGlvbiIsInZpc0NvbmZpZyIsIm51bGxWYWx1ZSIsImdldEF0dHJpYnV0ZVZhbHVlIiwicHJvcGVydGllcyIsImZpbGxDb2xvciIsImZpZWxkIiwic2NhbGUiLCJkb21haW4iLCJyYW5nZSIsImtleSIsImNoYW5uZWxTY2FsZVR5cGUiLCJDSEFOTkVMX1NDQUxFUyIsImxpbmVDb2xvciIsInNpemUiLCJsaW5lV2lkdGgiLCJoZWlnaHQiLCJlbGV2YXRpb24iLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJfcmVmMiIsImxhYmVsIiwiZmllbGRzIiwiZ2VvanNvbkNvbHVtbnMiLCJmaWx0ZXIiLCJmIiwiYW5hbHl6ZXJUeXBlIiwibWFwIiwiZGVmYXVsdENvbHVtbnMiLCJ1bmlxIiwiR0VPSlNPTl9GSUVMRFMiLCJmb3VuZENvbHVtbnMiLCJmaW5kRGVmYXVsdENvbHVtbkZpZWxkIiwibGVuZ3RoIiwicmVwbGFjZSIsImlzVmlzaWJsZSIsImdldERlZmF1bHRMYXllckNvbmZpZyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImhlaWdodEZpZWxkIiwiaGVpZ2h0RG9tYWluIiwiaGVpZ2h0U2NhbGUiLCJyYWRpdXNGaWVsZCIsInJhZGl1c0RvbWFpbiIsInJhZGl1c1NjYWxlIiwic3Ryb2tlQ29sb3JGaWVsZCIsInN0cm9rZUNvbG9yRG9tYWluIiwic3Ryb2tlQ29sb3JTY2FsZSIsImdldEhvdmVyRGF0YSIsIm9iamVjdCIsInJvdyIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJfcmVmMyIsImdldFBvc2l0aW9uIiwiZmlsdGVyZWRJbmRleCIsImZvcm1hdExheWVyRGF0YSIsImRhdGFzZXRzIiwib2xkTGF5ZXJEYXRhIiwiZGF0YUlkIiwiZ3B1RmlsdGVyIiwiZGF0YSIsInVwZGF0ZURhdGEiLCJjdXN0b21GaWx0ZXJWYWx1ZUFjY2Vzc29yIiwiZmllbGRJbmRleCIsImluZGV4QWNjZXNzb3IiLCJkYXRhQWNjZXNzb3IiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJ1cGRhdGVMYXllck1ldGEiLCJnZXRGZWF0dXJlIiwiZ2V0R2VvanNvbkRhdGFNYXBzIiwiYm91bmRzIiwiZ2V0R2VvanNvbkJvdW5kcyIsImZlYXR1cmVUeXBlcyIsImdldEdlb2pzb25GZWF0dXJlVHlwZXMiLCJ1cGRhdGVNZXRhIiwic2V0SW5pdGlhbExheWVyQ29uZmlnIiwiX3JlZjQiLCJtZXRhIiwicG9seWdvbiIsInVwZGF0ZUxheWVyVmlzQ29uZmlnIiwiY29sb3JNYWtlciIsIm5leHQiLCJ2YWx1ZSIsInBvaW50IiwicmVuZGVyTGF5ZXIiLCJvcHRzIiwib2JqZWN0SG92ZXJlZCIsImdldFJhZGl1c1NjYWxlIiwibGF5ZXJQcm9wcyIsImxpbmVXaWR0aFNjYWxlIiwicG9pbnRSYWRpdXNTY2FsZSIsImxpbmVNaXRlckxpbWl0IiwidXBkYXRlVHJpZ2dlcnMiLCJnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMiLCJmaWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJvcGFPdmVyd3JpdGUiLCJwaWNrYWJsZSIsImhhc0ludGVyYWN0aXZpdHkiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsIkRlY2tHTEdlb0pzb25MYXllciIsImhpZ2hsaWdodENvbG9yIiwiSElHSExJR0hfQ09MT1JfM0QiLCJhdXRvSGlnaGxpZ2h0IiwiZXh0cnVkZWQiLCJ3cmFwTG9uZ2l0dWRlIiwicm91bmRlZCIsInJhZGl1c1VuaXRzIiwibGluZVdpZHRoVW5pdHMiLCJfc3ViTGF5ZXJQcm9wcyIsImxpbmUiLCJsaW5lc3RyaW5ncyIsInBvaW50cyIsImxpbmVPcGFjaXR5IiwiZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcyIsImdldExpbmVXaWR0aCIsImdldFJhZGl1cyIsImdldEVsZXZhdGlvbiIsImdldExpbmVDb2xvciIsImdldEZpbGxDb2xvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvZ2VvanNvbi1sYXllci9nZW9qc29uLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC91bmlxJztcbmltcG9ydCB7REFUQV9UWVBFU30gZnJvbSAndHlwZS1hbmFseXplcic7XG5cbmltcG9ydCBMYXllciwge1xuICBjb2xvck1ha2VyLFxuICBMYXllckJhc2VDb25maWcsXG4gIExheWVyQ29sb3JDb25maWcsXG4gIExheWVyQ29sdW1uLFxuICBMYXllckhlaWdodENvbmZpZyxcbiAgTGF5ZXJSYWRpdXNDb25maWcsXG4gIExheWVyU2l6ZUNvbmZpZyxcbiAgTGF5ZXJTdHJva2VDb2xvckNvbmZpZ1xufSBmcm9tICcuLi9iYXNlLWxheWVyJztcbmltcG9ydCB7R2VvSnNvbkxheWVyIGFzIERlY2tHTEdlb0pzb25MYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7XG4gIGdldEdlb2pzb25EYXRhTWFwcyxcbiAgZ2V0R2VvanNvbkJvdW5kcyxcbiAgZ2V0R2VvanNvbkZlYXR1cmVUeXBlcyxcbiAgR2VvanNvbkRhdGFNYXBzXG59IGZyb20gJy4vZ2VvanNvbi11dGlscyc7XG5pbXBvcnQgR2VvanNvbkxheWVySWNvbiBmcm9tICcuL2dlb2pzb24tbGF5ZXItaWNvbic7XG5pbXBvcnQge0dFT0pTT05fRklFTERTLCBISUdITElHSF9DT0xPUl8zRCwgQ0hBTk5FTF9TQ0FMRVN9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7XG4gIExBWUVSX1ZJU19DT05GSUdTLFxuICBWaXNDb25maWdOdW1iZXIsXG4gIFZpc0NvbmZpZ0NvbG9yU2VsZWN0LFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdSYW5nZSxcbiAgVmlzQ29uZmlnQm9vbGVhblxufSBmcm9tICcuLi9sYXllci1mYWN0b3J5JztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGUtdXRpbHMvZGF0YS1jb250YWluZXItaW50ZXJmYWNlJztcbmltcG9ydCB7TWVyZ2UsIFJHQkNvbG9yfSBmcm9tICcuLi8uLi9yZWR1Y2Vycyc7XG5pbXBvcnQge0NvbG9yUmFuZ2V9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb2xvci1yYW5nZXMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5jb25zdCBTVVBQT1JURURfQU5BTFlaRVJfVFlQRVMgPSB7XG4gIFtEQVRBX1RZUEVTLkdFT01FVFJZXTogdHJ1ZSxcbiAgW0RBVEFfVFlQRVMuR0VPTUVUUllfRlJPTV9TVFJJTkddOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgZ2VvanNvblZpc0NvbmZpZ3M6IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknO1xuICBzdHJva2VPcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHRoaWNrbmVzczogVmlzQ29uZmlnTnVtYmVyO1xuICBzdHJva2VDb2xvcjogJ3N0cm9rZUNvbG9yJztcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnO1xuICBzdHJva2VDb2xvclJhbmdlOiAnc3Ryb2tlQ29sb3JSYW5nZSc7XG4gIHJhZGl1czogJ3JhZGl1cyc7XG5cbiAgc2l6ZVJhbmdlOiAnc3Ryb2tlV2lkdGhSYW5nZSc7XG4gIHJhZGl1c1JhbmdlOiAncmFkaXVzUmFuZ2UnO1xuICBoZWlnaHRSYW5nZTogJ2VsZXZhdGlvblJhbmdlJztcbiAgZWxldmF0aW9uU2NhbGU6ICdlbGV2YXRpb25TY2FsZSc7XG4gIGVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3I6ICdlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yJztcbiAgc3Ryb2tlZDogJ3N0cm9rZWQnO1xuICBmaWxsZWQ6ICdmaWxsZWQnO1xuICBlbmFibGUzZDogJ2VuYWJsZTNkJztcbiAgd2lyZWZyYW1lOiAnd2lyZWZyYW1lJztcbn0gPSB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgc3Ryb2tlT3BhY2l0eToge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLm9wYWNpdHksXG4gICAgcHJvcGVydHk6ICdzdHJva2VPcGFjaXR5J1xuICB9LFxuICB0aGlja25lc3M6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy50aGlja25lc3MsXG4gICAgZGVmYXVsdFZhbHVlOiAxXG4gIH0sXG4gIHN0cm9rZUNvbG9yOiAnc3Ryb2tlQ29sb3InLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHN0cm9rZUNvbG9yUmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgcmFkaXVzOiAncmFkaXVzJyxcblxuICBzaXplUmFuZ2U6ICdzdHJva2VXaWR0aFJhbmdlJyxcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gIGhlaWdodFJhbmdlOiAnZWxldmF0aW9uUmFuZ2UnLFxuICBlbGV2YXRpb25TY2FsZTogJ2VsZXZhdGlvblNjYWxlJyxcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogJ2VuYWJsZUVsZXZhdGlvblpvb21GYWN0b3InLFxuICBzdHJva2VkOiAnc3Ryb2tlZCcsXG4gIGZpbGxlZDogJ2ZpbGxlZCcsXG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnLFxuICB3aXJlZnJhbWU6ICd3aXJlZnJhbWUnXG59O1xuXG5leHBvcnQgdHlwZSBHZW9Kc29uVmlzQ29uZmlnU2V0dGluZ3MgPSB7XG4gIG9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgc3Ryb2tlT3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICB0aGlja25lc3M6IFZpc0NvbmZpZ051bWJlcjtcbiAgc3Ryb2tlQ29sb3I6IFZpc0NvbmZpZ0NvbG9yU2VsZWN0O1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICBzdHJva2VDb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICByYWRpdXM6IFZpc0NvbmZpZ051bWJlcjtcblxuICBzaXplUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICByYWRpdXNSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIGhlaWdodFJhbmdlOiBWaXNDb25maWdSYW5nZTtcbiAgZWxldmF0aW9uU2NhbGU6IFZpc0NvbmZpZ051bWJlcjtcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogVmlzQ29uZmlnQm9vbGVhbjtcbiAgc3Ryb2tlZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgZmlsbGVkOiBWaXNDb25maWdCb29sZWFuO1xuICBlbmFibGUzZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgd2lyZWZyYW1lOiBWaXNDb25maWdCb29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgR2VvSnNvbkxheWVyQ29sdW1uc0NvbmZpZyA9IHtcbiAgZ2VvanNvbjogTGF5ZXJDb2x1bW47XG59O1xuXG5leHBvcnQgdHlwZSBHZW9Kc29uTGF5ZXJWaXNDb25maWcgPSB7XG4gIG9wYWNpdHk6IG51bWJlcjtcbiAgc3Ryb2tlT3BhY2l0eTogbnVtYmVyO1xuICB0aGlja25lc3M6IG51bWJlcjtcbiAgc3Ryb2tlQ29sb3I6IFJHQkNvbG9yO1xuICBjb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICBzdHJva2VDb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICByYWRpdXM6IG51bWJlcjtcblxuICBzaXplUmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG4gIHJhZGl1c1JhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICBoZWlnaHRSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgZWxldmF0aW9uU2NhbGU6IG51bWJlcjtcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogYm9vbGVhbjtcbiAgc3Ryb2tlZDogYm9vbGVhbjtcbiAgZmlsbGVkOiBib29sZWFuO1xuICBlbmFibGUzZDogYm9vbGVhbjtcbiAgd2lyZWZyYW1lOiBib29sZWFuO1xufTtcblxudHlwZSBHZW9Kc29uTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnID0gTGF5ZXJDb2xvckNvbmZpZyAmXG4gIExheWVyU3Ryb2tlQ29sb3JDb25maWcgJlxuICBMYXllclNpemVDb25maWcgJlxuICBMYXllckhlaWdodENvbmZpZyAmXG4gIExheWVyUmFkaXVzQ29uZmlnO1xuZXhwb3J0IHR5cGUgR2VvSnNvbkxheWVyQ29uZmlnID0gTWVyZ2U8XG4gIExheWVyQmFzZUNvbmZpZyxcbiAge2NvbHVtbnM6IEdlb0pzb25MYXllckNvbHVtbnNDb25maWc7IHZpc0NvbmZpZzogR2VvSnNvbkxheWVyVmlzQ29uZmlnfVxuPiAmXG4gIEdlb0pzb25MYXllclZpc3VhbENoYW5uZWxDb25maWc7XG5cbmV4cG9ydCB0eXBlIEdlb0pzb25MYXllck1ldGEgPSB7XG4gIGZlYXR1cmVUeXBlcz86IHtwb2x5Z29uOiBib29sZWFuOyBwb2ludDogYm9vbGVhbjsgbGluZTogYm9vbGVhbn07XG4gIGZpeGVkUmFkaXVzPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW9Kc29uUmVxdWlyZWRDb2x1bW5zOiBbJ2dlb2pzb24nXSA9IFsnZ2VvanNvbiddO1xuZXhwb3J0IGNvbnN0IGZlYXR1cmVBY2Nlc3NvciA9ICh7Z2VvanNvbn06IEdlb0pzb25MYXllckNvbHVtbnNDb25maWcpID0+IChcbiAgZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2VcbikgPT4gZCA9PiBkYy52YWx1ZUF0KGQuaW5kZXgsIGdlb2pzb24uZmllbGRJZHgpO1xuXG4vLyBhY2Nlc3MgZmVhdHVyZSBwcm9wZXJ0aWVzIGZyb20gZ2VvanNvbiBzdWIgbGF5ZXJcbmV4cG9ydCBjb25zdCBkZWZhdWx0RWxldmF0aW9uID0gNTAwO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRMaW5lV2lkdGggPSAxO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRSYWRpdXMgPSAxO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHZW9Kc29uTGF5ZXIgZXh0ZW5kcyBMYXllciB7XG4gIGRlY2xhcmUgY29uZmlnOiBHZW9Kc29uTGF5ZXJDb25maWc7XG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IEdlb0pzb25WaXNDb25maWdTZXR0aW5ncztcbiAgZGVjbGFyZSBtZXRhOiBHZW9Kc29uTGF5ZXJNZXRhO1xuICBkYXRhVG9GZWF0dXJlOiBHZW9qc29uRGF0YU1hcHM7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBbXTtcbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKGdlb2pzb25WaXNDb25maWdzKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IgPSAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT5cbiAgICAgIGZlYXR1cmVBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBHZW9Kc29uTGF5ZXIudHlwZTtcbiAgfVxuICBzdGF0aWMgZ2V0IHR5cGUoKTogJ2dlb2pzb24nIHtcbiAgICByZXR1cm4gJ2dlb2pzb24nO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1BvbHlnb24nO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gR2VvanNvbkxheWVySWNvbjtcbiAgfVxuXG4gIGdldCByZXF1aXJlZExheWVyQ29sdW1ucygpIHtcbiAgICByZXR1cm4gZ2VvSnNvblJlcXVpcmVkQ29sdW1ucztcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVscyA9IHN1cGVyLnZpc3VhbENoYW5uZWxzO1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLmZpbGxlZCxcbiAgICAgICAgbnVsbFZhbHVlOiB2aXN1YWxDaGFubmVscy5jb2xvci5udWxsVmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiBjb25maWcgPT4gZCA9PiBkLnByb3BlcnRpZXMuZmlsbENvbG9yIHx8IGNvbmZpZy5jb2xvcixcbiAgICAgICAgLy8gdXNlZCB0aGlzIHRvIGdldCB1cGRhdGVUcmlnZ2Vyc1xuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzdHJva2VDb2xvcjoge1xuICAgICAgICBwcm9wZXJ0eTogJ3N0cm9rZUNvbG9yJyxcbiAgICAgICAgZmllbGQ6ICdzdHJva2VDb2xvckZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdzdHJva2VDb2xvclNjYWxlJyxcbiAgICAgICAgZG9tYWluOiAnc3Ryb2tlQ29sb3JEb21haW4nLFxuICAgICAgICByYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICAgICAgICBrZXk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLmNvbG9yLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldExpbmVDb2xvcicsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlZCxcbiAgICAgICAgbnVsbFZhbHVlOiB2aXN1YWxDaGFubmVscy5jb2xvci5udWxsVmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiBjb25maWcgPT4gZCA9PlxuICAgICAgICAgIGQucHJvcGVydGllcy5saW5lQ29sb3IgfHwgY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvciB8fCBjb25maWcuY29sb3IsXG4gICAgICAgIC8vIHVzZWQgdGhpcyB0byBnZXQgdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvciB8fCBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIC4uLnZpc3VhbENoYW5uZWxzLnNpemUsXG4gICAgICAgIHByb3BlcnR5OiAnc3Ryb2tlJyxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRMaW5lV2lkdGgnLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZWQsXG4gICAgICAgIG51bGxWYWx1ZTogMCxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6ICgpID0+IGQgPT4gZC5wcm9wZXJ0aWVzLmxpbmVXaWR0aCB8fCBkZWZhdWx0TGluZVdpZHRoXG4gICAgICB9LFxuICAgICAgaGVpZ2h0OiB7XG4gICAgICAgIHByb3BlcnR5OiAnaGVpZ2h0JyxcbiAgICAgICAgZmllbGQ6ICdoZWlnaHRGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAnaGVpZ2h0U2NhbGUnLFxuICAgICAgICBkb21haW46ICdoZWlnaHREb21haW4nLFxuICAgICAgICByYW5nZTogJ2hlaWdodFJhbmdlJyxcbiAgICAgICAga2V5OiAnaGVpZ2h0JyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuc2l6ZSxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRFbGV2YXRpb24nLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLmVuYWJsZTNkLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiAoKSA9PiBkID0+IGQucHJvcGVydGllcy5lbGV2YXRpb24gfHwgZGVmYXVsdEVsZXZhdGlvblxuICAgICAgfSxcbiAgICAgIHJhZGl1czoge1xuICAgICAgICBwcm9wZXJ0eTogJ3JhZGl1cycsXG4gICAgICAgIGZpZWxkOiAncmFkaXVzRmllbGQnLFxuICAgICAgICBzY2FsZTogJ3JhZGl1c1NjYWxlJyxcbiAgICAgICAgZG9tYWluOiAncmFkaXVzRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gICAgICAgIGtleTogJ3JhZGl1cycsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLnJhZGl1cyxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRSYWRpdXMnLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiAoKSA9PiBkID0+IGQucHJvcGVydGllcy5yYWRpdXMgfHwgZGVmYXVsdFJhZGl1c1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZmluZERlZmF1bHRMYXllclByb3BzKHtsYWJlbCwgZmllbGRzID0gW119OiBLZXBsZXJUYWJsZSkge1xuICAgIGNvbnN0IGdlb2pzb25Db2x1bW5zID0gZmllbGRzXG4gICAgICAuZmlsdGVyKGYgPT4gZi50eXBlID09PSAnZ2VvanNvbicgJiYgU1VQUE9SVEVEX0FOQUxZWkVSX1RZUEVTW2YuYW5hbHl6ZXJUeXBlXSlcbiAgICAgIC5tYXAoZiA9PiBmLm5hbWUpO1xuXG4gICAgY29uc3QgZGVmYXVsdENvbHVtbnMgPSB7XG4gICAgICBnZW9qc29uOiB1bmlxKFsuLi5HRU9KU09OX0ZJRUxEUy5nZW9qc29uLCAuLi5nZW9qc29uQ29sdW1uc10pXG4gICAgfTtcblxuICAgIGNvbnN0IGZvdW5kQ29sdW1ucyA9IHRoaXMuZmluZERlZmF1bHRDb2x1bW5GaWVsZChkZWZhdWx0Q29sdW1ucywgZmllbGRzKTtcbiAgICBpZiAoIWZvdW5kQ29sdW1ucyB8fCAhZm91bmRDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtwcm9wczogW119O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwcm9wczogZm91bmRDb2x1bW5zLm1hcChjb2x1bW5zID0+ICh7XG4gICAgICAgIGxhYmVsOiAodHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyAmJiBsYWJlbC5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpKSB8fCB0aGlzLnR5cGUsXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGlzVmlzaWJsZTogdHJ1ZVxuICAgICAgfSkpXG4gICAgfTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyA9IHt9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyksXG5cbiAgICAgIC8vIGFkZCBoZWlnaHQgdmlzdWFsIGNoYW5uZWxcbiAgICAgIGhlaWdodEZpZWxkOiBudWxsLFxuICAgICAgaGVpZ2h0RG9tYWluOiBbMCwgMV0sXG4gICAgICBoZWlnaHRTY2FsZTogJ2xpbmVhcicsXG5cbiAgICAgIC8vIGFkZCByYWRpdXMgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHJhZGl1c0ZpZWxkOiBudWxsLFxuICAgICAgcmFkaXVzRG9tYWluOiBbMCwgMV0sXG4gICAgICByYWRpdXNTY2FsZTogJ2xpbmVhcicsXG5cbiAgICAgIC8vIGFkZCBzdHJva2UgY29sb3IgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IG51bGwsXG4gICAgICBzdHJva2VDb2xvckRvbWFpbjogWzAsIDFdLFxuICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogJ3F1YW50aWxlJ1xuICAgIH07XG4gIH1cblxuICBnZXRIb3ZlckRhdGEob2JqZWN0LCBkYXRhQ29udGFpbmVyKSB7XG4gICAgLy8gaW5kZXggb2YgZGF0YUNvbnRhaW5lciBpcyBzYXZlZCB0byBmZWF0dXJlLnByb3BlcnRpZXNcbiAgICByZXR1cm4gZGF0YUNvbnRhaW5lci5yb3cob2JqZWN0LnByb3BlcnRpZXMuaW5kZXgpO1xuICB9XG5cbiAgY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZSh7ZGF0YUNvbnRhaW5lciwgZmlsdGVyZWRJbmRleH0sIGdldFBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIGZpbHRlcmVkSW5kZXgubWFwKGkgPT4gdGhpcy5kYXRhVG9GZWF0dXJlW2ldKS5maWx0ZXIoZCA9PiBkKTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGFJZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB7Z3B1RmlsdGVyLCBkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXRzW3RoaXMuY29uZmlnLmRhdGFJZF07XG4gICAgY29uc3Qge2RhdGF9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgY29uc3QgY3VzdG9tRmlsdGVyVmFsdWVBY2Nlc3NvciA9IChkYywgZCwgZmllbGRJbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIGRjLnZhbHVlQXQoZC5wcm9wZXJ0aWVzLmluZGV4LCBmaWVsZEluZGV4KTtcbiAgICB9O1xuICAgIGNvbnN0IGluZGV4QWNjZXNzb3IgPSBmID0+IGYucHJvcGVydGllcy5pbmRleDtcblxuICAgIGNvbnN0IGRhdGFBY2Nlc3NvciA9IGRjID0+IGQgPT4gKHtpbmRleDogZC5wcm9wZXJ0aWVzLmluZGV4fSk7XG4gICAgY29uc3QgYWNjZXNzb3JzID0gdGhpcy5nZXRBdHRyaWJ1dGVBY2Nlc3NvcnMoe2RhdGFBY2Nlc3NvciwgZGF0YUNvbnRhaW5lcn0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlQWNjZXNzb3IoZGF0YUNvbnRhaW5lcikoXG4gICAgICAgIGluZGV4QWNjZXNzb3IsXG4gICAgICAgIGN1c3RvbUZpbHRlclZhbHVlQWNjZXNzb3JcbiAgICAgICksXG4gICAgICAuLi5hY2Nlc3NvcnNcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJNZXRhKGRhdGFDb250YWluZXIpIHtcbiAgICBjb25zdCBnZXRGZWF0dXJlID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgIHRoaXMuZGF0YVRvRmVhdHVyZSA9IGdldEdlb2pzb25EYXRhTWFwcyhkYXRhQ29udGFpbmVyLCBnZXRGZWF0dXJlKTtcblxuICAgIC8vIGdldCBib3VuZHMgZnJvbSBmZWF0dXJlc1xuICAgIGNvbnN0IGJvdW5kcyA9IGdldEdlb2pzb25Cb3VuZHModGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgIC8vIGtlZXAgYSByZWNvcmQgb2Ygd2hhdCB0eXBlIG9mIGdlb21ldHJ5IHRoZSBjb2xsZWN0aW9uIGhhc1xuICAgIGNvbnN0IGZlYXR1cmVUeXBlcyA9IGdldEdlb2pzb25GZWF0dXJlVHlwZXModGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzLCBmZWF0dXJlVHlwZXN9KTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyh7ZGF0YUNvbnRhaW5lcn0pIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyKTtcblxuICAgIGNvbnN0IHtmZWF0dXJlVHlwZXN9ID0gdGhpcy5tZXRhO1xuICAgIC8vIGRlZmF1bHQgc2V0dGluZ3MgaXMgc3Ryb2tlOiB0cnVlLCBmaWxsZWQ6IGZhbHNlXG4gICAgaWYgKGZlYXR1cmVUeXBlcyAmJiBmZWF0dXJlVHlwZXMucG9seWdvbikge1xuICAgICAgLy8gc2V0IGJvdGggZmlsbCBhbmQgc3Ryb2tlIHRvIHRydWVcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHtcbiAgICAgICAgZmlsbGVkOiB0cnVlLFxuICAgICAgICBzdHJva2VkOiB0cnVlLFxuICAgICAgICBzdHJva2VDb2xvcjogY29sb3JNYWtlci5uZXh0KCkudmFsdWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoZmVhdHVyZVR5cGVzICYmIGZlYXR1cmVUeXBlcy5wb2ludCkge1xuICAgICAgLy8gc2V0IGZpbGwgdG8gdHJ1ZSBpZiBkZXRlY3QgcG9pbnRcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHtmaWxsZWQ6IHRydWUsIHN0cm9rZWQ6IGZhbHNlfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZW5kZXJMYXllcihvcHRzKSB7XG4gICAgY29uc3Qge2RhdGEsIGdwdUZpbHRlciwgb2JqZWN0SG92ZXJlZH0gPSBvcHRzO1xuXG4gICAgY29uc3Qge2ZlYXR1cmVUeXBlc30gPSB0aGlzLm1ldGE7XG4gICAgY29uc3QgcmFkaXVzU2NhbGUgPSB0aGlzLmdldFJhZGl1c1NjYWxlKCk7XG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcblxuICAgIGNvbnN0IGxheWVyUHJvcHMgPSB7XG4gICAgICBsaW5lV2lkdGhTY2FsZTogdmlzQ29uZmlnLnRoaWNrbmVzcyxcbiAgICAgIGVsZXZhdGlvblNjYWxlOiB2aXNDb25maWcuZWxldmF0aW9uU2NhbGUsXG4gICAgICBwb2ludFJhZGl1c1NjYWxlOiByYWRpdXNTY2FsZSxcbiAgICAgIGxpbmVNaXRlckxpbWl0OiA0XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKSxcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2Vyc1xuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuICAgIGNvbnN0IG9wYU92ZXJ3cml0ZSA9IHtcbiAgICAgIG9wYWNpdHk6IHZpc0NvbmZpZy5zdHJva2VPcGFjaXR5XG4gICAgfTtcblxuICAgIGNvbnN0IHBpY2thYmxlID0gdGhpcy5oYXNJbnRlcmFjdGl2aXR5O1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IERlY2tHTEdlb0pzb25MYXllcih7XG4gICAgICAgIC4uLmRlZmF1bHRMYXllclByb3BzLFxuICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBwaWNrYWJsZSxcbiAgICAgICAgaGlnaGxpZ2h0Q29sb3I6IEhJR0hMSUdIX0NPTE9SXzNELFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiB2aXNDb25maWcuZW5hYmxlM2QgJiYgcGlja2FibGUsXG4gICAgICAgIHN0cm9rZWQ6IHZpc0NvbmZpZy5zdHJva2VkLFxuICAgICAgICBmaWxsZWQ6IHZpc0NvbmZpZy5maWxsZWQsXG4gICAgICAgIGV4dHJ1ZGVkOiB2aXNDb25maWcuZW5hYmxlM2QsXG4gICAgICAgIHdpcmVmcmFtZTogdmlzQ29uZmlnLndpcmVmcmFtZSxcbiAgICAgICAgd3JhcExvbmdpdHVkZTogZmFsc2UsXG4gICAgICAgIGxpbmVNaXRlckxpbWl0OiAyLFxuICAgICAgICByb3VuZGVkOiB0cnVlLFxuICAgICAgICByYWRpdXNVbml0czogJ3BpeGVscycsXG4gICAgICAgIGxpbmVXaWR0aFVuaXRzOiAncGl4ZWxzJyxcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgIF9zdWJMYXllclByb3BzOiB7XG4gICAgICAgICAgLi4uKGZlYXR1cmVUeXBlcz8ucG9seWdvbiA/IHsncG9seWdvbnMtc3Ryb2tlJzogb3BhT3ZlcndyaXRlfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZmVhdHVyZVR5cGVzPy5saW5lID8ge2xpbmVzdHJpbmdzOiBvcGFPdmVyd3JpdGV9IDoge30pLFxuICAgICAgICAgIC4uLihmZWF0dXJlVHlwZXM/LnBvaW50XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBwb2ludHM6IHtcbiAgICAgICAgICAgICAgICAgIGxpbmVPcGFjaXR5OiB2aXNDb25maWcuc3Ryb2tlT3BhY2l0eVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB7fSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICAuLi4oaG92ZXJlZE9iamVjdCAmJiAhdmlzQ29uZmlnLmVuYWJsZTNkXG4gICAgICAgID8gW1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgICAgbmV3IERlY2tHTEdlb0pzb25MYXllcih7XG4gICAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpLFxuICAgICAgICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICAgICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgZGF0YTogW2hvdmVyZWRPYmplY3RdLFxuICAgICAgICAgICAgICBnZXRMaW5lV2lkdGg6IGRhdGEuZ2V0TGluZVdpZHRoLFxuICAgICAgICAgICAgICBnZXRSYWRpdXM6IGRhdGEuZ2V0UmFkaXVzLFxuICAgICAgICAgICAgICBnZXRFbGV2YXRpb246IGRhdGEuZ2V0RWxldmF0aW9uLFxuICAgICAgICAgICAgICBnZXRMaW5lQ29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICAgICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICAgICAgICAvLyBhbHdheXMgZHJhdyBvdXRsaW5lXG4gICAgICAgICAgICAgIHN0cm9rZWQ6IHRydWUsXG4gICAgICAgICAgICAgIGZpbGxlZDogZmFsc2VcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKVxuICAgIF07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFvQkEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsVUFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBVUEsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBTUEsSUFBQU0saUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLGdCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFPMEIsU0FBQVMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVAsd0JBQUFPLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FB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
|
|
411
|
+
return {
|
|
412
|
+
props: foundColumns.map(function (columns) {
|
|
413
|
+
return {
|
|
414
|
+
label: typeof label === 'string' && label.replace(/\.[^/.]+$/, '') || _this3.type,
|
|
415
|
+
columns: columns,
|
|
416
|
+
isVisible: true
|
|
417
|
+
};
|
|
418
|
+
})
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
}]);
|
|
422
|
+
}(_baseLayer["default"]);
|
|
423
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3R5cGVBbmFseXplciIsIl9iYXNlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9sYXllcnMiLCJfZ2VvanNvblV0aWxzIiwiX2dlb2pzb25MYXllckljb24iLCJfZGVmYXVsdFNldHRpbmdzIiwiX2xheWVyRmFjdG9yeSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlNVUFBPUlRFRF9BTkFMWVpFUl9UWVBFUyIsIkRBVEFfVFlQRVMiLCJHRU9NRVRSWSIsIkdFT01FVFJZX0ZST01fU1RSSU5HIiwiZ2VvanNvblZpc0NvbmZpZ3MiLCJleHBvcnRzIiwib3BhY2l0eSIsInN0cm9rZU9wYWNpdHkiLCJMQVlFUl9WSVNfQ09ORklHUyIsInByb3BlcnR5IiwidGhpY2tuZXNzIiwiZGVmYXVsdFZhbHVlIiwic3Ryb2tlQ29sb3IiLCJjb2xvclJhbmdlIiwic3Ryb2tlQ29sb3JSYW5nZSIsInJhZGl1cyIsInNpemVSYW5nZSIsInJhZGl1c1JhbmdlIiwiaGVpZ2h0UmFuZ2UiLCJlbGV2YXRpb25TY2FsZSIsImVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3IiLCJzdHJva2VkIiwiZmlsbGVkIiwiZW5hYmxlM2QiLCJ3aXJlZnJhbWUiLCJnZW9Kc29uUmVxdWlyZWRDb2x1bW5zIiwiZmVhdHVyZUFjY2Vzc29yIiwiX3JlZiIsImdlb2pzb24iLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImRlZmF1bHRFbGV2YXRpb24iLCJkZWZhdWx0TGluZVdpZHRoIiwiZGVmYXVsdFJhZGl1cyIsIkdlb0pzb25MYXllciIsIl9MYXllciIsInByb3BzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiZGF0YVRvRmVhdHVyZSIsInJlZ2lzdGVyVmlzQ29uZmlnIiwiZ2V0UG9zaXRpb25BY2Nlc3NvciIsImRhdGFDb250YWluZXIiLCJjb25maWciLCJjb2x1bW5zIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ0eXBlIiwiR2VvanNvbkxheWVySWNvbiIsInZpc3VhbENoYW5uZWxzIiwiY29sb3IiLCJhY2Nlc3NvciIsImNvbmRpdGlvbiIsInZpc0NvbmZpZyIsIm51bGxWYWx1ZSIsImdldEF0dHJpYnV0ZVZhbHVlIiwicHJvcGVydGllcyIsImZpbGxDb2xvciIsImZpZWxkIiwic2NhbGUiLCJkb21haW4iLCJyYW5nZSIsImNoYW5uZWxTY2FsZVR5cGUiLCJDSEFOTkVMX1NDQUxFUyIsImxpbmVDb2xvciIsInNpemUiLCJsaW5lV2lkdGgiLCJoZWlnaHQiLCJlbGV2YXRpb24iLCJ2YWx1ZSIsImdldERlZmF1bHRMYXllckNvbmZpZyIsInVuZGVmaW5lZCIsImhlaWdodEZpZWxkIiwiaGVpZ2h0RG9tYWluIiwiaGVpZ2h0U2NhbGUiLCJyYWRpdXNGaWVsZCIsInJhZGl1c0RvbWFpbiIsInJhZGl1c1NjYWxlIiwic3Ryb2tlQ29sb3JGaWVsZCIsInN0cm9rZUNvbG9yRG9tYWluIiwic3Ryb2tlQ29sb3JTY2FsZSIsImdldEhvdmVyRGF0YSIsIm9iamVjdCIsInJvdyIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJfcmVmMiIsImdldFBvc2l0aW9uIiwiX3RoaXMyIiwiZmlsdGVyZWRJbmRleCIsIm1hcCIsImZvcm1hdExheWVyRGF0YSIsImRhdGFzZXRzIiwib2xkTGF5ZXJEYXRhIiwiZGF0YUlkIiwiX2RhdGFzZXRzJHRoaXMkY29uZmlnIiwiZ3B1RmlsdGVyIiwiX3RoaXMkdXBkYXRlRGF0YSIsInVwZGF0ZURhdGEiLCJkYXRhIiwiY3VzdG9tRmlsdGVyVmFsdWVBY2Nlc3NvciIsImZpZWxkSW5kZXgiLCJpbmRleEFjY2Vzc29yIiwiZiIsImRhdGFBY2Nlc3NvciIsImFjY2Vzc29ycyIsImdldEF0dHJpYnV0ZUFjY2Vzc29ycyIsImdldEZpbHRlclZhbHVlIiwiZmlsdGVyVmFsdWVBY2Nlc3NvciIsInVwZGF0ZUxheWVyTWV0YSIsImdldEZlYXR1cmUiLCJnZXRHZW9qc29uRGF0YU1hcHMiLCJib3VuZHMiLCJnZXRHZW9qc29uQm91bmRzIiwiZmVhdHVyZVR5cGVzIiwiZ2V0R2VvanNvbkZlYXR1cmVUeXBlcyIsInVwZGF0ZU1ldGEiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJfcmVmMyIsIm1ldGEiLCJwb2x5Z29uIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJjb2xvck1ha2VyIiwibmV4dCIsInBvaW50IiwicmVuZGVyTGF5ZXIiLCJvcHRzIiwib2JqZWN0SG92ZXJlZCIsImdldFJhZGl1c1NjYWxlIiwibGF5ZXJQcm9wcyIsImxpbmVXaWR0aFNjYWxlIiwicG9pbnRSYWRpdXNTY2FsZSIsImxpbmVNaXRlckxpbWl0IiwidXBkYXRlVHJpZ2dlcnMiLCJnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMiLCJmaWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJvcGFPdmVyd3JpdGUiLCJwaWNrYWJsZSIsImhhc0ludGVyYWN0aXZpdHkiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsIkRlY2tHTEdlb0pzb25MYXllciIsImhpZ2hsaWdodENvbG9yIiwiSElHSExJR0hfQ09MT1JfM0QiLCJhdXRvSGlnaGxpZ2h0IiwiZXh0cnVkZWQiLCJ3cmFwTG9uZ2l0dWRlIiwicm91bmRlZCIsInJhZGl1c1VuaXRzIiwibGluZVdpZHRoVW5pdHMiLCJfc3ViTGF5ZXJQcm9wcyIsImxpbmUiLCJsaW5lc3RyaW5ncyIsInBvaW50cyIsImxpbmVPcGFjaXR5IiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMiLCJnZXRMaW5lV2lkdGgiLCJnZXRSYWRpdXMiLCJnZXRFbGV2YXRpb24iLCJnZXRMaW5lQ29sb3IiLCJnZXRGaWxsQ29sb3IiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJfcmVmNCIsIl90aGlzMyIsImxhYmVsIiwiX3JlZjQkZmllbGRzIiwiZmllbGRzIiwiZ2VvanNvbkNvbHVtbnMiLCJhbmFseXplclR5cGUiLCJuYW1lIiwiZGVmYXVsdENvbHVtbnMiLCJ1bmlxIiwiR0VPSlNPTl9GSUVMRFMiLCJmb3VuZENvbHVtbnMiLCJmaW5kRGVmYXVsdENvbHVtbkZpZWxkIiwicmVwbGFjZSIsImlzVmlzaWJsZSIsIkxheWVyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xheWVycy9nZW9qc29uLWxheWVyL2dlb2pzb24tbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuaW1wb3J0IHtEQVRBX1RZUEVTfSBmcm9tICd0eXBlLWFuYWx5emVyJztcblxuaW1wb3J0IExheWVyLCB7XG4gIGNvbG9yTWFrZXIsXG4gIExheWVyQmFzZUNvbmZpZyxcbiAgTGF5ZXJDb2xvckNvbmZpZyxcbiAgTGF5ZXJDb2x1bW4sXG4gIExheWVySGVpZ2h0Q29uZmlnLFxuICBMYXllclJhZGl1c0NvbmZpZyxcbiAgTGF5ZXJTaXplQ29uZmlnLFxuICBMYXllclN0cm9rZUNvbG9yQ29uZmlnXG59IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtHZW9Kc29uTGF5ZXIgYXMgRGVja0dMR2VvSnNvbkxheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtcbiAgZ2V0R2VvanNvbkRhdGFNYXBzLFxuICBnZXRHZW9qc29uQm91bmRzLFxuICBnZXRHZW9qc29uRmVhdHVyZVR5cGVzLFxuICBHZW9qc29uRGF0YU1hcHNcbn0gZnJvbSAnLi9nZW9qc29uLXV0aWxzJztcbmltcG9ydCBHZW9qc29uTGF5ZXJJY29uIGZyb20gJy4vZ2VvanNvbi1sYXllci1pY29uJztcbmltcG9ydCB7R0VPSlNPTl9GSUVMRFMsIEhJR0hMSUdIX0NPTE9SXzNELCBDSEFOTkVMX1NDQUxFU30gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtcbiAgTEFZRVJfVklTX0NPTkZJR1MsXG4gIFZpc0NvbmZpZ051bWJlcixcbiAgVmlzQ29uZmlnQ29sb3JTZWxlY3QsXG4gIFZpc0NvbmZpZ0NvbG9yUmFuZ2UsXG4gIFZpc0NvbmZpZ1JhbmdlLFxuICBWaXNDb25maWdCb29sZWFuXG59IGZyb20gJy4uL2xheWVyLWZhY3RvcnknO1xuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICcuLi8uLi91dGlscy90YWJsZS11dGlscy9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuaW1wb3J0IHtNZXJnZSwgUkdCQ29sb3J9IGZyb20gJy4uLy4uL3JlZHVjZXJzJztcbmltcG9ydCB7Q29sb3JSYW5nZX0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbG9yLXJhbmdlcyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmNvbnN0IFNVUFBPUlRFRF9BTkFMWVpFUl9UWVBFUyA9IHtcbiAgW0RBVEFfVFlQRVMuR0VPTUVUUlldOiB0cnVlLFxuICBbREFUQV9UWVBFUy5HRU9NRVRSWV9GUk9NX1NUUklOR106IHRydWVcbn07XG5cbmV4cG9ydCBjb25zdCBnZW9qc29uVmlzQ29uZmlnczoge1xuICBvcGFjaXR5OiAnb3BhY2l0eSc7XG4gIHN0cm9rZU9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgdGhpY2tuZXNzOiBWaXNDb25maWdOdW1iZXI7XG4gIHN0cm9rZUNvbG9yOiAnc3Ryb2tlQ29sb3InO1xuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZSc7XG4gIHN0cm9rZUNvbG9yUmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJztcbiAgcmFkaXVzOiAncmFkaXVzJztcblxuICBzaXplUmFuZ2U6ICdzdHJva2VXaWR0aFJhbmdlJztcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZSc7XG4gIGhlaWdodFJhbmdlOiAnZWxldmF0aW9uUmFuZ2UnO1xuICBlbGV2YXRpb25TY2FsZTogJ2VsZXZhdGlvblNjYWxlJztcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogJ2VuYWJsZUVsZXZhdGlvblpvb21GYWN0b3InO1xuICBzdHJva2VkOiAnc3Ryb2tlZCc7XG4gIGZpbGxlZDogJ2ZpbGxlZCc7XG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnO1xuICB3aXJlZnJhbWU6ICd3aXJlZnJhbWUnO1xufSA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICBzdHJva2VPcGFjaXR5OiB7XG4gICAgLi4uTEFZRVJfVklTX0NPTkZJR1Mub3BhY2l0eSxcbiAgICBwcm9wZXJ0eTogJ3N0cm9rZU9wYWNpdHknXG4gIH0sXG4gIHRoaWNrbmVzczoge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLnRoaWNrbmVzcyxcbiAgICBkZWZhdWx0VmFsdWU6IDFcbiAgfSxcbiAgc3Ryb2tlQ29sb3I6ICdzdHJva2VDb2xvcicsXG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgc3Ryb2tlQ29sb3JSYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICByYWRpdXM6ICdyYWRpdXMnLFxuXG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnLFxuICByYWRpdXNSYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgaGVpZ2h0UmFuZ2U6ICdlbGV2YXRpb25SYW5nZScsXG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnLFxuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiAnZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcicsXG4gIHN0cm9rZWQ6ICdzdHJva2VkJyxcbiAgZmlsbGVkOiAnZmlsbGVkJyxcbiAgZW5hYmxlM2Q6ICdlbmFibGUzZCcsXG4gIHdpcmVmcmFtZTogJ3dpcmVmcmFtZSdcbn07XG5cbmV4cG9ydCB0eXBlIEdlb0pzb25WaXNDb25maWdTZXR0aW5ncyA9IHtcbiAgb3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICBzdHJva2VPcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHRoaWNrbmVzczogVmlzQ29uZmlnTnVtYmVyO1xuICBzdHJva2VDb2xvcjogVmlzQ29uZmlnQ29sb3JTZWxlY3Q7XG4gIGNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIHN0cm9rZUNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIHJhZGl1czogVmlzQ29uZmlnTnVtYmVyO1xuXG4gIHNpemVSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIHJhZGl1c1JhbmdlOiBWaXNDb25maWdSYW5nZTtcbiAgaGVpZ2h0UmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICBlbGV2YXRpb25TY2FsZTogVmlzQ29uZmlnTnVtYmVyO1xuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiBWaXNDb25maWdCb29sZWFuO1xuICBzdHJva2VkOiBWaXNDb25maWdCb29sZWFuO1xuICBmaWxsZWQ6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIGVuYWJsZTNkOiBWaXNDb25maWdCb29sZWFuO1xuICB3aXJlZnJhbWU6IFZpc0NvbmZpZ0Jvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBHZW9Kc29uTGF5ZXJDb2x1bW5zQ29uZmlnID0ge1xuICBnZW9qc29uOiBMYXllckNvbHVtbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdlb0pzb25MYXllclZpc0NvbmZpZyA9IHtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICBzdHJva2VPcGFjaXR5OiBudW1iZXI7XG4gIHRoaWNrbmVzczogbnVtYmVyO1xuICBzdHJva2VDb2xvcjogUkdCQ29sb3I7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHN0cm9rZUNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHJhZGl1czogbnVtYmVyO1xuXG4gIHNpemVSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgcmFkaXVzUmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG4gIGhlaWdodFJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICBlbGV2YXRpb25TY2FsZTogbnVtYmVyO1xuICBlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yOiBib29sZWFuO1xuICBzdHJva2VkOiBib29sZWFuO1xuICBmaWxsZWQ6IGJvb2xlYW47XG4gIGVuYWJsZTNkOiBib29sZWFuO1xuICB3aXJlZnJhbWU6IGJvb2xlYW47XG59O1xuXG50eXBlIEdlb0pzb25MYXllclZpc3VhbENoYW5uZWxDb25maWcgPSBMYXllckNvbG9yQ29uZmlnICZcbiAgTGF5ZXJTdHJva2VDb2xvckNvbmZpZyAmXG4gIExheWVyU2l6ZUNvbmZpZyAmXG4gIExheWVySGVpZ2h0Q29uZmlnICZcbiAgTGF5ZXJSYWRpdXNDb25maWc7XG5leHBvcnQgdHlwZSBHZW9Kc29uTGF5ZXJDb25maWcgPSBNZXJnZTxcbiAgTGF5ZXJCYXNlQ29uZmlnLFxuICB7Y29sdW1uczogR2VvSnNvbkxheWVyQ29sdW1uc0NvbmZpZzsgdmlzQ29uZmlnOiBHZW9Kc29uTGF5ZXJWaXNDb25maWd9XG4+ICZcbiAgR2VvSnNvbkxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZztcblxuZXhwb3J0IHR5cGUgR2VvSnNvbkxheWVyTWV0YSA9IHtcbiAgZmVhdHVyZVR5cGVzPzoge3BvbHlnb246IGJvb2xlYW47IHBvaW50OiBib29sZWFuOyBsaW5lOiBib29sZWFufTtcbiAgZml4ZWRSYWRpdXM/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGdlb0pzb25SZXF1aXJlZENvbHVtbnM6IFsnZ2VvanNvbiddID0gWydnZW9qc29uJ107XG5leHBvcnQgY29uc3QgZmVhdHVyZUFjY2Vzc29yID0gKHtnZW9qc29ufTogR2VvSnNvbkxheWVyQ29sdW1uc0NvbmZpZykgPT4gKFxuICBkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZVxuKSA9PiBkID0+IGRjLnZhbHVlQXQoZC5pbmRleCwgZ2VvanNvbi5maWVsZElkeCk7XG5cbi8vIGFjY2VzcyBmZWF0dXJlIHByb3BlcnRpZXMgZnJvbSBnZW9qc29uIHN1YiBsYXllclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRFbGV2YXRpb24gPSA1MDA7XG5leHBvcnQgY29uc3QgZGVmYXVsdExpbmVXaWR0aCA9IDE7XG5leHBvcnQgY29uc3QgZGVmYXVsdFJhZGl1cyA9IDE7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdlb0pzb25MYXllciBleHRlbmRzIExheWVyIHtcbiAgZGVjbGFyZSBjb25maWc6IEdlb0pzb25MYXllckNvbmZpZztcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogR2VvSnNvblZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIG1ldGE6IEdlb0pzb25MYXllck1ldGE7XG4gIGRhdGFUb0ZlYXR1cmU6IEdlb2pzb25EYXRhTWFwcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuZGF0YVRvRmVhdHVyZSA9IFtdO1xuICAgIHRoaXMucmVnaXN0ZXJWaXNDb25maWcoZ2VvanNvblZpc0NvbmZpZ3MpO1xuICAgIHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvciA9IChkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PlxuICAgICAgZmVhdHVyZUFjY2Vzc29yKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIEdlb0pzb25MYXllci50eXBlO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpOiAnZ2VvanNvbicge1xuICAgIHJldHVybiAnZ2VvanNvbic7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnUG9seWdvbic7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBHZW9qc29uTGF5ZXJJY29uO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkTGF5ZXJDb2x1bW5zKCkge1xuICAgIHJldHVybiBnZW9Kc29uUmVxdWlyZWRDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWxzID0gc3VwZXIudmlzdWFsQ2hhbm5lbHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIC4uLnZpc3VhbENoYW5uZWxzLmNvbG9yLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldEZpbGxDb2xvcicsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuZmlsbGVkLFxuICAgICAgICBudWxsVmFsdWU6IHZpc3VhbENoYW5uZWxzLmNvbG9yLm51bGxWYWx1ZSxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6IGNvbmZpZyA9PiBkID0+IGQucHJvcGVydGllcy5maWxsQ29sb3IgfHwgY29uZmlnLmNvbG9yLFxuICAgICAgICAvLyB1c2VkIHRoaXMgdG8gZ2V0IHVwZGF0ZVRyaWdnZXJzXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHN0cm9rZUNvbG9yOiB7XG4gICAgICAgIHByb3BlcnR5OiAnc3Ryb2tlQ29sb3InLFxuICAgICAgICBmaWVsZDogJ3N0cm9rZUNvbG9yRmllbGQnLFxuICAgICAgICBzY2FsZTogJ3N0cm9rZUNvbG9yU2NhbGUnLFxuICAgICAgICBkb21haW46ICdzdHJva2VDb2xvckRvbWFpbicsXG4gICAgICAgIHJhbmdlOiAnc3Ryb2tlQ29sb3JSYW5nZScsXG4gICAgICAgIGtleTogJ3N0cm9rZUNvbG9yJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0TGluZUNvbG9yJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5zdHJva2VkLFxuICAgICAgICBudWxsVmFsdWU6IHZpc3VhbENoYW5uZWxzLmNvbG9yLm51bGxWYWx1ZSxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6IGNvbmZpZyA9PiBkID0+XG4gICAgICAgICAgZC5wcm9wZXJ0aWVzLmxpbmVDb2xvciB8fCBjb25maWcudmlzQ29uZmlnLnN0cm9rZUNvbG9yIHx8IGNvbmZpZy5jb2xvcixcbiAgICAgICAgLy8gdXNlZCB0aGlzIHRvIGdldCB1cGRhdGVUcmlnZ2Vyc1xuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZUNvbG9yIHx8IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgLi4udmlzdWFsQ2hhbm5lbHMuc2l6ZSxcbiAgICAgICAgcHJvcGVydHk6ICdzdHJva2UnLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldExpbmVXaWR0aCcsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlZCxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogKCkgPT4gZCA9PiBkLnByb3BlcnRpZXMubGluZVdpZHRoIHx8IGRlZmF1bHRMaW5lV2lkdGhcbiAgICAgIH0sXG4gICAgICBoZWlnaHQ6IHtcbiAgICAgICAgcHJvcGVydHk6ICdoZWlnaHQnLFxuICAgICAgICBmaWVsZDogJ2hlaWdodEZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdoZWlnaHRTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ2hlaWdodERvbWFpbicsXG4gICAgICAgIHJhbmdlOiAnaGVpZ2h0UmFuZ2UnLFxuICAgICAgICBrZXk6ICdoZWlnaHQnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5zaXplLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldEVsZXZhdGlvbicsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuZW5hYmxlM2QsXG4gICAgICAgIG51bGxWYWx1ZTogMCxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6ICgpID0+IGQgPT4gZC5wcm9wZXJ0aWVzLmVsZXZhdGlvbiB8fCBkZWZhdWx0RWxldmF0aW9uXG4gICAgICB9LFxuICAgICAgcmFkaXVzOiB7XG4gICAgICAgIHByb3BlcnR5OiAncmFkaXVzJyxcbiAgICAgICAgZmllbGQ6ICdyYWRpdXNGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAncmFkaXVzU2NhbGUnLFxuICAgICAgICBkb21haW46ICdyYWRpdXNEb21haW4nLFxuICAgICAgICByYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgICAgICAga2V5OiAncmFkaXVzJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMucmFkaXVzLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFJhZGl1cycsXG4gICAgICAgIG51bGxWYWx1ZTogMCxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6ICgpID0+IGQgPT4gZC5wcm9wZXJ0aWVzLnJhZGl1cyB8fCBkZWZhdWx0UmFkaXVzXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoe2xhYmVsLCBmaWVsZHMgPSBbXX06IEtlcGxlclRhYmxlKSB7XG4gICAgY29uc3QgZ2VvanNvbkNvbHVtbnMgPSBmaWVsZHNcbiAgICAgIC5maWx0ZXIoZiA9PiBmLnR5cGUgPT09ICdnZW9qc29uJyAmJiBTVVBQT1JURURfQU5BTFlaRVJfVFlQRVNbZi5hbmFseXplclR5cGVdKVxuICAgICAgLm1hcChmID0+IGYubmFtZSk7XG5cbiAgICBjb25zdCBkZWZhdWx0Q29sdW1ucyA9IHtcbiAgICAgIGdlb2pzb246IHVuaXEoWy4uLkdFT0pTT05fRklFTERTLmdlb2pzb24sIC4uLmdlb2pzb25Db2x1bW5zXSlcbiAgICB9O1xuXG4gICAgY29uc3QgZm91bmRDb2x1bW5zID0gdGhpcy5maW5kRGVmYXVsdENvbHVtbkZpZWxkKGRlZmF1bHRDb2x1bW5zLCBmaWVsZHMpO1xuICAgIGlmICghZm91bmRDb2x1bW5zIHx8ICFmb3VuZENvbHVtbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BzOiBmb3VuZENvbHVtbnMubWFwKGNvbHVtbnMgPT4gKHtcbiAgICAgICAgbGFiZWw6ICh0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnICYmIGxhYmVsLnJlcGxhY2UoL1xcLlteLy5dKyQvLCAnJykpIHx8IHRoaXMudHlwZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgICB9KSlcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzID0ge30pIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKSxcblxuICAgICAgLy8gYWRkIGhlaWdodCB2aXN1YWwgY2hhbm5lbFxuICAgICAgaGVpZ2h0RmllbGQ6IG51bGwsXG4gICAgICBoZWlnaHREb21haW46IFswLCAxXSxcbiAgICAgIGhlaWdodFNjYWxlOiAnbGluZWFyJyxcblxuICAgICAgLy8gYWRkIHJhZGl1cyB2aXN1YWwgY2hhbm5lbFxuICAgICAgcmFkaXVzRmllbGQ6IG51bGwsXG4gICAgICByYWRpdXNEb21haW46IFswLCAxXSxcbiAgICAgIHJhZGl1c1NjYWxlOiAnbGluZWFyJyxcblxuICAgICAgLy8gYWRkIHN0cm9rZSBjb2xvciB2aXN1YWwgY2hhbm5lbFxuICAgICAgc3Ryb2tlQ29sb3JGaWVsZDogbnVsbCxcbiAgICAgIHN0cm9rZUNvbG9yRG9tYWluOiBbMCwgMV0sXG4gICAgICBzdHJva2VDb2xvclNjYWxlOiAncXVhbnRpbGUnXG4gICAgfTtcbiAgfVxuXG4gIGdldEhvdmVyRGF0YShvYmplY3QsIGRhdGFDb250YWluZXIpIHtcbiAgICAvLyBpbmRleCBvZiBkYXRhQ29udGFpbmVyIGlzIHNhdmVkIHRvIGZlYXR1cmUucHJvcGVydGllc1xuICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhvYmplY3QucHJvcGVydGllcy5pbmRleCk7XG4gIH1cblxuICBjYWxjdWxhdGVEYXRhQXR0cmlidXRlKHtkYXRhQ29udGFpbmVyLCBmaWx0ZXJlZEluZGV4fSwgZ2V0UG9zaXRpb24pIHtcbiAgICByZXR1cm4gZmlsdGVyZWRJbmRleC5tYXAoaSA9PiB0aGlzLmRhdGFUb0ZlYXR1cmVbaV0pLmZpbHRlcihkID0+IGQpO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGF0YUlkID09PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHtncHVGaWx0ZXIsIGRhdGFDb250YWluZXJ9ID0gZGF0YXNldHNbdGhpcy5jb25maWcuZGF0YUlkXTtcbiAgICBjb25zdCB7ZGF0YX0gPSB0aGlzLnVwZGF0ZURhdGEoZGF0YXNldHMsIG9sZExheWVyRGF0YSk7XG5cbiAgICBjb25zdCBjdXN0b21GaWx0ZXJWYWx1ZUFjY2Vzc29yID0gKGRjLCBkLCBmaWVsZEluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gZGMudmFsdWVBdChkLnByb3BlcnRpZXMuaW5kZXgsIGZpZWxkSW5kZXgpO1xuICAgIH07XG4gICAgY29uc3QgaW5kZXhBY2Nlc3NvciA9IGYgPT4gZi5wcm9wZXJ0aWVzLmluZGV4O1xuXG4gICAgY29uc3QgZGF0YUFjY2Vzc29yID0gZGMgPT4gZCA9PiAoe2luZGV4OiBkLnByb3BlcnRpZXMuaW5kZXh9KTtcbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLmdldEF0dHJpYnV0ZUFjY2Vzc29ycyh7ZGF0YUFjY2Vzc29yLCBkYXRhQ29udGFpbmVyfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVBY2Nlc3NvcihkYXRhQ29udGFpbmVyKShcbiAgICAgICAgaW5kZXhBY2Nlc3NvcixcbiAgICAgICAgY3VzdG9tRmlsdGVyVmFsdWVBY2Nlc3NvclxuICAgICAgKSxcbiAgICAgIC4uLmFjY2Vzc29yc1xuICAgIH07XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YUNvbnRhaW5lcikge1xuICAgIGNvbnN0IGdldEZlYXR1cmUgPSB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG4gICAgdGhpcy5kYXRhVG9GZWF0dXJlID0gZ2V0R2VvanNvbkRhdGFNYXBzKGRhdGFDb250YWluZXIsIGdldEZlYXR1cmUpO1xuXG4gICAgLy8gZ2V0IGJvdW5kcyBmcm9tIGZlYXR1cmVzXG4gICAgY29uc3QgYm91bmRzID0gZ2V0R2VvanNvbkJvdW5kcyh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgLy8ga2VlcCBhIHJlY29yZCBvZiB3aGF0IHR5cGUgb2YgZ2VvbWV0cnkgdGhlIGNvbGxlY3Rpb24gaGFzXG4gICAgY29uc3QgZmVhdHVyZVR5cGVzID0gZ2V0R2VvanNvbkZlYXR1cmVUeXBlcyh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgdGhpcy51cGRhdGVNZXRhKHtib3VuZHMsIGZlYXR1cmVUeXBlc30pO1xuICB9XG5cbiAgc2V0SW5pdGlhbExheWVyQ29uZmlnKHtkYXRhQ29udGFpbmVyfSkge1xuICAgIHRoaXMudXBkYXRlTGF5ZXJNZXRhKGRhdGFDb250YWluZXIpO1xuXG4gICAgY29uc3Qge2ZlYXR1cmVUeXBlc30gPSB0aGlzLm1ldGE7XG4gICAgLy8gZGVmYXVsdCBzZXR0aW5ncyBpcyBzdHJva2U6IHRydWUsIGZpbGxlZDogZmFsc2VcbiAgICBpZiAoZmVhdHVyZVR5cGVzICYmIGZlYXR1cmVUeXBlcy5wb2x5Z29uKSB7XG4gICAgICAvLyBzZXQgYm90aCBmaWxsIGFuZCBzdHJva2UgdG8gdHJ1ZVxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe1xuICAgICAgICBmaWxsZWQ6IHRydWUsXG4gICAgICAgIHN0cm9rZWQ6IHRydWUsXG4gICAgICAgIHN0cm9rZUNvbG9yOiBjb2xvck1ha2VyLm5leHQoKS52YWx1ZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChmZWF0dXJlVHlwZXMgJiYgZmVhdHVyZVR5cGVzLnBvaW50KSB7XG4gICAgICAvLyBzZXQgZmlsbCB0byB0cnVlIGlmIGRldGVjdCBwb2ludFxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe2ZpbGxlZDogdHJ1ZSwgc3Ryb2tlZDogZmFsc2V9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgZ3B1RmlsdGVyLCBvYmplY3RIb3ZlcmVkfSA9IG9wdHM7XG5cbiAgICBjb25zdCB7ZmVhdHVyZVR5cGVzfSA9IHRoaXMubWV0YTtcbiAgICBjb25zdCByYWRpdXNTY2FsZSA9IHRoaXMuZ2V0UmFkaXVzU2NhbGUoKTtcbiAgICBjb25zdCB7dmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgY29uc3QgbGF5ZXJQcm9wcyA9IHtcbiAgICAgIGxpbmVXaWR0aFNjYWxlOiB2aXNDb25maWcudGhpY2tuZXNzLFxuICAgICAgZWxldmF0aW9uU2NhbGU6IHZpc0NvbmZpZy5lbGV2YXRpb25TY2FsZSxcbiAgICAgIHBvaW50UmFkaXVzU2NhbGU6IHJhZGl1c1NjYWxlLFxuICAgICAgbGluZU1pdGVyTGltaXQ6IDRcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlVHJpZ2dlcnMgPSB7XG4gICAgICAuLi50aGlzLmdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycygpLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRMYXllclByb3BzID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG4gICAgY29uc3Qgb3BhT3ZlcndyaXRlID0ge1xuICAgICAgb3BhY2l0eTogdmlzQ29uZmlnLnN0cm9rZU9wYWNpdHlcbiAgICB9O1xuXG4gICAgY29uc3QgcGlja2FibGUgPSB0aGlzLmhhc0ludGVyYWN0aXZpdHk7XG4gICAgY29uc3QgaG92ZXJlZE9iamVjdCA9IHRoaXMuaGFzSG92ZXJlZE9iamVjdChvYmplY3RIb3ZlcmVkKTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgRGVja0dMR2VvSnNvbkxheWVyKHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMsXG4gICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHBpY2thYmxlLFxuICAgICAgICBoaWdobGlnaHRDb2xvcjogSElHSExJR0hfQ09MT1JfM0QsXG4gICAgICAgIGF1dG9IaWdobGlnaHQ6IHZpc0NvbmZpZy5lbmFibGUzZCAmJiBwaWNrYWJsZSxcbiAgICAgICAgc3Ryb2tlZDogdmlzQ29uZmlnLnN0cm9rZWQsXG4gICAgICAgIGZpbGxlZDogdmlzQ29uZmlnLmZpbGxlZCxcbiAgICAgICAgZXh0cnVkZWQ6IHZpc0NvbmZpZy5lbmFibGUzZCxcbiAgICAgICAgd2lyZWZyYW1lOiB2aXNDb25maWcud2lyZWZyYW1lLFxuICAgICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZSxcbiAgICAgICAgbGluZU1pdGVyTGltaXQ6IDIsXG4gICAgICAgIHJvdW5kZWQ6IHRydWUsXG4gICAgICAgIHJhZGl1c1VuaXRzOiAncGl4ZWxzJyxcbiAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgX3N1YkxheWVyUHJvcHM6IHtcbiAgICAgICAgICAuLi4oZmVhdHVyZVR5cGVzPy5wb2x5Z29uID8geydwb2x5Z29ucy1zdHJva2UnOiBvcGFPdmVyd3JpdGV9IDoge30pLFxuICAgICAgICAgIC4uLihmZWF0dXJlVHlwZXM/LmxpbmUgPyB7bGluZXN0cmluZ3M6IG9wYU92ZXJ3cml0ZX0gOiB7fSksXG4gICAgICAgICAgLi4uKGZlYXR1cmVUeXBlcz8ucG9pbnRcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHBvaW50czoge1xuICAgICAgICAgICAgICAgICAgbGluZU9wYWNpdHk6IHZpc0NvbmZpZy5zdHJva2VPcGFjaXR5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0ICYmICF2aXNDb25maWcuZW5hYmxlM2RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgICBuZXcgRGVja0dMR2VvSnNvbkxheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCksXG4gICAgICAgICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgIGdldExpbmVXaWR0aDogZGF0YS5nZXRMaW5lV2lkdGgsXG4gICAgICAgICAgICAgIGdldFJhZGl1czogZGF0YS5nZXRSYWRpdXMsXG4gICAgICAgICAgICAgIGdldEVsZXZhdGlvbjogZGF0YS5nZXRFbGV2YXRpb24sXG4gICAgICAgICAgICAgIGdldExpbmVDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIC8vIGFsd2F5cyBkcmF3IG91dGxpbmVcbiAgICAgICAgICAgICAgc3Ryb2tlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlsbGVkOiBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pXG4gICAgXTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtB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
|