@igo2/geo 17.0.1-next.2 → 18.0.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +7 -9
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +16 -13
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +5 -5
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +5 -5
- package/esm2022/lib/catalog/catalog.module.mjs +5 -5
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.service.mjs +4 -4
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +4 -4
- package/esm2022/lib/datasource/shared/datasource.service.mjs +4 -4
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +9 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +73 -2
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +4 -4
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +7 -5
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +4 -4
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -4
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +4 -4
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +4 -4
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +4 -4
- package/esm2022/lib/directions/directions.component.mjs +10 -4
- package/esm2022/lib/directions/directions.module.mjs +5 -5
- package/esm2022/lib/directions/shared/directions.service.mjs +4 -4
- package/esm2022/lib/download/download-button/download-button.component.mjs +10 -22
- package/esm2022/lib/download/download.module.mjs +5 -5
- package/esm2022/lib/download/shared/download.service.mjs +4 -4
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +4 -4
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +4 -4
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +4 -4
- package/esm2022/lib/draw/draw/draw.component.mjs +8 -15
- package/esm2022/lib/draw/draw/draw.module.mjs +5 -5
- package/esm2022/lib/draw/drawingTool.module.mjs +5 -5
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +4 -4
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +5 -5
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +4 -4
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +5 -5
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +4 -4
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +5 -5
- package/esm2022/lib/feature/feature.module.mjs +5 -5
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +7 -6
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/store.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +3 -3
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +7 -4
- package/esm2022/lib/feature/shared/strategies/selection.mjs +5 -4
- package/esm2022/lib/filter/filter.module.mjs +5 -5
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +6 -6
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +5 -5
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -6
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +4 -4
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +11 -4
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +4 -4
- package/esm2022/lib/filter/shared/ogc-filter.mjs +7 -2
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +4 -4
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +4 -4
- package/esm2022/lib/filter/shared/time-filter.service.mjs +4 -4
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +4 -4
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +5 -11
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +5 -11
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +5 -5
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +15 -12
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +5 -5
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +7 -5
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +7 -18
- package/esm2022/lib/geo.module.mjs +5 -5
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +4 -4
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +4 -4
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +5 -5
- package/esm2022/lib/geometry/geometry.module.mjs +5 -5
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +7 -20
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +215 -323
- package/esm2022/lib/import-export/import-export.module.mjs +5 -5
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +4 -4
- package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.service.mjs +257 -91
- package/esm2022/lib/import-export/shared/export.type.mjs +9 -9
- package/esm2022/lib/import-export/shared/export.utils.mjs +5 -1
- package/esm2022/lib/import-export/shared/import.service.mjs +4 -4
- package/esm2022/lib/import-export/shared/import.utils.mjs +3 -3
- package/esm2022/lib/layer/index.mjs +10 -5
- package/esm2022/lib/layer/layer-group/index.mjs +2 -0
- package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +62 -129
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +7 -10
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +4 -4
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -9
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +16 -23
- package/esm2022/lib/layer/layer-list/index.mjs +1 -3
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +177 -776
- package/esm2022/lib/layer/layer-list-tool/index.mjs +1 -2
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +52 -85
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -2
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +57 -17
- package/esm2022/lib/layer/layer-search/index.mjs +2 -0
- package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
- package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +25 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
- package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
- package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
- package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
- package/esm2022/lib/layer/layer.module.mjs +54 -36
- package/esm2022/lib/layer/shared/index.mjs +2 -1
- package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
- package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
- package/esm2022/lib/layer/shared/layer.service.mjs +73 -27
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +8 -3
- package/esm2022/lib/layer/shared/layers/index.mjs +6 -1
- package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
- package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -11
- package/esm2022/lib/layer/shared/layers/layer.mjs +114 -118
- package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +8 -3
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +22 -19
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +8 -3
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +4 -4
- package/esm2022/lib/layer/utils/layer.utils.mjs +47 -1
- package/esm2022/lib/layer/utils/outputLegend.mjs +5 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +6 -6
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +11 -9
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +4 -4
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +4 -4
- package/esm2022/lib/map/info-section/info-section.component.mjs +4 -4
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +4 -4
- package/esm2022/lib/map/map-center/map-center.component.mjs +4 -4
- package/esm2022/lib/map/map.module.mjs +5 -5
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +4 -4
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +4 -4
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +4 -4
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +5 -13
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +113 -123
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +4 -4
- package/esm2022/lib/map/shared/map.abstract.mjs +4 -3
- package/esm2022/lib/map/shared/map.mjs +7 -243
- package/esm2022/lib/map/shared/map.service.mjs +4 -4
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +12 -8
- package/esm2022/lib/map/shared/projection.service.mjs +4 -4
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +4 -4
- package/esm2022/lib/map/utils/index.mjs +2 -0
- package/esm2022/lib/map/utils/layer-watcher.mjs +45 -13
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +4 -5
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +4 -4
- package/esm2022/lib/measure/measure.module.mjs +5 -5
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +4 -4
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +4 -4
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +4 -4
- package/esm2022/lib/measure/measurer/measurer.component.mjs +10 -28
- package/esm2022/lib/measure/measurer/measurer.module.mjs +5 -5
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +11 -23
- package/esm2022/lib/metadata/metadata.module.mjs +5 -5
- package/esm2022/lib/metadata/shared/metadata.service.mjs +4 -4
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +5 -8
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +21 -22
- package/esm2022/lib/offline/index.mjs +3 -1
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +16 -17
- package/esm2022/lib/offline/offline.interface.mjs +2 -0
- package/esm2022/lib/offline/offline.provider.mjs +51 -0
- package/esm2022/lib/offline/shared/geo-network.service.mjs +15 -16
- package/esm2022/lib/overlay/shared/overlay.mjs +3 -2
- package/esm2022/lib/print/print/print.component.mjs +4 -4
- package/esm2022/lib/print/print-form/print-form.component.mjs +4 -4
- package/esm2022/lib/print/print.module.mjs +5 -5
- package/esm2022/lib/print/shared/print.service.mjs +6 -6
- package/esm2022/lib/query/query.module.mjs +5 -5
- package/esm2022/lib/query/shared/query-search-source.mjs +4 -4
- package/esm2022/lib/query/shared/query.directive.mjs +12 -8
- package/esm2022/lib/query/shared/query.service.mjs +10 -10
- package/esm2022/lib/query/shared/query.utils.mjs +5 -1
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +4 -4
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +5 -5
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +4 -4
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +18 -12
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +4 -4
- package/esm2022/lib/search/search-results/search-results.component.mjs +4 -4
- package/esm2022/lib/search/search-results/search-results.module.mjs +5 -5
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +4 -4
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +5 -5
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +4 -4
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +5 -5
- package/esm2022/lib/search/search.module.mjs +5 -5
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +5 -14
- package/esm2022/lib/search/shared/search.service.mjs +4 -4
- package/esm2022/lib/search/shared/sources/cadastre.mjs +4 -4
- package/esm2022/lib/search/shared/sources/coordinates.mjs +7 -7
- package/esm2022/lib/search/shared/sources/icherche.mjs +10 -10
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.mjs +7 -7
- package/esm2022/lib/search/shared/sources/nominatim.mjs +4 -4
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +7 -7
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.mjs +4 -4
- package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
- package/esm2022/lib/style/style-list/style-list.service.mjs +4 -4
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +4 -4
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +4 -4
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +4 -4
- package/esm2022/lib/style/style-service/draw-style.service.mjs +4 -4
- package/esm2022/lib/style/style-service/style.service.mjs +4 -4
- package/esm2022/lib/style/style.module.mjs +5 -5
- package/esm2022/lib/toast/toast.component.mjs +4 -4
- package/esm2022/lib/toast/toast.module.mjs +5 -5
- package/esm2022/lib/utils/id-generator.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +4 -4
- package/esm2022/lib/wkt/shared/wkt.service.mjs +4 -4
- package/esm2022/lib/wkt/wkt.module.mjs +5 -5
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +4 -4
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +5 -5
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +6 -4
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +22 -20
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +4 -4
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +20 -5
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +25 -7
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +6 -3
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +5 -5
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +5 -5
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +9 -5
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +5 -5
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +5 -5
- package/esm2022/lib/workspace/workspace.module.mjs +5 -5
- package/fesm2022/igo2-geo.mjs +19275 -18300
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/catalog/shared/catalog.enum.d.ts +1 -3
- package/lib/datasource/shared/capabilities.service.d.ts +7 -2
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +1 -0
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +0 -1
- package/lib/datasource/shared/datasources/datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +0 -3
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/mvt-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +16 -0
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +3 -4
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +7 -7
- package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +0 -2
- package/lib/download/download-button/download-button.component.d.ts +4 -8
- package/lib/download/shared/download.service.d.ts +1 -1
- package/lib/draw/draw/draw.component.d.ts +2 -2
- package/lib/environment/environment.interface.d.ts +2 -0
- package/lib/feature/shared/feature-store.utils.d.ts +2 -2
- package/lib/feature/shared/feature.interfaces.d.ts +1 -1
- package/lib/feature/shared/store.d.ts +2 -2
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +2 -2
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +2 -2
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +3 -3
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -5
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -5
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +5 -5
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +2 -7
- package/lib/import-export/export-button/export-button.component.d.ts +3 -7
- package/lib/import-export/import-export/import-export.component.d.ts +23 -16
- package/lib/import-export/shared/export.interface.d.ts +10 -3
- package/lib/import-export/shared/export.service.d.ts +28 -15
- package/lib/import-export/shared/export.type.d.ts +8 -16
- package/lib/import-export/shared/export.utils.d.ts +2 -0
- package/lib/layer/index.d.ts +9 -4
- package/lib/layer/layer-group/index.d.ts +1 -0
- package/lib/layer/layer-group/layer-group.component.d.ts +30 -0
- package/lib/layer/layer-item/layer-item.component.d.ts +19 -38
- package/lib/layer/layer-legend/layer-legend.component.d.ts +2 -5
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +6 -7
- package/lib/layer/layer-list/index.d.ts +0 -2
- package/lib/layer/layer-list/layer-list.component.d.ts +51 -123
- package/lib/layer/layer-list-tool/index.d.ts +0 -1
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +19 -26
- package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +5 -1
- package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +9 -8
- package/lib/layer/layer-search/index.d.ts +1 -0
- package/lib/layer/layer-search/layer-search.component.d.ts +16 -0
- package/lib/layer/layer-unavailable/index.d.ts +2 -0
- package/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.d.ts +10 -0
- package/lib/layer/layer-unavailable/layer-unavailable.component.d.ts +11 -0
- package/lib/layer/layer-viewer/index.d.ts +2 -0
- package/lib/layer/layer-viewer/layer-viewer.component.d.ts +52 -0
- package/lib/layer/layer-viewer/layer-viewer.interface.d.ts +22 -0
- package/lib/layer/layer-viewer-bottom-actions/index.d.ts +1 -0
- package/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.d.ts +44 -0
- package/lib/layer/layer-visibility-button/index.d.ts +1 -0
- package/lib/layer/layer-visibility-button/layer-visibility-button.component.d.ts +22 -0
- package/lib/layer/layer.module.d.ts +18 -6
- package/lib/layer/shared/index.d.ts +1 -0
- package/lib/layer/shared/layer-controller.d.ts +81 -0
- package/lib/layer/shared/layer-selection.d.ts +14 -0
- package/lib/layer/shared/layer.service.d.ts +17 -8
- package/lib/layer/shared/layers/any-layer.d.ts +3 -6
- package/lib/layer/shared/layers/any-layer.interface.d.ts +8 -6
- package/lib/layer/shared/layers/image-layer.d.ts +5 -2
- package/lib/layer/shared/layers/image-layer.interface.d.ts +1 -4
- package/lib/layer/shared/layers/index.d.ts +5 -0
- package/lib/layer/shared/layers/layer-base.d.ts +75 -0
- package/lib/layer/shared/layers/layer-group.d.ts +32 -0
- package/lib/layer/shared/layers/layer-group.interface.d.ts +8 -0
- package/lib/layer/shared/layers/layer.d.ts +28 -49
- package/lib/layer/shared/layers/layer.interface.d.ts +23 -41
- package/lib/layer/shared/layers/linked/index.d.ts +3 -0
- package/lib/layer/shared/layers/linked/linked-layer.d.ts +35 -0
- package/lib/layer/shared/layers/linked/linked-layer.interface.d.ts +32 -0
- package/lib/layer/shared/layers/linked/linked-layer.utils.d.ts +9 -0
- package/lib/layer/shared/layers/tile-layer.d.ts +5 -2
- package/lib/layer/shared/layers/vector-layer.d.ts +8 -7
- package/lib/layer/shared/layers/vectortile-layer.d.ts +5 -2
- package/lib/layer/utils/layer.utils.d.ts +12 -2
- package/lib/layer/utils/outputLegend.d.ts +2 -2
- package/lib/map/shared/hover-feature.directive.d.ts +0 -1
- package/lib/map/shared/linkedLayers.utils.d.ts +13 -17
- package/lib/map/shared/map.abstract.d.ts +12 -29
- package/lib/map/shared/map.d.ts +10 -85
- package/lib/map/shared/map.service.d.ts +1 -1
- package/lib/map/utils/index.d.ts +1 -0
- package/lib/map/utils/layer-watcher.d.ts +18 -8
- package/lib/measure/measurer/measurer.component.d.ts +0 -8
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +3 -7
- package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
- package/lib/offline/index.d.ts +2 -0
- package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
- package/lib/offline/offline.interface.d.ts +3 -0
- package/lib/offline/offline.provider.d.ts +3 -0
- package/lib/offline/shared/geo-network.service.d.ts +3 -3
- package/lib/overlay/shared/overlay.d.ts +2 -1
- package/lib/query/shared/query.service.d.ts +1 -1
- package/lib/query/shared/query.utils.d.ts +2 -1
- package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
- package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -1
- package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
- package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
- package/lib/search/shared/sources/icherche.providers.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
- package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
- package/lib/search/shared/sources/workspace.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
- package/lib/utils/id-generator.d.ts +5 -5
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
- package/locale/en.geo.json +27 -3
- package/locale/fr.geo.json +26 -3
- package/package.json +6 -7
- package/src/_index.scss +2 -1
- package/src/geo-theme.scss +1 -1
- package/src/lib/layer/layer-group/layer-group.theme.scss +28 -0
- package/src/lib/layer/layer-item/layer-item.theme.scss +12 -9
- package/src/lib/layer/layer-legend/layer-legend.theme.scss +30 -0
- package/src/lib/layer/layer-list/layer-list.theme.scss +50 -0
- package/src/lib/layer/layer-unavailable/layer-unavailable.theme.scss +19 -0
- package/src/lib/layer/layer-viewer/_layer-viewer.theme.scss +16 -0
- package/src/lib/layer/layer-visibility-button/layer-visibility-button.theme.scss +27 -0
- package/src/lib/layer/layer.theming.scss +14 -3
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +0 -70
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +0 -19
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +0 -7
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +0 -19
- package/lib/layer/layer-list/layer-list.enum.d.ts +0 -15
- package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +0 -5
- package/src/lib/layer/layer-legend/layer-legend.theming.scss +0 -10
|
@@ -107,7 +107,12 @@ export class OgcFilterWriter {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
else {
|
|
110
|
-
|
|
110
|
+
if (extent && proj) {
|
|
111
|
+
return 'bbox=' + extent.join(',') + ',' + proj.getCode();
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
111
116
|
}
|
|
112
117
|
const wfsOptions = {
|
|
113
118
|
srsName: '',
|
|
@@ -748,4 +753,4 @@ export class OgcFilterWriter {
|
|
|
748
753
|
}
|
|
749
754
|
}
|
|
750
755
|
}
|
|
751
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHaEQsT0FBTyxXQUF1QyxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLFdBQVcsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxrQkFBa0IsQ0FBQztBQUk3QyxPQUFPLEVBQUUsT0FBTyxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUczQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWE3RSxNQUFNLE9BQU8sZUFBZTtJQUNsQixjQUFjLEdBQWdDLEVBQUUsQ0FBQztJQUNsRCxTQUFTLEdBQUc7UUFDakIsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBMkIsQ0FBQyxFQUFFO1lBQy9DLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLEVBQUU7U0FDbEI7UUFDRCxDQUFDLGlCQUFpQixDQUFDLG9CQUE4QixDQUFDLEVBQUU7WUFDbEQsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsRUFBRTtTQUNsQjtRQUNELENBQUMsaUJBQWlCLENBQUMsY0FBd0IsQ0FBQyxFQUFFO1lBQzVDLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO1NBQzFCO1FBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBK0IsQ0FBQyxFQUFFO1lBQ25ELE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO1NBQzFCO1FBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyw4QkFBd0MsQ0FBQyxFQUFFO1lBQzVE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QUMsS0FBSyxDQUFDO3FCQUNaLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO3FCQUN0RCxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG5pbXBvcnQgeyBPYmplY3RVdGlscywgdXVpZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHsgRXh0ZW50IH0gZnJvbSAnb2wvZXh0ZW50JztcbmltcG9ydCBvbEZvcm1hdFdGUywgeyBXcml0ZUdldEZlYXR1cmVPcHRpb25zIH0gZnJvbSAnb2wvZm9ybWF0L1dGUyc7XG5pbXBvcnQgb2xGb3JtYXRXS1QgZnJvbSAnb2wvZm9ybWF0L1dLVCc7XG5pbXBvcnQgKiBhcyBvbGZpbHRlciBmcm9tICdvbC9mb3JtYXQvZmlsdGVyJztcbmltcG9ydCBvbEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuXG5pbXBvcnQgeyBkZWZhdWx0IGFzIG1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9kYXRhc291cmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJPcGVyYXRvciwgT2djRmlsdGVyT3BlcmF0b3JUeXBlIH0gZnJvbSAnLi9vZ2MtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHtcbiAgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnMsXG4gIElnb09nY0ZpbHRlck9iamVjdCxcbiAgSWdvT2djU2VsZWN0b3IsXG4gIE9nY0ZpbHRlcixcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICBPZ2NGaWx0ZXJzT3B0aW9ucyxcbiAgT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyxcbiAgT2djU2VsZWN0b3JCdW5kbGUsXG4gIFNlbGVjdG9yR3JvdXBcbn0gZnJvbSAnLi9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJXcml0ZXIge1xuICBwcml2YXRlIGZpbHRlclNlcXVlbmNlOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW10gPSBbXTtcbiAgcHVibGljIG9wZXJhdG9ycyA9IHtcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZSBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnc3RyaW5nJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbiBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0JldHdlZW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nIGFzIHN0cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbiBhcyBzdHJpbmddOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zIGFzIHN0cmluZ106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICB9O1xuXG4gIGRlZmluZU9nY0ZpbHRlcnNEZWZhdWx0T3B0aW9ucyhcbiAgICBvZ2NGaWx0ZXJzT3B0aW9uczogT2djRmlsdGVyc09wdGlvbnMsXG4gICAgZmllbGROYW1lR2VvbWV0cnk6IHN0cmluZyxcbiAgICBzcmNUeXBlPzogc3RyaW5nXG4gICk6IE9nY0ZpbHRlcnNPcHRpb25zIHtcbiAgICBsZXQgb2djRmlsdGVyc0RlZmF1bHRWYWx1ZSA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWVzIGZvciB3ZnMuXG4gICAgaWYgKHNyY1R5cGUgJiYgc3JjVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucyA9IG9nY0ZpbHRlcnNPcHRpb25zIHx8IHt9O1xuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gb2djRmlsdGVyc0RlZmF1bHRWYWx1ZVxuICAgICAgICA6IG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQ7XG4gICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWVcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZTtcbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5nZW9tZXRyeU5hbWUgPSBmaWVsZE5hbWVHZW9tZXRyeTtcblxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmFkdmFuY2VkT2djRmlsdGVycyA9IHRydWU7XG4gICAgaWYgKFxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCAmJlxuICAgICAgKG9nY0ZpbHRlcnNPcHRpb25zLnB1c2hCdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLmNoZWNrYm94ZXMgfHxcbiAgICAgICAgb2djRmlsdGVyc09wdGlvbnMucmFkaW9CdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLnNlbGVjdCB8fFxuICAgICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hdXRvY29tcGxldGUpXG4gICAgKSB7XG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hZHZhbmNlZE9nY0ZpbHRlcnMgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9nY0ZpbHRlcnNPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkRmlsdGVyKFxuICAgIGZpbHRlcnM/OiBJZ29PZ2NGaWx0ZXJPYmplY3QsXG4gICAgZXh0ZW50PzogRXh0ZW50LFxuICAgIHByb2o/OiBvbFByb2plY3Rpb24sXG4gICAgZmllbGROYW1lR2VvbWV0cnk/OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApOiBzdHJpbmcge1xuICAgIGxldCBvdXJCYm94RmlsdGVyO1xuICAgIGxldCBlbmFibGVCYm94OiBib29sZWFuO1xuICAgIGlmICgvaW50ZXJzZWN0c3xjb250YWluc3x3aXRoaW4vZ2kudGVzdChKU09OLnN0cmluZ2lmeShmaWx0ZXJzKSkpIHtcbiAgICAgIGVuYWJsZUJib3ggPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5hYmxlQmJveCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBmaWVsZE5hbWVHZW9tZXRyeSA9XG4gICAgICAgIChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lXG4gICAgICAgICAgOiBmaWVsZE5hbWVHZW9tZXRyeTtcbiAgICB9XG4gICAgaWYgKGV4dGVudCAmJiBmaWx0ZXJzKSB7XG4gICAgICBvdXJCYm94RmlsdGVyID0gb2xmaWx0ZXIuYmJveChmaWVsZE5hbWVHZW9tZXRyeSwgZXh0ZW50LCBwcm9qLmdldENvZGUoKSk7XG4gICAgfVxuICAgIGxldCBmaWx0ZXJBc3NlbWJseTogT2djRmlsdGVyO1xuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBmaWx0ZXJzID0gdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgcHJvalxuICAgICAgKTtcbiAgICAgIGlmIChleHRlbnQgJiYgZW5hYmxlQmJveCkge1xuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IG9sZmlsdGVyLmFuZChcbiAgICAgICAgICBvdXJCYm94RmlsdGVyLFxuICAgICAgICAgIHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlcnMsIG9wdGlvbnMpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlcnMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2Jib3g9JyArIGV4dGVudC5qb2luKCcsJykgKyAnLCcgKyBwcm9qLmdldENvZGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCB3ZnNPcHRpb25zOiBXcml0ZUdldEZlYXR1cmVPcHRpb25zID0ge1xuICAgICAgc3JzTmFtZTogJycsXG4gICAgICBmZWF0dXJlTlM6ICcnLFxuICAgICAgZmVhdHVyZVByZWZpeDogJycsXG4gICAgICBmZWF0dXJlVHlwZXM6IFsnZmVhdHVyZVR5cGVzJ10sXG4gICAgICBmaWx0ZXI6IGZpbHRlckFzc2VtYmx5LFxuICAgICAgb3V0cHV0Rm9ybWF0OiAnJyxcbiAgICAgIGdlb21ldHJ5TmFtZTogZmllbGROYW1lR2VvbWV0cnlcbiAgICB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgb2xGb3JtYXRXRlMoKS53cml0ZUdldEZlYXR1cmUod2ZzT3B0aW9ucyk7XG4gICAgY29uc3Qgc3RyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhxdWVyeSk7XG4gICAgY29uc3QgcmVnZXhwMSA9IC90eXBlbmFtZXMgKj18dHlwZW5hbWUgKj1cXFwiZmVhdHVyZVR5cGVzXFxcIiAqPi9naTtcbiAgICBjb25zdCByZWdleHAyID0gLzxcXC9RdWVyeT48XFwvR2V0RmVhdHVyZT4vZ2k7XG5cbiAgICByZXR1cm4gJ2ZpbHRlcj0nICsgc3RyLnNwbGl0KHJlZ2V4cDEpWzFdLnNwbGl0KHJlZ2V4cDIpWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBidW5kbGVGaWx0ZXIoXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApIHtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IGxvZ2ljYWxBcnJheSA9IFtdO1xuICAgICAgZmlsdGVyT2JqZWN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgbG9naWNhbEFycmF5LnB1c2godGhpcy5idW5kbGVGaWx0ZXIoZWxlbWVudCwgb3B0aW9ucykpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbG9naWNhbEFycmF5O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdsb2dpY2FsJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsdGVyKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9wZXJhdG9yOiBmaWx0ZXJPYmplY3QubG9naWNhbCxcbiAgICAgICAgICAgIGxvZ2ljYWxBcnJheTogdGhpcy5idW5kbGVGaWx0ZXIoZmlsdGVyT2JqZWN0LmZpbHRlcnMsIG9wdGlvbnMpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcHRpb25zXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWx0ZXIoXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zLFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZpbHRlcihcbiAgICBmaWx0ZXJPcHRpb25zLFxuICAgIG9wdGlvbnM/OiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogT2djRmlsdGVyIHtcbiAgICBjb25zdCBvcGVyYXRvciA9IGZpbHRlck9wdGlvbnMub3BlcmF0b3I7XG4gICAgY29uc3QgbG9naWNhbEFycmF5ID0gZmlsdGVyT3B0aW9ucy5sb2dpY2FsQXJyYXk7XG5cbiAgICBjb25zdCB3ZnNQcm9wZXJ0eU5hbWUgPSBmaWx0ZXJPcHRpb25zLnByb3BlcnR5TmFtZTtcbiAgICBjb25zdCB3ZnNQYXR0ZXJuID0gZmlsdGVyT3B0aW9ucy5wYXR0ZXJuO1xuICAgIGNvbnN0IHdmc01hdGNoQ2FzZSA9IGZpbHRlck9wdGlvbnMubWF0Y2hDYXNlXG4gICAgICA/IGZpbHRlck9wdGlvbnMubWF0Y2hDYXNlXG4gICAgICA6IHRydWU7XG4gICAgY29uc3Qgd2ZzV2lsZENhcmQgPSBmaWx0ZXJPcHRpb25zLndpbGRDYXJkID8gZmlsdGVyT3B0aW9ucy53aWxkQ2FyZCA6ICcqJztcbiAgICBjb25zdCB3ZnNTaW5nbGVDaGFyID0gZmlsdGVyT3B0aW9ucy5zaW5nbGVDaGFyXG4gICAgICA/IGZpbHRlck9wdGlvbnMuc2luZ2xlQ2hhclxuICAgICAgOiAnLic7XG4gICAgY29uc3Qgd2ZzRXNjYXBlQ2hhciA9IGZpbHRlck9wdGlvbnMuZXNjYXBlQ2hhclxuICAgICAgPyBmaWx0ZXJPcHRpb25zLmVzY2FwZUNoYXJcbiAgICAgIDogJyEnO1xuXG4gICAgY29uc3Qgd2ZzTG93ZXJCb3VuZGFyeSA9IGZpbHRlck9wdGlvbnMubG93ZXJCb3VuZGFyeTtcbiAgICBjb25zdCB3ZnNVcHBlckJvdW5kYXJ5ID0gZmlsdGVyT3B0aW9ucy51cHBlckJvdW5kYXJ5O1xuXG4gICAgY29uc3Qgd2ZzR2VvbWV0cnlOYW1lID0gZmlsdGVyT3B0aW9ucy5nZW9tZXRyeU5hbWU7XG4gICAgY29uc3Qgd2ZzRXh0ZW50ID0gZmlsdGVyT3B0aW9ucy5leHRlbnQ7XG4gICAgY29uc3Qgd2ZzV2t0R2VvbWV0cnkgPSBmaWx0ZXJPcHRpb25zLndrdF9nZW9tZXRyeTtcbiAgICBjb25zdCB3ZnNTcnNOYW1lID0gZmlsdGVyT3B0aW9ucy5zcnNOYW1lXG4gICAgICA/IGZpbHRlck9wdGlvbnMuc3JzTmFtZVxuICAgICAgOiAnRVBTRzozODU3JztcblxuICAgIGNvbnN0IHdmc0JlZ2luID0gdGhpcy5wYXJzZUZpbHRlck9wdGlvbkRhdGUoXG4gICAgICBmaWx0ZXJPcHRpb25zLmJlZ2luLFxuICAgICAgb3B0aW9ucyA/IG9wdGlvbnMubWluRGF0ZSA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgY29uc3Qgd2ZzRW5kID0gdGhpcy5wYXJzZUZpbHRlck9wdGlvbkRhdGUoXG4gICAgICBmaWx0ZXJPcHRpb25zLmVuZCxcbiAgICAgIG9wdGlvbnMgPyBvcHRpb25zLm1heERhdGUgOiB1bmRlZmluZWRcbiAgICApO1xuXG4gICAgY29uc3Qgd2ZzRXhwcmVzc2lvbiA9IGZpbHRlck9wdGlvbnMuZXhwcmVzc2lvbjtcblxuICAgIGxldCBnZW9tZXRyeTogb2xHZW9tZXRyeTtcbiAgICBpZiAod2ZzV2t0R2VvbWV0cnkpIHtcbiAgICAgIGNvbnN0IHdrdCA9IG5ldyBvbEZvcm1hdFdLVCgpO1xuICAgICAgZ2VvbWV0cnkgPSB3a3QucmVhZEdlb21ldHJ5KHdmc1drdEdlb21ldHJ5LCB7XG4gICAgICAgIGRhdGFQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lLFxuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbjogd2ZzU3JzTmFtZSB8fCAnRVBTRzozODU3J1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChvcGVyYXRvci50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkJCT1gudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmJib3god2ZzR2VvbWV0cnlOYW1lLCB3ZnNFeHRlbnQsIHdmc1Nyc05hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzQmV0d2Vlbi50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmV0d2VlbihcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzTG93ZXJCb3VuZGFyeSB8fCAxZTQwICogLTEsXG4gICAgICAgICAgd2ZzVXBwZXJCb3VuZGFyeSB8fCAxZTQwXG4gICAgICAgICk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5jb250YWlucyh3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5kdXJpbmcod2ZzUHJvcGVydHlOYW1lLCB3ZnNCZWdpbiwgd2ZzRW5kKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uLCB3ZnNNYXRjaENhc2UpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmdyZWF0ZXJUaGFuKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbk9yRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZ3JlYXRlclRoYW5PckVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0cy50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuaW50ZXJzZWN0cyh3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc051bGwudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmlzTnVsbCh3ZnNQcm9wZXJ0eU5hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmxlc3NUaGFuKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGVzc1RoYW5PckVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xpa2UudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmxpa2UoXG4gICAgICAgICAgd2ZzUHJvcGVydHlOYW1lLFxuICAgICAgICAgIHdmc1BhdHRlcm5cbiAgICAgICAgICAgID8gd2ZzUGF0dGVybi5yZXBsYWNlKC9bKClfXS9naSwgd2ZzU2luZ2xlQ2hhcilcbiAgICAgICAgICAgIDogd2ZzV2lsZENhcmQsXG4gICAgICAgICAgd2ZzV2lsZENhcmQsXG4gICAgICAgICAgd2ZzU2luZ2xlQ2hhcixcbiAgICAgICAgICB3ZnNFc2NhcGVDaGFyLFxuICAgICAgICAgIHdmc01hdGNoQ2FzZVxuICAgICAgICApO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubm90RXF1YWxUbyhcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzRXhwcmVzc2lvbixcbiAgICAgICAgICB3ZnNNYXRjaENhc2VcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci53aXRoaW4od2ZzR2VvbWV0cnlOYW1lLCBnZW9tZXRyeSwgd2ZzU3JzTmFtZSk7XG4gICAgICAvLyBMT0dJQ0FMXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkFuZC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYW5kLmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLk9yLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5vci5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Ob3QudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm5vdC5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBnZW9tZXRyeU5hbWUsXG4gICAgbG9naWNhbCA9ICcnLFxuICAgIGxldmVsID0gLTFcbiAgKTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdIHtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UuY29uY2F0KFxuICAgICAgICAgIHRoaXMuZGVmaW5lSW50ZXJmYWNlRmlsdGVyU2VxdWVuY2UoXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgbG9naWNhbCxcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xuICAgICAgICBsZXZlbCA9IGxldmVsICsgMTtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5jb25jYXQoXG4gICAgICAgICAgdGhpcy5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICAgICAgICAgIGZpbHRlck9iamVjdC5maWx0ZXJzLFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXG4gICAgICAgICAgICBsZXZlbFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UucHVzaChcbiAgICAgICAgICB0aGlzLmFkZEludGVyZmFjZUZpbHRlcihmaWx0ZXJPYmplY3QsIGdlb21ldHJ5TmFtZSwgbGV2ZWwsIGxvZ2ljYWwpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlclNlcXVlbmNlO1xuICB9XG5cbiAgcHVibGljIGNvbXB1dGVBbGxvd2VkT3BlcmF0b3JzKFxuICAgIGZpZWxkcz86IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXNbXSxcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmcsXG4gICAgZGVmYXVsdE9wZXJhdG9yc1R5cGU/OiBPZ2NGaWx0ZXJPcGVyYXRvclR5cGVcbiAgKSB7XG4gICAgbGV0IGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHt9O1xuICAgIGxldCBhbGxvd2VkT3BlcmF0b3JzO1xuICAgIGxldCBmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3I6IGJvb2xlYW47XG4gICAgbGV0IGluY2x1ZGVDb250YWluczogYm9vbGVhbjtcblxuICAgIGlmIChmaWVsZHMgJiYgcHJvcGVydHlOYW1lKSB7XG4gICAgICBjb25zdCBzcmNGaWVsZCA9IGZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gcHJvcGVydHlOYW1lKTtcbiAgICAgIGFsbG93ZWRPcGVyYXRvcnMgPVxuICAgICAgICBzcmNGaWVsZCAmJiBzcmNGaWVsZC5hbGxvd2VkT3BlcmF0b3JzVHlwZVxuICAgICAgICAgID8gc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcbiAgICAgICAgICA6IGRlZmF1bHRPcGVyYXRvcnNUeXBlO1xuICAgIH1cblxuICAgIGlmIChmaWVsZHMpIHtcbiAgICAgIGZpZWxkcy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGlmICghZmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxsb3dlZE9wZXJhdG9yc1R5cGUgPSBmaWVsZC5hbGxvd2VkT3BlcmF0b3JzVHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYWxsb3dlZE9wZXJhdG9yc1R5cGUgPT09IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5BbGwudG9Mb3dlckNhc2UoKSB8fFxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PVxuICAgICAgICAgICAgT2djRmlsdGVyT3BlcmF0b3JUeXBlLlNwYXRpYWwudG9Mb3dlckNhc2UoKSB8fFxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PVxuICAgICAgICAgICAgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICkge1xuICAgICAgICAgIGZpZWxkc0hhc1NwYXRpYWxPcGVyYXRvciA9IHRydWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgYWxsb3dlZE9wZXJhdG9yc1R5cGUgPT09IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5BbGwudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaW5jbHVkZUNvbnRhaW5zID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGFsbG93ZWRPcGVyYXRvcnMgPSBhbGxvd2VkT3BlcmF0b3JzXG4gICAgICA/IGFsbG93ZWRPcGVyYXRvcnNcbiAgICAgIDogT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbDtcblxuICAgIHN3aXRjaCAoYWxsb3dlZE9wZXJhdG9ycy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5BbGw6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHRoaXMub3BlcmF0b3JzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLlNwYXRpYWw6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0c106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWNBbmRTcGF0aWFsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHNdOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbl06IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5UaW1lOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkR1cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY051bWVyaWNPcGVyYXRvcjpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW5dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW5PckVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW5dOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGRzSGFzU3BhdGlhbE9wZXJhdG9yKSB7XG4gICAgICAoZWZmZWN0aXZlT3BlcmF0b3JzIGFzIGFueSkuSW50ZXJzZWN0cyA9IHtcbiAgICAgICAgc3BhdGlhbDogdHJ1ZSxcbiAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgIH07XG4gICAgICAoZWZmZWN0aXZlT3BlcmF0b3JzIGFzIGFueSkuV2l0aGluID0geyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9O1xuICAgICAgaWYgKGluY2x1ZGVDb250YWlucykge1xuICAgICAgICAoZWZmZWN0aXZlT3BlcmF0b3JzIGFzIGFueSkuQ29udGFpbnMgPSB7XG4gICAgICAgICAgc3BhdGlhbDogdHJ1ZSxcbiAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlZmZlY3RpdmVPcGVyYXRvcnM7XG4gIH1cblxuICBwdWJsaWMgYWRkSW50ZXJmYWNlRmlsdGVyKFxuICAgIGlnb09nY0ZpbHRlck9iamVjdD8sXG4gICAgZ2VvbWV0cnlOYW1lPyxcbiAgICBsZXZlbCA9IDAsXG4gICAgcGFyZW50TG9naWNhbCA9ICdPcidcbiAgKTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyB7XG4gICAgaWYgKCFpZ29PZ2NGaWx0ZXJPYmplY3QpIHtcbiAgICAgIGlnb09nY0ZpbHRlck9iamVjdCA9IHsgb3BlcmF0b3I6ICdQcm9wZXJ0eUlzRXF1YWxUbycgfTtcbiAgICB9XG4gICAgY29uc3QgZiA9IHtcbiAgICAgIHByb3BlcnR5TmFtZTogJycsXG4gICAgICBvcGVyYXRvcjogJycsXG4gICAgICBhY3RpdmU6ICcnLFxuICAgICAgZmlsdGVyaWQ6IHV1aWQoKSxcbiAgICAgIHN0ZXA6ICcnLFxuICAgICAgYmVnaW46ICcnLFxuICAgICAgZW5kOiAnJyxcbiAgICAgIHNsaWRlck9wdGlvbnM6IHt9LFxuICAgICAgbG93ZXJCb3VuZGFyeTogJycsXG4gICAgICB1cHBlckJvdW5kYXJ5OiAnJyxcbiAgICAgIGV4cHJlc3Npb246ICcnLFxuICAgICAgcGF0dGVybjogJycsXG4gICAgICB3aWxkQ2FyZDogJyonLFxuICAgICAgc2luZ2xlQ2hhcjogJy4nLFxuICAgICAgZXNjYXBlQ2hhcjogJyEnLFxuICAgICAgbWF0Y2hDYXNlOiB0cnVlLFxuICAgICAgaWdvU3BhdGlhbFNlbGVjdG9yOiAnJyxcbiAgICAgIGlnb1NOUkM6ICcnLFxuICAgICAgZ2VvbWV0cnlOYW1lOiAnJyxcbiAgICAgIGdlb21ldHJ5OiAnJyxcbiAgICAgIHdrdF9nZW9tZXRyeTogJycsXG4gICAgICBleHRlbnQ6ICcnLFxuICAgICAgc3JzTmFtZTogJycsXG4gICAgICBwYXJlbnRMb2dpY2FsOiAnJyxcbiAgICAgIGxldmVsOiAwXG4gICAgfTtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgZixcbiAgICAgIHtcbiAgICAgICAgcGFyZW50TG9naWNhbCxcbiAgICAgICAgbGV2ZWwsXG4gICAgICAgIGdlb21ldHJ5TmFtZVxuICAgICAgfSxcbiAgICAgIGlnb09nY0ZpbHRlck9iamVjdFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICBwcm9qOiBvbFByb2plY3Rpb24sXG4gICAgYWN0aXZlID0gZmFsc2VcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyQXJyYXkgPSBbXTtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGZpbHRlckFycmF5LnB1c2goXG4gICAgICAgICAgdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgICAgICAgICAgcHJvaixcbiAgICAgICAgICAgIGFjdGl2ZVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZpbHRlckFycmF5O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdsb2dpY2FsJykpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAge30sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbG9naWNhbDogZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXG4gICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLmNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgICAgICAgICAgIGZpbHRlck9iamVjdC5maWx0ZXJzLFxuICAgICAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICAgICAgcHJvaixcbiAgICAgICAgICAgICAgYWN0aXZlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ29wZXJhdG9yJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmlsdGVyUHJvcGVydGllcyhcbiAgICAgICAgICBmaWx0ZXJPYmplY3QgYXMgT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyxcbiAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICBwcm9qLFxuICAgICAgICAgIGFjdGl2ZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRmlsdGVyUHJvcGVydGllcyhcbiAgICBpZ29PZ2NGaWx0ZXJPYmplY3Q6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXG4gICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgcHJvajogb2xQcm9qZWN0aW9uLFxuICAgIGFjdGl2ZSA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGZpbHRlcmlkID0gaWdvT2djRmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdmaWx0ZXJpZCcpXG4gICAgICA/IGlnb09nY0ZpbHRlck9iamVjdC5maWx0ZXJpZFxuICAgICAgOiB1dWlkKCk7XG4gICAgY29uc3Qgc3RhdHVzID0gaWdvT2djRmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdhY3RpdmUnKVxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3QuYWN0aXZlXG4gICAgICA6IGFjdGl2ZTtcblxuICAgIGNvbnN0IHNyc05hbWUgPSBpZ29PZ2NGaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ3Nyc05hbWUnKVxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3Quc3JzTmFtZVxuICAgICAgOiBwcm9qXG4gICAgICAgID8gcHJvai5nZXRDb2RlKClcbiAgICAgICAgOiAnRVBTRzozODU3JztcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGZpbHRlcmlkLFxuICAgICAgICBhY3RpdmU6IHN0YXR1cyxcbiAgICAgICAgaWdvU3BhdGlhbFNlbGVjdG9yOiAnZml4ZWRFeHRlbnQnLFxuICAgICAgICBzcnNOYW1lXG4gICAgICB9LFxuICAgICAgaWdvT2djRmlsdGVyT2JqZWN0LFxuICAgICAgeyBnZW9tZXRyeU5hbWU6IGZpZWxkTmFtZUdlb21ldHJ5IH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlYnVpbHRJZ29PZ2NGaWx0ZXJPYmplY3RGcm9tU2VxdWVuY2UoXG4gICAgc2VxdWVuY2U6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnNbXVxuICApOiBJZ29PZ2NGaWx0ZXJPYmplY3Qge1xuICAgIGlmIChzZXF1ZW5jZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBpZiAoc2VxdWVuY2UubGVuZ3RoID49IDEpIHtcbiAgICAgICAgbGV0IGxhc3RQYXJlbnRMb2dpY2FsID0gc2VxdWVuY2VbMF0ucGFyZW50TG9naWNhbDtcbiAgICAgICAgbGV0IG5leHRFbGVtZW50OiBhbnk7XG4gICAgICAgIGxldCBsb2dpY2FsQXJyYXkgPSBbXTtcbiAgICAgICAgbGV0IGxhc3RQcm9jZXNzZWRGaWx0ZXI7XG4gICAgICAgIHNlcXVlbmNlLmZvckVhY2goKHVpRmlsdGVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IE9iamVjdC5hc3NpZ24oe30sIHVpRmlsdGVyKTtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHNlcXVlbmNlLmluZGV4T2YodWlGaWx0ZXIpO1xuICAgICAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgc2VxdWVuY2UubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSBzZXF1ZW5jZVtpbmRleCArIDFdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LmFjdGl2ZTtcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5maWx0ZXJpZDtcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5wYXJlbnRMb2dpY2FsO1xuICAgICAgICAgIGxvZ2ljYWxBcnJheS5wdXNoKGVsZW1lbnQpO1xuXG4gICAgICAgICAgaWYgKHNlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgbGFzdFByb2Nlc3NlZEZpbHRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChsYXN0UGFyZW50TG9naWNhbCAhPT0gbmV4dEVsZW1lbnQucGFyZW50TG9naWNhbCkge1xuICAgICAgICAgICAgaWYgKGxvZ2ljYWxBcnJheS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgJ1lvdSBtdXN0IHNldCBhdCAnICtcbiAgICAgICAgICAgICAgICAgICdsZWFzdCB0d28gb3BlcmF0b3IgaW4gYSBsb2dpY2FsICgnICtcbiAgICAgICAgICAgICAgICAgIGxhc3RQYXJlbnRMb2dpY2FsICtcbiAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbGFzdFByb2Nlc3NlZEZpbHRlciA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgeyBsb2dpY2FsOiBsYXN0UGFyZW50TG9naWNhbCwgZmlsdGVyczogbG9naWNhbEFycmF5IH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgbG9naWNhbEFycmF5ID0gW2xhc3RQcm9jZXNzZWRGaWx0ZXJdO1xuICAgICAgICAgICAgICBsYXN0UGFyZW50TG9naWNhbCA9IG5leHRFbGVtZW50LnBhcmVudExvZ2ljYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGxhc3RQcm9jZXNzZWRGaWx0ZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUlnb1NlbGVjdG9yKHNlbGVjdG9yczogSWdvT2djU2VsZWN0b3IpOiBJZ29PZ2NTZWxlY3RvciB7XG4gICAgaWYgKFxuICAgICAgc2VsZWN0b3JzLmdyb3Vwcy5ldmVyeSgoZ3JvdXApID0+IGdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzICE9PSB1bmRlZmluZWQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gc2VsZWN0b3JzO1xuICAgIH1cbiAgICBsZXQgc2VsZWN0b3I6IElnb09nY1NlbGVjdG9yO1xuICAgIGlmIChzZWxlY3RvcnMuZ3JvdXBzICYmIHNlbGVjdG9ycy5idW5kbGVzKSB7XG4gICAgICBpZiAoIXNlbGVjdG9ycy5idW5kbGVzLmV2ZXJ5KChidW5kbGUpID0+IGJ1bmRsZS5pZCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IHNldCBhbiBpZCBmb3IgZWFjaCBvZiB5b3VyIGJ1bmRsZXMnKTtcbiAgICAgIH1cbiAgICAgIHNlbGVjdG9yID0gT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3JzKTtcbiAgICAgIHNlbGVjdG9yLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBncm91cC50aXRsZSA9IGdyb3VwLnRpdGxlID8gZ3JvdXAudGl0bGUgOiBncm91cC5uYW1lO1xuICAgICAgICBncm91cC5lbmFibGVkID0gZ3JvdXAuZW5hYmxlZCA/IGdyb3VwLmVuYWJsZWQgOiBmYWxzZTtcbiAgICAgICAgZ3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMgPSBPYmplY3RVdGlscy5jb3B5RGVlcChcbiAgICAgICAgICBzZWxlY3Rvci5idW5kbGVzLmZpbHRlcigoYikgPT4gZ3JvdXAuaWRzLmluY2x1ZGVzKGIuaWQpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICghc2VsZWN0b3JzLmdyb3VwcyAmJiBzZWxlY3RvcnMuYnVuZGxlcykge1xuICAgICAgc2VsZWN0b3IgPSBPYmplY3RVdGlscy5jb3B5RGVlcChzZWxlY3RvcnMpO1xuICAgICAgc2VsZWN0b3IuZ3JvdXBzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdncm91cDEnLFxuICAgICAgICAgIG5hbWU6ICdncm91cDEnLFxuICAgICAgICAgIGNvbXB1dGVkU2VsZWN0b3JzOiBPYmplY3RVdGlscy5jb3B5RGVlcChzZWxlY3Rvci5idW5kbGVzKVxuICAgICAgICB9IGFzIFNlbGVjdG9yR3JvdXBcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdG9yID0ge1xuICAgICAgICBidW5kbGVzOiBzZWxlY3RvcnMgYXMgYW55LFxuICAgICAgICBncm91cHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ2dyb3VwMScsXG4gICAgICAgICAgICBuYW1lOiAnZ3JvdXAxJyxcbiAgICAgICAgICAgIGNvbXB1dGVkU2VsZWN0b3JzOiBPYmplY3RVdGlscy5jb3B5RGVlcChcbiAgICAgICAgICAgICAgc2VsZWN0b3JzXG4gICAgICAgICAgICApIGFzIE9nY1NlbGVjdG9yQnVuZGxlW11cbiAgICAgICAgICB9IGFzIFNlbGVjdG9yR3JvdXBcbiAgICAgICAgXSxcbiAgICAgICAgc2VsZWN0b3JUeXBlOiBzZWxlY3Rvci5zZWxlY3RvclR5cGVcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICghc2VsZWN0b3IuZ3JvdXBzLmZpbmQoKHNlbGVjdG9yR3JvdXApID0+IHNlbGVjdG9yR3JvdXAuZW5hYmxlZCkpIHtcbiAgICAgIHNlbGVjdG9yLmdyb3Vwc1swXS5lbmFibGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZU9nY0ZpbHRlcnNBcHBsaWVkVmFsdWUoXG4gICAgb3B0aW9uczogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICAgIGZpZWxkTmFtZUdlb21ldHJ5OiBzdHJpbmcsXG4gICAgZXh0ZW50PzogRXh0ZW50LFxuICAgIHByb2o/OiBvbFByb2plY3Rpb25cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBvZ2NGaWx0ZXJzID0gb3B0aW9ucy5vZ2NGaWx0ZXJzO1xuICAgIGlmICghb2djRmlsdGVycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nU2VsZWN0b3IgPSAnJztcbiAgICBsZXQgZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnMgPSAnJztcbiAgICBpZiAoXG4gICAgICBvZ2NGaWx0ZXJzLmVuYWJsZWQgJiZcbiAgICAgIChvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnMuY2hlY2tib3hlcyB8fFxuICAgICAgICBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucyB8fFxuICAgICAgICBvZ2NGaWx0ZXJzLnNlbGVjdCB8fFxuICAgICAgICBvZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZSlcbiAgICApIHtcbiAgICAgIGxldCBzZWxlY3RvcnM7XG4gICAgICBpZiAob2djRmlsdGVycy5wdXNoQnV0dG9ucykge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zO1xuICAgICAgICBjb25zdCBwdXNoQ29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVycywgc2VsZWN0b3JzKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgcHVzaENvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9nY0ZpbHRlcnMuY2hlY2tib3hlcykge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLmNoZWNrYm94ZXM7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94Q29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIoXG4gICAgICAgICAgb2djRmlsdGVycyxcbiAgICAgICAgICBzZWxlY3RvcnNcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY2hlY2tib3hDb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucykge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucztcbiAgICAgICAgY29uc3Qgc2VsZWN0b3JzQ29yciA9IHRoaXMudmVyaWZ5TXVsdGlwbGVFbmFibGVkcyhzZWxlY3RvcnMpO1xuICAgICAgICBjb25zdCByYWRpb0NvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKFxuICAgICAgICAgIG9nY0ZpbHRlcnMsXG4gICAgICAgICAgc2VsZWN0b3JzQ29yclxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiByYWRpb0NvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9nY0ZpbHRlcnMuc2VsZWN0KSB7XG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMuc2VsZWN0O1xuICAgICAgICBjb25zdCBzZWxlY3RvcnNDb3JyID0gdGhpcy52ZXJpZnlNdWx0aXBsZUVuYWJsZWRzKHNlbGVjdG9ycyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKFxuICAgICAgICAgIG9nY0ZpbHRlcnMsXG4gICAgICAgICAgc2VsZWN0b3JzQ29yclxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBzZWxlY3RDb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZTtcbiAgICAgICAgY29uc3Qgc2VsZWN0Q29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIoXG4gICAgICAgICAgb2djRmlsdGVycyxcbiAgICAgICAgICBzZWxlY3RvcnNcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2Ygc2VsZWN0Q29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgb2djRmlsdGVycy5maWx0ZXJzICYmXG4gICAgICAgICdvcGVyYXRvcicgaW4gb2djRmlsdGVycy5maWx0ZXJzICYmXG4gICAgICAgIG9nY0ZpbHRlcnMuZmlsdGVycy5vcGVyYXRvci50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yLkR1cmluZy50b0xvd2VyQ2FzZSgpICYmXG4gICAgICAgIG9nY0ZpbHRlcnMuZmlsdGVycy5hY3RpdmUgJiZcbiAgICAgICAgb2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzPy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKG9nY0ZpbHRlcnMuaW50ZXJmYWNlT2djRmlsdGVyc1swXSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25kaXRpb25zLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nU2VsZWN0b3IgPSB0aGlzLmJ1aWxkRmlsdGVyKFxuICAgICAgICAgIGNvbmRpdGlvbnMubGVuZ3RoID09PSAxXG4gICAgICAgICAgICA/IGNvbmRpdGlvbnNbMF1cbiAgICAgICAgICAgIDogeyBsb2dpY2FsOiAnQW5kJywgZmlsdGVyczogY29uZGl0aW9ucyB9LFxuICAgICAgICAgIGV4dGVudCxcbiAgICAgICAgICBwcm9qLFxuICAgICAgICAgIG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvZ2NGaWx0ZXJzLmVuYWJsZWQgJiYgb2djRmlsdGVycy5maWx0ZXJzKSB7XG4gICAgICBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZSA9IG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lIHx8IGZpZWxkTmFtZUdlb21ldHJ5O1xuICAgICAgY29uc3QgaWdvRmlsdGVycyA9IG9nY0ZpbHRlcnMuZmlsdGVycztcbiAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nQWR2YW5jZWRGaWx0ZXJzID0gdGhpcy5idWlsZEZpbHRlcihcbiAgICAgICAgaWdvRmlsdGVycyxcbiAgICAgICAgZXh0ZW50LFxuICAgICAgICBwcm9qLFxuICAgICAgICBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgZmlsdGVyUXVlcnlTdHJpbmcgPSBvZ2NGaWx0ZXJzLmFkdmFuY2VkT2djRmlsdGVyc1xuICAgICAgPyBmaWx0ZXJRdWVyeVN0cmluZ0FkdmFuY2VkRmlsdGVyc1xuICAgICAgOiBmaWx0ZXJRdWVyeVN0cmluZ1NlbGVjdG9yO1xuICAgIGlmIChvcHRpb25zLnR5cGUgPT09ICd3bXMnKSB7XG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZyA9IHRoaXMuZm9ybWF0UHJvY2Vzc2VkT2djRmlsdGVyKFxuICAgICAgICBmaWx0ZXJRdWVyeVN0cmluZyxcbiAgICAgICAgKG9wdGlvbnMgYXMgYW55KS5wYXJhbXMuTEFZRVJTXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50eXBlID09PSAnd2ZzJykge1xuICAgICAgZmlsdGVyUXVlcnlTdHJpbmcgPSB0aGlzLmZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcbiAgICAgICAgZmlsdGVyUXVlcnlTdHJpbmcsXG4gICAgICAgIChvcHRpb25zIGFzIGFueSkucGFyYW1zLmZlYXR1cmVUeXBlc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyUXVlcnlTdHJpbmc7XG4gIH1cblxuICBwdWJsaWMgdmVyaWZ5TXVsdGlwbGVFbmFibGVkcyhzZWxlY3RvcnMpIHtcbiAgICBzZWxlY3RvcnMuYnVuZGxlcy5mb3JFYWNoKChidW5kbGUpID0+IHtcbiAgICAgIGlmICghYnVuZGxlLm11bHRpcGxlICYmIGJ1bmRsZS5zZWxlY3RvcnMpIHtcbiAgICAgICAgY29uc3QgZW5hYmxlZHMgPSBidW5kbGUuc2VsZWN0b3JzLnJlZHVjZShcbiAgICAgICAgICAobGlzdCwgZmlsdGVyLCBpbmRleCkgPT5cbiAgICAgICAgICAgIGZpbHRlci5lbmFibGVkID09PSB0cnVlID8gbGlzdC5jb25jYXQoaW5kZXgpIDogbGlzdCxcbiAgICAgICAgICBbXVxuICAgICAgICApO1xuICAgICAgICBpZiAoZW5hYmxlZHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGVuYWJsZWRzLnNwbGljZSgwLCAxKTtcbiAgICAgICAgICBlbmFibGVkcy5mb3JFYWNoKChpbmRleCkgPT4ge1xuICAgICAgICAgICAgYnVuZGxlLnNlbGVjdG9yc1tpbmRleF0uZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbGVjdG9ycztcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRHcm91cEFuZEZpbHRlcihvZ2NGaWx0ZXJzOiBPZ2NGaWx0ZXJzT3B0aW9ucywgc2VsZWN0b3JzKSB7XG4gICAgc2VsZWN0b3JzID0gdGhpcy5jb21wdXRlSWdvU2VsZWN0b3Ioc2VsZWN0b3JzKTtcbiAgICBjb25zdCBzZWxlY3RvckJ1bmRsZSA9IHNlbGVjdG9ycy5ncm91cHMuZmluZChcbiAgICAgIChnKSA9PiBnLmVuYWJsZWRcbiAgICApLmNvbXB1dGVkU2VsZWN0b3JzO1xuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBbXTtcbiAgICBzZWxlY3RvckJ1bmRsZS5tYXAoKGJ1bmRsZSkgPT4ge1xuICAgICAgY29uc3QgYnVuZGxlQ29uZGl0aW9uID0gW107XG4gICAgICBjb25zdCBzZWxlY3RvcnNUeXBlID0gYnVuZGxlLnNlbGVjdG9ycyBhcyBhbnk7XG4gICAgICBpZiAoIXNlbGVjdG9yc1R5cGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2VsZWN0b3JzVHlwZVxuICAgICAgICAuZmlsdGVyKChvZ2NzZWxlY3RvcikgPT4gb2djc2VsZWN0b3IuZW5hYmxlZCA9PT0gdHJ1ZSlcbiAgICAgICAgLmZvckVhY2goKGVuYWJsZWRTZWxlY3RvcikgPT5cbiAgICAgICAgICBidW5kbGVDb25kaXRpb24ucHVzaChlbmFibGVkU2VsZWN0b3IuZmlsdGVycylcbiAgICAgICAgKTtcbiAgICAgIGlmIChidW5kbGVDb25kaXRpb24ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaChidW5kbGVDb25kaXRpb25bMF0pO1xuICAgICAgfSBlbHNlIGlmIChidW5kbGVDb25kaXRpb24ubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25kaXRpb25zLnB1c2goe1xuICAgICAgICAgIGxvZ2ljYWw6IGJ1bmRsZS5sb2dpY2FsLFxuICAgICAgICAgIGZpbHRlcnM6IGJ1bmRsZUNvbmRpdGlvblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAncHVzaEJ1dHRvbicpIHtcbiAgICAgIG9nY0ZpbHRlcnMucHVzaEJ1dHRvbnMgPSBzZWxlY3RvcnM7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICBvZ2NGaWx0ZXJzLmNoZWNrYm94ZXMgPSBzZWxlY3RvcnM7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAncmFkaW9CdXR0b24nKSB7XG4gICAgICBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucyA9IHNlbGVjdG9ycztcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICBvZ2NGaWx0ZXJzLnNlbGVjdCA9IHNlbGVjdG9ycztcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICBvZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZSA9IHNlbGVjdG9ycztcbiAgICB9XG4gICAgcmV0dXJuIGNvbmRpdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0UHJvY2Vzc2VkT2djRmlsdGVyKFxuICAgIHByb2Nlc3NlZEZpbHRlcjogc3RyaW5nLFxuICAgIGxheWVyc09yVHlwZW5hbWVzOiBzdHJpbmdcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIXByb2Nlc3NlZEZpbHRlcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbGV0IGFwcGxpZWRGaWx0ZXIgPSAnJztcbiAgICBpZiAocHJvY2Vzc2VkRmlsdGVyLmxlbmd0aCA9PT0gMCAmJiBsYXllcnNPclR5cGVuYW1lcy5pbmRleE9mKCcsJykgPT09IC0xKSB7XG4gICAgICBhcHBsaWVkRmlsdGVyID0gcHJvY2Vzc2VkRmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXllcnNPclR5cGVuYW1lcy5zcGxpdCgnLCcpLmZvckVhY2goKCkgPT4ge1xuICAgICAgICBhcHBsaWVkRmlsdGVyID0gYCR7YXBwbGllZEZpbHRlcn0oJHtwcm9jZXNzZWRGaWx0ZXIucmVwbGFjZShcbiAgICAgICAgICAnZmlsdGVyPScsXG4gICAgICAgICAgJydcbiAgICAgICAgKX0pYDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBhcHBsaWVkRmlsdGVyID0gYXBwbGllZEZpbHRlci5yZXBsYWNlKC9cXChcXCkvZywgJycpO1xuICAgIGNvbnN0IGZpbHRlclZhbHVlID1cbiAgICAgIGFwcGxpZWRGaWx0ZXIubGVuZ3RoID4gMFxuICAgICAgICA/IGFwcGxpZWRGaWx0ZXIucmVwbGFjZSgnZmlsdGVyPScsICcnKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gZmlsdGVyVmFsdWU7XG4gIH1cblxuICBwdWJsaWMgcGFyc2VGaWx0ZXJPcHRpb25EYXRlKHZhbHVlOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnbm93JykgfHxcbiAgICAgIHZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3RvZGF5JylcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlRGF0ZU9wZXJhdGlvbih2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChtb21lbnQodmFsdWUpLmlzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogdGhpcyBmdW5jdGlvbiB0byBwYXJzZSBkYXRlIHdpdGggc3BlY2lmaWMgZm9ybWF0XG4gICAqIGV4ZW1wbGUgJ3RvZGF5ICsgMSBkYXlzJyBvciAnbm93ICsgMSB5ZWFycydcbiAgICogQHBhcmFtIHZhbHVlIHN0cmluZyBkYXRlXG4gICAqIEByZXR1cm5zIGRhdGVcbiAgICovXG4gIHByaXZhdGUgcGFyc2VEYXRlT3BlcmF0aW9uKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9wZXJhdGlvblNwbGl0dGVkID0gdmFsdWUudG9Mb3dlckNhc2UoKS5zcGxpdCgnICcpO1xuICAgIGNvbnN0IGxlZnRPcGVyYW5kID0gb3BlcmF0aW9uU3BsaXR0ZWRbMF07XG4gICAgY29uc3Qgb3BlcmF0b3IgPSBbJysnLCAnLSddLmluY2x1ZGVzKG9wZXJhdGlvblNwbGl0dGVkWzFdKVxuICAgICAgPyBvcGVyYXRpb25TcGxpdHRlZFsxXVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmlnaHRPcGVyYW5kID0gL15bMC05XSokLy50ZXN0KG9wZXJhdGlvblNwbGl0dGVkWzJdKVxuICAgICAgPyBvcGVyYXRpb25TcGxpdHRlZFsyXVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmlnaHRVbml0T3BlcmFuZCA9IChcbiAgICAgIFsneWVhcnMnLCAnbW9udGhzJywgJ3dlZWtzJywgJ2RheXMnLCAnaG91cnMnLCAnc2Vjb25kcyddLmluY2x1ZGVzKFxuICAgICAgICBvcGVyYXRpb25TcGxpdHRlZFszXVxuICAgICAgKVxuICAgICAgICA/IG9wZXJhdGlvblNwbGl0dGVkWzNdXG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgKSBhcyBtb21lbnQuRHVyYXRpb25JbnB1dEFyZzI7XG5cbiAgICBpZiAoIW9wZXJhdG9yIHx8ICFyaWdodFVuaXRPcGVyYW5kIHx8ICFyaWdodE9wZXJhbmQpIHtcbiAgICAgIHJldHVybiBsZWZ0T3BlcmFuZCA9PT0gJ25vdydcbiAgICAgICAgPyBtb21lbnQoKS5mb3JtYXQoKVxuICAgICAgICA6IG1vbWVudCgpLmVuZE9mKCdkYXknKS5mb3JtYXQoKTtcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0b3IgPT09ICcrJykge1xuICAgICAgcmV0dXJuIGxlZnRPcGVyYW5kID09PSAnbm93J1xuICAgICAgICA/IG1vbWVudCgpLmFkZChwYXJzZUludChyaWdodE9wZXJhbmQsIDEwKSwgcmlnaHRVbml0T3BlcmFuZCkuZm9ybWF0KClcbiAgICAgICAgOiBtb21lbnQoKVxuICAgICAgICAgICAgLmVuZE9mKCdkYXknKVxuICAgICAgICAgICAgLmFkZChwYXJzZUludChyaWdodE9wZXJhbmQsIDEwKSwgcmlnaHRVbml0T3BlcmFuZClcbiAgICAgICAgICAgIC5mb3JtYXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxlZnRPcGVyYW5kID09PSAnbm93J1xuICAgICAgICA/IG1vbWVudCgpXG4gICAgICAgICAgICAuc3VidHJhY3QocGFyc2VJbnQocmlnaHRPcGVyYW5kLCAxMCksIHJpZ2h0VW5pdE9wZXJhbmQpXG4gICAgICAgICAgICAuZm9ybWF0KClcbiAgICAgICAgOiBtb21lbnQoKVxuICAgICAgICAgICAgLmVuZE9mKCdkYXknKVxuICAgICAgICAgICAgLnN1YnRyYWN0KHBhcnNlSW50KHJpZ2h0T3BlcmFuZCwgMTApLCByaWdodFVuaXRPcGVyYW5kKVxuICAgICAgICAgICAgLmZvcm1hdCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
756
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHaEQsT0FBTyxXQUF1QyxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLFdBQVcsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxrQkFBa0IsQ0FBQztBQUk3QyxPQUFPLEVBQUUsT0FBTyxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUczQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWE3RSxNQUFNLE9BQU8sZUFBZTtJQUNsQixjQUFjLEdBQWdDLEVBQUUsQ0FBQztJQUNsRCxTQUFTLEdBQUc7UUFDakIsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBMkIsQ0FBQyxFQUFFO1lBQy9DLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLEVBQUU7U0FDbEI7UUFDRCxDQUFDLGlCQUFpQixDQUFDLG9CQUE4QixDQUFDLEVBQUU7WUFDbEQsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsRUFBRTtTQUNsQjtRQUNELENBQUMsaUJBQWlCLENBQUMsY0FBd0IsQ0FBQyxFQUFFO1lBQzVDLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO1NBQzFCO1FBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBK0IsQ0FBQyxFQUFFO1lBQ25ELE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO1NBQzFCO1FBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyw4QkFBd0MsQ0FBQyxFQUFFO1lBQzVE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WSxFQUFFLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO3FCQUN0RCxNQUFNLEVBQUU7Z0JBQ2IsQ0FBQyxDQUFDLE1BQU0sRUFBRTtxQkFDTCxLQUFLLENBQUMsS0FBSyxDQUFDO3FCQUNaLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO3FCQUN0RCxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG5pbXBvcnQgeyBPYmplY3RVdGlscywgdXVpZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHsgRXh0ZW50IH0gZnJvbSAnb2wvZXh0ZW50JztcbmltcG9ydCBvbEZvcm1hdFdGUywgeyBXcml0ZUdldEZlYXR1cmVPcHRpb25zIH0gZnJvbSAnb2wvZm9ybWF0L1dGUyc7XG5pbXBvcnQgb2xGb3JtYXRXS1QgZnJvbSAnb2wvZm9ybWF0L1dLVCc7XG5pbXBvcnQgKiBhcyBvbGZpbHRlciBmcm9tICdvbC9mb3JtYXQvZmlsdGVyJztcbmltcG9ydCBvbEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuXG5pbXBvcnQgeyBkZWZhdWx0IGFzIG1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9kYXRhc291cmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJPcGVyYXRvciwgT2djRmlsdGVyT3BlcmF0b3JUeXBlIH0gZnJvbSAnLi9vZ2MtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHtcbiAgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnMsXG4gIElnb09nY0ZpbHRlck9iamVjdCxcbiAgSWdvT2djU2VsZWN0b3IsXG4gIE9nY0ZpbHRlcixcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICBPZ2NGaWx0ZXJzT3B0aW9ucyxcbiAgT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyxcbiAgT2djU2VsZWN0b3JCdW5kbGUsXG4gIFNlbGVjdG9yR3JvdXBcbn0gZnJvbSAnLi9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJXcml0ZXIge1xuICBwcml2YXRlIGZpbHRlclNlcXVlbmNlOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW10gPSBbXTtcbiAgcHVibGljIG9wZXJhdG9ycyA9IHtcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZSBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnc3RyaW5nJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbiBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0JldHdlZW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nIGFzIHN0cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbiBhcyBzdHJpbmddOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zIGFzIHN0cmluZ106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICB9O1xuXG4gIGRlZmluZU9nY0ZpbHRlcnNEZWZhdWx0T3B0aW9ucyhcbiAgICBvZ2NGaWx0ZXJzT3B0aW9uczogT2djRmlsdGVyc09wdGlvbnMsXG4gICAgZmllbGROYW1lR2VvbWV0cnk6IHN0cmluZyxcbiAgICBzcmNUeXBlPzogc3RyaW5nXG4gICk6IE9nY0ZpbHRlcnNPcHRpb25zIHtcbiAgICBsZXQgb2djRmlsdGVyc0RlZmF1bHRWYWx1ZSA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWVzIGZvciB3ZnMuXG4gICAgaWYgKHNyY1R5cGUgJiYgc3JjVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucyA9IG9nY0ZpbHRlcnNPcHRpb25zIHx8IHt9O1xuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gb2djRmlsdGVyc0RlZmF1bHRWYWx1ZVxuICAgICAgICA6IG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQ7XG4gICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWVcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZTtcbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5nZW9tZXRyeU5hbWUgPSBmaWVsZE5hbWVHZW9tZXRyeTtcblxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmFkdmFuY2VkT2djRmlsdGVycyA9IHRydWU7XG4gICAgaWYgKFxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCAmJlxuICAgICAgKG9nY0ZpbHRlcnNPcHRpb25zLnB1c2hCdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLmNoZWNrYm94ZXMgfHxcbiAgICAgICAgb2djRmlsdGVyc09wdGlvbnMucmFkaW9CdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLnNlbGVjdCB8fFxuICAgICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hdXRvY29tcGxldGUpXG4gICAgKSB7XG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hZHZhbmNlZE9nY0ZpbHRlcnMgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9nY0ZpbHRlcnNPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkRmlsdGVyKFxuICAgIGZpbHRlcnM/OiBJZ29PZ2NGaWx0ZXJPYmplY3QsXG4gICAgZXh0ZW50PzogRXh0ZW50LFxuICAgIHByb2o/OiBvbFByb2plY3Rpb24sXG4gICAgZmllbGROYW1lR2VvbWV0cnk/OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApOiBzdHJpbmcge1xuICAgIGxldCBvdXJCYm94RmlsdGVyO1xuICAgIGxldCBlbmFibGVCYm94OiBib29sZWFuO1xuICAgIGlmICgvaW50ZXJzZWN0c3xjb250YWluc3x3aXRoaW4vZ2kudGVzdChKU09OLnN0cmluZ2lmeShmaWx0ZXJzKSkpIHtcbiAgICAgIGVuYWJsZUJib3ggPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5hYmxlQmJveCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBmaWVsZE5hbWVHZW9tZXRyeSA9XG4gICAgICAgIChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lXG4gICAgICAgICAgOiBmaWVsZE5hbWVHZW9tZXRyeTtcbiAgICB9XG4gICAgaWYgKGV4dGVudCAmJiBmaWx0ZXJzKSB7XG4gICAgICBvdXJCYm94RmlsdGVyID0gb2xmaWx0ZXIuYmJveChmaWVsZE5hbWVHZW9tZXRyeSwgZXh0ZW50LCBwcm9qLmdldENvZGUoKSk7XG4gICAgfVxuICAgIGxldCBmaWx0ZXJBc3NlbWJseTogT2djRmlsdGVyO1xuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBmaWx0ZXJzID0gdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgcHJvalxuICAgICAgKTtcbiAgICAgIGlmIChleHRlbnQgJiYgZW5hYmxlQmJveCkge1xuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IG9sZmlsdGVyLmFuZChcbiAgICAgICAgICBvdXJCYm94RmlsdGVyLFxuICAgICAgICAgIHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlcnMsIG9wdGlvbnMpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlcnMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZXh0ZW50ICYmIHByb2opIHtcbiAgICAgICAgcmV0dXJuICdiYm94PScgKyBleHRlbnQuam9pbignLCcpICsgJywnICsgcHJvai5nZXRDb2RlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHdmc09wdGlvbnM6IFdyaXRlR2V0RmVhdHVyZU9wdGlvbnMgPSB7XG4gICAgICBzcnNOYW1lOiAnJyxcbiAgICAgIGZlYXR1cmVOUzogJycsXG4gICAgICBmZWF0dXJlUHJlZml4OiAnJyxcbiAgICAgIGZlYXR1cmVUeXBlczogWydmZWF0dXJlVHlwZXMnXSxcbiAgICAgIGZpbHRlcjogZmlsdGVyQXNzZW1ibHksXG4gICAgICBvdXRwdXRGb3JtYXQ6ICcnLFxuICAgICAgZ2VvbWV0cnlOYW1lOiBmaWVsZE5hbWVHZW9tZXRyeVxuICAgIH07XG5cbiAgICBjb25zdCBxdWVyeSA9IG5ldyBvbEZvcm1hdFdGUygpLndyaXRlR2V0RmVhdHVyZSh3ZnNPcHRpb25zKTtcbiAgICBjb25zdCBzdHIgPSBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHF1ZXJ5KTtcbiAgICBjb25zdCByZWdleHAxID0gL3R5cGVuYW1lcyAqPXx0eXBlbmFtZSAqPVxcXCJmZWF0dXJlVHlwZXNcXFwiICo+L2dpO1xuICAgIGNvbnN0IHJlZ2V4cDIgPSAvPFxcL1F1ZXJ5PjxcXC9HZXRGZWF0dXJlPi9naTtcblxuICAgIHJldHVybiAnZmlsdGVyPScgKyBzdHIuc3BsaXQocmVnZXhwMSlbMV0uc3BsaXQocmVnZXhwMilbMF07XG4gIH1cblxuICBwcml2YXRlIGJ1bmRsZUZpbHRlcihcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG4gICkge1xuICAgIGlmIChmaWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgY29uc3QgbG9naWNhbEFycmF5ID0gW107XG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBsb2dpY2FsQXJyYXkucHVzaCh0aGlzLmJ1bmRsZUZpbHRlcihlbGVtZW50LCBvcHRpb25zKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsb2dpY2FsQXJyYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWx0ZXIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgb3BlcmF0b3I6IGZpbHRlck9iamVjdC5sb2dpY2FsLFxuICAgICAgICAgICAgbG9naWNhbEFycmF5OiB0aGlzLmJ1bmRsZUZpbHRlcihmaWx0ZXJPYmplY3QuZmlsdGVycywgb3B0aW9ucylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbHRlcihcbiAgICAgICAgICBmaWx0ZXJPYmplY3QgYXMgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnMsXG4gICAgICAgICAgb3B0aW9uc1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVyKFxuICAgIGZpbHRlck9wdGlvbnMsXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApOiBPZ2NGaWx0ZXIge1xuICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyT3B0aW9ucy5vcGVyYXRvcjtcbiAgICBjb25zdCBsb2dpY2FsQXJyYXkgPSBmaWx0ZXJPcHRpb25zLmxvZ2ljYWxBcnJheTtcblxuICAgIGNvbnN0IHdmc1Byb3BlcnR5TmFtZSA9IGZpbHRlck9wdGlvbnMucHJvcGVydHlOYW1lO1xuICAgIGNvbnN0IHdmc1BhdHRlcm4gPSBmaWx0ZXJPcHRpb25zLnBhdHRlcm47XG4gICAgY29uc3Qgd2ZzTWF0Y2hDYXNlID0gZmlsdGVyT3B0aW9ucy5tYXRjaENhc2VcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5tYXRjaENhc2VcbiAgICAgIDogdHJ1ZTtcbiAgICBjb25zdCB3ZnNXaWxkQ2FyZCA9IGZpbHRlck9wdGlvbnMud2lsZENhcmQgPyBmaWx0ZXJPcHRpb25zLndpbGRDYXJkIDogJyonO1xuICAgIGNvbnN0IHdmc1NpbmdsZUNoYXIgPSBmaWx0ZXJPcHRpb25zLnNpbmdsZUNoYXJcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5zaW5nbGVDaGFyXG4gICAgICA6ICcuJztcbiAgICBjb25zdCB3ZnNFc2NhcGVDaGFyID0gZmlsdGVyT3B0aW9ucy5lc2NhcGVDaGFyXG4gICAgICA/IGZpbHRlck9wdGlvbnMuZXNjYXBlQ2hhclxuICAgICAgOiAnISc7XG5cbiAgICBjb25zdCB3ZnNMb3dlckJvdW5kYXJ5ID0gZmlsdGVyT3B0aW9ucy5sb3dlckJvdW5kYXJ5O1xuICAgIGNvbnN0IHdmc1VwcGVyQm91bmRhcnkgPSBmaWx0ZXJPcHRpb25zLnVwcGVyQm91bmRhcnk7XG5cbiAgICBjb25zdCB3ZnNHZW9tZXRyeU5hbWUgPSBmaWx0ZXJPcHRpb25zLmdlb21ldHJ5TmFtZTtcbiAgICBjb25zdCB3ZnNFeHRlbnQgPSBmaWx0ZXJPcHRpb25zLmV4dGVudDtcbiAgICBjb25zdCB3ZnNXa3RHZW9tZXRyeSA9IGZpbHRlck9wdGlvbnMud2t0X2dlb21ldHJ5O1xuICAgIGNvbnN0IHdmc1Nyc05hbWUgPSBmaWx0ZXJPcHRpb25zLnNyc05hbWVcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5zcnNOYW1lXG4gICAgICA6ICdFUFNHOjM4NTcnO1xuXG4gICAgY29uc3Qgd2ZzQmVnaW4gPSB0aGlzLnBhcnNlRmlsdGVyT3B0aW9uRGF0ZShcbiAgICAgIGZpbHRlck9wdGlvbnMuYmVnaW4sXG4gICAgICBvcHRpb25zID8gb3B0aW9ucy5taW5EYXRlIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICBjb25zdCB3ZnNFbmQgPSB0aGlzLnBhcnNlRmlsdGVyT3B0aW9uRGF0ZShcbiAgICAgIGZpbHRlck9wdGlvbnMuZW5kLFxuICAgICAgb3B0aW9ucyA/IG9wdGlvbnMubWF4RGF0ZSA6IHVuZGVmaW5lZFxuICAgICk7XG5cbiAgICBjb25zdCB3ZnNFeHByZXNzaW9uID0gZmlsdGVyT3B0aW9ucy5leHByZXNzaW9uO1xuXG4gICAgbGV0IGdlb21ldHJ5OiBvbEdlb21ldHJ5O1xuICAgIGlmICh3ZnNXa3RHZW9tZXRyeSkge1xuICAgICAgY29uc3Qgd2t0ID0gbmV3IG9sRm9ybWF0V0tUKCk7XG4gICAgICBnZW9tZXRyeSA9IHdrdC5yZWFkR2VvbWV0cnkod2ZzV2t0R2VvbWV0cnksIHtcbiAgICAgICAgZGF0YVByb2plY3Rpb246IHdmc1Nyc05hbWUsXG4gICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lIHx8ICdFUFNHOjM4NTcnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKG9wZXJhdG9yLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQkJPWC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmJveCh3ZnNHZW9tZXRyeU5hbWUsIHdmc0V4dGVudCwgd2ZzU3JzTmFtZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNCZXR3ZWVuLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5iZXR3ZWVuKFxuICAgICAgICAgIHdmc1Byb3BlcnR5TmFtZSxcbiAgICAgICAgICB3ZnNMb3dlckJvdW5kYXJ5IHx8IDFlNDAgKiAtMSxcbiAgICAgICAgICB3ZnNVcHBlckJvdW5kYXJ5IHx8IDFlNDBcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQ29udGFpbnMudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmNvbnRhaW5zKHdmc0dlb21ldHJ5TmFtZSwgZ2VvbWV0cnksIHdmc1Nyc05hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmcudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmR1cmluZyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0JlZ2luLCB3ZnNFbmQpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24sIHdmc01hdGNoQ2FzZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbi50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZ3JlYXRlclRoYW4od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5ncmVhdGVyVGhhbk9yRXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5pbnRlcnNlY3RzKHdmc0dlb21ldHJ5TmFtZSwgZ2VvbWV0cnksIHdmc1Nyc05hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTnVsbC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuaXNOdWxsKHdmc1Byb3BlcnR5TmFtZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbi50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGVzc1RoYW4od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuT3JFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5sZXNzVGhhbk9yRXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGlrZShcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzUGF0dGVyblxuICAgICAgICAgICAgPyB3ZnNQYXR0ZXJuLnJlcGxhY2UoL1soKV9dL2dpLCB3ZnNTaW5nbGVDaGFyKVxuICAgICAgICAgICAgOiB3ZnNXaWxkQ2FyZCxcbiAgICAgICAgICB3ZnNXaWxkQ2FyZCxcbiAgICAgICAgICB3ZnNTaW5nbGVDaGFyLFxuICAgICAgICAgIHdmc0VzY2FwZUNoYXIsXG4gICAgICAgICAgd2ZzTWF0Y2hDYXNlXG4gICAgICAgICk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5ub3RFcXVhbFRvKFxuICAgICAgICAgIHdmc1Byb3BlcnR5TmFtZSxcbiAgICAgICAgICB3ZnNFeHByZXNzaW9uLFxuICAgICAgICAgIHdmc01hdGNoQ2FzZVxuICAgICAgICApO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLndpdGhpbih3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcbiAgICAgIC8vIExPR0lDQUxcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQW5kLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5hbmQuYXBwbHkobnVsbCwgbG9naWNhbEFycmF5KTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuT3IudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm9yLmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLk5vdC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubm90LmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlZmluZUludGVyZmFjZUZpbHRlclNlcXVlbmNlKFxuICAgIGZpbHRlck9iamVjdDogYW55LFxuICAgIGdlb21ldHJ5TmFtZSxcbiAgICBsb2dpY2FsID0gJycsXG4gICAgbGV2ZWwgPSAtMVxuICApOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW10ge1xuICAgIGlmIChmaWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgZmlsdGVyT2JqZWN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5jb25jYXQoXG4gICAgICAgICAgdGhpcy5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBnZW9tZXRyeU5hbWUsXG4gICAgICAgICAgICBsb2dpY2FsLFxuICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XG4gICAgICAgIGxldmVsID0gbGV2ZWwgKyAxO1xuICAgICAgICB0aGlzLmZpbHRlclNlcXVlbmNlLmNvbmNhdChcbiAgICAgICAgICB0aGlzLmRlZmluZUludGVyZmFjZUZpbHRlclNlcXVlbmNlKFxuICAgICAgICAgICAgZmlsdGVyT2JqZWN0LmZpbHRlcnMsXG4gICAgICAgICAgICBnZW9tZXRyeU5hbWUsXG4gICAgICAgICAgICBmaWx0ZXJPYmplY3QubG9naWNhbCxcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ29wZXJhdG9yJykpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5wdXNoKFxuICAgICAgICAgIHRoaXMuYWRkSW50ZXJmYWNlRmlsdGVyKGZpbHRlck9iamVjdCwgZ2VvbWV0cnlOYW1lLCBsZXZlbCwgbG9naWNhbClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyU2VxdWVuY2U7XG4gIH1cblxuICBwdWJsaWMgY29tcHV0ZUFsbG93ZWRPcGVyYXRvcnMoXG4gICAgZmllbGRzPzogU291cmNlRmllbGRzT3B0aW9uc1BhcmFtc1tdLFxuICAgIHByb3BlcnR5TmFtZT86IHN0cmluZyxcbiAgICBkZWZhdWx0T3BlcmF0b3JzVHlwZT86IE9nY0ZpbHRlck9wZXJhdG9yVHlwZVxuICApIHtcbiAgICBsZXQgZWZmZWN0aXZlT3BlcmF0b3JzID0ge307XG4gICAgbGV0IGFsbG93ZWRPcGVyYXRvcnM7XG4gICAgbGV0IGZpZWxkc0hhc1NwYXRpYWxPcGVyYXRvcjogYm9vbGVhbjtcbiAgICBsZXQgaW5jbHVkZUNvbnRhaW5zOiBib29sZWFuO1xuXG4gICAgaWYgKGZpZWxkcyAmJiBwcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGNvbnN0IHNyY0ZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBwcm9wZXJ0eU5hbWUpO1xuICAgICAgYWxsb3dlZE9wZXJhdG9ycyA9XG4gICAgICAgIHNyY0ZpZWxkICYmIHNyY0ZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlXG4gICAgICAgICAgPyBzcmNGaWVsZC5hbGxvd2VkT3BlcmF0b3JzVHlwZVxuICAgICAgICAgIDogZGVmYXVsdE9wZXJhdG9yc1R5cGU7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkcykge1xuICAgICAgZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgaWYgKCFmaWVsZC5hbGxvd2VkT3BlcmF0b3JzVHlwZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9IGZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT0gT2djRmlsdGVyT3BlcmF0b3JUeXBlLkFsbC50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICAgICAgYWxsb3dlZE9wZXJhdG9yc1R5cGUgPT09XG4gICAgICAgICAgICBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuU3BhdGlhbC50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICAgICAgYWxsb3dlZE9wZXJhdG9yc1R5cGUgPT09XG4gICAgICAgICAgICBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWNBbmRTcGF0aWFsLnRvTG93ZXJDYXNlKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZmllbGRzSGFzU3BhdGlhbE9wZXJhdG9yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT0gT2djRmlsdGVyT3BlcmF0b3JUeXBlLkFsbC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpbmNsdWRlQ29udGFpbnMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWxsb3dlZE9wZXJhdG9ycyA9IGFsbG93ZWRPcGVyYXRvcnNcbiAgICAgID8gYWxsb3dlZE9wZXJhdG9yc1xuICAgICAgOiBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWNBbmRTcGF0aWFsO1xuXG4gICAgc3dpdGNoIChhbGxvd2VkT3BlcmF0b3JzLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkFsbDpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0gdGhpcy5vcGVyYXRvcnM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuU3BhdGlhbDpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW5dOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWw6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0c106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWM6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLlRpbWU6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nXTogeyBzcGF0aWFsOiBmYWxzZSwgZmllbGRSZXN0cmljdDogW10gfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljTnVtZXJpY09wZXJhdG9yOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbl06IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbk9yRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbl06IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHNdOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbl06IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGlmIChmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3IpIHtcbiAgICAgIChlZmZlY3RpdmVPcGVyYXRvcnMgYXMgYW55KS5JbnRlcnNlY3RzID0ge1xuICAgICAgICBzcGF0aWFsOiB0cnVlLFxuICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgfTtcbiAgICAgIChlZmZlY3RpdmVPcGVyYXRvcnMgYXMgYW55KS5XaXRoaW4gPSB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH07XG4gICAgICBpZiAoaW5jbHVkZUNvbnRhaW5zKSB7XG4gICAgICAgIChlZmZlY3RpdmVPcGVyYXRvcnMgYXMgYW55KS5Db250YWlucyA9IHtcbiAgICAgICAgICBzcGF0aWFsOiB0cnVlLFxuICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVmZmVjdGl2ZU9wZXJhdG9ycztcbiAgfVxuXG4gIHB1YmxpYyBhZGRJbnRlcmZhY2VGaWx0ZXIoXG4gICAgaWdvT2djRmlsdGVyT2JqZWN0PyxcbiAgICBnZW9tZXRyeU5hbWU/LFxuICAgIGxldmVsID0gMCxcbiAgICBwYXJlbnRMb2dpY2FsID0gJ09yJ1xuICApOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zIHtcbiAgICBpZiAoIWlnb09nY0ZpbHRlck9iamVjdCkge1xuICAgICAgaWdvT2djRmlsdGVyT2JqZWN0ID0geyBvcGVyYXRvcjogJ1Byb3BlcnR5SXNFcXVhbFRvJyB9O1xuICAgIH1cbiAgICBjb25zdCBmID0ge1xuICAgICAgcHJvcGVydHlOYW1lOiAnJyxcbiAgICAgIG9wZXJhdG9yOiAnJyxcbiAgICAgIGFjdGl2ZTogJycsXG4gICAgICBmaWx0ZXJpZDogdXVpZCgpLFxuICAgICAgc3RlcDogJycsXG4gICAgICBiZWdpbjogJycsXG4gICAgICBlbmQ6ICcnLFxuICAgICAgc2xpZGVyT3B0aW9uczoge30sXG4gICAgICBsb3dlckJvdW5kYXJ5OiAnJyxcbiAgICAgIHVwcGVyQm91bmRhcnk6ICcnLFxuICAgICAgZXhwcmVzc2lvbjogJycsXG4gICAgICBwYXR0ZXJuOiAnJyxcbiAgICAgIHdpbGRDYXJkOiAnKicsXG4gICAgICBzaW5nbGVDaGFyOiAnLicsXG4gICAgICBlc2NhcGVDaGFyOiAnIScsXG4gICAgICBtYXRjaENhc2U6IHRydWUsXG4gICAgICBpZ29TcGF0aWFsU2VsZWN0b3I6ICcnLFxuICAgICAgaWdvU05SQzogJycsXG4gICAgICBnZW9tZXRyeU5hbWU6ICcnLFxuICAgICAgZ2VvbWV0cnk6ICcnLFxuICAgICAgd2t0X2dlb21ldHJ5OiAnJyxcbiAgICAgIGV4dGVudDogJycsXG4gICAgICBzcnNOYW1lOiAnJyxcbiAgICAgIHBhcmVudExvZ2ljYWw6ICcnLFxuICAgICAgbGV2ZWw6IDBcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICBmLFxuICAgICAge1xuICAgICAgICBwYXJlbnRMb2dpY2FsLFxuICAgICAgICBsZXZlbCxcbiAgICAgICAgZ2VvbWV0cnlOYW1lXG4gICAgICB9LFxuICAgICAgaWdvT2djRmlsdGVyT2JqZWN0XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgIGZpbHRlck9iamVjdDogYW55LFxuICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgIHByb2o6IG9sUHJvamVjdGlvbixcbiAgICBhY3RpdmUgPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJBcnJheSA9IFtdO1xuICAgIGlmIChmaWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgZmlsdGVyT2JqZWN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgZmlsdGVyQXJyYXkucHVzaChcbiAgICAgICAgICB0aGlzLmNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgICBwcm9qLFxuICAgICAgICAgICAgYWN0aXZlXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmlsdGVyQXJyYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsb2dpY2FsOiBmaWx0ZXJPYmplY3QubG9naWNhbCxcbiAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMuY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcbiAgICAgICAgICAgICAgZmlsdGVyT2JqZWN0LmZpbHRlcnMsXG4gICAgICAgICAgICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgICAgICAgICAgICBwcm9qLFxuICAgICAgICAgICAgICBhY3RpdmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJQcm9wZXJ0aWVzKFxuICAgICAgICAgIGZpbHRlck9iamVjdCBhcyBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zLFxuICAgICAgICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgICAgICAgIHByb2osXG4gICAgICAgICAgYWN0aXZlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRGaWx0ZXJQcm9wZXJ0aWVzKFxuICAgIGlnb09nY0ZpbHRlck9iamVjdDogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyxcbiAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICBwcm9qOiBvbFByb2plY3Rpb24sXG4gICAgYWN0aXZlID0gZmFsc2VcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyaWQgPSBpZ29PZ2NGaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2ZpbHRlcmlkJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LmZpbHRlcmlkXG4gICAgICA6IHV1aWQoKTtcbiAgICBjb25zdCBzdGF0dXMgPSBpZ29PZ2NGaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2FjdGl2ZScpXG4gICAgICA/IGlnb09nY0ZpbHRlck9iamVjdC5hY3RpdmVcbiAgICAgIDogYWN0aXZlO1xuXG4gICAgY29uc3Qgc3JzTmFtZSA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnc3JzTmFtZScpXG4gICAgICA/IGlnb09nY0ZpbHRlck9iamVjdC5zcnNOYW1lXG4gICAgICA6IHByb2pcbiAgICAgICAgPyBwcm9qLmdldENvZGUoKVxuICAgICAgICA6ICdFUFNHOjM4NTcnO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZmlsdGVyaWQsXG4gICAgICAgIGFjdGl2ZTogc3RhdHVzLFxuICAgICAgICBpZ29TcGF0aWFsU2VsZWN0b3I6ICdmaXhlZEV4dGVudCcsXG4gICAgICAgIHNyc05hbWVcbiAgICAgIH0sXG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3QsXG4gICAgICB7IGdlb21ldHJ5TmFtZTogZmllbGROYW1lR2VvbWV0cnkgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVidWlsdElnb09nY0ZpbHRlck9iamVjdEZyb21TZXF1ZW5jZShcbiAgICBzZXF1ZW5jZTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdXG4gICk6IElnb09nY0ZpbHRlck9iamVjdCB7XG4gICAgaWYgKHNlcXVlbmNlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGlmIChzZXF1ZW5jZS5sZW5ndGggPj0gMSkge1xuICAgICAgICBsZXQgbGFzdFBhcmVudExvZ2ljYWwgPSBzZXF1ZW5jZVswXS5wYXJlbnRMb2dpY2FsO1xuICAgICAgICBsZXQgbmV4dEVsZW1lbnQ6IGFueTtcbiAgICAgICAgbGV0IGxvZ2ljYWxBcnJheSA9IFtdO1xuICAgICAgICBsZXQgbGFzdFByb2Nlc3NlZEZpbHRlcjtcbiAgICAgICAgc2VxdWVuY2UuZm9yRWFjaCgodWlGaWx0ZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgdWlGaWx0ZXIpO1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gc2VxdWVuY2UuaW5kZXhPZih1aUZpbHRlcik7XG4gICAgICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCBzZXF1ZW5jZS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBuZXh0RWxlbWVudCA9IHNlcXVlbmNlW2luZGV4ICsgMV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuYWN0aXZlO1xuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LmZpbHRlcmlkO1xuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LnBhcmVudExvZ2ljYWw7XG4gICAgICAgICAgbG9naWNhbEFycmF5LnB1c2goZWxlbWVudCk7XG5cbiAgICAgICAgICBpZiAoc2VxdWVuY2UubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBsYXN0UHJvY2Vzc2VkRmlsdGVyID0gZWxlbWVudDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RQYXJlbnRMb2dpY2FsICE9PSBuZXh0RWxlbWVudC5wYXJlbnRMb2dpY2FsKSB7XG4gICAgICAgICAgICBpZiAobG9naWNhbEFycmF5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAnWW91IG11c3Qgc2V0IGF0ICcgK1xuICAgICAgICAgICAgICAgICAgJ2xlYXN0IHR3byBvcGVyYXRvciBpbiBhIGxvZ2ljYWwgKCcgK1xuICAgICAgICAgICAgICAgICAgbGFzdFBhcmVudExvZ2ljYWwgK1xuICAgICAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsYXN0UHJvY2Vzc2VkRmlsdGVyID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICB7IGxvZ2ljYWw6IGxhc3RQYXJlbnRMb2dpY2FsLCBmaWx0ZXJzOiBsb2dpY2FsQXJyYXkgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBsb2dpY2FsQXJyYXkgPSBbbGFzdFByb2Nlc3NlZEZpbHRlcl07XG4gICAgICAgICAgICAgIGxhc3RQYXJlbnRMb2dpY2FsID0gbmV4dEVsZW1lbnQucGFyZW50TG9naWNhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbGFzdFByb2Nlc3NlZEZpbHRlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb21wdXRlSWdvU2VsZWN0b3Ioc2VsZWN0b3JzOiBJZ29PZ2NTZWxlY3Rvcik6IElnb09nY1NlbGVjdG9yIHtcbiAgICBpZiAoXG4gICAgICBzZWxlY3RvcnMuZ3JvdXBzLmV2ZXJ5KChncm91cCkgPT4gZ3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMgIT09IHVuZGVmaW5lZClcbiAgICApIHtcbiAgICAgIHJldHVybiBzZWxlY3RvcnM7XG4gICAgfVxuICAgIGxldCBzZWxlY3RvcjogSWdvT2djU2VsZWN0b3I7XG4gICAgaWYgKHNlbGVjdG9ycy5ncm91cHMgJiYgc2VsZWN0b3JzLmJ1bmRsZXMpIHtcbiAgICAgIGlmICghc2VsZWN0b3JzLmJ1bmRsZXMuZXZlcnkoKGJ1bmRsZSkgPT4gYnVuZGxlLmlkICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3Qgc2V0IGFuIGlkIGZvciBlYWNoIG9mIHlvdXIgYnVuZGxlcycpO1xuICAgICAgfVxuICAgICAgc2VsZWN0b3IgPSBPYmplY3RVdGlscy5jb3B5RGVlcChzZWxlY3RvcnMpO1xuICAgICAgc2VsZWN0b3IuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIGdyb3VwLnRpdGxlID0gZ3JvdXAudGl0bGUgPyBncm91cC50aXRsZSA6IGdyb3VwLm5hbWU7XG4gICAgICAgIGdyb3VwLmVuYWJsZWQgPSBncm91cC5lbmFibGVkID8gZ3JvdXAuZW5hYmxlZCA6IGZhbHNlO1xuICAgICAgICBncm91cC5jb21wdXRlZFNlbGVjdG9ycyA9IE9iamVjdFV0aWxzLmNvcHlEZWVwKFxuICAgICAgICAgIHNlbGVjdG9yLmJ1bmRsZXMuZmlsdGVyKChiKSA9PiBncm91cC5pZHMuaW5jbHVkZXMoYi5pZCkpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCFzZWxlY3RvcnMuZ3JvdXBzICYmIHNlbGVjdG9ycy5idW5kbGVzKSB7XG4gICAgICBzZWxlY3RvciA9IE9iamVjdFV0aWxzLmNvcHlEZWVwKHNlbGVjdG9ycyk7XG4gICAgICBzZWxlY3Rvci5ncm91cHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ2dyb3VwMScsXG4gICAgICAgICAgbmFtZTogJ2dyb3VwMScsXG4gICAgICAgICAgY29tcHV0ZWRTZWxlY3RvcnM6IE9iamVjdFV0aWxzLmNvcHlEZWVwKHNlbGVjdG9yLmJ1bmRsZXMpXG4gICAgICAgIH0gYXMgU2VsZWN0b3JHcm91cFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0b3IgPSB7XG4gICAgICAgIGJ1bmRsZXM6IHNlbGVjdG9ycyBhcyBhbnksXG4gICAgICAgIGdyb3VwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnZ3JvdXAxJyxcbiAgICAgICAgICAgIG5hbWU6ICdncm91cDEnLFxuICAgICAgICAgICAgY29tcHV0ZWRTZWxlY3RvcnM6IE9iamVjdFV0aWxzLmNvcHlEZWVwKFxuICAgICAgICAgICAgICBzZWxlY3RvcnNcbiAgICAgICAgICAgICkgYXMgT2djU2VsZWN0b3JCdW5kbGVbXVxuICAgICAgICAgIH0gYXMgU2VsZWN0b3JHcm91cFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RvclR5cGU6IHNlbGVjdG9yLnNlbGVjdG9yVHlwZVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKCFzZWxlY3Rvci5ncm91cHMuZmluZCgoc2VsZWN0b3JHcm91cCkgPT4gc2VsZWN0b3JHcm91cC5lbmFibGVkKSkge1xuICAgICAgc2VsZWN0b3IuZ3JvdXBzWzBdLmVuYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0b3I7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlT2djRmlsdGVyc0FwcGxpZWRWYWx1ZShcbiAgICBvcHRpb25zOiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgZmllbGROYW1lR2VvbWV0cnk6IHN0cmluZyxcbiAgICBleHRlbnQ/OiBFeHRlbnQsXG4gICAgcHJvaj86IG9sUHJvamVjdGlvblxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IG9nY0ZpbHRlcnMgPSBvcHRpb25zLm9nY0ZpbHRlcnM7XG4gICAgaWYgKCFvZ2NGaWx0ZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBbXTtcbiAgICBsZXQgZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvciA9ICcnO1xuICAgIGxldCBmaWx0ZXJRdWVyeVN0cmluZ0FkdmFuY2VkRmlsdGVycyA9ICcnO1xuICAgIGlmIChcbiAgICAgIG9nY0ZpbHRlcnMuZW5hYmxlZCAmJlxuICAgICAgKG9nY0ZpbHRlcnMucHVzaEJ1dHRvbnMgfHxcbiAgICAgICAgb2djRmlsdGVycy5jaGVja2JveGVzIHx8XG4gICAgICAgIG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnMuc2VsZWN0IHx8XG4gICAgICAgIG9nY0ZpbHRlcnMuYXV0b2NvbXBsZXRlKVxuICAgICkge1xuICAgICAgbGV0IHNlbGVjdG9ycztcbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zKSB7XG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMucHVzaEJ1dHRvbnM7XG4gICAgICAgIGNvbnN0IHB1c2hDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihvZ2NGaWx0ZXJzLCBzZWxlY3RvcnMpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBwdXNoQ29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2djRmlsdGVycy5jaGVja2JveGVzKSB7XG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMuY2hlY2tib3hlcztcbiAgICAgICAgY29uc3QgY2hlY2tib3hDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihcbiAgICAgICAgICBvZ2NGaWx0ZXJzLFxuICAgICAgICAgIHNlbGVjdG9yc1xuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBjaGVja2JveENvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zKSB7XG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zO1xuICAgICAgICBjb25zdCBzZWxlY3RvcnNDb3JyID0gdGhpcy52ZXJpZnlNdWx0aXBsZUVuYWJsZWRzKHNlbGVjdG9ycyk7XG4gICAgICAgIGNvbnN0IHJhZGlvQ29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIoXG4gICAgICAgICAgb2djRmlsdGVycyxcbiAgICAgICAgICBzZWxlY3RvcnNDb3JyXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHJhZGlvQ29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2djRmlsdGVycy5zZWxlY3QpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5zZWxlY3Q7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yc0NvcnIgPSB0aGlzLnZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0Q29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIoXG4gICAgICAgICAgb2djRmlsdGVycyxcbiAgICAgICAgICBzZWxlY3RvcnNDb3JyXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHNlbGVjdENvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9nY0ZpbHRlcnMuYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMuYXV0b2NvbXBsZXRlO1xuICAgICAgICBjb25zdCBzZWxlY3RDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihcbiAgICAgICAgICBvZ2NGaWx0ZXJzLFxuICAgICAgICAgIHNlbGVjdG9yc1xuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBzZWxlY3RDb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBvZ2NGaWx0ZXJzLmZpbHRlcnMgJiZcbiAgICAgICAgJ29wZXJhdG9yJyBpbiBvZ2NGaWx0ZXJzLmZpbHRlcnMgJiZcbiAgICAgICAgb2djRmlsdGVycy5maWx0ZXJzLm9wZXJhdG9yLnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nLnRvTG93ZXJDYXNlKCkgJiZcbiAgICAgICAgb2djRmlsdGVycy5maWx0ZXJzLmFjdGl2ZSAmJlxuICAgICAgICBvZ2NGaWx0ZXJzLmludGVyZmFjZU9nY0ZpbHRlcnM/Lmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICBjb25kaXRpb25zLnB1c2gob2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzWzBdKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmRpdGlvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvciA9IHRoaXMuYnVpbGRGaWx0ZXIoXG4gICAgICAgICAgY29uZGl0aW9ucy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgID8gY29uZGl0aW9uc1swXVxuICAgICAgICAgICAgOiB7IGxvZ2ljYWw6ICdBbmQnLCBmaWx0ZXJzOiBjb25kaXRpb25zIH0sXG4gICAgICAgICAgZXh0ZW50LFxuICAgICAgICAgIHByb2osXG4gICAgICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9nY0ZpbHRlcnMuZW5hYmxlZCAmJiBvZ2NGaWx0ZXJzLmZpbHRlcnMpIHtcbiAgICAgIG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lID0gb2djRmlsdGVycy5nZW9tZXRyeU5hbWUgfHwgZmllbGROYW1lR2VvbWV0cnk7XG4gICAgICBjb25zdCBpZ29GaWx0ZXJzID0gb2djRmlsdGVycy5maWx0ZXJzO1xuICAgICAgZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnMgPSB0aGlzLmJ1aWxkRmlsdGVyKFxuICAgICAgICBpZ29GaWx0ZXJzLFxuICAgICAgICBleHRlbnQsXG4gICAgICAgIHByb2osXG4gICAgICAgIG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lLFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBmaWx0ZXJRdWVyeVN0cmluZyA9IG9nY0ZpbHRlcnMuYWR2YW5jZWRPZ2NGaWx0ZXJzXG4gICAgICA/IGZpbHRlclF1ZXJ5U3RyaW5nQWR2YW5jZWRGaWx0ZXJzXG4gICAgICA6IGZpbHRlclF1ZXJ5U3RyaW5nU2VsZWN0b3I7XG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nID0gdGhpcy5mb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nLFxuICAgICAgICAob3B0aW9ucyBhcyBhbnkpLnBhcmFtcy5MQVlFUlNcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnR5cGUgPT09ICd3ZnMnKSB7XG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZyA9IHRoaXMuZm9ybWF0UHJvY2Vzc2VkT2djRmlsdGVyKFxuICAgICAgICBmaWx0ZXJRdWVyeVN0cmluZyxcbiAgICAgICAgKG9wdGlvbnMgYXMgYW55KS5wYXJhbXMuZmVhdHVyZVR5cGVzXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJRdWVyeVN0cmluZztcbiAgfVxuXG4gIHB1YmxpYyB2ZXJpZnlNdWx0aXBsZUVuYWJsZWRzKHNlbGVjdG9ycykge1xuICAgIHNlbGVjdG9ycy5idW5kbGVzLmZvckVhY2goKGJ1bmRsZSkgPT4ge1xuICAgICAgaWYgKCFidW5kbGUubXVsdGlwbGUgJiYgYnVuZGxlLnNlbGVjdG9ycykge1xuICAgICAgICBjb25zdCBlbmFibGVkcyA9IGJ1bmRsZS5zZWxlY3RvcnMucmVkdWNlKFxuICAgICAgICAgIChsaXN0LCBmaWx0ZXIsIGluZGV4KSA9PlxuICAgICAgICAgICAgZmlsdGVyLmVuYWJsZWQgPT09IHRydWUgPyBsaXN0LmNvbmNhdChpbmRleCkgOiBsaXN0LFxuICAgICAgICAgIFtdXG4gICAgICAgICk7XG4gICAgICAgIGlmIChlbmFibGVkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgZW5hYmxlZHMuc3BsaWNlKDAsIDEpO1xuICAgICAgICAgIGVuYWJsZWRzLmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgICAgICAgICBidW5kbGUuc2VsZWN0b3JzW2luZGV4XS5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZWN0b3JzO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnM6IE9nY0ZpbHRlcnNPcHRpb25zLCBzZWxlY3RvcnMpIHtcbiAgICBzZWxlY3RvcnMgPSB0aGlzLmNvbXB1dGVJZ29TZWxlY3RvcihzZWxlY3RvcnMpO1xuICAgIGNvbnN0IHNlbGVjdG9yQnVuZGxlID0gc2VsZWN0b3JzLmdyb3Vwcy5maW5kKFxuICAgICAgKGcpID0+IGcuZW5hYmxlZFxuICAgICkuY29tcHV0ZWRTZWxlY3RvcnM7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgIHNlbGVjdG9yQnVuZGxlLm1hcCgoYnVuZGxlKSA9PiB7XG4gICAgICBjb25zdCBidW5kbGVDb25kaXRpb24gPSBbXTtcbiAgICAgIGNvbnN0IHNlbGVjdG9yc1R5cGUgPSBidW5kbGUuc2VsZWN0b3JzIGFzIGFueTtcbiAgICAgIGlmICghc2VsZWN0b3JzVHlwZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZWxlY3RvcnNUeXBlXG4gICAgICAgIC5maWx0ZXIoKG9nY3NlbGVjdG9yKSA9PiBvZ2NzZWxlY3Rvci5lbmFibGVkID09PSB0cnVlKVxuICAgICAgICAuZm9yRWFjaCgoZW5hYmxlZFNlbGVjdG9yKSA9PlxuICAgICAgICAgIGJ1bmRsZUNvbmRpdGlvbi5wdXNoKGVuYWJsZWRTZWxlY3Rvci5maWx0ZXJzKVxuICAgICAgICApO1xuICAgICAgaWYgKGJ1bmRsZUNvbmRpdGlvbi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKGJ1bmRsZUNvbmRpdGlvblswXSk7XG4gICAgICB9IGVsc2UgaWYgKGJ1bmRsZUNvbmRpdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgbG9naWNhbDogYnVuZGxlLmxvZ2ljYWwsXG4gICAgICAgICAgZmlsdGVyczogYnVuZGxlQ29uZGl0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdwdXNoQnV0dG9uJykge1xuICAgICAgb2djRmlsdGVycy5wdXNoQnV0dG9ucyA9IHNlbGVjdG9ycztcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIG9nY0ZpbHRlcnMuY2hlY2tib3hlcyA9IHNlbGVjdG9ycztcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdyYWRpb0J1dHRvbicpIHtcbiAgICAgIG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIG9nY0ZpbHRlcnMuc2VsZWN0ID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgIG9nY0ZpbHRlcnMuYXV0b2NvbXBsZXRlID0gc2VsZWN0b3JzO1xuICAgIH1cbiAgICByZXR1cm4gY29uZGl0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgcHJvY2Vzc2VkRmlsdGVyOiBzdHJpbmcsXG4gICAgbGF5ZXJzT3JUeXBlbmFtZXM6IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGlmICghcHJvY2Vzc2VkRmlsdGVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsZXQgYXBwbGllZEZpbHRlciA9ICcnO1xuICAgIGlmIChwcm9jZXNzZWRGaWx0ZXIubGVuZ3RoID09PSAwICYmIGxheWVyc09yVHlwZW5hbWVzLmluZGV4T2YoJywnKSA9PT0gLTEpIHtcbiAgICAgIGFwcGxpZWRGaWx0ZXIgPSBwcm9jZXNzZWRGaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxheWVyc09yVHlwZW5hbWVzLnNwbGl0KCcsJykuZm9yRWFjaCgoKSA9PiB7XG4gICAgICAgIGFwcGxpZWRGaWx0ZXIgPSBgJHthcHBsaWVkRmlsdGVyfSgke3Byb2Nlc3NlZEZpbHRlci5yZXBsYWNlKFxuICAgICAgICAgICdmaWx0ZXI9JyxcbiAgICAgICAgICAnJ1xuICAgICAgICApfSlgO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGFwcGxpZWRGaWx0ZXIgPSBhcHBsaWVkRmlsdGVyLnJlcGxhY2UoL1xcKFxcKS9nLCAnJyk7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPVxuICAgICAgYXBwbGllZEZpbHRlci5sZW5ndGggPiAwXG4gICAgICAgID8gYXBwbGllZEZpbHRlci5yZXBsYWNlKCdmaWx0ZXI9JywgJycpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBmaWx0ZXJWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZUZpbHRlck9wdGlvbkRhdGUodmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB2YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdub3cnKSB8fFxuICAgICAgdmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndG9kYXknKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VEYXRlT3BlcmF0aW9uKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKG1vbWVudCh2YWx1ZSkuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiB0aGlzIGZ1bmN0aW9uIHRvIHBhcnNlIGRhdGUgd2l0aCBzcGVjaWZpYyBmb3JtYXRcbiAgICogZXhlbXBsZSAndG9kYXkgKyAxIGRheXMnIG9yICdub3cgKyAxIHllYXJzJ1xuICAgKiBAcGFyYW0gdmFsdWUgc3RyaW5nIGRhdGVcbiAgICogQHJldHVybnMgZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZURhdGVPcGVyYXRpb24odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3BlcmF0aW9uU3BsaXR0ZWQgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgbGVmdE9wZXJhbmQgPSBvcGVyYXRpb25TcGxpdHRlZFswXTtcbiAgICBjb25zdCBvcGVyYXRvciA9IFsnKycsICctJ10uaW5jbHVkZXMob3BlcmF0aW9uU3BsaXR0ZWRbMV0pXG4gICAgICA/IG9wZXJhdGlvblNwbGl0dGVkWzFdXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByaWdodE9wZXJhbmQgPSAvXlswLTldKiQvLnRlc3Qob3BlcmF0aW9uU3BsaXR0ZWRbMl0pXG4gICAgICA/IG9wZXJhdGlvblNwbGl0dGVkWzJdXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByaWdodFVuaXRPcGVyYW5kID0gKFxuICAgICAgWyd5ZWFycycsICdtb250aHMnLCAnd2Vla3MnLCAnZGF5cycsICdob3VycycsICdzZWNvbmRzJ10uaW5jbHVkZXMoXG4gICAgICAgIG9wZXJhdGlvblNwbGl0dGVkWzNdXG4gICAgICApXG4gICAgICAgID8gb3BlcmF0aW9uU3BsaXR0ZWRbM11cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICApIGFzIG1vbWVudC5EdXJhdGlvbklucHV0QXJnMjtcblxuICAgIGlmICghb3BlcmF0b3IgfHwgIXJpZ2h0VW5pdE9wZXJhbmQgfHwgIXJpZ2h0T3BlcmFuZCkge1xuICAgICAgcmV0dXJuIGxlZnRPcGVyYW5kID09PSAnbm93J1xuICAgICAgICA/IG1vbWVudCgpLmZvcm1hdCgpXG4gICAgICAgIDogbW9tZW50KCkuZW5kT2YoJ2RheScpLmZvcm1hdCgpO1xuICAgIH1cblxuICAgIGlmIChvcGVyYXRvciA9PT0gJysnKSB7XG4gICAgICByZXR1cm4gbGVmdE9wZXJhbmQgPT09ICdub3cnXG4gICAgICAgID8gbW9tZW50KCkuYWRkKHBhcnNlSW50KHJpZ2h0T3BlcmFuZCwgMTApLCByaWdodFVuaXRPcGVyYW5kKS5mb3JtYXQoKVxuICAgICAgICA6IG1vbWVudCgpXG4gICAgICAgICAgICAuZW5kT2YoJ2RheScpXG4gICAgICAgICAgICAuYWRkKHBhcnNlSW50KHJpZ2h0T3BlcmFuZCwgMTApLCByaWdodFVuaXRPcGVyYW5kKVxuICAgICAgICAgICAgLmZvcm1hdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGVmdE9wZXJhbmQgPT09ICdub3cnXG4gICAgICAgID8gbW9tZW50KClcbiAgICAgICAgICAgIC5zdWJ0cmFjdChwYXJzZUludChyaWdodE9wZXJhbmQsIDEwKSwgcmlnaHRVbml0T3BlcmFuZClcbiAgICAgICAgICAgIC5mb3JtYXQoKVxuICAgICAgICA6IG1vbWVudCgpXG4gICAgICAgICAgICAuZW5kT2YoJ2RheScpXG4gICAgICAgICAgICAuc3VidHJhY3QocGFyc2VJbnQocmlnaHRPcGVyYW5kLCAxMCksIHJpZ2h0VW5pdE9wZXJhbmQpXG4gICAgICAgICAgICAuZm9ybWF0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -38,10 +38,10 @@ export class OGCFilterService {
|
|
|
38
38
|
options.filtered = false;
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
42
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
41
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OGCFilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
42
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OGCFilterService });
|
|
43
43
|
}
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OGCFilterService, decorators: [{
|
|
45
45
|
type: Injectable
|
|
46
46
|
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUc5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUkvQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3BCLFdBQVcsQ0FBQyxhQUE0QixFQUFFLFlBQW9CO1FBQ25FLE1BQU0sYUFBYSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUMsd0JBQXdCLENBQ2xFLFlBQVksRUFDWixhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQ3BDLENBQUM7UUFDRixhQUFhLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxhQUFzQztRQUNuRSxNQUFNLE9BQU8sR0FBUSxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQzNDLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFFOUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdELE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyx5QkFBeUIsQ0FDcEUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQzFCLE9BQU8sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQ25DLElBQUksWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsRUFDckQsSUFBSSxDQUNMLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM1QyxPQUFPLENBQUMsVUFBVSxDQUFDLG1CQUFtQjtvQkFDcEMsZUFBZSxDQUFDLDZCQUE2QixDQUMzQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFDMUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FDcEMsQ0FBQztZQUNOLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLHVCQUF1QixDQUFDLGFBQXNDO1FBQ25FLE1BQU0sT0FBTyxHQUFRLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUU5QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLHlCQUF5QixDQUNwRSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFDMUIsT0FBTyxDQUFDLGlCQUFpQixFQUN6QixTQUFTLEVBQ1QsSUFBSSxDQUNMLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM1QyxPQUFPLENBQUMsVUFBVSxDQUFDLG1CQUFtQjtvQkFDcEMsZUFBZSxDQUFDLDZCQUE2QjtvQkFDM0Msc0VBQXNFO29CQUN0RSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFDMUIsT0FBTyxDQUFDLGlCQUFpQixDQUMxQixDQUFDO1lBQ04sQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLENBQ2QsYUFBOEIsRUFDOUIsZUFBZSxDQUFDLFdBQVcsQ0FDekIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQzFCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULGFBQWEsQ0FBQyxPQUFPLENBQ3RCLENBQ0YsQ0FBQztZQUNGLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO3dHQWpFVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuXG5pbXBvcnQgeyBXTVNEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UnO1xuaW1wb3J0IHsgT2djRmlsdGVyV3JpdGVyIH0gZnJvbSAnLi9vZ2MtZmlsdGVyJztcbmltcG9ydCB7IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPR0NGaWx0ZXJTZXJ2aWNlIHtcbiAgcHVibGljIGZpbHRlckJ5T2djKHdtc0RhdGFzb3VyY2U6IFdNU0RhdGFTb3VyY2UsIGZpbHRlclN0cmluZzogc3RyaW5nKSB7XG4gICAgY29uc3QgYXBwbGllZEZpbHRlciA9IG5ldyBPZ2NGaWx0ZXJXcml0ZXIoKS5mb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgICBmaWx0ZXJTdHJpbmcsXG4gICAgICB3bXNEYXRhc291cmNlLm9wdGlvbnMucGFyYW1zLkxBWUVSU1xuICAgICk7XG4gICAgd21zRGF0YXNvdXJjZS5vbC51cGRhdGVQYXJhbXMoeyBGSUxURVI6IGFwcGxpZWRGaWx0ZXIgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0T2djV0ZTRmlsdGVyc09wdGlvbnMod2ZzRGF0YXNvdXJjZTogT2djRmlsdGVyYWJsZURhdGFTb3VyY2UpIHtcbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB3ZnNEYXRhc291cmNlLm9wdGlvbnM7XG4gICAgY29uc3Qgb2djRmlsdGVyV3JpdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpO1xuXG4gICAgaWYgKG9wdGlvbnMub2djRmlsdGVycy5lbmFibGVkICYmIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzKSB7XG4gICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyA9IG9nY0ZpbHRlcldyaXRlci5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyxcbiAgICAgICAgb3B0aW9ucy5wYXJhbXNXRlMuZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgIG5ldyBvbFByb2plY3Rpb24oeyBjb2RlOiBvcHRpb25zLnBhcmFtc1dGUy5zcnNOYW1lIH0pLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgaWYgKCFvcHRpb25zLm9nY0ZpbHRlcnMuaW50ZXJmYWNlT2djRmlsdGVycykge1xuICAgICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuaW50ZXJmYWNlT2djRmlsdGVycyA9XG4gICAgICAgICAgb2djRmlsdGVyV3JpdGVyLmRlZmluZUludGVyZmFjZUZpbHRlclNlcXVlbmNlKFxuICAgICAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmZpbHRlcnMsXG4gICAgICAgICAgICBvcHRpb25zLnBhcmFtc1dGUy5maWVsZE5hbWVHZW9tZXRyeVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE9nY1dNU0ZpbHRlcnNPcHRpb25zKHdtc0RhdGFzb3VyY2U6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKSB7XG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0gd21zRGF0YXNvdXJjZS5vcHRpb25zO1xuICAgIGNvbnN0IG9nY0ZpbHRlcldyaXRlciA9IG5ldyBPZ2NGaWx0ZXJXcml0ZXIoKTtcblxuICAgIGlmIChvcHRpb25zLm9nY0ZpbHRlcnMuZW5hYmxlZCAmJiBvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycykge1xuICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmZpbHRlcnMgPSBvZ2NGaWx0ZXJXcml0ZXIuY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcbiAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmZpbHRlcnMsXG4gICAgICAgIG9wdGlvbnMuZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIGlmICghb3B0aW9ucy5vZ2NGaWx0ZXJzLmludGVyZmFjZU9nY0ZpbHRlcnMpIHtcbiAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmludGVyZmFjZU9nY0ZpbHRlcnMgPVxuICAgICAgICAgIG9nY0ZpbHRlcldyaXRlci5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICAgICAgICAgIC8vIFdpdGggc29tZSB3bXMgc2VydmVyLCB0aGlzIHBhcmFtIG11c3QgYmUgc2V0IHRvIG1ha2Ugc3BhdGlhbHMgY2FsbC5cbiAgICAgICAgICAgIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzLFxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZE5hbWVHZW9tZXRyeVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmZpbHRlckJ5T2djKFxuICAgICAgICB3bXNEYXRhc291cmNlIGFzIFdNU0RhdGFTb3VyY2UsXG4gICAgICAgIG9nY0ZpbHRlcldyaXRlci5idWlsZEZpbHRlcihcbiAgICAgICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB3bXNEYXRhc291cmNlLm9wdGlvbnNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIG9wdGlvbnMuZmlsdGVyZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIG9wdGlvbnMub2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzID0gW107XG4gICAgICBvcHRpb25zLmZpbHRlcmVkID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -270,13 +270,13 @@ export class SpatialFilterService {
|
|
|
270
270
|
}));
|
|
271
271
|
}
|
|
272
272
|
}
|
|
273
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
274
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
273
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialFilterService, deps: [{ token: i1.HttpClient }, { token: i2.LanguageService }, { token: i3.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
274
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialFilterService, providedIn: 'root' });
|
|
275
275
|
}
|
|
276
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
276
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpatialFilterService, decorators: [{
|
|
277
277
|
type: Injectable,
|
|
278
278
|
args: [{
|
|
279
279
|
providedIn: 'root'
|
|
280
280
|
}]
|
|
281
281
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.LanguageService }, { type: i3.ConfigService }] });
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvc3BhdGlhbC1maWx0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQ0wscUJBQXFCLEVBRXJCLGlCQUFpQixFQUNsQixNQUFNLHVCQUF1QixDQUFDOzs7OztBQU0vQixNQUFNLE9BQU8sb0JBQW9CO0lBcUJyQjtJQUNBO0lBQ0E7SUF0QkgsT0FBTyxHQUFHLDZDQUE2QyxDQUFDO0lBRS9EOztPQUVHO0lBQ0ksYUFBYSxHQUFHO1FBQ3JCLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLE1BQU0sRUFBRSxpQkFBaUI7UUFDekIsT0FBTyxFQUFFLFVBQVU7UUFDbkIsUUFBUSxFQUFFLFdBQVc7UUFDckIsTUFBTSxFQUFFLFNBQVM7UUFDakIsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsZUFBZTtRQUNwQixPQUFPLEVBQUUsVUFBVTtRQUNuQixNQUFNLEVBQUUsYUFBYTtRQUNyQixLQUFLLEVBQUUsT0FBTztRQUNkLE1BQU0sRUFBRSxRQUFRO0tBQ2pCLENBQUM7SUFFRixZQUNVLElBQWdCLEVBQ2hCLGVBQWdDLEVBQ2hDLGFBQTRCO1FBRjVCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGtCQUFhLEdB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QUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQzthQUM3QixDQUFDO2lCQUNELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDUixPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQzt1R0FsVVUsb0JBQW9COzJHQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIFNwYXRpYWxGaWx0ZXJJdGVtVHlwZSxcbiAgU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSxcbiAgU3BhdGlhbEZpbHRlclR5cGVcbn0gZnJvbSAnLi9zcGF0aWFsLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYyB9IGZyb20gJy4vc3BhdGlhbC1maWx0ZXIuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3BhdGlhbEZpbHRlclNlcnZpY2Uge1xuICBwdWJsaWMgYmFzZVVybCA9ICdodHRwczovL2dlb2VnbC5tc3AuZ291di5xYy5jYS9hcGlzL3RlcnJhcGkvJztcblxuICAvKlxuICAgKiBUeXBlIGFzc29jaWF0aW9uIHdpdGggVVJMXG4gICAqL1xuICBwdWJsaWMgdXJsRmlsdGVyTGlzdCA9IHtcbiAgICBBZG1SZWdpb246ICdyZWdhZG1pbicsXG4gICAgQXJyb25kOiAnYXJyb25kaXNzZW1lbnRzJyxcbiAgICBDaXJjRmVkOiAnY2lyYy1mZWQnLFxuICAgIENpcmNQcm92OiAnY2lyYy1wcm92JyxcbiAgICBEaXJSZWc6ICdkaXItcmVnJyxcbiAgICBNUkM6ICdtcmMnLFxuICAgIE11bjogJ211bmljaXBhbGl0ZXMnLFxuICAgIFJlZ1RvdXI6ICd0b3VyaXNtZScsXG4gICAgYm9ybmVzOiAnYm9ybmVzLXN1bWknLFxuICAgIGh5ZHJvOiAnaHlkcm8nLFxuICAgIHJvdXRlczogJ3JvdXRlcydcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5iYXNlVXJsID1cbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ3NwYXRpYWxGaWx0ZXIudXJsJykgfHwgdGhpcy5iYXNlVXJsO1xuICB9XG5cbiAgZ2V0S2V5QnlWYWx1ZShvYmplY3QsIHZhbHVlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCkuZmluZCgoa2V5KSA9PiBvYmplY3Rba2V5XSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgLypcbiAgICogTG9hZGluZyBkYXRhIGZvciBzcGF0aWFsIGZpbHRlciBsaXN0IGNvbXBvbmVudCAoTk8gR0VPTUVUUlkpXG4gICAqL1xuICBsb2FkRmlsdGVyTGlzdCh0eXBlOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlKTogT2JzZXJ2YWJsZTxGZWF0dXJlW10+IHtcbiAgICBjb25zdCB1cmxQYXRoID0gdHlwZSBhcyBzdHJpbmc7XG4gICAgaWYgKHVybFBhdGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLmdldDx7XG4gICAgICAgICAgZmVhdHVyZXM6IEZlYXR1cmVbXTtcbiAgICAgICAgfT4odGhpcy5iYXNlVXJsICsgdGhpcy51cmxGaWx0ZXJMaXN0W3VybFBhdGhdKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGZlYXR1cmVDb2xsZWN0aW9uKSA9PlxuICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMubWFwKChmKSA9PiB7XG4gICAgICAgICAgICAgIGYubWV0YSA9IHtcbiAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKlxuICAgKiBMb2FkaW5nIGl0ZW0gbGlzdCAoU1RSSU5HKVxuICAgKi9cbiAgbG9hZFRoZW1hdGljc0xpc3QoKSB7XG4gICAgY29uc3QgdXJsID0gJ3R5cGVzJztcbiAgICBjb25zdCBpdGVtczogU3BhdGlhbEZpbHRlclRoZW1hdGljW10gPSBbXTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmJhc2VVcmwgKyB1cmwpLnBpcGUoXG4gICAgICBtYXAoKHR5cGVzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICB0eXBlcy5mb3JFYWNoKCh0eXBlKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGUuc3RhcnRzV2l0aCgnbGlldXgnKSkge1xuICAgICAgICAgICAgY29uc3QgaXRlbTogU3BhdGlhbEZpbHRlclRoZW1hdGljID0ge1xuICAgICAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHNvdXJjZTogdHlwZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxldCBzdWJzdHIgPSB0eXBlLnN1YnN0cmluZyg2LCB0eXBlLmxlbmd0aCk7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHN1YnN0cjtcbiAgICAgICAgICAgIGlmIChzdWJzdHIuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHN1YnN0ci5pbmRleE9mKCcuJyk7XG4gICAgICAgICAgICAgIG5hbWUgPSBzdWJzdHIuc3Vic3RyaW5nKGluZGV4ICsgMSwgc3Vic3RyLmxlbmd0aCk7XG4gICAgICAgICAgICAgIHN1YnN0ciA9IHN1YnN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaXRlbS5uYW1lID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2lnby5nZW8udGVycmFwaS4nICsgbmFtZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIGl0ZW0ubmFtZSA9XG4gICAgICAgICAgICAgICAgbmFtZS5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgbmFtZS5zdWJzdHJpbmcoMSwgbmFtZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaXRlbS5ncm91cCA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZ3JvdXAuJyArIHN1YnN0clxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIGl0ZW0uZ3JvdXAgPVxuICAgICAgICAgICAgICAgIHN1YnN0ci5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgc3Vic3RyLnN1YnN0cmluZygxLCBuYW1lLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRLZXlCeVZhbHVlKHRoaXMudXJsRmlsdGVyTGlzdCwgdHlwZSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbTogU3BhdGlhbEZpbHRlclRoZW1hdGljID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHR5cGVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0S2V5QnlWYWx1ZSh0aGlzLnVybEZpbHRlckxpc3QsIHR5cGUpO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8udGVycmFwaS4nICsgbmFtZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSA9XG4gICAgICAgICAgICAgICAgICBuYW1lLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAgIG5hbWUuc3Vic3RyaW5nKDEsIG5hbWUubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaXRlbS5zb3VyY2UgPSB0eXBlO1xuXG4gICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICogTG9hZGluZyBkYXRhIGZvciBzcGF0aWFsIGZpbHRlciBpdGVtIGNvbXBvbmVudCAoQWRkcmVzcyBvciBUaGVtYXRpY3MpIGRlcGVuZHMgb24gcHJlZGVmaW5lZCB6b25lIG9yIGRyYXcgem9uZSAoZmVhdHVyZSlcbiAgICovXG4gIGxvYWRGaWx0ZXJJdGVtKFxuICAgIGZlYXR1cmUsXG4gICAgaXRlbVR5cGU6IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZSxcbiAgICB0eXBlPzogU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSxcbiAgICB0aGVtYXRpYz86IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYyxcbiAgICBidWZmZXI/OiBudW1iZXJcbiAgKSB7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIC8vIFByZWRlZmluZWQgdHlwZVxuICAgICAgY29uc3QgdXJsVHlwZSA9IHR5cGUgYXMgc3RyaW5nO1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgdGhpcy51cmxGaWx0ZXJMaXN0W3VybFR5cGVdO1xuICAgICAgbGV0IHVybEl0ZW0gPSAnJztcbiAgICAgIGlmIChpdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MpIHtcbiAgICAgICAgdXJsSXRlbSA9ICdhZHJlc3Nlcyc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAuZ2V0PHsgZmVhdHVyZXM6IEZlYXR1cmVbXSB9PihcbiAgICAgICAgICAgIHVybCArICcvJyArIGZlYXR1cmUucHJvcGVydGllcy5jb2RlICsgJy8nICsgdXJsSXRlbSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgZ2VvbWV0cnk6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICBpY29uOiAndHJ1ZScsXG4gICAgICAgICAgICAgICAgYnVmZmVySW5wdXQ6IGJ1ZmZlci50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIHNpbXBsaWZpZWQ6ICcxMDAnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZlYXR1cmVDb2xsZWN0aW9uKSA9PlxuICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgICBmLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXG4gICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuQWRkcmVzcydcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBpY29uOiAoZiBhcyBhbnkpLmljb25cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGVtYXRpY3Mgc2VhcmNoXG4gICAgICAgIHVybEl0ZW0gPSB0aGVtYXRpYy5zb3VyY2U7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAuZ2V0PHsgZmVhdHVyZXM6IEZlYXR1cmVbXSB9PihcbiAgICAgICAgICAgIHVybCArICcvJyArIGZlYXR1cmUucHJvcGVydGllcy5jb2RlICsgJy8nICsgdXJsSXRlbSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgZ2VvbWV0cnk6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICBpY29uOiAndHJ1ZScsXG4gICAgICAgICAgICAgICAgYnVmZmVySW5wdXQ6IGJ1ZmZlci50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIHNpbXBsaWZpZWQ6ICcxMDAnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZlYXR1cmVDb2xsZWN0aW9uKSA9PlxuICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgICBmLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXG4gICAgICAgICAgICAgICAgICB0aXRsZTogdGhlbWF0aWMubmFtZSxcbiAgICAgICAgICAgICAgICAgIGljb246IChmIGFzIGFueSkuaWNvblxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRHJhdyB0eXBlXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnbG9jYXRlJztcbiAgICAgIGlmIChpdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MpIHtcbiAgICAgICAgY29uc3QgdXJsSXRlbSA9ICc/dHlwZT1hZHJlc3Nlcyc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAucG9zdDx7IGZlYXR1cmVzOiBGZWF0dXJlW10gfT4odXJsICsgdXJsSXRlbSwge1xuICAgICAgICAgICAgZ2VvbWV0cnk6ICd0cnVlJyxcbiAgICAgICAgICAgIGljb246ICd0cnVlJyxcbiAgICAgICAgICAgIGxvYzogSlNPTi5zdHJpbmdpZnkoZmVhdHVyZSksXG4gICAgICAgICAgICBidWZmZXJJbnB1dDogYnVmZmVyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBzaW1wbGlmaWVkOiAnMTAwJ1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZlYXR1cmVDb2xsZWN0aW9uKSA9PlxuICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgICBmLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXG4gICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuQWRkcmVzcydcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBpY29uOiAoZiBhcyBhbnkpLmljb25cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGVtYXRpY3Mgc2VhcmNoXG4gICAgICAgIGNvbnN0IHVybEl0ZW0gPSAnP3R5cGU9JyArIHRoZW1hdGljLnNvdXJjZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgIC5wb3N0PHsgZmVhdHVyZXM6IEZlYXR1cmVbXSB9Pih1cmwgKyB1cmxJdGVtLCB7XG4gICAgICAgICAgICBnZW9tZXRyeTogJ3RydWUnLFxuICAgICAgICAgICAgaWNvbjogJ3RydWUnLFxuICAgICAgICAgICAgbG9jOiBKU09OLnN0cmluZ2lmeShmZWF0dXJlKSxcbiAgICAgICAgICAgIGJ1ZmZlcklucHV0OiBidWZmZXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHNpbXBsaWZpZWQ6ICcxMDAnXG4gICAgICAgICAgfSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZmVhdHVyZUNvbGxlY3Rpb24pID0+XG4gICAgICAgICAgICAgIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLm1hcCgoZikgPT4ge1xuICAgICAgICAgICAgICAgIGYubWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgIGlkOiBmLnByb3BlcnRpZXMuY29kZSxcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGVtYXRpYy5uYW1lLFxuICAgICAgICAgICAgICAgICAgaWNvbjogKGYgYXMgYW55KS5pY29uXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIEdldCBvbmUgdGVycml0b3J5IGJ5IGlkIChXSVRIIEdFT01FVFJZKVxuICAgKi9cbiAgbG9hZEl0ZW1CeUlkKFxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXG4gICAgdHlwZTogU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZVxuICApOiBPYnNlcnZhYmxlPEZlYXR1cmU+IHtcbiAgICBjb25zdCBmZWF0dXJlVHlwZSA9IHRoaXMudXJsRmlsdGVyTGlzdFt0eXBlXTtcbiAgICBjb25zdCBmZWF0dXJlQ29kZSA9ICcvJyArIGZlYXR1cmUucHJvcGVydGllcy5jb2RlO1xuICAgIGlmIChmZWF0dXJlVHlwZSAmJiBmZWF0dXJlQ29kZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PEZlYXR1cmU+KHRoaXMuYmFzZVVybCArIGZlYXR1cmVUeXBlICsgZmVhdHVyZUNvZGUsIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIGdlb21ldHJ5OiAndHJ1ZSdcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoZikgPT4ge1xuICAgICAgICAgICAgZi5tZXRhID0ge1xuICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXG4gICAgICAgICAgICAgIGFsaWFzOiBmLnByb3BlcnRpZXMubm9tLFxuICAgICAgICAgICAgICB0aXRsZTogZi5wcm9wZXJ0aWVzLm5vbVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogR2V0IGJ1ZmZlciBnZW9tZXRyeVxuICAgKi9cbiAgbG9hZEJ1ZmZlckdlb21ldHJ5KFxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXG4gICAgZmlsdGVyVHlwZTogU3BhdGlhbEZpbHRlclR5cGUsXG4gICAgYnVmZmVyPzogbnVtYmVyLFxuICAgIHR5cGU/OiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlXG4gICk6IE9ic2VydmFibGU8RmVhdHVyZT4ge1xuICAgIGlmIChmaWx0ZXJUeXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5QcmVkZWZpbmVkKSB7XG4gICAgICBjb25zdCBmZWF0dXJlVHlwZSA9IHRoaXMudXJsRmlsdGVyTGlzdFt0eXBlXTtcbiAgICAgIGNvbnN0IGZlYXR1cmVDb2RlID0gJy8nICsgZmVhdHVyZS5wcm9wZXJ0aWVzLmNvZGU7XG4gICAgICBpZiAoZmVhdHVyZVR5cGUgJiYgZmVhdHVyZUNvZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgIC5nZXQ8RmVhdHVyZT4odGhpcy5iYXNlVXJsICsgZmVhdHVyZVR5cGUgKyBmZWF0dXJlQ29kZSwge1xuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgIGdlb21ldHJ5OiAnMTAwJyxcbiAgICAgICAgICAgICAgYnVmZmVyT3V0cHV0OiBidWZmZXIudG9TdHJpbmcoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgZi5tZXRhID0ge1xuICAgICAgICAgICAgICAgIGlkOiBmLnByb3BlcnRpZXMuY29kZSxcbiAgICAgICAgICAgICAgICBhbGlhczogZi5wcm9wZXJ0aWVzLm5vbSxcbiAgICAgICAgICAgICAgICB0aXRsZTogZi5wcm9wZXJ0aWVzLm5vbVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucG9zdDxGZWF0dXJlPih0aGlzLmJhc2VVcmwgKyAnZ2Vvc3BhdGlhbC9idWZmZXI/Jywge1xuICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICBsb2M6IEpTT04uc3RyaW5naWZ5KGZlYXR1cmUpXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoZikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvc3BhdGlhbC1maWx0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQ0wscUJBQXFCLEVBRXJCLGlCQUFpQixFQUNsQixNQUFNLHVCQUF1QixDQUFDOzs7OztBQU0vQixNQUFNLE9BQU8sb0JBQW9CO0lBcUJyQjtJQUNBO0lBQ0E7SUF0QkgsT0FBTyxHQUFHLDZDQUE2QyxDQUFDO0lBRS9EOztPQUVHO0lBQ0ksYUFBYSxHQUFHO1FBQ3JCLFNBQVMsRUFBRSxVQUFVO1FBQ3JCLE1BQU0sRUFBRSxpQkFBaUI7UUFDekIsT0FBTyxFQUFFLFVBQVU7UUFDbkIsUUFBUSxFQUFFLFdBQVc7UUFDckIsTUFBTSxFQUFFLFNBQVM7UUFDakIsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsZUFBZTtRQUNwQixPQUFPLEVBQUUsVUFBVTtRQUNuQixNQUFNLEVBQUUsYUFBYTtRQUNyQixLQUFLLEVBQUUsT0FBTztRQUNkLE1BQU0sRUFBRSxRQUFRO0tBQ2pCLENBQUM7SUFFRixZQUNVLElBQWdCLEVBQ2hCLGVBQWdDLEVBQ2hDLGFBQTRCO1FBRjVCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGtCQUFhLEdB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QUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQzthQUM3QixDQUFDO2lCQUNELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDUixPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQzt3R0FsVVUsb0JBQW9COzRHQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIFNwYXRpYWxGaWx0ZXJJdGVtVHlwZSxcbiAgU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSxcbiAgU3BhdGlhbEZpbHRlclR5cGVcbn0gZnJvbSAnLi9zcGF0aWFsLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYyB9IGZyb20gJy4vc3BhdGlhbC1maWx0ZXIuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3BhdGlhbEZpbHRlclNlcnZpY2Uge1xuICBwdWJsaWMgYmFzZVVybCA9ICdodHRwczovL2dlb2VnbC5tc3AuZ291di5xYy5jYS9hcGlzL3RlcnJhcGkvJztcblxuICAvKlxuICAgKiBUeXBlIGFzc29jaWF0aW9uIHdpdGggVVJMXG4gICAqL1xuICBwdWJsaWMgdXJsRmlsdGVyTGlzdCA9IHtcbiAgICBBZG1SZWdpb246ICdyZWdhZG1pbicsXG4gICAgQXJyb25kOiAnYXJyb25kaXNzZW1lbnRzJyxcbiAgICBDaXJjRmVkOiAnY2lyYy1mZWQnLFxuICAgIENpcmNQcm92OiAnY2lyYy1wcm92JyxcbiAgICBEaXJSZWc6ICdkaXItcmVnJyxcbiAgICBNUkM6ICdtcmMnLFxuICAgIE11bjogJ211bmljaXBhbGl0ZXMnLFxuICAgIFJlZ1RvdXI6ICd0b3VyaXNtZScsXG4gICAgYm9ybmVzOiAnYm9ybmVzLXN1bWknLFxuICAgIGh5ZHJvOiAnaHlkcm8nLFxuICAgIHJvdXRlczogJ3JvdXRlcydcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5iYXNlVXJsID1cbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ3NwYXRpYWxGaWx0ZXIudXJsJykgfHwgdGhpcy5iYXNlVXJsO1xuICB9XG5cbiAgZ2V0S2V5QnlWYWx1ZShvYmplY3QsIHZhbHVlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCkuZmluZCgoa2V5KSA9PiBvYmplY3Rba2V5XSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgLypcbiAgICogTG9hZGluZyBkYXRhIGZvciBzcGF0aWFsIGZpbHRlciBsaXN0IGNvbXBvbmVudCAoTk8gR0VPTUVUUlkpXG4gICAqL1xuICBsb2FkRmlsdGVyTGlzdCh0eXBlOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlKTogT2JzZXJ2YWJsZTxGZWF0dXJlW10+IHtcbiAgICBjb25zdCB1cmxQYXRoID0gdHlwZSBhcyBzdHJpbmc7XG4gICAgaWYgKHVybFBhdGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLmdldDx7XG4gICAgICAgICAgZmVhdHVyZXM6IEZlYXR1cmVbXTtcbiAgICAgICAgfT4odGhpcy5iYXNlVXJsICsgdGhpcy51cmxGaWx0ZXJMaXN0W3VybFBhdGhdKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGZlYXR1cmVDb2xsZWN0aW9uKSA9PlxuICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMubWFwKChmKSA9PiB7XG4gICAgICAgICAgICAgIGYubWV0YSA9IHtcbiAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKlxuICAgKiBMb2FkaW5nIGl0ZW0gbGlzdCAoU1RSSU5HKVxuICAgKi9cbiAgbG9hZFRoZW1hdGljc0xpc3QoKSB7XG4gICAgY29uc3QgdXJsID0gJ3R5cGVzJztcbiAgICBjb25zdCBpdGVtczogU3BhdGlhbEZpbHRlclRoZW1hdGljW10gPSBbXTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmJhc2VVcmwgKyB1cmwpLnBpcGUoXG4gICAgICBtYXAoKHR5cGVzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICB0eXBlcy5mb3JFYWNoKCh0eXBlKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGUuc3RhcnRzV2l0aCgnbGlldXgnKSkge1xuICAgICAgICAgICAgY29uc3QgaXRlbTogU3BhdGlhbEZpbHRlclRoZW1hdGljID0ge1xuICAgICAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHNvdXJjZTogdHlwZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxldCBzdWJzdHIgPSB0eXBlLnN1YnN0cmluZyg2LCB0eXBlLmxlbmd0aCk7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHN1YnN0cjtcbiAgICAgICAgICAgIGlmIChzdWJzdHIuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHN1YnN0ci5pbmRleE9mKCcuJyk7XG4gICAgICAgICAgICAgIG5hbWUgPSBzdWJzdHIuc3Vic3RyaW5nKGluZGV4ICsgMSwgc3Vic3RyLmxlbmd0aCk7XG4gICAgICAgICAgICAgIHN1YnN0ciA9IHN1YnN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaXRlbS5uYW1lID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ2lnby5nZW8udGVycmFwaS4nICsgbmFtZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIGl0ZW0ubmFtZSA9XG4gICAgICAgICAgICAgICAgbmFtZS5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgbmFtZS5zdWJzdHJpbmcoMSwgbmFtZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaXRlbS5ncm91cCA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZ3JvdXAuJyArIHN1YnN0clxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIGl0ZW0uZ3JvdXAgPVxuICAgICAgICAgICAgICAgIHN1YnN0ci5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgc3Vic3RyLnN1YnN0cmluZygxLCBuYW1lLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRLZXlCeVZhbHVlKHRoaXMudXJsRmlsdGVyTGlzdCwgdHlwZSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbTogU3BhdGlhbEZpbHRlclRoZW1hdGljID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHR5cGVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0S2V5QnlWYWx1ZSh0aGlzLnVybEZpbHRlckxpc3QsIHR5cGUpO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8udGVycmFwaS4nICsgbmFtZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSA9XG4gICAgICAgICAgICAgICAgICBuYW1lLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAgIG5hbWUuc3Vic3RyaW5nKDEsIG5hbWUubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaXRlbS5zb3VyY2UgPSB0eXBlO1xuXG4gICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICogTG9hZGluZyBkYXRhIGZvciBzcGF0aWFsIGZpbHRlciBpdGVtIGNvbXBvbmVudCAoQWRkcmVzcyBvciBUaGVtYXRpY3MpIGRlcGVuZHMgb24gcHJlZGVmaW5lZCB6b25lIG9yIGRyYXcgem9uZSAoZmVhdHVyZSlcbiAgICovXG4gIGxvYWRGaWx0ZXJJdGVtKFxuICAgIGZlYXR1cmUsXG4gICAgaXRlbVR5cGU6IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZSxcbiAgICB0eXBlPzogU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSxcbiAgICB0aGVtYXRpYz86IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYyxcbiAgICBidWZmZXI/OiBudW1iZXJcbiAgKSB7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIC8vIFByZWRlZmluZWQgdHlwZVxuICAgICAgY29uc3QgdXJsVHlwZSA9IHR5cGUgYXMgc3RyaW5nO1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgdGhpcy51cmxGaWx0ZXJMaXN0W3VybFR5cGVdO1xuICAgICAgbGV0IHVybEl0ZW0gPSAnJztcbiAgICAgIGlmIChpdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MpIHtcbiAgICAgICAgdXJsSXRlbSA9ICdhZHJlc3Nlcyc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAuZ2V0PHsgZmVhdHVyZXM6IEZlYXR1cmVbXSB9PihcbiAgICAgICAgICAgIHVybCArICcvJyArIGZlYXR1cmUucHJvcGVydGllcy5jb2RlICsgJy8nICsgdXJsSXRlbSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgZ2VvbWV0cnk6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICBpY29uOiAndHJ1ZScsXG4gICAgICAgICAgICAgICAgYnVmZmVySW5wdXQ6IGJ1ZmZlci50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIHNpbXBsaWZpZWQ6ICcxMDAnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZlYXR1cmVDb2xsZWN0aW9uKSA9PlxuICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgICBmLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXG4gICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuQWRkcmVzcydcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBpY29uOiAoZiBhcyBhbnkpLmljb25cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGVtYXRpY3Mgc2VhcmNoXG4gICAgICAgIHVybEl0ZW0gPSB0aGVtYXRpYy5zb3VyY2U7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAuZ2V0PHsgZmVhdHVyZXM6IEZlYXR1cmVbXSB9PihcbiAgICAgICAgICAgIHVybCArICcvJyArIGZlYXR1cmUucHJvcGVydGllcy5jb2RlICsgJy8nICsgdXJsSXRlbSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgZ2VvbWV0cnk6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICBpY29uOiAndHJ1ZScsXG4gICAgICAgICAgICAgICAgYnVmZmVySW5wdXQ6IGJ1ZmZlci50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIHNpbXBsaWZpZWQ6ICcxMDAnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZlYXR1cmVDb2xsZWN0aW9uKSA9PlxuICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgICBmLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXG4gICAgICAgICAgICAgICAgICB0aXRsZTogdGhlbWF0aWMubmFtZSxcbiAgICAgICAgICAgICAgICAgIGljb246IChmIGFzIGFueSkuaWNvblxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRHJhdyB0eXBlXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnbG9jYXRlJztcbiAgICAgIGlmIChpdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MpIHtcbiAgICAgICAgY29uc3QgdXJsSXRlbSA9ICc/dHlwZT1hZHJlc3Nlcyc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAucG9zdDx7IGZlYXR1cmVzOiBGZWF0dXJlW10gfT4odXJsICsgdXJsSXRlbSwge1xuICAgICAgICAgICAgZ2VvbWV0cnk6ICd0cnVlJyxcbiAgICAgICAgICAgIGljb246ICd0cnVlJyxcbiAgICAgICAgICAgIGxvYzogSlNPTi5zdHJpbmdpZnkoZmVhdHVyZSksXG4gICAgICAgICAgICBidWZmZXJJbnB1dDogYnVmZmVyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBzaW1wbGlmaWVkOiAnMTAwJ1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZlYXR1cmVDb2xsZWN0aW9uKSA9PlxuICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgICBmLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXG4gICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuQWRkcmVzcydcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBpY29uOiAoZiBhcyBhbnkpLmljb25cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGVtYXRpY3Mgc2VhcmNoXG4gICAgICAgIGNvbnN0IHVybEl0ZW0gPSAnP3R5cGU9JyArIHRoZW1hdGljLnNvdXJjZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgIC5wb3N0PHsgZmVhdHVyZXM6IEZlYXR1cmVbXSB9Pih1cmwgKyB1cmxJdGVtLCB7XG4gICAgICAgICAgICBnZW9tZXRyeTogJ3RydWUnLFxuICAgICAgICAgICAgaWNvbjogJ3RydWUnLFxuICAgICAgICAgICAgbG9jOiBKU09OLnN0cmluZ2lmeShmZWF0dXJlKSxcbiAgICAgICAgICAgIGJ1ZmZlcklucHV0OiBidWZmZXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHNpbXBsaWZpZWQ6ICcxMDAnXG4gICAgICAgICAgfSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZmVhdHVyZUNvbGxlY3Rpb24pID0+XG4gICAgICAgICAgICAgIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLm1hcCgoZikgPT4ge1xuICAgICAgICAgICAgICAgIGYubWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgIGlkOiBmLnByb3BlcnRpZXMuY29kZSxcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGVtYXRpYy5uYW1lLFxuICAgICAgICAgICAgICAgICAgaWNvbjogKGYgYXMgYW55KS5pY29uXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAqIEdldCBvbmUgdGVycml0b3J5IGJ5IGlkIChXSVRIIEdFT01FVFJZKVxuICAgKi9cbiAgbG9hZEl0ZW1CeUlkKFxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXG4gICAgdHlwZTogU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZVxuICApOiBPYnNlcnZhYmxlPEZlYXR1cmU+IHtcbiAgICBjb25zdCBmZWF0dXJlVHlwZSA9IHRoaXMudXJsRmlsdGVyTGlzdFt0eXBlXTtcbiAgICBjb25zdCBmZWF0dXJlQ29kZSA9ICcvJyArIGZlYXR1cmUucHJvcGVydGllcy5jb2RlO1xuICAgIGlmIChmZWF0dXJlVHlwZSAmJiBmZWF0dXJlQ29kZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PEZlYXR1cmU+KHRoaXMuYmFzZVVybCArIGZlYXR1cmVUeXBlICsgZmVhdHVyZUNvZGUsIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIGdlb21ldHJ5OiAndHJ1ZSdcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoZikgPT4ge1xuICAgICAgICAgICAgZi5tZXRhID0ge1xuICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0aWVzLmNvZGUsXG4gICAgICAgICAgICAgIGFsaWFzOiBmLnByb3BlcnRpZXMubm9tLFxuICAgICAgICAgICAgICB0aXRsZTogZi5wcm9wZXJ0aWVzLm5vbVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogR2V0IGJ1ZmZlciBnZW9tZXRyeVxuICAgKi9cbiAgbG9hZEJ1ZmZlckdlb21ldHJ5KFxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXG4gICAgZmlsdGVyVHlwZTogU3BhdGlhbEZpbHRlclR5cGUsXG4gICAgYnVmZmVyPzogbnVtYmVyLFxuICAgIHR5cGU/OiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlXG4gICk6IE9ic2VydmFibGU8RmVhdHVyZT4ge1xuICAgIGlmIChmaWx0ZXJUeXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5QcmVkZWZpbmVkKSB7XG4gICAgICBjb25zdCBmZWF0dXJlVHlwZSA9IHRoaXMudXJsRmlsdGVyTGlzdFt0eXBlXTtcbiAgICAgIGNvbnN0IGZlYXR1cmVDb2RlID0gJy8nICsgZmVhdHVyZS5wcm9wZXJ0aWVzLmNvZGU7XG4gICAgICBpZiAoZmVhdHVyZVR5cGUgJiYgZmVhdHVyZUNvZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgIC5nZXQ8RmVhdHVyZT4odGhpcy5iYXNlVXJsICsgZmVhdHVyZVR5cGUgKyBmZWF0dXJlQ29kZSwge1xuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgIGdlb21ldHJ5OiAnMTAwJyxcbiAgICAgICAgICAgICAgYnVmZmVyT3V0cHV0OiBidWZmZXIudG9TdHJpbmcoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgZi5tZXRhID0ge1xuICAgICAgICAgICAgICAgIGlkOiBmLnByb3BlcnRpZXMuY29kZSxcbiAgICAgICAgICAgICAgICBhbGlhczogZi5wcm9wZXJ0aWVzLm5vbSxcbiAgICAgICAgICAgICAgICB0aXRsZTogZi5wcm9wZXJ0aWVzLm5vbVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucG9zdDxGZWF0dXJlPih0aGlzLmJhc2VVcmwgKyAnZ2Vvc3BhdGlhbC9idWZmZXI/Jywge1xuICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICBsb2M6IEpTT04uc3RyaW5naWZ5KGZlYXR1cmUpXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoZikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|