@carto/kepler.gl 0.0.85 → 0.0.86-alpha.deck9.1
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 +36 -41
- package/dist/actions/actions.js +15 -21
- package/dist/actions/identity-actions.js +14 -20
- package/dist/actions/index.js +16 -16
- package/dist/actions/map-state-actions.js +12 -18
- package/dist/actions/map-style-actions.js +30 -46
- package/dist/actions/provider-actions.js +49 -73
- package/dist/actions/ui-state-actions.js +73 -113
- package/dist/actions/vis-state-actions.js +152 -148
- package/dist/cloud-providers/index.js +6 -7
- package/dist/cloud-providers/provider.js +189 -279
- package/dist/components/bottom-widget.js +105 -117
- package/dist/components/common/action-panel.js +122 -74
- package/dist/components/common/animation-control/animation-control.js +69 -54
- package/dist/components/common/animation-control/animation-controller.js +134 -160
- package/dist/components/common/animation-control/animation-speed-slider.js +47 -54
- package/dist/components/common/animation-control/floating-time-display.js +120 -100
- package/dist/components/common/animation-control/playback-controls.js +147 -144
- package/dist/components/common/animation-control/speed-control.js +31 -23
- package/dist/components/common/checkbox.js +56 -70
- package/dist/components/common/color-legend.js +83 -110
- package/dist/components/common/data-table/button.js +31 -23
- package/dist/components/common/data-table/canvas.js +11 -5
- package/dist/components/common/data-table/cell-size.js +51 -61
- package/dist/components/common/data-table/grid.js +40 -59
- package/dist/components/common/data-table/index.js +464 -348
- package/dist/components/common/data-table/option-dropdown.js +50 -33
- package/dist/components/common/dataset-label.js +17 -13
- package/dist/components/common/error-boundary.js +27 -45
- package/dist/components/common/field-selector.js +99 -139
- package/dist/components/common/field-token.js +24 -9
- package/dist/components/common/file-uploader/file-drop.js +96 -115
- package/dist/components/common/file-uploader/file-upload-progress.js +68 -45
- package/dist/components/common/file-uploader/file-upload.js +215 -187
- package/dist/components/common/file-uploader/upload-button.js +35 -22
- package/dist/components/common/histogram-plot.js +47 -58
- package/dist/components/common/icons/add.js +14 -27
- package/dist/components/common/icons/anchor_window.js +16 -18
- package/dist/components/common/icons/arrow-down-alt.js +14 -27
- package/dist/components/common/icons/arrow-down-solid.js +14 -27
- package/dist/components/common/icons/arrow-down.js +14 -27
- package/dist/components/common/icons/arrow-left.js +17 -30
- package/dist/components/common/icons/arrow-right.js +14 -27
- package/dist/components/common/icons/arrow-up-alt.js +15 -28
- package/dist/components/common/icons/arrow-up-solid.js +14 -27
- package/dist/components/common/icons/arrow-up.js +14 -27
- package/dist/components/common/icons/base.js +39 -57
- package/dist/components/common/icons/bug.js +16 -29
- package/dist/components/common/icons/cancel.js +14 -27
- package/dist/components/common/icons/checkmark.js +18 -31
- package/dist/components/common/icons/chevron-right.js +20 -33
- package/dist/components/common/icons/clipboard.js +15 -28
- package/dist/components/common/icons/clock.js +16 -29
- package/dist/components/common/icons/close.js +19 -32
- package/dist/components/common/icons/code-alt.js +16 -29
- package/dist/components/common/icons/copy.js +18 -31
- package/dist/components/common/icons/crosshairs.js +16 -29
- package/dist/components/common/icons/cube-3d.js +18 -31
- package/dist/components/common/icons/cursor-click.js +18 -31
- package/dist/components/common/icons/data-table.js +15 -28
- package/dist/components/common/icons/db.js +15 -28
- package/dist/components/common/icons/delete.js +16 -29
- package/dist/components/common/icons/docs.js +30 -43
- package/dist/components/common/icons/drag-n-drop.js +16 -29
- package/dist/components/common/icons/draw-polygon.js +33 -46
- package/dist/components/common/icons/email.js +18 -31
- package/dist/components/common/icons/expand.js +16 -29
- package/dist/components/common/icons/eye-seen.js +16 -29
- package/dist/components/common/icons/eye-unseen.js +16 -29
- package/dist/components/common/icons/file-type.js +35 -19
- package/dist/components/common/icons/file.js +14 -27
- package/dist/components/common/icons/files.js +14 -26
- package/dist/components/common/icons/filter-funnel.js +14 -27
- package/dist/components/common/icons/free-window.js +16 -18
- package/dist/components/common/icons/gear.js +16 -29
- package/dist/components/common/icons/hash.js +14 -27
- package/dist/components/common/icons/histogram.js +15 -27
- package/dist/components/common/icons/index.js +156 -156
- package/dist/components/common/icons/info.js +25 -38
- package/dist/components/common/icons/layers.js +14 -27
- package/dist/components/common/icons/left-arrow.js +16 -29
- package/dist/components/common/icons/legend.js +14 -27
- package/dist/components/common/icons/line-chart.js +14 -27
- package/dist/components/common/icons/login.js +17 -30
- package/dist/components/common/icons/logout.js +16 -29
- package/dist/components/common/icons/map-icon.js +18 -32
- package/dist/components/common/icons/map.js +18 -32
- package/dist/components/common/icons/messages.js +14 -27
- package/dist/components/common/icons/minus.js +14 -27
- package/dist/components/common/icons/order-by-dataset.js +15 -17
- package/dist/components/common/icons/order-by-list.js +7 -9
- package/dist/components/common/icons/pause.js +14 -27
- package/dist/components/common/icons/picture.js +14 -26
- package/dist/components/common/icons/pin.js +17 -30
- package/dist/components/common/icons/play.js +14 -27
- package/dist/components/common/icons/polygon.js +35 -48
- package/dist/components/common/icons/rectangle.js +36 -49
- package/dist/components/common/icons/reduce.js +17 -30
- package/dist/components/common/icons/reset.js +14 -27
- package/dist/components/common/icons/rocket.js +14 -27
- package/dist/components/common/icons/save.js +16 -29
- package/dist/components/common/icons/save2.js +20 -33
- package/dist/components/common/icons/search.js +16 -29
- package/dist/components/common/icons/settings.js +16 -29
- package/dist/components/common/icons/share.js +14 -27
- package/dist/components/common/icons/split.js +42 -55
- package/dist/components/common/icons/square-select.js +16 -29
- package/dist/components/common/icons/swap-horizontal.js +18 -31
- package/dist/components/common/icons/table.js +14 -27
- package/dist/components/common/icons/trash.js +16 -29
- package/dist/components/common/icons/upload.js +14 -27
- package/dist/components/common/icons/vert-dots.js +52 -65
- package/dist/components/common/icons/vert-three-dots.js +27 -40
- package/dist/components/common/icons/warning.js +26 -39
- package/dist/components/common/image-preview.js +71 -33
- package/dist/components/common/info-helper.js +36 -29
- package/dist/components/common/item-selector/accessor.js +7 -13
- package/dist/components/common/item-selector/chickleted-input.js +72 -56
- package/dist/components/common/item-selector/dropdown-list.js +182 -214
- package/dist/components/common/item-selector/item-selector-submenu.js +34 -55
- package/dist/components/common/item-selector/item-selector.js +183 -194
- package/dist/components/common/item-selector/typeahead.js +236 -248
- package/dist/components/common/line-chart.js +80 -58
- package/dist/components/common/loading-spinner.js +46 -31
- package/dist/components/common/logo.js +61 -48
- package/dist/components/common/map-layer-selector.js +31 -25
- package/dist/components/common/modal.js +167 -106
- package/dist/components/common/portaled.js +169 -189
- package/dist/components/common/progress-bar.js +27 -24
- package/dist/components/common/range-brush.js +176 -215
- package/dist/components/common/range-plot.js +52 -63
- package/dist/components/common/range-slider.js +206 -231
- package/dist/components/common/slider/mouse-event.js +59 -66
- package/dist/components/common/slider/slider-bar-handle.js +51 -61
- package/dist/components/common/slider/slider-handle.js +127 -102
- package/dist/components/common/slider/slider.js +143 -162
- package/dist/components/common/styled-components.js +518 -256
- package/dist/components/common/switch.js +11 -11
- package/dist/components/common/time-range-slider-time-title.js +49 -32
- package/dist/components/common/time-range-slider.js +56 -45
- package/dist/components/common/time-slider-marker.js +71 -52
- package/dist/components/common/tippy-tooltip.js +89 -59
- package/dist/components/common/toolbar-item.js +53 -45
- package/dist/components/common/toolbar.js +24 -18
- package/dist/components/common/vertical-toolbar.js +13 -6
- package/dist/components/container.js +87 -119
- package/dist/components/context.js +6 -8
- package/dist/components/editor/constants.js +4 -4
- package/dist/components/editor/editor.js +122 -157
- package/dist/components/editor/feature-action-panel.js +52 -59
- package/dist/components/editor/feature-styles.js +46 -29
- package/dist/components/editor/handle-style.js +38 -29
- package/dist/components/filters/components.js +8 -4
- package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +33 -43
- package/dist/components/filters/filter-panels/multi-select-filter-panel.js +20 -21
- package/dist/components/filters/filter-panels/new-filter-panel.js +24 -31
- package/dist/components/filters/filter-panels/polygon-filter-panel.js +26 -31
- package/dist/components/filters/filter-panels/range-filter-panel.js +20 -21
- package/dist/components/filters/filter-panels/single-select-filter-panel.js +20 -21
- package/dist/components/filters/filter-panels/time-range-filter-panel.js +28 -31
- package/dist/components/filters/index.js +10 -10
- package/dist/components/filters/multi-select-filter.js +11 -9
- package/dist/components/filters/polygon-filter.js +26 -41
- package/dist/components/filters/range-filter.js +9 -7
- package/dist/components/filters/single-select-filter.js +11 -13
- package/dist/components/filters/time-range-filter.js +16 -14
- package/dist/components/filters/time-widget.js +125 -84
- package/dist/components/geocoder/geocoder.js +158 -177
- package/dist/components/geocoder-panel.js +66 -87
- package/dist/components/index.js +328 -329
- package/dist/components/injector.js +44 -63
- package/dist/components/kepler-gl.js +325 -361
- package/dist/components/map/coordinate-info.js +18 -16
- package/dist/components/map/layer-hover-info.js +108 -86
- package/dist/components/map/layer-selector-panel.js +50 -48
- package/dist/components/map/locale-panel.js +38 -44
- package/dist/components/map/map-control-panel.js +70 -47
- package/dist/components/map/map-control-toolbar.js +9 -6
- package/dist/components/map/map-control-tooltip.js +10 -8
- package/dist/components/map/map-control.js +35 -27
- package/dist/components/map/map-draw-panel.js +38 -48
- package/dist/components/map/map-legend-panel.js +47 -50
- package/dist/components/map/map-legend.js +133 -116
- package/dist/components/map/map-popover.js +155 -100
- package/dist/components/map/split-map-button.js +30 -34
- package/dist/components/map/toggle-3d-button.js +25 -27
- package/dist/components/map-container.js +313 -359
- package/dist/components/maps-layout.js +16 -26
- package/dist/components/modal-container.js +359 -355
- package/dist/components/modals/add-map-style-modal.js +233 -194
- package/dist/components/modals/cloud-tile.js +96 -67
- package/dist/components/modals/data-table-modal.js +155 -152
- package/dist/components/modals/delete-data-modal.js +20 -20
- package/dist/components/modals/error-display.js +9 -7
- package/dist/components/modals/export-data-modal.js +118 -140
- package/dist/components/modals/export-image-modal.js +82 -69
- package/dist/components/modals/export-map-modal/components.js +20 -18
- package/dist/components/modals/export-map-modal/export-html-map.js +82 -74
- package/dist/components/modals/export-map-modal/export-json-map.js +65 -45
- package/dist/components/modals/export-map-modal/export-map-modal.js +42 -47
- package/dist/components/modals/image-modal-container.js +20 -21
- package/dist/components/modals/load-data-modal.js +28 -30
- package/dist/components/modals/load-storage-map.js +277 -178
- package/dist/components/modals/loading-dialog.js +41 -19
- package/dist/components/modals/modal-dialog.js +4 -6
- package/dist/components/modals/modal-tabs.js +83 -48
- package/dist/components/modals/overwrite-map-modal.js +41 -30
- package/dist/components/modals/provider-modal-container.js +23 -42
- package/dist/components/modals/save-map-modal.js +107 -83
- package/dist/components/modals/share-map-modal.js +101 -95
- package/dist/components/modals/status-panel.js +63 -43
- package/dist/components/modals/storage-map-viewer.js +133 -70
- package/dist/components/notification-panel/notification-item.js +94 -97
- package/dist/components/notification-panel.js +35 -43
- package/dist/components/performance.js +49 -53
- package/dist/components/plot-container.js +151 -169
- package/dist/components/side-panel/cloud-storage-dropdown.js +13 -15
- package/dist/components/side-panel/common/dataset-info.js +16 -12
- package/dist/components/side-panel/common/dataset-tag.js +48 -27
- package/dist/components/side-panel/common/dataset-title.js +119 -116
- package/dist/components/side-panel/common/source-data-catalog.js +31 -32
- package/dist/components/side-panel/common/source-data-selector.js +52 -77
- package/dist/components/side-panel/custom-panel.js +6 -8
- package/dist/components/side-panel/filter-manager.js +48 -62
- package/dist/components/side-panel/filter-panel/filter-panel-header.js +35 -25
- package/dist/components/side-panel/filter-panel/filter-panel.js +46 -64
- package/dist/components/side-panel/interaction-manager.js +20 -18
- package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
- package/dist/components/side-panel/interaction-panel/interaction-panel.js +76 -95
- package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +118 -143
- package/dist/components/side-panel/interaction-panel/tooltip-config.js +95 -76
- package/dist/components/side-panel/layer-manager.js +105 -115
- package/dist/components/side-panel/layer-panel/add-layer-button.js +92 -54
- package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +5 -5
- package/dist/components/side-panel/layer-panel/color-palette.js +50 -37
- package/dist/components/side-panel/layer-panel/color-range-selector.js +196 -207
- package/dist/components/side-panel/layer-panel/color-selector.js +104 -110
- package/dist/components/side-panel/layer-panel/column-selector.js +34 -22
- package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +4 -4
- package/dist/components/side-panel/layer-panel/custom-palette.js +248 -205
- package/dist/components/side-panel/layer-panel/custom-picker.js +51 -69
- package/dist/components/side-panel/layer-panel/dataset-layer-group.js +37 -42
- package/dist/components/side-panel/layer-panel/dataset-layer-section.js +31 -27
- package/dist/components/side-panel/layer-panel/dataset-section.js +45 -35
- package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +14 -13
- package/dist/components/side-panel/layer-panel/hex-column-config.js +32 -55
- package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +5 -5
- package/dist/components/side-panel/layer-panel/layer-column-config.js +42 -46
- package/dist/components/side-panel/layer-panel/layer-config-group.js +178 -144
- package/dist/components/side-panel/layer-panel/layer-configurator.js +826 -830
- package/dist/components/side-panel/layer-panel/layer-list.js +101 -94
- package/dist/components/side-panel/layer-panel/layer-panel-header.js +124 -82
- package/dist/components/side-panel/layer-panel/layer-panel.js +111 -105
- package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +67 -58
- package/dist/components/side-panel/layer-panel/layer-type-list-item.js +47 -32
- package/dist/components/side-panel/layer-panel/layer-type-selector.js +30 -41
- package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +42 -43
- package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +55 -57
- package/dist/components/side-panel/layer-panel/single-color-palette.js +48 -33
- package/dist/components/side-panel/layer-panel/text-label-panel.js +81 -116
- package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +88 -102
- package/dist/components/side-panel/layer-panel/vis-config-slider.js +99 -85
- package/dist/components/side-panel/layer-panel/vis-config-switch.js +38 -29
- package/dist/components/side-panel/map-manager.js +70 -89
- package/dist/components/side-panel/map-style-panel/map-layer-selector.js +72 -60
- package/dist/components/side-panel/map-style-panel/map-style-selector.js +64 -42
- package/dist/components/side-panel/panel-dropdown.js +21 -37
- package/dist/components/side-panel/panel-header-action.js +60 -65
- package/dist/components/side-panel/panel-header.js +165 -184
- package/dist/components/side-panel/panel-tab.js +35 -29
- package/dist/components/side-panel/panel-title.js +15 -18
- package/dist/components/side-panel/panel-toggle.js +30 -31
- package/dist/components/side-panel/side-bar.js +100 -91
- package/dist/components/side-panel.js +108 -123
- package/dist/connect/keplergl-connect.js +17 -26
- package/dist/connect/with-local-selector.js +31 -63
- package/dist/constants/action-types.js +113 -115
- package/dist/constants/color-palette.js +14 -16
- package/dist/constants/color-ranges.js +23 -28
- package/dist/constants/custom-color-ranges.js +12 -12
- package/dist/constants/default-settings.js +323 -254
- 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 +9 -5
- package/dist/constants/user-guides.js +10 -10
- package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +37 -63
- package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +52 -56
- package/dist/deckgl-layers/cluster-layer/cluster-layer.js +165 -168
- package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +24 -43
- package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.d.ts +2 -2
- package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +27 -40
- package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +27 -40
- package/dist/deckgl-layers/layer-utils/cluster-utils.js +60 -68
- package/dist/deckgl-layers/layer-utils/cpu-aggregator.d.ts +4 -4
- package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +281 -282
- package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
- package/dist/deckgl-layers/line-layer/line-layer.js +62 -70
- package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +37 -51
- package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +65 -85
- package/dist/index.js +15 -16
- package/dist/layers/aggregation-layer.js +299 -331
- package/dist/layers/arc-layer/arc-layer-icon.js +27 -41
- package/dist/layers/arc-layer/arc-layer.js +174 -201
- package/dist/layers/base-layer.d.ts +1 -1
- package/dist/layers/base-layer.js +1371 -1544
- package/dist/layers/cluster-layer/cluster-layer-icon.js +30 -44
- package/dist/layers/cluster-layer/cluster-layer.js +89 -103
- package/dist/layers/default-layer-icon.js +39 -53
- package/dist/layers/geojson-layer/geojson-layer-icon.js +42 -55
- package/dist/layers/geojson-layer/geojson-layer.js +292 -353
- package/dist/layers/geojson-layer/geojson-utils.js +31 -36
- package/dist/layers/grid-layer/grid-layer-icon.js +87 -100
- package/dist/layers/grid-layer/grid-layer.js +51 -61
- package/dist/layers/grid-layer/grid-utils.js +13 -9
- package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +21 -35
- package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +225 -260
- package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
- package/dist/layers/heatmap-layer/heatmap-layer-icon.js +39 -52
- package/dist/layers/heatmap-layer/heatmap-layer.js +140 -171
- package/dist/layers/hexagon-layer/hexagon-layer-icon.js +51 -64
- package/dist/layers/hexagon-layer/hexagon-layer.js +49 -63
- package/dist/layers/hexagon-layer/hexagon-utils.js +15 -14
- package/dist/layers/icon-layer/icon-info-modal.js +82 -75
- package/dist/layers/icon-layer/icon-layer-icon.js +24 -37
- package/dist/layers/icon-layer/icon-layer.js +274 -303
- package/dist/layers/index.js +43 -29
- package/dist/layers/layer-factory.js +25 -41
- package/dist/layers/layer-text-label.js +21 -23
- package/dist/layers/layer-update.js +16 -18
- package/dist/layers/line-layer/line-layer-icon.js +30 -43
- package/dist/layers/line-layer/line-layer.js +123 -142
- package/dist/layers/mapbox-utils.js +61 -62
- package/dist/layers/mapboxgl-layer.js +124 -169
- package/dist/layers/point-layer/point-layer-icon.js +45 -59
- package/dist/layers/point-layer/point-layer.d.ts +2 -2
- package/dist/layers/point-layer/point-layer.js +355 -386
- package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +208 -238
- package/dist/layers/s2-geometry-layer/s2-layer-icon.js +21 -35
- package/dist/layers/s2-geometry-layer/s2-utils.js +9 -8
- package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +24 -25
- package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +102 -115
- package/dist/layers/scenegraph-layer/scenegraph-layer.js +148 -172
- package/dist/layers/trip-layer/trip-info-modal.js +50 -30
- package/dist/layers/trip-layer/trip-layer-icon.js +40 -53
- package/dist/layers/trip-layer/trip-layer.js +239 -307
- package/dist/layers/trip-layer/trip-utils.js +34 -50
- package/dist/layers/types.js +2 -2
- package/dist/localization/formatted-message.js +8 -10
- package/dist/localization/index.js +7 -7
- package/dist/localization/locales.js +6 -9
- package/dist/localization/messages.js +13 -10
- package/dist/localization/translations/ca.js +11 -13
- package/dist/localization/translations/cn.js +11 -13
- package/dist/localization/translations/en.js +11 -13
- package/dist/localization/translations/es.js +11 -13
- package/dist/localization/translations/fi.js +11 -13
- package/dist/localization/translations/ja.js +11 -13
- package/dist/localization/translations/pt.js +11 -13
- package/dist/localization/translations/ru.js +11 -13
- package/dist/middleware/index.js +3 -5
- package/dist/processors/data-processor.js +164 -201
- package/dist/processors/file-handler.js +111 -233
- package/dist/processors/index.js +4 -4
- package/dist/reducers/combined-updaters.js +41 -41
- package/dist/reducers/composer-helpers.js +20 -45
- package/dist/reducers/composers.js +9 -8
- package/dist/reducers/core.js +31 -35
- package/dist/reducers/index.js +21 -22
- package/dist/reducers/map-state-updaters.js +65 -47
- package/dist/reducers/map-state.js +23 -15
- package/dist/reducers/map-style-updaters.js +233 -159
- package/dist/reducers/map-style.js +30 -16
- package/dist/reducers/provider-state-updaters.js +217 -229
- package/dist/reducers/provider-state.js +29 -17
- package/dist/reducers/root.js +86 -58
- package/dist/reducers/ui-state-updaters.js +337 -218
- package/dist/reducers/ui-state.js +45 -16
- package/dist/reducers/vis-state-merger.js +205 -209
- package/dist/reducers/vis-state-selectors.js +5 -19
- package/dist/reducers/vis-state-updaters.js +1003 -876
- package/dist/reducers/vis-state.js +75 -16
- package/dist/schemas/dataset-schema.js +84 -108
- package/dist/schemas/index.js +28 -29
- package/dist/schemas/map-state-schema.js +21 -18
- package/dist/schemas/map-style-schema.js +47 -55
- package/dist/schemas/schema-manager.js +147 -161
- package/dist/schemas/schema-utils.js +8 -9
- package/dist/schemas/schema.js +72 -87
- package/dist/schemas/versions.js +3 -3
- package/dist/schemas/vis-state-schema.js +441 -583
- package/dist/styles/base.js +1217 -1021
- package/dist/styles/index.js +3 -3
- package/dist/styles/media-breakpoints.js +23 -18
- package/dist/tasks/tasks.js +36 -39
- package/dist/templates/export-map-html.js +233 -4
- package/dist/utils/aggregate-utils.js +13 -16
- package/dist/utils/color-utils.js +29 -37
- package/dist/utils/custom-scales.js +3 -3
- package/dist/utils/data-scale-utils.js +6 -13
- package/dist/utils/data-utils.js +60 -83
- package/dist/utils/dataset-utils.js +48 -77
- package/dist/utils/dom-to-image.js +108 -163
- package/dist/utils/dom-utils.js +88 -105
- package/dist/utils/export-utils.js +116 -103
- package/dist/utils/filter-utils.js +379 -374
- package/dist/utils/gl-utils.js +16 -15
- package/dist/utils/gpu-filter-utils.js +54 -73
- package/dist/utils/index.js +47 -48
- package/dist/utils/interaction-utils.js +53 -46
- package/dist/utils/layer-utils.js +89 -78
- package/dist/utils/locale-utils.js +24 -16
- package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +67 -76
- package/dist/utils/map-style-utils/mapbox-utils.js +4 -3
- package/dist/utils/mapbox-utils.js +3 -4
- package/dist/utils/notifications-utils.js +33 -38
- package/dist/utils/observe-dimensions.js +42 -54
- package/dist/utils/projection-utils.js +14 -11
- package/dist/utils/split-map-utils.js +30 -33
- package/dist/utils/table-utils/data-container-utils.js +15 -14
- package/dist/utils/table-utils/data-row.js +58 -65
- package/dist/utils/table-utils/index.js +2 -2
- package/dist/utils/table-utils/indexed-data-container.js +105 -173
- package/dist/utils/table-utils/kepler-table.js +362 -386
- package/dist/utils/table-utils/row-data-container.js +99 -164
- package/dist/utils/utils.js +29 -30
- package/package.json +21 -21
- package/src/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.ts +2 -2
- package/src/deckgl-layers/layer-utils/cpu-aggregator.ts +21 -11
- package/src/layers/base-layer.ts +17 -10
|
@@ -35,11 +35,9 @@ var _actionTypes = _interopRequireDefault(require("../constants/action-types"));
|
|
|
35
35
|
* @param id id of side panel to be shown, one of `layer`, `filter`, `interaction`, `map`
|
|
36
36
|
* @public
|
|
37
37
|
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
};
|
|
42
|
-
});
|
|
38
|
+
const toggleSidePanel = exports.toggleSidePanel = (0, _toolkit.createAction)(_actionTypes.default.TOGGLE_SIDE_PANEL, id => ({
|
|
39
|
+
payload: id
|
|
40
|
+
}));
|
|
43
41
|
|
|
44
42
|
/** TOGGLE_MODAL */
|
|
45
43
|
|
|
@@ -55,11 +53,9 @@ var toggleSidePanel = exports.toggleSidePanel = (0, _toolkit.createAction)(_acti
|
|
|
55
53
|
* - [`ADD_MAP_STYLE_ID`](../constants/default-settings.md#add_map_style_id)
|
|
56
54
|
* @public
|
|
57
55
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
};
|
|
62
|
-
});
|
|
56
|
+
const toggleModal = exports.toggleModal = (0, _toolkit.createAction)(_actionTypes.default.TOGGLE_MODAL, id => ({
|
|
57
|
+
payload: id
|
|
58
|
+
}));
|
|
63
59
|
|
|
64
60
|
/** SHOW_EXPORT_DROPDOWN */
|
|
65
61
|
|
|
@@ -69,18 +65,16 @@ var toggleModal = exports.toggleModal = (0, _toolkit.createAction)(_actionTypes[
|
|
|
69
65
|
* @param id - id of the dropdown
|
|
70
66
|
* @public
|
|
71
67
|
*/
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
};
|
|
76
|
-
});
|
|
68
|
+
const showExportDropdown = exports.showExportDropdown = (0, _toolkit.createAction)(_actionTypes.default.SHOW_EXPORT_DROPDOWN, id => ({
|
|
69
|
+
payload: id
|
|
70
|
+
}));
|
|
77
71
|
|
|
78
72
|
/**
|
|
79
73
|
* Hide side panel header dropdown, activated by clicking the share link on top of the side panel
|
|
80
74
|
* @memberof uiStateActions
|
|
81
75
|
* @public
|
|
82
76
|
*/
|
|
83
|
-
|
|
77
|
+
const hideExportDropdown = exports.hideExportDropdown = (0, _toolkit.createAction)(_actionTypes.default.HIDE_EXPORT_DROPDOWN);
|
|
84
78
|
|
|
85
79
|
/** TOGGLE_MAP_CONTROL */
|
|
86
80
|
|
|
@@ -90,14 +84,12 @@ var hideExportDropdown = exports.hideExportDropdown = (0, _toolkit.createAction)
|
|
|
90
84
|
* @param panelId - map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
|
|
91
85
|
* @public
|
|
92
86
|
*/
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
};
|
|
100
|
-
});
|
|
87
|
+
const toggleMapControl = exports.toggleMapControl = (0, _toolkit.createAction)(_actionTypes.default.TOGGLE_MAP_CONTROL, (panelId, index) => ({
|
|
88
|
+
payload: {
|
|
89
|
+
panelId,
|
|
90
|
+
index
|
|
91
|
+
}
|
|
92
|
+
}));
|
|
101
93
|
|
|
102
94
|
/** SET_MAP_CONTROL_VISIBILITY */
|
|
103
95
|
|
|
@@ -107,14 +99,12 @@ var toggleMapControl = exports.toggleMapControl = (0, _toolkit.createAction)(_ac
|
|
|
107
99
|
* @param panelId - map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`](#default_map_controls)
|
|
108
100
|
* @public
|
|
109
101
|
*/
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
};
|
|
117
|
-
});
|
|
102
|
+
const setMapControlVisibility = exports.setMapControlVisibility = (0, _toolkit.createAction)(_actionTypes.default.SET_MAP_CONTROL_VISIBILITY, (panelId, show) => ({
|
|
103
|
+
payload: {
|
|
104
|
+
panelId,
|
|
105
|
+
show
|
|
106
|
+
}
|
|
107
|
+
}));
|
|
118
108
|
|
|
119
109
|
/** OPEN_DELETE_MODAL */
|
|
120
110
|
|
|
@@ -124,11 +114,9 @@ var setMapControlVisibility = exports.setMapControlVisibility = (0, _toolkit.cre
|
|
|
124
114
|
* @param datasetId - `id` of the dataset to be deleted
|
|
125
115
|
* @public
|
|
126
116
|
*/
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
};
|
|
131
|
-
});
|
|
117
|
+
const openDeleteModal = exports.openDeleteModal = (0, _toolkit.createAction)(_actionTypes.default.OPEN_DELETE_MODAL, datasetId => ({
|
|
118
|
+
payload: datasetId
|
|
119
|
+
}));
|
|
132
120
|
|
|
133
121
|
/** ADD_NOTIFICATION */
|
|
134
122
|
|
|
@@ -139,11 +127,9 @@ var openDeleteModal = exports.openDeleteModal = (0, _toolkit.createAction)(_acti
|
|
|
139
127
|
* @param notification - The `notification` object to be added or updated
|
|
140
128
|
* @public
|
|
141
129
|
*/
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
};
|
|
146
|
-
});
|
|
130
|
+
const addNotification = exports.addNotification = (0, _toolkit.createAction)(_actionTypes.default.ADD_NOTIFICATION, notification => ({
|
|
131
|
+
payload: notification
|
|
132
|
+
}));
|
|
147
133
|
|
|
148
134
|
/** REMOVE_NOTIFICATION */
|
|
149
135
|
|
|
@@ -153,11 +139,9 @@ var addNotification = exports.addNotification = (0, _toolkit.createAction)(_acti
|
|
|
153
139
|
* @param id - `id` of the notification to be removed
|
|
154
140
|
* @public
|
|
155
141
|
*/
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
};
|
|
160
|
-
});
|
|
142
|
+
const removeNotification = exports.removeNotification = (0, _toolkit.createAction)(_actionTypes.default.REMOVE_NOTIFICATION, id => ({
|
|
143
|
+
payload: id
|
|
144
|
+
}));
|
|
161
145
|
|
|
162
146
|
/** SET_EXPORT_IMAGE_SETTING */
|
|
163
147
|
|
|
@@ -167,22 +151,18 @@ var removeNotification = exports.removeNotification = (0, _toolkit.createAction)
|
|
|
167
151
|
* @param newSetting - {ratio: '1x'}
|
|
168
152
|
* @public
|
|
169
153
|
*/
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
};
|
|
174
|
-
});
|
|
154
|
+
const setExportImageSetting = exports.setExportImageSetting = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_IMAGE_SETTING, newSetting => ({
|
|
155
|
+
payload: newSetting
|
|
156
|
+
}));
|
|
175
157
|
|
|
176
158
|
/**
|
|
177
159
|
* Start exporting image flow
|
|
178
160
|
* @memberof uiStateActions
|
|
179
161
|
* @public
|
|
180
162
|
*/
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
};
|
|
185
|
-
});
|
|
163
|
+
const startExportingImage = exports.startExportingImage = (0, _toolkit.createAction)(_actionTypes.default.START_EXPORTING_IMAGE, payload => ({
|
|
164
|
+
payload
|
|
165
|
+
}));
|
|
186
166
|
|
|
187
167
|
/** SET_EXPORT_IMAGE_DATA_URI */
|
|
188
168
|
|
|
@@ -192,11 +172,9 @@ var startExportingImage = exports.startExportingImage = (0, _toolkit.createActio
|
|
|
192
172
|
* @param dataUri - export image data uri
|
|
193
173
|
* @public
|
|
194
174
|
*/
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
};
|
|
199
|
-
});
|
|
175
|
+
const setExportImageDataUri = exports.setExportImageDataUri = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_IMAGE_DATA_URI, dataUri => ({
|
|
176
|
+
payload: dataUri
|
|
177
|
+
}));
|
|
200
178
|
|
|
201
179
|
/** SET_EXPORT_IMAGE_ERROR */
|
|
202
180
|
|
|
@@ -205,18 +183,16 @@ var setExportImageDataUri = exports.setExportImageDataUri = (0, _toolkit.createA
|
|
|
205
183
|
* @memberof uiStateActions
|
|
206
184
|
* @public
|
|
207
185
|
*/
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
};
|
|
212
|
-
});
|
|
186
|
+
const setExportImageError = exports.setExportImageError = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_IMAGE_ERROR, error => ({
|
|
187
|
+
payload: error
|
|
188
|
+
}));
|
|
213
189
|
|
|
214
190
|
/**
|
|
215
191
|
* Delete cached export image
|
|
216
192
|
* @memberof uiStateActions
|
|
217
193
|
* @public
|
|
218
194
|
*/
|
|
219
|
-
|
|
195
|
+
const cleanupExportImage = exports.cleanupExportImage = (0, _toolkit.createAction)(_actionTypes.default.CLEANUP_EXPORT_IMAGE);
|
|
220
196
|
|
|
221
197
|
/** SET_EXPORT_SELECTED_DATASET */
|
|
222
198
|
|
|
@@ -226,11 +202,9 @@ var cleanupExportImage = exports.cleanupExportImage = (0, _toolkit.createAction)
|
|
|
226
202
|
* @param datasetId - dataset id
|
|
227
203
|
* @public
|
|
228
204
|
*/
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
};
|
|
233
|
-
});
|
|
205
|
+
const setExportSelectedDataset = exports.setExportSelectedDataset = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_SELECTED_DATASET, datasetId => ({
|
|
206
|
+
payload: datasetId
|
|
207
|
+
}));
|
|
234
208
|
|
|
235
209
|
/** SET_EXPORT_DATA_TYPE */
|
|
236
210
|
|
|
@@ -240,11 +214,9 @@ var setExportSelectedDataset = exports.setExportSelectedDataset = (0, _toolkit.c
|
|
|
240
214
|
* @param dataType - one of `'text/csv'`
|
|
241
215
|
* @public
|
|
242
216
|
*/
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
};
|
|
247
|
-
});
|
|
217
|
+
const setExportDataType = exports.setExportDataType = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_DATA_TYPE, dataType => ({
|
|
218
|
+
payload: dataType
|
|
219
|
+
}));
|
|
248
220
|
|
|
249
221
|
/** SET_EXPORT_FILTERED */
|
|
250
222
|
|
|
@@ -254,18 +226,16 @@ var setExportDataType = exports.setExportDataType = (0, _toolkit.createAction)(_
|
|
|
254
226
|
* @param payload - set `true` to ony export filtered data
|
|
255
227
|
* @public
|
|
256
228
|
*/
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
};
|
|
261
|
-
});
|
|
229
|
+
const setExportFiltered = exports.setExportFiltered = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_FILTERED, payload => ({
|
|
230
|
+
payload
|
|
231
|
+
}));
|
|
262
232
|
|
|
263
233
|
/**
|
|
264
234
|
* Whether to including data in map config, toggle between `true` or `false`
|
|
265
235
|
* @memberof uiStateActions
|
|
266
236
|
* @public
|
|
267
237
|
*/
|
|
268
|
-
|
|
238
|
+
const setExportData = exports.setExportData = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_DATA);
|
|
269
239
|
|
|
270
240
|
/** SET_USER_MAPBOX_ACCESS_TOKEN */
|
|
271
241
|
|
|
@@ -275,11 +245,9 @@ var setExportData = exports.setExportData = (0, _toolkit.createAction)(_actionTy
|
|
|
275
245
|
* @param payload - mapbox access token
|
|
276
246
|
* @public
|
|
277
247
|
*/
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
};
|
|
282
|
-
});
|
|
248
|
+
const setUserMapboxAccessToken = exports.setUserMapboxAccessToken = (0, _toolkit.createAction)(_actionTypes.default.SET_USER_MAPBOX_ACCESS_TOKEN, payload => ({
|
|
249
|
+
payload
|
|
250
|
+
}));
|
|
283
251
|
|
|
284
252
|
/** SET_EXPORT_MAP_FORMAT */
|
|
285
253
|
|
|
@@ -289,11 +257,9 @@ var setUserMapboxAccessToken = exports.setUserMapboxAccessToken = (0, _toolkit.c
|
|
|
289
257
|
* @param payload - map format
|
|
290
258
|
* @public
|
|
291
259
|
*/
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
};
|
|
296
|
-
});
|
|
260
|
+
const setExportMapFormat = exports.setExportMapFormat = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_MAP_FORMAT, payload => ({
|
|
261
|
+
payload
|
|
262
|
+
}));
|
|
297
263
|
|
|
298
264
|
/** SET_EXPORT_MAP_HTML_MODE */
|
|
299
265
|
|
|
@@ -302,11 +268,9 @@ var setExportMapFormat = exports.setExportMapFormat = (0, _toolkit.createAction)
|
|
|
302
268
|
* @memberOf uiStateActions
|
|
303
269
|
* @param payload - map mode
|
|
304
270
|
*/
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
};
|
|
309
|
-
});
|
|
271
|
+
const setExportHTMLMapMode = exports.setExportHTMLMapMode = (0, _toolkit.createAction)(_actionTypes.default.SET_EXPORT_MAP_HTML_MODE, payload => ({
|
|
272
|
+
payload
|
|
273
|
+
}));
|
|
310
274
|
|
|
311
275
|
/** SET_LOCALE */
|
|
312
276
|
|
|
@@ -316,13 +280,11 @@ var setExportHTMLMapMode = exports.setExportHTMLMapMode = (0, _toolkit.createAct
|
|
|
316
280
|
* @param locale - locale of the UI
|
|
317
281
|
* @public
|
|
318
282
|
*/
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
};
|
|
325
|
-
});
|
|
283
|
+
const setLocale = exports.setLocale = (0, _toolkit.createAction)(_actionTypes.default.SET_LOCALE, locale => ({
|
|
284
|
+
payload: {
|
|
285
|
+
locale
|
|
286
|
+
}
|
|
287
|
+
}));
|
|
326
288
|
|
|
327
289
|
/** TOGGLE_LAYER_PANEL_LIST_VIEW */
|
|
328
290
|
|
|
@@ -332,11 +294,9 @@ var setLocale = exports.setLocale = (0, _toolkit.createAction)(_actionTypes["def
|
|
|
332
294
|
* @param listView layer panel listView value. Can be 'list' or 'sortByDataset'
|
|
333
295
|
* @public
|
|
334
296
|
*/
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
};
|
|
339
|
-
});
|
|
297
|
+
const toggleLayerPanelListView = exports.toggleLayerPanelListView = (0, _toolkit.createAction)(_actionTypes.default.TOGGLE_LAYER_PANEL_LIST_VIEW, listView => ({
|
|
298
|
+
payload: listView
|
|
299
|
+
}));
|
|
340
300
|
|
|
341
301
|
/**
|
|
342
302
|
* This declaration is needed to group actions in docs
|
|
@@ -351,6 +311,6 @@ var toggleLayerPanelListView = exports.toggleLayerPanelListView = (0, _toolkit.c
|
|
|
351
311
|
*/
|
|
352
312
|
/* eslint-disable no-unused-vars */
|
|
353
313
|
// @ts-ignore
|
|
354
|
-
|
|
314
|
+
const uiStateActions = null;
|
|
355
315
|
/* eslint-enable no-unused-vars */
|
|
356
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9vbGtpdCIsInJlcXVpcmUiLCJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwidG9nZ2xlU2lkZVBhbmVsIiwiZXhwb3J0cyIsImNyZWF0ZUFjdGlvbiIsIkFjdGlvblR5cGVzIiwiVE9HR0xFX1NJREVfUEFORUwiLCJpZCIsInBheWxvYWQiLCJ0b2dnbGVNb2RhbCIsIlRPR0dMRV9NT0RBTCIsInNob3dFeHBvcnREcm9wZG93biIsIlNIT1dfRVhQT1JUX0RST1BET1dOIiwiaGlkZUV4cG9ydERyb3Bkb3duIiwiSElERV9FWFBPUlRfRFJPUERPV04iLCJ0b2dnbGVNYXBDb250cm9sIiwiVE9HR0xFX01BUF9DT05UUk9MIiwicGFuZWxJZCIsImluZGV4Iiwic2V0TWFwQ29udHJvbFZpc2liaWxpdHkiLCJTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSIsInNob3ciLCJvcGVuRGVsZXRlTW9kYWwiLCJPUEVOX0RFTEVURV9NT0RBTCIsImRhdGFzZXRJZCIsImFkZE5vdGlmaWNhdGlvbiIsIkFERF9OT1RJRklDQVRJT04iLCJub3RpZmljYXRpb24iLCJyZW1vdmVOb3RpZmljYXRpb24iLCJSRU1PVkVfTk9USUZJQ0FUSU9OIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwiU0VUX0VYUE9SVF9JTUFHRV9TRVRUSU5HIiwibmV3U2V0dGluZyIsInN0YXJ0RXhwb3J0aW5nSW1hZ2UiLCJTVEFSVF9FWFBPUlRJTkdfSU1BR0UiLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJTRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJIiwiZGF0YVVyaSIsInNldEV4cG9ydEltYWdlRXJyb3IiLCJTRVRfRVhQT1JUX0lNQUdFX0VSUk9SIiwiZXJyb3IiLCJjbGVhbnVwRXhwb3J0SW1hZ2UiLCJDTEVBTlVQX0VYUE9SVF9JTUFHRSIsInNldEV4cG9ydFNlbGVjdGVkRGF0YXNldCIsIlNFVF9FWFBPUlRfU0VMRUNURURfREFUQVNFVCIsInNldEV4cG9ydERhdGFUeXBlIiwiU0VUX0VYUE9SVF9EQVRBX1RZUEUiLCJkYXRhVHlwZSIsInNldEV4cG9ydEZpbHRlcmVkIiwiU0VUX0VYUE9SVF9GSUxURVJFRCIsInNldEV4cG9ydERhdGEiLCJTRVRfRVhQT1JUX0RBVEEiLCJzZXRVc2VyTWFwYm94QWNjZXNzVG9rZW4iLCJTRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOIiwic2V0RXhwb3J0TWFwRm9ybWF0IiwiU0VUX0VYUE9SVF9NQVBfRk9STUFUIiwic2V0RXhwb3J0SFRNTE1hcE1vZGUiLCJTRVRfRVhQT1JUX01BUF9IVE1MX01PREUiLCJzZXRMb2NhbGUiLCJTRVRfTE9DQUxFIiwibG9jYWxlIiwidG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3IiwiVE9HR0xFX0xBWUVSX1BBTkVMX0xJU1RfVklFVyIsImxpc3RWaWV3IiwidWlTdGF0ZUFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy91aS1zdGF0ZS1hY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBBY3Rpb25UeXBlcyBmcm9tICdjb25zdGFudHMvYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7TWVyZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3R5cGVzJztcbmltcG9ydCB7RXhwb3J0SW1hZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3VpLXN0YXRlLXVwZGF0ZXJzJztcblxuLyoqIFRPR0dMRV9TSURFX1BBTkVMICovXG5leHBvcnQgdHlwZSBUb2dnbGVTaWRlUGFuZWxVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkICBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWw6IChcbiAgaWQ6IHN0cmluZ1xuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfU0lERV9QQU5FTH1cbj4gPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuVE9HR0xFX1NJREVfUEFORUwsIChpZDogc3RyaW5nKSA9PiAoe3BheWxvYWQ6IGlkfSkpO1xuXG4vKiogVE9HR0xFX01PREFMICovXG5leHBvcnQgdHlwZSBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZyB8IG51bGw7XG59O1xuLyoqXG4gKiBTaG93IGFuZCBoaWRlIG1vZGFsIGRpYWxvZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBpZCBvZiBtb2RhbCB0byBiZSBzaG93biwgbnVsbCB0byBoaWRlIG1vZGFscy4gT25lIG9mOlxuICogIC0gW2BEQVRBX1RBQkxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGF0YV90YWJsZV9pZClcbiAqICAtIFtgREVMRVRFX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkZWxldGVfZGF0YV9pZClcbiAqICAtIFtgQUREX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfZGF0YV9pZClcbiAqICAtIFtgRVhQT1JUX0lNQUdFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2ltYWdlX2lkKVxuICogIC0gW2BFWFBPUlRfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9kYXRhX2lkKVxuICogIC0gW2BBRERfTUFQX1NUWUxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX21hcF9zdHlsZV9pZClcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsOiAoXG4gIGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX01PREFMfT4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlRPR0dMRV9NT0RBTCxcbiAgKGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtcbiAgICBwYXlsb2FkOiBpZFxuICB9KVxuKTtcblxuLyoqIFNIT1dfRVhQT1JUX0RST1BET1dOICovXG5leHBvcnQgdHlwZSBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBIaWRlIGFuZCBzaG93IHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZCAtIGlkIG9mIHRoZSBkcm9wZG93blxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duOiAoXG4gIGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNob3dFeHBvcnREcm9wZG93blVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0hPV19FWFBPUlRfRFJPUERPV059XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TSE9XX0VYUE9SVF9EUk9QRE9XTixcbiAgKGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogaWR9KVxuKTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGhpZGVFeHBvcnREcm9wZG93bjogKCkgPT4ge1xuICB0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuSElERV9FWFBPUlRfRFJPUERPV047XG59ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkhJREVfRVhQT1JUX0RST1BET1dOKTtcblxuLyoqIFRPR0dMRV9NQVBfQ09OVFJPTCAqL1xuZXhwb3J0IHR5cGUgVG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBwYW5lbElkOiBzdHJpbmc7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgfTtcbn07XG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBhbmVsSWQgLSBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTWFwQ29udHJvbDogKFxuICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIGluZGV4OiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydpbmRleCddXG4pID0+IE1lcmdlPFxuICBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0x9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0wsXG4gIChcbiAgICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gICAgaW5kZXg6IFRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2luZGV4J11cbiAgKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIHBhbmVsSWQsXG4gICAgICBpbmRleFxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSAqL1xuZXhwb3J0IHR5cGUgc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7XG4gICAgcGFuZWxJZDogc3RyaW5nO1xuICAgIHNob3c6IGJvb2xlYW47XG4gIH07XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYW5lbElkIC0gbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5OiAoXG4gIHBhbmVsSWQ6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIHNob3c6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydzaG93J11cbikgPT4gTWVyZ2U8XG4gIHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWX1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9NQVBfQ09OVFJPTF9WSVNJQklMSVRZLFxuICAoXG4gICAgcGFuZWxJZDogc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ3BhbmVsSWQnXSxcbiAgICBzaG93OiBzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVsnc2hvdyddXG4gICkgPT4gKHtcbiAgICBwYXlsb2FkOiB7XG4gICAgICBwYW5lbElkLFxuICAgICAgc2hvd1xuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBPUEVOX0RFTEVURV9NT0RBTCAqL1xuZXhwb3J0IHR5cGUgT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YXNldElkIC0gYGlkYCBvZiB0aGUgZGF0YXNldCB0byBiZSBkZWxldGVkXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWw6IChcbiAgZGF0YXNldElkOiBPcGVuRGVsZXRlTW9kYWxVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIE9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuT1BFTl9ERUxFVEVfTU9EQUx9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5PUEVOX0RFTEVURV9NT0RBTCxcbiAgKGRhdGFzZXRJZDogT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGRhdGFzZXRJZH0pXG4pO1xuXG4vKiogQUREX05PVElGSUNBVElPTiAqL1xuZXhwb3J0IHR5cGUgQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogb2JqZWN0O1xufTtcbi8qKlxuICogQWRkIGEgbm90aWZpY2F0aW9uIHRvIGJlIGRpc3BsYXllZC5cbiAqIEV4aXN0aW5nIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHVwZGF0ZWQgaW4gY2FzZSBvZiBtYXRjaGluZyBpZC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5vdGlmaWNhdGlvbiAtIFRoZSBgbm90aWZpY2F0aW9uYCBvYmplY3QgdG8gYmUgYWRkZWQgb3IgdXBkYXRlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkTm90aWZpY2F0aW9uOiAoXG4gIG5vdGlmaWNhdGlvbjogQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBBZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uLFxuICB7XG4gICAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT047XG4gIH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT04sXG4gIChub3RpZmljYXRpb246IEFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBub3RpZmljYXRpb259KVxuKTtcblxuLyoqIFJFTU9WRV9OT1RJRklDQVRJT04gKi9cbmV4cG9ydCB0eXBlIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBgaWRgIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlTm90aWZpY2F0aW9uOiAoXG4gIGlkOiBSZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX05PVElGSUNBVElPTn1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlJFTU9WRV9OT1RJRklDQVRJT04sXG4gIChpZDogUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGlkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX1NFVFRJTkcgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IFBhcnRpYWw8RXhwb3J0SW1hZ2U+O1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgc2V0dGluZ3M6IHJhdGlvLCByZXNvbHV0aW9uLCBsZWdlbmRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5ld1NldHRpbmcgLSB7cmF0aW86ICcxeCd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmc6IChcbiAgbmV3U2V0dGluZzogU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElOR31cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElORyxcbiAgKG5ld1NldHRpbmc6IFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBuZXdTZXR0aW5nfSlcbik7XG5cbi8qKlxuICogU3RhcnQgZXhwb3J0aW5nIGltYWdlIGZsb3dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc3RhcnRFeHBvcnRpbmdJbWFnZTogKG9wdGlvbnM/OiB7XG4gIHJhdGlvPzogc3RyaW5nO1xuICByZXNvbHV0aW9uPzogc3RyaW5nO1xuICBsZWdlbmQ/OiBzdHJpbmc7XG4gIGNlbnRlcj86IGJvb2xlYW47XG59KSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TVEFSVF9FWFBPUlRJTkdfSU1BR0V9XG4+ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlNUQVJUX0VYUE9SVElOR19JTUFHRSwgKHBheWxvYWQ6IGFueSkgPT4gKHtwYXlsb2FkfSkpO1xuXG4vKiogU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YVVyaSAtIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiAoXG4gIGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSxcbiAgKGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVXJpfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX0VSUk9SICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogRXJyb3I7XG59O1xuLyoqXG4gKiBTZXQgRXhwb3J0IGltYWdlIGVycm9yXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEltYWdlRXJyb3I6IChcbiAgZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfRVJST1J9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0VSUk9SLFxuICAoZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogZXJyb3J9KVxuKTtcblxuLyoqXG4gKiBEZWxldGUgY2FjaGVkIGV4cG9ydCBpbWFnZVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2U6ICgpID0+IHtcbiAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkNMRUFOVVBfRVhQT1JUX0lNQUdFO1xufSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5DTEVBTlVQX0VYUE9SVF9JTUFHRSk7XG5cbi8qKiBTRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBzZWxlY3RlZCBkYXRhc2V0IGZvciBleHBvcnRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFzZXRJZCAtIGRhdGFzZXQgaWRcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFNlbGVjdGVkRGF0YXNldDogKFxuICBkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVR9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQsXG4gIChkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhc2V0SWR9KVxuKTtcblxuLyoqIFNFVF9FWFBPUlRfREFUQV9UWVBFICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBkYXRhIGZvcm1hdCBmb3IgZXhwb3J0aW5nIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFUeXBlIC0gb25lIG9mIGAndGV4dC9jc3YnYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGU6IChcbiAgZGF0YVR5cGU6IFNldEV4cG9ydERhdGFUeXBlVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9EQVRBX1RZUEV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0RBVEFfVFlQRSxcbiAgKGRhdGFUeXBlOiBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVHlwZX0pXG4pO1xuXG4vKiogU0VUX0VYUE9SVF9GSUxURVJFRCAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBib29sZWFuO1xufTtcbi8qKlxuICogV2hldGhlciB0byBleHBvcnQgZmlsdGVyZWQgZGF0YSwgYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBzZXQgYHRydWVgIHRvIG9ueSBleHBvcnQgZmlsdGVyZWQgZGF0YVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWQ6IChcbiAgZXhwb3J0RmlsdGVyZWQ6IFNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9GSUxURVJFRH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfRklMVEVSRUQsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhOiAoKSA9PiB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQX0gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQVxuKTtcblxuLyoqIFNFVF9VU0VSX01BUEJPWF9BQ0NFU1NfVE9LRU4gKi9cbmV4cG9ydCB0eXBlIFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFdoZXRoZXIgd2UgZXhwb3J0IGEgbWFwYm94IGFjY2VzcyB0b2tlbiB1c2VkIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYXAgaHRtbCBmaWxlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwYm94IGFjY2VzcyB0b2tlblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuOiAoXG4gIHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX1VTRVJfTUFQQk9YX0FDQ0VTU19UT0tFTixcbiAgKHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9GT1JNQVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IG1hcCBmb3JtYXQgKGh0bWwsIGpzb24pXG4gKiBAbWVtYmVyT2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwIGZvcm1hdFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwRm9ybWF0OiAoXG4gIG1hcEZvcm1hdDogU2V0RXhwb3J0TWFwRm9ybWF0VXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVCxcbiAgKHBheWxvYWQ6IFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9IVE1MX01PREUgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IHRoZSBIVE1MIG1vZGUgdG8gdXNlIHRvIGV4cG9ydCBIVE1MIG1vZGVcbiAqIEBtZW1iZXJPZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBtYXAgbW9kZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SFRNTE1hcE1vZGU6IChcbiAgbW9kZTogU2V0RXhwb3J0SFRNTE1hcE1vZGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREUsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfTE9DQUxFICovXG5leHBvcnQgdHlwZSBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7bG9jYWxlOiBzdHJpbmd9O1xufTtcbi8qKlxuICogU2V0IGBsb2NhbGVgIHZhbHVlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBsb2NhbGUgLSBsb2NhbGUgb2YgdGhlIFVJXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRMb2NhbGU6IChcbiAgbG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddXG4pID0+IE1lcmdlPFNldExvY2FsZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0xPQ0FMRX0+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfTE9DQUxFLFxuICAobG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIGxvY2FsZVxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBUT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXICovXG5leHBvcnQgdHlwZSBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFRvZ2dsZSBsYXllciBwYW5lbCBsaXN0IHZpZXdcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGxpc3RWaWV3IGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3OiAoXG4gIGxpc3RWaWV3OiBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3QWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9QQU5FTF9MSVNUX1ZJRVd9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXLFxuICAobGlzdFZpZXc6IFRvZ2dsZUxheWVyUGFuZWxMaXN0Vmlld0FjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGxpc3RWaWV3fSlcbik7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogQWN0aW9ucyBoYW5kbGVkIG1vc3RseSBieSAgYHVpU3RhdGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSBVSSBjaGFuZ2VzIGluIHRoYSBhcHAsIHN1Y2ggYXMgb3BlbiBhbmQgY2xvc2Ugc2lkZSBwYW5lbCxcbiAqIHN3aXRjaCBiZXR3ZWVuIHRhYnMgaW4gdGhlIHNpZGUgcGFuZWwsIG9wZW4gYW5kIGNsb3NlIG1vZGFsIGRpYWxvZyBmb3IgZXhwb3J0aW5nIGRhdGEgLyBpbWFnZXMgZXRjLlxuICogSXQgYWxzbyBtYW5nZXMgd2hpY2ggc2V0dGluZ3MgYXJlIHNlbGVjdGVkIGR1cmluZyBpbWFnZSBhbmQgbWFwIGV4cG9ydFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHVpU3RhdGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBT0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUcsZUFLWixHQUFBQyxPQUFBLENBQUFELGVBQUEsR0FBRyxJQUFBRSxxQkFBWSxFQUFDQyx1QkFBVyxDQUFDQyxpQkFBaUIsRUFBRSxVQUFDQyxFQUFVO0VBQUEsT0FBTTtJQUFDQyxPQUFPLEVBQUVEO0VBQUUsQ0FBQztBQUFBLENBQUMsQ0FBQzs7QUFFaEY7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUUsV0FFZ0UsR0FBQU4sT0FBQSxDQUFBTSxXQUFBLEdBQUcsSUFBQUwscUJBQVksRUFDMUZDLHVCQUFXLENBQUNLLFlBQVksRUFDeEIsVUFBQ0gsRUFBdUM7RUFBQSxPQUFNO0lBQzVDQyxPQUFPLEVBQUVEO0VBQ1gsQ0FBQztBQUFBLENBQ0gs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
|
|
316
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9vbGtpdCIsInJlcXVpcmUiLCJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwidG9nZ2xlU2lkZVBhbmVsIiwiZXhwb3J0cyIsImNyZWF0ZUFjdGlvbiIsIkFjdGlvblR5cGVzIiwiVE9HR0xFX1NJREVfUEFORUwiLCJpZCIsInBheWxvYWQiLCJ0b2dnbGVNb2RhbCIsIlRPR0dMRV9NT0RBTCIsInNob3dFeHBvcnREcm9wZG93biIsIlNIT1dfRVhQT1JUX0RST1BET1dOIiwiaGlkZUV4cG9ydERyb3Bkb3duIiwiSElERV9FWFBPUlRfRFJPUERPV04iLCJ0b2dnbGVNYXBDb250cm9sIiwiVE9HR0xFX01BUF9DT05UUk9MIiwicGFuZWxJZCIsImluZGV4Iiwic2V0TWFwQ29udHJvbFZpc2liaWxpdHkiLCJTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSIsInNob3ciLCJvcGVuRGVsZXRlTW9kYWwiLCJPUEVOX0RFTEVURV9NT0RBTCIsImRhdGFzZXRJZCIsImFkZE5vdGlmaWNhdGlvbiIsIkFERF9OT1RJRklDQVRJT04iLCJub3RpZmljYXRpb24iLCJyZW1vdmVOb3RpZmljYXRpb24iLCJSRU1PVkVfTk9USUZJQ0FUSU9OIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwiU0VUX0VYUE9SVF9JTUFHRV9TRVRUSU5HIiwibmV3U2V0dGluZyIsInN0YXJ0RXhwb3J0aW5nSW1hZ2UiLCJTVEFSVF9FWFBPUlRJTkdfSU1BR0UiLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJTRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJIiwiZGF0YVVyaSIsInNldEV4cG9ydEltYWdlRXJyb3IiLCJTRVRfRVhQT1JUX0lNQUdFX0VSUk9SIiwiZXJyb3IiLCJjbGVhbnVwRXhwb3J0SW1hZ2UiLCJDTEVBTlVQX0VYUE9SVF9JTUFHRSIsInNldEV4cG9ydFNlbGVjdGVkRGF0YXNldCIsIlNFVF9FWFBPUlRfU0VMRUNURURfREFUQVNFVCIsInNldEV4cG9ydERhdGFUeXBlIiwiU0VUX0VYUE9SVF9EQVRBX1RZUEUiLCJkYXRhVHlwZSIsInNldEV4cG9ydEZpbHRlcmVkIiwiU0VUX0VYUE9SVF9GSUxURVJFRCIsInNldEV4cG9ydERhdGEiLCJTRVRfRVhQT1JUX0RBVEEiLCJzZXRVc2VyTWFwYm94QWNjZXNzVG9rZW4iLCJTRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOIiwic2V0RXhwb3J0TWFwRm9ybWF0IiwiU0VUX0VYUE9SVF9NQVBfRk9STUFUIiwic2V0RXhwb3J0SFRNTE1hcE1vZGUiLCJTRVRfRVhQT1JUX01BUF9IVE1MX01PREUiLCJzZXRMb2NhbGUiLCJTRVRfTE9DQUxFIiwibG9jYWxlIiwidG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3IiwiVE9HR0xFX0xBWUVSX1BBTkVMX0xJU1RfVklFVyIsImxpc3RWaWV3IiwidWlTdGF0ZUFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy91aS1zdGF0ZS1hY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBBY3Rpb25UeXBlcyBmcm9tICdjb25zdGFudHMvYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7TWVyZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3R5cGVzJztcbmltcG9ydCB7RXhwb3J0SW1hZ2V9IGZyb20gJy4uL3JlZHVjZXJzL3VpLXN0YXRlLXVwZGF0ZXJzJztcblxuLyoqIFRPR0dMRV9TSURFX1BBTkVMICovXG5leHBvcnQgdHlwZSBUb2dnbGVTaWRlUGFuZWxVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkICBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWw6IChcbiAgaWQ6IHN0cmluZ1xuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfU0lERV9QQU5FTH1cbj4gPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuVE9HR0xFX1NJREVfUEFORUwsIChpZDogc3RyaW5nKSA9PiAoe3BheWxvYWQ6IGlkfSkpO1xuXG4vKiogVE9HR0xFX01PREFMICovXG5leHBvcnQgdHlwZSBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZyB8IG51bGw7XG59O1xuLyoqXG4gKiBTaG93IGFuZCBoaWRlIG1vZGFsIGRpYWxvZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBpZCBvZiBtb2RhbCB0byBiZSBzaG93biwgbnVsbCB0byBoaWRlIG1vZGFscy4gT25lIG9mOlxuICogIC0gW2BEQVRBX1RBQkxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGF0YV90YWJsZV9pZClcbiAqICAtIFtgREVMRVRFX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkZWxldGVfZGF0YV9pZClcbiAqICAtIFtgQUREX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfZGF0YV9pZClcbiAqICAtIFtgRVhQT1JUX0lNQUdFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2ltYWdlX2lkKVxuICogIC0gW2BFWFBPUlRfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9kYXRhX2lkKVxuICogIC0gW2BBRERfTUFQX1NUWUxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX21hcF9zdHlsZV9pZClcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsOiAoXG4gIGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX01PREFMfT4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlRPR0dMRV9NT0RBTCxcbiAgKGlkOiBUb2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtcbiAgICBwYXlsb2FkOiBpZFxuICB9KVxuKTtcblxuLyoqIFNIT1dfRVhQT1JUX0RST1BET1dOICovXG5leHBvcnQgdHlwZSBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBIaWRlIGFuZCBzaG93IHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZCAtIGlkIG9mIHRoZSBkcm9wZG93blxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duOiAoXG4gIGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNob3dFeHBvcnREcm9wZG93blVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0hPV19FWFBPUlRfRFJPUERPV059XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TSE9XX0VYUE9SVF9EUk9QRE9XTixcbiAgKGlkOiBTaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogaWR9KVxuKTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGhpZGVFeHBvcnREcm9wZG93bjogKCkgPT4ge1xuICB0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuSElERV9FWFBPUlRfRFJPUERPV047XG59ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkhJREVfRVhQT1JUX0RST1BET1dOKTtcblxuLyoqIFRPR0dMRV9NQVBfQ09OVFJPTCAqL1xuZXhwb3J0IHR5cGUgVG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBwYW5lbElkOiBzdHJpbmc7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgfTtcbn07XG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBhbmVsSWQgLSBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTWFwQ29udHJvbDogKFxuICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIGluZGV4OiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydpbmRleCddXG4pID0+IE1lcmdlPFxuICBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0x9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTUFQX0NPTlRST0wsXG4gIChcbiAgICBwYW5lbElkOiBUb2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gICAgaW5kZXg6IFRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2luZGV4J11cbiAgKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIHBhbmVsSWQsXG4gICAgICBpbmRleFxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBTRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWSAqL1xuZXhwb3J0IHR5cGUgc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7XG4gICAgcGFuZWxJZDogc3RyaW5nO1xuICAgIHNob3c6IGJvb2xlYW47XG4gIH07XG59O1xuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYW5lbElkIC0gbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5OiAoXG4gIHBhbmVsSWQ6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydwYW5lbElkJ10sXG4gIHNob3c6IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblsncGF5bG9hZCddWydzaG93J11cbikgPT4gTWVyZ2U8XG4gIHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfTUFQX0NPTlRST0xfVklTSUJJTElUWX1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9NQVBfQ09OVFJPTF9WSVNJQklMSVRZLFxuICAoXG4gICAgcGFuZWxJZDogc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ3BhbmVsSWQnXSxcbiAgICBzaG93OiBzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVsnc2hvdyddXG4gICkgPT4gKHtcbiAgICBwYXlsb2FkOiB7XG4gICAgICBwYW5lbElkLFxuICAgICAgc2hvd1xuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBPUEVOX0RFTEVURV9NT0RBTCAqL1xuZXhwb3J0IHR5cGUgT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YXNldElkIC0gYGlkYCBvZiB0aGUgZGF0YXNldCB0byBiZSBkZWxldGVkXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWw6IChcbiAgZGF0YXNldElkOiBPcGVuRGVsZXRlTW9kYWxVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIE9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuT1BFTl9ERUxFVEVfTU9EQUx9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5PUEVOX0RFTEVURV9NT0RBTCxcbiAgKGRhdGFzZXRJZDogT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGRhdGFzZXRJZH0pXG4pO1xuXG4vKiogQUREX05PVElGSUNBVElPTiAqL1xuZXhwb3J0IHR5cGUgQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogb2JqZWN0O1xufTtcbi8qKlxuICogQWRkIGEgbm90aWZpY2F0aW9uIHRvIGJlIGRpc3BsYXllZC5cbiAqIEV4aXN0aW5nIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHVwZGF0ZWQgaW4gY2FzZSBvZiBtYXRjaGluZyBpZC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5vdGlmaWNhdGlvbiAtIFRoZSBgbm90aWZpY2F0aW9uYCBvYmplY3QgdG8gYmUgYWRkZWQgb3IgdXBkYXRlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkTm90aWZpY2F0aW9uOiAoXG4gIG5vdGlmaWNhdGlvbjogQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBBZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uLFxuICB7XG4gICAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT047XG4gIH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLkFERF9OT1RJRklDQVRJT04sXG4gIChub3RpZmljYXRpb246IEFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBub3RpZmljYXRpb259KVxuKTtcblxuLyoqIFJFTU9WRV9OT1RJRklDQVRJT04gKi9cbmV4cG9ydCB0eXBlIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgLSBgaWRgIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlTm90aWZpY2F0aW9uOiAoXG4gIGlkOiBSZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX05PVElGSUNBVElPTn1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlJFTU9WRV9OT1RJRklDQVRJT04sXG4gIChpZDogUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGlkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX1NFVFRJTkcgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IFBhcnRpYWw8RXhwb3J0SW1hZ2U+O1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgc2V0dGluZ3M6IHJhdGlvLCByZXNvbHV0aW9uLCBsZWdlbmRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIG5ld1NldHRpbmcgLSB7cmF0aW86ICcxeCd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmc6IChcbiAgbmV3U2V0dGluZzogU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElOR31cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfU0VUVElORyxcbiAgKG5ld1NldHRpbmc6IFNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBuZXdTZXR0aW5nfSlcbik7XG5cbi8qKlxuICogU3RhcnQgZXhwb3J0aW5nIGltYWdlIGZsb3dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc3RhcnRFeHBvcnRpbmdJbWFnZTogKG9wdGlvbnM/OiB7XG4gIHJhdGlvPzogc3RyaW5nO1xuICByZXNvbHV0aW9uPzogc3RyaW5nO1xuICBsZWdlbmQ/OiBzdHJpbmc7XG4gIGNlbnRlcj86IGJvb2xlYW47XG59KSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TVEFSVF9FWFBPUlRJTkdfSU1BR0V9XG4+ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlNUQVJUX0VYUE9SVElOR19JTUFHRSwgKHBheWxvYWQ6IGFueSkgPT4gKHtwYXlsb2FkfSkpO1xuXG4vKiogU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YVVyaSAtIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiAoXG4gIGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0RBVEFfVVJJfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9JTUFHRV9EQVRBX1VSSSxcbiAgKGRhdGFVcmk6IFNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVXJpfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX0lNQUdFX0VSUk9SICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogRXJyb3I7XG59O1xuLyoqXG4gKiBTZXQgRXhwb3J0IGltYWdlIGVycm9yXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEltYWdlRXJyb3I6IChcbiAgZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfSU1BR0VfRVJST1J9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0lNQUdFX0VSUk9SLFxuICAoZXJyb3I6IFNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogZXJyb3J9KVxuKTtcblxuLyoqXG4gKiBEZWxldGUgY2FjaGVkIGV4cG9ydCBpbWFnZVxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2U6ICgpID0+IHtcbiAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkNMRUFOVVBfRVhQT1JUX0lNQUdFO1xufSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5DTEVBTlVQX0VYUE9SVF9JTUFHRSk7XG5cbi8qKiBTRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBzZWxlY3RlZCBkYXRhc2V0IGZvciBleHBvcnRcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFzZXRJZCAtIGRhdGFzZXQgaWRcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFNlbGVjdGVkRGF0YXNldDogKFxuICBkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVR9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX1NFTEVDVEVEX0RBVEFTRVQsXG4gIChkYXRhc2V0SWQ6IFNldEV4cG9ydFNlbGVjdGVkRGF0YXNldFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhc2V0SWR9KVxuKTtcblxuLyoqIFNFVF9FWFBPUlRfREFUQV9UWVBFICovXG5leHBvcnQgdHlwZSBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCBkYXRhIGZvcm1hdCBmb3IgZXhwb3J0aW5nIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFUeXBlIC0gb25lIG9mIGAndGV4dC9jc3YnYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGU6IChcbiAgZGF0YVR5cGU6IFNldEV4cG9ydERhdGFUeXBlVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9EQVRBX1RZUEV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX0RBVEFfVFlQRSxcbiAgKGRhdGFUeXBlOiBTZXRFeHBvcnREYXRhVHlwZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkOiBkYXRhVHlwZX0pXG4pO1xuXG4vKiogU0VUX0VYUE9SVF9GSUxURVJFRCAqL1xuZXhwb3J0IHR5cGUgU2V0RXhwb3J0RmlsdGVyZWRVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiBib29sZWFuO1xufTtcbi8qKlxuICogV2hldGhlciB0byBleHBvcnQgZmlsdGVyZWQgZGF0YSwgYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBzZXQgYHRydWVgIHRvIG9ueSBleHBvcnQgZmlsdGVyZWQgZGF0YVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RmlsdGVyZWQ6IChcbiAgZXhwb3J0RmlsdGVyZWQ6IFNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VYUE9SVF9GSUxURVJFRH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfRklMVEVSRUQsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhOiAoKSA9PiB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQX0gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfREFUQVxuKTtcblxuLyoqIFNFVF9VU0VSX01BUEJPWF9BQ0NFU1NfVE9LRU4gKi9cbmV4cG9ydCB0eXBlIFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFdoZXRoZXIgd2UgZXhwb3J0IGEgbWFwYm94IGFjY2VzcyB0b2tlbiB1c2VkIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYXAgaHRtbCBmaWxlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwYm94IGFjY2VzcyB0b2tlblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuOiAoXG4gIHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfVVNFUl9NQVBCT1hfQUNDRVNTX1RPS0VOfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuU0VUX1VTRVJfTUFQQk9YX0FDQ0VTU19UT0tFTixcbiAgKHBheWxvYWQ6IFNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9GT1JNQVQgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IG1hcCBmb3JtYXQgKGh0bWwsIGpzb24pXG4gKiBAbWVtYmVyT2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gbWFwIGZvcm1hdFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwRm9ybWF0OiAoXG4gIG1hcEZvcm1hdDogU2V0RXhwb3J0TWFwRm9ybWF0VXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pID0+IE1lcmdlPFxuICBTZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVH1cbj4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9FWFBPUlRfTUFQX0ZPUk1BVCxcbiAgKHBheWxvYWQ6IFNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfRVhQT1JUX01BUF9IVE1MX01PREUgKi9cbmV4cG9ydCB0eXBlIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDogc3RyaW5nO1xufTtcbi8qKlxuICogU2V0IHRoZSBIVE1MIG1vZGUgdG8gdXNlIHRvIGV4cG9ydCBIVE1MIG1vZGVcbiAqIEBtZW1iZXJPZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBtYXAgbW9kZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SFRNTE1hcE1vZGU6IChcbiAgbW9kZTogU2V0RXhwb3J0SFRNTE1hcE1vZGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbikgPT4gTWVyZ2U8XG4gIFNldEV4cG9ydEhUTUxNYXBNb2RlVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREV9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfRVhQT1JUX01BUF9IVE1MX01PREUsXG4gIChwYXlsb2FkOiBTZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXSkgPT4gKHtwYXlsb2FkfSlcbik7XG5cbi8qKiBTRVRfTE9DQUxFICovXG5leHBvcnQgdHlwZSBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7bG9jYWxlOiBzdHJpbmd9O1xufTtcbi8qKlxuICogU2V0IGBsb2NhbGVgIHZhbHVlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBsb2NhbGUgLSBsb2NhbGUgb2YgdGhlIFVJXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRMb2NhbGU6IChcbiAgbG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddXG4pID0+IE1lcmdlPFNldExvY2FsZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0xPQ0FMRX0+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfTE9DQUxFLFxuICAobG9jYWxlOiBTZXRMb2NhbGVVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11bJ2xvY2FsZSddKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIGxvY2FsZVxuICAgIH1cbiAgfSlcbik7XG5cbi8qKiBUT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXICovXG5leHBvcnQgdHlwZSBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFRvZ2dsZSBsYXllciBwYW5lbCBsaXN0IHZpZXdcbiAqIEBtZW1iZXJvZiB1aVN0YXRlQWN0aW9uc1xuICogQHBhcmFtIGxpc3RWaWV3IGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3OiAoXG4gIGxpc3RWaWV3OiBUb2dnbGVMYXllclBhbmVsTGlzdFZpZXdBY3Rpb25bJ3BheWxvYWQnXVxuKSA9PiBNZXJnZTxcbiAgVG9nZ2xlTGF5ZXJQYW5lbExpc3RWaWV3QWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9QQU5FTF9MSVNUX1ZJRVd9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfUEFORUxfTElTVF9WSUVXLFxuICAobGlzdFZpZXc6IFRvZ2dsZUxheWVyUGFuZWxMaXN0Vmlld0FjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IGxpc3RWaWV3fSlcbik7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogQWN0aW9ucyBoYW5kbGVkIG1vc3RseSBieSAgYHVpU3RhdGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSBVSSBjaGFuZ2VzIGluIHRoYSBhcHAsIHN1Y2ggYXMgb3BlbiBhbmQgY2xvc2Ugc2lkZSBwYW5lbCxcbiAqIHN3aXRjaCBiZXR3ZWVuIHRhYnMgaW4gdGhlIHNpZGUgcGFuZWwsIG9wZW4gYW5kIGNsb3NlIG1vZGFsIGRpYWxvZyBmb3IgZXhwb3J0aW5nIGRhdGEgLyBpbWFnZXMgZXRjLlxuICogSXQgYWxzbyBtYW5nZXMgd2hpY2ggc2V0dGluZ3MgYXJlIHNlbGVjdGVkIGR1cmluZyBpbWFnZSBhbmQgbWFwIGV4cG9ydFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHVpU3RhdGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBT0E7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUcsZUFLWixHQUFBQyxPQUFBLENBQUFELGVBQUEsR0FBRyxJQUFBRSxxQkFBWSxFQUFDQyxvQkFBVyxDQUFDQyxpQkFBaUIsRUFBR0MsRUFBVSxLQUFNO0VBQUNDLE9BQU8sRUFBRUQ7QUFBRSxDQUFDLENBQUMsQ0FBQzs7QUFFaEY7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUUsV0FFZ0UsR0FBQU4sT0FBQSxDQUFBTSxXQUFBLEdBQUcsSUFBQUwscUJBQVksRUFDMUZDLG9CQUFXLENBQUNLLFlBQVksRUFDdkJILEVBQXVDLEtBQU07RUFDNUNDLE9BQU8sRUFBRUQ7QUFDWCxDQUFDLENBQ0gsQ0FBQzs7QUFFRDs7QUFJQTtBQUNBO0FBQ0E7QUFD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
|