kepler.gl 3.1.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -132
- package/dist/src/common-utils/src/data-type.d.ts +9 -1
- package/dist/src/components/src/common/data-table/header-cell.d.ts +1 -0
- package/dist/src/components/src/common/data-table/index.d.ts +1 -0
- package/dist/src/components/src/common/file-uploader/file-drop.d.ts +1 -32
- package/dist/src/components/src/common/item-selector/dropdown-list.d.ts +2 -2
- package/dist/src/components/src/common/item-selector/item-selector.d.ts +1 -1
- package/dist/src/components/src/common/item-selector/typeahead.d.ts +1 -1
- package/dist/src/components/src/geocoder/geocoder.d.ts +7 -0
- package/dist/src/components/src/geocoder-panel.d.ts +2 -2
- package/dist/src/components/src/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
- package/dist/src/constants/src/default-settings.d.ts +14 -1
- package/dist/src/deckgl-arrow-layers/src/constants.d.ts +0 -12
- package/dist/src/deckgl-arrow-layers/src/index.d.ts +0 -1
- package/dist/src/deckgl-arrow-layers/src/utils/utils.d.ts +12 -1
- package/dist/src/duckdb/src/components/preview-data-panel.d.ts +7 -2
- package/dist/src/duckdb/src/components/schema-panel.d.ts +12 -3
- package/dist/src/duckdb/src/processors/data-processor.d.ts +1 -0
- package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +106 -0
- package/dist/src/duckdb/src/table/duckdb-table.d.ts +5 -3
- package/dist/src/processors/src/data-processor.d.ts +15 -1
- package/dist/src/reducers/src/provider-state-updaters.d.ts +1 -0
- package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -1
- package/dist/src/table/src/dataset-utils.d.ts +1 -1
- package/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
- package/dist/src/utils/src/application-config.d.ts +4 -3
- package/dist/src/utils/src/data-utils.d.ts +9 -3
- package/dist/src/utils/src/indexed-data-container.d.ts +2 -2
- package/dist/src/utils/src/map-style-utils/mapbox-utils.d.ts +1 -1
- package/dist/src/utils/src/map-utils.d.ts +1 -1
- package/dist/src/utils/src/plot.d.ts +2 -2
- package/package.json +5 -5
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/dist/components/ai-assistant-component.js +2 -1
- package/src/ai-assistant/package.json +7 -7
- package/src/ai-assistant/src/components/ai-assistant-component.tsx +1 -0
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/dist/data-type.d.ts +9 -1
- package/src/common-utils/dist/data-type.js +50 -1
- package/src/common-utils/package.json +3 -3
- package/src/common-utils/src/data-type.ts +49 -1
- package/src/components/dist/common/data-table/header-cell.d.ts +1 -0
- package/src/components/dist/common/data-table/header-cell.js +2 -2
- package/src/components/dist/common/data-table/index.d.ts +1 -0
- package/src/components/dist/common/data-table/index.js +5 -1
- package/src/components/dist/common/file-uploader/file-drop.d.ts +1 -32
- package/src/components/dist/common/file-uploader/file-drop.js +152 -167
- package/src/components/dist/common/item-selector/dropdown-list.d.ts +2 -2
- package/src/components/dist/common/item-selector/dropdown-list.js +2 -3
- package/src/components/dist/common/item-selector/item-selector.d.ts +1 -1
- package/src/components/dist/common/item-selector/typeahead.d.ts +1 -1
- package/src/components/dist/common/range-brush.js +3 -3
- package/src/components/dist/geocoder/geocoder.d.ts +7 -0
- package/src/components/dist/geocoder/geocoder.js +19 -11
- package/src/components/dist/geocoder-panel.d.ts +2 -2
- package/src/components/dist/geocoder-panel.js +64 -91
- package/src/components/dist/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
- package/src/components/dist/hooks/use-fetch-vector-tile-metadata.js +35 -26
- package/src/components/dist/hooks/use-legend-position.js +8 -4
- package/src/components/dist/map/map-legend-panel.js +2 -3
- package/src/components/dist/modal-container.js +8 -8
- package/src/components/dist/modals/tilesets-modals/tileset-vector-form.js +31 -12
- package/src/components/dist/side-panel/layer-panel/color-palette-preset.js +2 -2
- package/src/components/dist/side-panel/layer-panel/color-range-selector.js +10 -11
- package/src/components/dist/side-panel/layer-panel/color-selector.js +3 -3
- package/src/components/dist/side-panel/layer-panel/custom-palette.js +1 -2
- package/src/components/dist/side-panel/layer-panel/layer-configurator.js +6 -8
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +1 -2
- package/src/components/package.json +16 -16
- package/src/components/src/common/data-table/header-cell.tsx +2 -1
- package/src/components/src/common/data-table/index.tsx +4 -0
- package/src/components/src/common/file-uploader/file-drop.tsx +186 -161
- package/src/components/src/common/item-selector/dropdown-list.tsx +1 -6
- package/src/components/src/common/range-brush.tsx +2 -2
- package/src/components/src/geocoder/geocoder.tsx +16 -8
- package/src/components/src/geocoder-panel.tsx +95 -85
- package/src/components/src/hooks/use-fetch-vector-tile-metadata.ts +27 -25
- package/src/components/src/hooks/use-legend-position.ts +5 -2
- package/src/components/src/map/map-legend-panel.tsx +1 -2
- package/src/components/src/modal-container.tsx +7 -7
- package/src/components/src/modals/tilesets-modals/tileset-vector-form.tsx +12 -3
- package/src/components/src/side-panel/layer-panel/color-palette-preset.tsx +1 -1
- package/src/components/src/side-panel/layer-panel/color-range-selector.tsx +6 -11
- package/src/components/src/side-panel/layer-panel/color-selector.tsx +2 -2
- package/src/components/src/side-panel/layer-panel/custom-palette.tsx +0 -1
- package/src/components/src/side-panel/layer-panel/layer-configurator.tsx +23 -33
- package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +0 -1
- package/src/constants/dist/default-settings.d.ts +14 -1
- package/src/constants/dist/default-settings.js +20 -5
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/91/4f/6c65f3a1eba584ffd2d892cabc25ab5804d4a9ef53694c98707372a83e56343a274bec04f15927a6fe7602615f0f23f73ccf599f524ef97ad6c77c8832ea +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/a6/b2/5424aa4477192fb44cc90fd80892efdc96731f2ff0f48e8f28abf64243cc +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/src/default-settings.ts +16 -1
- package/src/constants/umd/keplergl.min.js +2 -2
- package/src/deckgl-arrow-layers/dist/constants.d.ts +0 -12
- package/src/deckgl-arrow-layers/dist/constants.js +4 -15
- package/src/deckgl-arrow-layers/dist/index.d.ts +0 -1
- package/src/deckgl-arrow-layers/dist/index.js +1 -8
- package/src/deckgl-arrow-layers/dist/layers/geo-arrow-scatterplot-layer.js +4 -4
- package/src/deckgl-arrow-layers/dist/layers/geo-arrow-text-layer.js +5 -5
- package/src/deckgl-arrow-layers/dist/utils/utils.d.ts +12 -1
- package/src/deckgl-arrow-layers/dist/utils/utils.js +7 -5
- package/src/deckgl-arrow-layers/package.json +2 -1
- package/src/deckgl-arrow-layers/src/constants.ts +0 -13
- package/src/deckgl-arrow-layers/src/index.ts +0 -2
- package/src/deckgl-arrow-layers/src/layers/geo-arrow-scatterplot-layer.ts +5 -3
- package/src/deckgl-arrow-layers/src/layers/geo-arrow-text-layer.ts +8 -4
- package/src/deckgl-arrow-layers/src/utils/utils.ts +7 -5
- package/src/deckgl-layers/dist/deckgl-extensions/filter-arrow-layer.d.ts +1 -1
- package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.d.ts +1 -1
- package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.js +3 -3
- package/src/deckgl-layers/package.json +5 -5
- package/src/deckgl-layers/src/deckgl-extensions/filter-shader-module.ts +4 -3
- package/src/duckdb/dist/components/monaco-editor.js +4 -5
- package/src/duckdb/dist/components/preview-data-panel.d.ts +7 -2
- package/src/duckdb/dist/components/preview-data-panel.js +7 -8
- package/src/duckdb/dist/components/schema-panel.d.ts +12 -3
- package/src/duckdb/dist/components/schema-panel.js +41 -24
- package/src/duckdb/dist/components/sql-panel.js +245 -56
- package/src/duckdb/dist/init.js +20 -14
- package/src/duckdb/dist/processors/data-processor.d.ts +1 -0
- package/src/duckdb/dist/processors/data-processor.js +4 -4
- package/src/duckdb/dist/table/duckdb-table-utils.d.ts +106 -0
- package/src/duckdb/dist/table/duckdb-table-utils.js +493 -2
- package/src/duckdb/dist/table/duckdb-table.d.ts +5 -3
- package/src/duckdb/dist/table/duckdb-table.js +153 -261
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/components/monaco-editor.tsx +3 -3
- package/src/duckdb/src/components/preview-data-panel.tsx +15 -8
- package/src/duckdb/src/components/schema-panel.tsx +92 -21
- package/src/duckdb/src/components/sql-panel.tsx +160 -22
- package/src/duckdb/src/init.ts +4 -1
- package/src/duckdb/src/processors/data-processor.ts +2 -2
- package/src/duckdb/src/table/duckdb-table-utils.ts +407 -1
- package/src/duckdb/src/table/duckdb-table.ts +61 -92
- package/src/effects/package.json +5 -5
- package/src/layers/dist/arc-layer/arc-layer.d.ts +1 -1
- package/src/layers/dist/arc-layer/arc-layer.js +2 -3
- package/src/layers/dist/base-layer.d.ts +7 -6
- package/src/layers/dist/base-layer.js +36 -19
- package/src/layers/dist/geojson-layer/geojson-layer.js +4 -2
- package/src/layers/dist/geojson-layer/geojson-utils.js +10 -3
- package/src/layers/dist/heatmap-layer/heatmap-layer.d.ts +2 -0
- package/src/layers/dist/heatmap-layer/heatmap-layer.js +16 -9
- package/src/layers/dist/icon-layer/icon-layer.d.ts +6 -3
- package/src/layers/dist/icon-layer/icon-layer.js +19 -11
- package/src/layers/dist/index.d.ts +1 -1
- package/src/layers/dist/index.js +1 -1
- package/src/layers/dist/layer-text-label.d.ts +9 -0
- package/src/layers/dist/layer-text-label.js +51 -6
- package/src/layers/dist/layer-utils.d.ts +39 -30
- package/src/layers/dist/layer-utils.js +69 -9
- package/src/layers/dist/line-layer/line-layer.d.ts +1 -1
- package/src/layers/dist/line-layer/line-layer.js +2 -3
- package/src/layers/dist/point-layer/point-layer.d.ts +10 -7
- package/src/layers/dist/point-layer/point-layer.js +16 -8
- package/src/layers/dist/trip-layer/trip-layer.d.ts +2 -2
- package/src/layers/dist/trip-layer/trip-layer.js +4 -2
- package/src/layers/dist/vector-tile/abstract-tile-layer.d.ts +3 -7
- package/src/layers/dist/vector-tile/abstract-tile-layer.js +7 -6
- package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +5 -7
- package/src/layers/dist/vector-tile/vector-tile-layer.js +23 -2
- package/src/layers/package.json +11 -10
- package/src/layers/src/arc-layer/arc-layer.ts +1 -1
- package/src/layers/src/base-layer.ts +50 -9
- package/src/layers/src/geojson-layer/geojson-layer.ts +3 -1
- package/src/layers/src/geojson-layer/geojson-utils.ts +4 -1
- package/src/layers/src/heatmap-layer/heatmap-layer.ts +17 -12
- package/src/layers/src/icon-layer/icon-layer.ts +7 -3
- package/src/layers/src/index.ts +1 -2
- package/src/layers/src/layer-text-label.ts +53 -4
- package/src/layers/src/layer-utils.ts +88 -9
- package/src/layers/src/line-layer/line-layer.ts +1 -1
- package/src/layers/src/point-layer/point-layer.ts +15 -11
- package/src/layers/src/trip-layer/trip-layer.ts +4 -2
- package/src/layers/src/vector-tile/abstract-tile-layer.ts +11 -5
- package/src/layers/src/vector-tile/vector-tile-layer.ts +33 -4
- package/src/localization/package.json +1 -1
- package/src/processors/dist/data-processor.d.ts +15 -1
- package/src/processors/dist/data-processor.js +104 -11
- package/src/processors/package.json +8 -7
- package/src/processors/src/data-processor.ts +116 -13
- package/src/reducers/dist/export-utils.js +2 -2
- package/src/reducers/dist/layer-utils.js +1 -1
- package/src/reducers/dist/provider-state-updaters.d.ts +1 -0
- package/src/reducers/dist/provider-state-updaters.js +5 -2
- package/src/reducers/dist/vis-state-updaters.d.ts +1 -1
- package/src/reducers/dist/vis-state-updaters.js +23 -12
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/export-utils.ts +1 -1
- package/src/reducers/src/layer-utils.ts +2 -1
- package/src/reducers/src/provider-state-updaters.ts +4 -1
- package/src/reducers/src/vis-state-updaters.ts +45 -10
- package/src/schemas/dist/dataset-schema.js +35 -6
- package/src/schemas/package.json +7 -7
- package/src/schemas/src/dataset-schema.ts +36 -8
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a3/a9/7f26bbc52905b0e21e9366a30ef0ba98f4ccf9aa8dd8326d90ba90191ba2e305323f505bf134c825356156c793bf9386ed2cef2aeb48eb327c26d106f69a +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/7e/51/b8756555a0e2e696d944445ac23f7febf769006013fbc8419f39a701649d +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +2 -2
- package/src/table/dist/dataset-utils.js +23 -14
- package/src/table/dist/src/table/src/dataset-utils.d.ts +1 -1
- package/src/table/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
- package/src/table/dist/tileset/vector-tile-utils.js +122 -2
- package/src/table/package.json +5 -5
- package/src/table/src/dataset-utils.ts +16 -6
- package/src/table/src/tileset/vector-tile-utils.ts +131 -8
- package/src/tasks/package.json +2 -2
- package/src/types/actions.d.ts +1 -0
- package/src/types/layers.d.ts +1 -0
- package/src/types/package.json +1 -1
- package/src/types/types.d.ts +17 -0
- package/src/utils/dist/application-config.d.ts +4 -3
- package/src/utils/dist/application-config.js +3 -2
- package/src/utils/dist/data-scale-utils.js +4 -4
- package/src/utils/dist/data-utils.d.ts +9 -3
- package/src/utils/dist/data-utils.js +40 -7
- package/src/utils/dist/dataset-utils.js +23 -8
- package/src/utils/dist/indexed-data-container.d.ts +2 -2
- package/src/utils/dist/indexed-data-container.js +1 -1
- package/src/utils/dist/map-style-utils/mapbox-utils.d.ts +1 -1
- package/src/utils/dist/map-style-utils/mapbox-utils.js +3 -3
- package/src/utils/dist/plot.d.ts +2 -2
- package/src/utils/dist/plot.js +6 -6
- package/src/utils/map-utils.spec.js +1 -2
- package/src/utils/package.json +5 -4
- package/src/utils/src/application-config.ts +11 -8
- package/src/utils/src/data-scale-utils.ts +3 -3
- package/src/utils/src/data-utils.ts +36 -7
- package/src/utils/src/dataset-utils.ts +41 -9
- package/src/utils/src/indexed-data-container.ts +1 -1
- package/src/utils/src/map-style-utils/mapbox-utils.ts +2 -2
- package/src/utils/src/plot.ts +5 -5
- package/umd/keplergl.min.js +1279 -1295
|
@@ -489,7 +489,7 @@ var GeoJsonLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
|
|
|
489
489
|
});
|
|
490
490
|
this.dataToFeature = [].concat((0, _toConsumableArray2["default"])(this.dataToFeature), (0, _toConsumableArray2["default"])(dataToFeature));
|
|
491
491
|
}
|
|
492
|
-
} else if (this.dataToFeature.length === 0) {
|
|
492
|
+
} else if (this.dataToFeature.length === 0 || this.config.columnMode === COLUMN_MODE_TABLE) {
|
|
493
493
|
var getFeature = this.getPositionAccessor(dataContainer);
|
|
494
494
|
var _getGeojsonLayerMeta = (0, _geojsonUtils.getGeojsonLayerMeta)({
|
|
495
495
|
dataContainer: dataContainer,
|
|
@@ -527,6 +527,8 @@ var GeoJsonLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
|
|
|
527
527
|
this.updateLayerConfig(_objectSpread(_objectSpread({}, columnConfig), {}, {
|
|
528
528
|
columnMode: COLUMN_MODE_TABLE
|
|
529
529
|
}));
|
|
530
|
+
} else {
|
|
531
|
+
return this;
|
|
530
532
|
}
|
|
531
533
|
}
|
|
532
534
|
this.updateLayerMeta(dataset);
|
|
@@ -683,4 +685,4 @@ var GeoJsonLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
|
|
|
683
685
|
}
|
|
684
686
|
}]);
|
|
685
687
|
}(_baseLayer["default"]);
|
|
686
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfYm9vbGVhbldpdGhpbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoIiwiX3R5cGVBbmFseXplciIsIl9iYXNlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9sYXllcnMiLCJfZ2VvanNvblV0aWxzIiwiX2xheWVyVXRpbHMiLCJfZ2VvanNvbkxheWVySWNvbiIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfZGVja2dsTGF5ZXJzIiwiX2dlb2pzb25JbmZvTW9kYWwiLCJfZXhjbHVkZWQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJTVVBQT1JURURfQU5BTFlaRVJfVFlQRVMiLCJEQVRBX1RZUEVTIiwiR0VPTUVUUlkiLCJHRU9NRVRSWV9GUk9NX1NUUklORyIsIlBBSVJfR0VPTUVUUllfRlJPTV9TVFJJTkciLCJnZW9qc29uVmlzQ29uZmlncyIsImV4cG9ydHMiLCJvcGFjaXR5Iiwic3Ryb2tlT3BhY2l0eSIsIkxBWUVSX1ZJU19DT05GSUdTIiwicHJvcGVydHkiLCJ0aGlja25lc3MiLCJkZWZhdWx0VmFsdWUiLCJzdHJva2VDb2xvciIsImNvbG9yUmFuZ2UiLCJzdHJva2VDb2xvclJhbmdlIiwicmFkaXVzIiwic2l6ZVJhbmdlIiwicmFkaXVzUmFuZ2UiLCJoZWlnaHRSYW5nZSIsImVsZXZhdGlvblNjYWxlIiwic3Ryb2tlZCIsImZpbGxlZCIsImVuYWJsZTNkIiwid2lyZWZyYW1lIiwiZml4ZWRIZWlnaHQiLCJnZW9Kc29uUmVxdWlyZWRDb2x1bW5zIiwiZmVhdHVyZUFjY2Vzc29yIiwiX3JlZiIsImdlb2pzb24iLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImdlb0NvbHVtbkFjY2Vzc29yIiwiX3JlZjIiLCJfZGMkZ2V0Q29sdW1uIiwiZ2V0Q29sdW1uIiwiZ2V0VGFibGVNb2RlVmFsdWVBY2Nlc3NvciIsImZlYXR1cmUiLCJmaWVsZCIsInByb3BlcnRpZXMiLCJ2YWx1ZXMiLCJtYXAiLCJ2IiwidmFsdWVBY2Nlc3NvciIsImdldFRhYmxlTW9kZUZpZWxkVmFsdWUiLCJkYXRhIiwicnYiLCJkZWZhdWx0R2V0RmllbGRWYWx1ZSIsImdlb0ZpZWxkQWNjZXNzb3IiLCJfcmVmMyIsImdldEZpZWxkIiwiZGVmYXVsdEVsZXZhdGlvbiIsImRlZmF1bHRMaW5lV2lkdGgiLCJkZWZhdWx0UmFkaXVzIiwiQ09MVU1OX01PREVfVEFCTEUiLCJTVVBQT1JURURfQ09MVU1OX01PREVTIiwia2V5IiwiQ09MVU1OX01PREVfR0VPSlNPTiIsImxhYmVsIiwicmVxdWlyZWRDb2x1bW5zIiwib3B0aW9uYWxDb2x1bW5zIiwiREVGQVVMVF9DT0xVTU5fTU9ERSIsIkdlb0pzb25MYXllciIsIl9MYXllciIsInByb3BzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJfbGF5ZXJJbmZvTW9kYWwiLCJHZW9qc29uSW5mb01vZGFsRmFjdG9yeSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwidHlwZSIsIkdlb2pzb25MYXllckljb24iLCJkZWZhdWx0UG9pbnRDb2x1bW5QYWlycyIsImlkIiwidGVtcGxhdGUiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJ2YWx1ZSIsImFjY2Vzc1ZTRmllbGRWYWx1ZSIsImNvbHVtbk1vZGUiLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiYWNjZXNzb3IiLCJjb25kaXRpb24iLCJ2aXNDb25maWciLCJudWxsVmFsdWUiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsImZpbGxDb2xvciIsInNjYWxlIiwiZG9tYWluIiwicmFuZ2UiLCJjaGFubmVsU2NhbGVUeXBlIiwiQ0hBTk5FTF9TQ0FMRVMiLCJsaW5lQ29sb3IiLCJzaXplIiwibGluZVdpZHRoIiwiaGVpZ2h0IiwiZml4ZWQiLCJlbGV2YXRpb24iLCJnZXREZWZhdWx0TGF5ZXJDb25maWciLCJfcHJvcHMkY29sdW1uTW9kZSIsImRlZmF1bHRMYXllckNvbmZpZyIsImhlaWdodEZpZWxkIiwiaGVpZ2h0RG9tYWluIiwiaGVpZ2h0U2NhbGUiLCJyYWRpdXNGaWVsZCIsInJhZGl1c0RvbWFpbiIsInJhZGl1c1NjYWxlIiwic3Ryb2tlQ29sb3JGaWVsZCIsInN0cm9rZUNvbG9yRG9tYWluIiwic3Ryb2tlQ29sb3JTY2FsZSIsImNvbG9yVUkiLCJERUZBVUxUX0NPTE9SX1VJIiwiZ2V0SG92ZXJEYXRhIiwib2JqZWN0IiwiX29iamVjdCRwcm9wZXJ0aWVzIiwiZ2VvQXJyb3dNb2RlIiwicm93IiwiZ2V0RmlsdGVyZWRJdGVtQ291bnQiLCJmaWx0ZXJlZEl0ZW1Db3VudCIsInBvbHlnb25Db3VudCIsImNvbmNhdCIsImxpbmVzdHJpbmdDb3VudCIsInBvaW50Q291bnQiLCJjYWxjdWxhdGVEYXRhQXR0cmlidXRlIiwiZGF0YXNldCIsIl90aGlzMiIsImZpZWxkSXNHZW9BcnJvdyIsImZpbHRlcmVkSW5kZXgiLCJudW1Sb3dzIiwiVWludDhDbGFtcGVkQXJyYXkiLCJmaWxsIiwiaXNSYW5nZSIsImZpbHRlcmVkSW5kZXhUcmlnZ2VyIiwiZGF0YVRvRmVhdHVyZSIsImFwcGx5RmlsdGVyc1RvVGFibGVDb2x1bW5zIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJvbGRMYXllckRhdGEiLCJfdGhpczMiLCJkYXRhSWQiLCJfZGF0YXNldHMkdGhpcyRjb25maWciLCJncHVGaWx0ZXIiLCJfdGhpcyR1cGRhdGVEYXRhIiwidXBkYXRlRGF0YSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJkYXRhQWNjZXNzb3IiLCJmaWVsZEluZGV4IiwiaW5kZXhBY2Nlc3NvciIsImYiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJpc0ZpbHRlcmVkQWNjZXNzb3IiLCJnZXRGaWx0ZXJWYWx1ZSIsImdldEZpbHRlcmVkIiwiaXNJblBvbHlnb24iLCJwb2x5Z29uIiwiX3BvbHlnb24kcHJvcGVydGllcyIsIl9wb2x5Z29uJHByb3BlcnRpZXMyIiwiY2VudHJvaWRzIiwiaXNSZWFjdGFuZ2xlU2VhcmNoQm94Iiwic2hhcGUiLCJwb2ludCIsImJib3giLCJfcG9seWdvbiRwcm9wZXJ0aWVzMyIsIl9yZWY1IiwiX3JlZjYiLCJfc2xpY2VkVG9BcnJheTIiLCJtaW5YIiwibWluWSIsIm1heFgiLCJtYXhZIiwiYm9vbGVhbldpdGhpbiIsInR1cmZQb2ludCIsInVwZGF0ZUxheWVyTWV0YSIsIkFycm93RGF0YUNvbnRhaW5lciIsImdlb0NvbHVtbiIsImdlb0ZpZWxkIiwibnVtQ2h1bmtzIiwiaXNJbmNyZW1lbnRhbExvYWQiLCJfZ2V0R2VvanNvbkxheWVyTWV0YUYiLCJnZXRHZW9qc29uTGF5ZXJNZXRhRnJvbUFycm93IiwiY2h1bmtJbmRleCIsImJvdW5kcyIsImZpeGVkUmFkaXVzIiwiZmVhdHVyZVR5cGVzIiwidXBkYXRlTWV0YSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJnZXRGZWF0dXJlIiwiX2dldEdlb2pzb25MYXllck1ldGEiLCJnZXRHZW9qc29uTGF5ZXJNZXRhIiwic2V0SW5pdGlhbExheWVyQ29uZmlnIiwiY29sdW1uQ29uZmlnIiwiZGV0ZWN0VGFibGVDb2x1bW5zIiwidXBkYXRlTGF5ZXJDb25maWciLCJtZXRhIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJjb2xvck1ha2VyIiwibmV4dCIsImlzTGF5ZXJIb3ZlcmVkIiwib2JqZWN0SW5mbyIsImlzTGF5ZXJIb3ZlcmVkRnJvbUFycm93IiwiaGFzSG92ZXJlZE9iamVjdCIsImdldEhvdmVyZWRPYmplY3RGcm9tQXJyb3ciLCJnZXRFbGV2YXRpb25ab29tRmFjdG9yIiwiX3JlZjciLCJ6b29tIiwiX3JlZjckem9vbU9mZnNldCIsInpvb21PZmZzZXQiLCJNYXRoIiwicG93IiwibWF4IiwicmVuZGVyTGF5ZXIiLCJvcHRzIiwiX3RoaXM0IiwiZGF0YVByb3BzIiwib2JqZWN0SG92ZXJlZCIsIm1hcFN0YXRlIiwiaW50ZXJhY3Rpb25Db25maWciLCJfdGhpcyRtZXRhIiwiZ2V0UmFkaXVzU2NhbGVCeVpvb20iLCJ6b29tRmFjdG9yIiwiZ2V0Wm9vbUZhY3RvciIsImVsZVpvb21GYWN0b3IiLCJsYXllclByb3BzIiwibGluZVdpZHRoU2NhbGUiLCJwb2ludFJhZGl1c1NjYWxlIiwibGluZU1pdGVyTGltaXQiLCJ1cGRhdGVUcmlnZ2VycyIsImdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycyIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJkZWZhdWx0TGF5ZXJQcm9wcyIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsIm9wYU92ZXJ3cml0ZSIsInBpY2thYmxlIiwidG9vbHRpcCIsImVuYWJsZWQiLCJob3ZlcmVkT2JqZWN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImRlY2tMYXllckRhdGEiLCJkZWNrTGF5ZXJzIiwiRGVja0dMR2VvSnNvbkxheWVyIiwiaGlnaGxpZ2h0Q29sb3IiLCJISUdITElHSF9DT0xPUl8zRCIsImF1dG9IaWdobGlnaHQiLCJleHRydWRlZCIsIndyYXBMb25naXR1ZGUiLCJjYXBSb3VuZGVkIiwiam9pbnRSb3VuZGVkIiwiZXh0ZW5zaW9ucyIsIkZpbHRlckFycm93RXh0ZW5zaW9uIiwiX3N1YkxheWVyUHJvcHMiLCJsaW5lIiwibGluZXN0cmluZ3MiLCJwb2ludHMiLCJsaW5lT3BhY2l0eSIsImdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMiLCJ2aXNpYmxlIiwiZ2V0TGluZVdpZHRoIiwiZ2V0UG9pbnRSYWRpdXMiLCJnZXRFbGV2YXRpb24iLCJnZXRMaW5lQ29sb3IiLCJnZXRGaWxsQ29sb3IiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJfcmVmOCIsIl90aGlzNSIsIl9yZWY4JGZpZWxkcyIsImZpZWxkcyIsImdlb2pzb25Db2x1bW5zIiwiYW5hbHl6ZXJUeXBlIiwibmFtZSIsImRlZmF1bHRDb2x1bW5zIiwidW5pcSIsIkdFT0pTT05fRklFTERTIiwiZm91bmRDb2x1bW5zIiwiZmluZERlZmF1bHRDb2x1bW5GaWVsZCIsInJlcGxhY2UiLCJpc1Zpc2libGUiLCJMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9qc29uLWxheWVyL2dlb2pzb24tbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7cG9pbnQgYXMgdHVyZlBvaW50fSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCB7RmVhdHVyZSwgUG9seWdvbn0gZnJvbSAnZ2VvanNvbic7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gudW5pcSc7XG5pbXBvcnQge0RBVEFfVFlQRVN9IGZyb20gJ3R5cGUtYW5hbHl6ZXInO1xuaW1wb3J0IExheWVyLCB7XG4gIGNvbG9yTWFrZXIsXG4gIGRlZmF1bHRHZXRGaWVsZFZhbHVlLFxuICBMYXllckJhc2VDb25maWcsXG4gIExheWVyQmFzZUNvbmZpZ1BhcnRpYWwsXG4gIExheWVyQ29sb3JDb25maWcsXG4gIExheWVySGVpZ2h0Q29uZmlnLFxuICBMYXllclJhZGl1c0NvbmZpZyxcbiAgTGF5ZXJTaXplQ29uZmlnLFxuICBMYXllclN0cm9rZUNvbG9yQ29uZmlnXG59IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtHZW9Kc29uTGF5ZXIgYXMgRGVja0dMR2VvSnNvbkxheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtcbiAgZ2V0R2VvanNvbkxheWVyTWV0YSxcbiAgR2VvanNvbkRhdGFNYXBzLFxuICBEZWNrR2xHZW9UeXBlcyxcbiAgZGV0ZWN0VGFibGVDb2x1bW5zLFxuICBDT0xVTU5fTU9ERV9HRU9KU09OLFxuICBhcHBseUZpbHRlcnNUb1RhYmxlQ29sdW1ucyxcbiAgZmllbGRJc0dlb0Fycm93XG59IGZyb20gJy4vZ2VvanNvbi11dGlscyc7XG5pbXBvcnQge1xuICBnZXRHZW9qc29uTGF5ZXJNZXRhRnJvbUFycm93LFxuICBpc0xheWVySG92ZXJlZEZyb21BcnJvdyxcbiAgZ2V0SG92ZXJlZE9iamVjdEZyb21BcnJvd1xufSBmcm9tICcuLi9sYXllci11dGlscyc7XG5pbXBvcnQgR2VvanNvbkxheWVySWNvbiBmcm9tICcuL2dlb2pzb24tbGF5ZXItaWNvbic7XG5pbXBvcnQge1xuICBHRU9KU09OX0ZJRUxEUyxcbiAgSElHSExJR0hfQ09MT1JfM0QsXG4gIENIQU5ORUxfU0NBTEVTLFxuICBMQVlFUl9WSVNfQ09ORklHUyxcbiAgREVGQVVMVF9DT0xPUl9VSVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBDb2xvclJhbmdlLFxuICBWaXNDb25maWdOdW1iZXIsXG4gIFZpc0NvbmZpZ0NvbG9yU2VsZWN0LFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdSYW5nZSxcbiAgVmlzQ29uZmlnQm9vbGVhbixcbiAgTWVyZ2UsXG4gIFJHQkNvbG9yLFxuICBQcm90b0RhdGFzZXRGaWVsZCxcbiAgTGF5ZXJDb2x1bW5cbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgQXJyb3dEYXRhQ29udGFpbmVyfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7RmlsdGVyQXJyb3dFeHRlbnNpb259IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5pbXBvcnQgR2VvanNvbkluZm9Nb2RhbEZhY3RvcnkgZnJvbSAnLi9nZW9qc29uLWluZm8tbW9kYWwnO1xuXG5jb25zdCBTVVBQT1JURURfQU5BTFlaRVJfVFlQRVMgPSB7XG4gIFtEQVRBX1RZUEVTLkdFT01FVFJZXTogdHJ1ZSxcbiAgW0RBVEFfVFlQRVMuR0VPTUVUUllfRlJPTV9TVFJJTkddOiB0cnVlLFxuICBbREFUQV9UWVBFUy5QQUlSX0dFT01FVFJZX0ZST01fU1RSSU5HXTogdHJ1ZVxufTtcblxuZXhwb3J0IGNvbnN0IGdlb2pzb25WaXNDb25maWdzOiB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JztcbiAgc3Ryb2tlT3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICB0aGlja25lc3M6IFZpc0NvbmZpZ051bWJlcjtcbiAgc3Ryb2tlQ29sb3I6ICdzdHJva2VDb2xvcic7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgc3Ryb2tlQ29sb3JSYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnO1xuICByYWRpdXM6ICdyYWRpdXMnO1xuXG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnO1xuICByYWRpdXNSYW5nZTogJ3JhZGl1c1JhbmdlJztcbiAgaGVpZ2h0UmFuZ2U6ICdlbGV2YXRpb25SYW5nZSc7XG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnO1xuICBzdHJva2VkOiAnc3Ryb2tlZCc7XG4gIGZpbGxlZDogJ2ZpbGxlZCc7XG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnO1xuICB3aXJlZnJhbWU6ICd3aXJlZnJhbWUnO1xuICBmaXhlZEhlaWdodDogJ2ZpeGVkSGVpZ2h0Jztcbn0gPSB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgc3Ryb2tlT3BhY2l0eToge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLm9wYWNpdHksXG4gICAgcHJvcGVydHk6ICdzdHJva2VPcGFjaXR5J1xuICB9LFxuICB0aGlja25lc3M6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy50aGlja25lc3MsXG4gICAgZGVmYXVsdFZhbHVlOiAwLjVcbiAgfSxcbiAgc3Ryb2tlQ29sb3I6ICdzdHJva2VDb2xvcicsXG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgc3Ryb2tlQ29sb3JSYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICByYWRpdXM6ICdyYWRpdXMnLFxuXG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnLFxuICByYWRpdXNSYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgaGVpZ2h0UmFuZ2U6ICdlbGV2YXRpb25SYW5nZScsXG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnLFxuICBzdHJva2VkOiAnc3Ryb2tlZCcsXG4gIGZpbGxlZDogJ2ZpbGxlZCcsXG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnLFxuICB3aXJlZnJhbWU6ICd3aXJlZnJhbWUnLFxuICBmaXhlZEhlaWdodDogJ2ZpeGVkSGVpZ2h0J1xufTtcblxuZXhwb3J0IHR5cGUgR2VvSnNvblZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHN0cm9rZU9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgdGhpY2tuZXNzOiBWaXNDb25maWdOdW1iZXI7XG4gIHN0cm9rZUNvbG9yOiBWaXNDb25maWdDb2xvclNlbGVjdDtcbiAgY29sb3JSYW5nZTogVmlzQ29uZmlnQ29sb3JSYW5nZTtcbiAgc3Ryb2tlQ29sb3JSYW5nZTogVmlzQ29uZmlnQ29sb3JSYW5nZTtcbiAgcmFkaXVzOiBWaXNDb25maWdOdW1iZXI7XG5cbiAgc2l6ZVJhbmdlOiBWaXNDb25maWdSYW5nZTtcbiAgcmFkaXVzUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICBoZWlnaHRSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIGVsZXZhdGlvblNjYWxlOiBWaXNDb25maWdOdW1iZXI7XG4gIGZpeGVkSGVpZ2h0OiBWaXNDb25maWdCb29sZWFuO1xuICBzdHJva2VkOiBWaXNDb25maWdCb29sZWFuO1xuICBmaWxsZWQ6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIGVuYWJsZTNkOiBWaXNDb25maWdCb29sZWFuO1xuICB3aXJlZnJhbWU6IFZpc0NvbmZpZ0Jvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBHZW9Kc29uTGF5ZXJDb2x1bW5zQ29uZmlnID0ge1xuICBnZW9qc29uOiBMYXllckNvbHVtbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdlb0pzb25MYXllclZpc0NvbmZpZyA9IHtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICBzdHJva2VPcGFjaXR5OiBudW1iZXI7XG4gIHRoaWNrbmVzczogbnVtYmVyO1xuICBzdHJva2VDb2xvcjogUkdCQ29sb3I7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHN0cm9rZUNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHJhZGl1czogbnVtYmVyO1xuXG4gIHNpemVSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgcmFkaXVzUmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG4gIGhlaWdodFJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICBlbGV2YXRpb25TY2FsZTogbnVtYmVyO1xuICBzdHJva2VkOiBib29sZWFuO1xuICBmaWxsZWQ6IGJvb2xlYW47XG4gIGVuYWJsZTNkOiBib29sZWFuO1xuICB3aXJlZnJhbWU6IGJvb2xlYW47XG4gIGZpeGVkSGVpZ2h0OiBib29sZWFuO1xufTtcblxudHlwZSBHZW9Kc29uTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnID0gTGF5ZXJDb2xvckNvbmZpZyAmXG4gIExheWVyU3Ryb2tlQ29sb3JDb25maWcgJlxuICBMYXllclNpemVDb25maWcgJlxuICBMYXllckhlaWdodENvbmZpZyAmXG4gIExheWVyUmFkaXVzQ29uZmlnO1xuZXhwb3J0IHR5cGUgR2VvSnNvbkxheWVyQ29uZmlnID0gTWVyZ2U8XG4gIExheWVyQmFzZUNvbmZpZyxcbiAge2NvbHVtbnM6IEdlb0pzb25MYXllckNvbHVtbnNDb25maWc7IHZpc0NvbmZpZzogR2VvSnNvbkxheWVyVmlzQ29uZmlnfVxuPiAmXG4gIEdlb0pzb25MYXllclZpc3VhbENoYW5uZWxDb25maWc7XG5cbmV4cG9ydCB0eXBlIEdlb0pzb25MYXllck1ldGEgPSB7XG4gIGZlYXR1cmVUeXBlcz86IERlY2tHbEdlb1R5cGVzO1xuICBmaXhlZFJhZGl1cz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZ2VvSnNvblJlcXVpcmVkQ29sdW1uczogWydnZW9qc29uJ10gPSBbJ2dlb2pzb24nXTtcblxudHlwZSBPYmplY3RJbmZvID0ge1xuICBpbmRleDogbnVtYmVyO1xuICBvYmplY3Q/OiBGZWF0dXJlIHwgdW5kZWZpbmVkO1xuICBwaWNrZWQ6IGJvb2xlYW47XG4gIGxheWVyOiBMYXllcjtcbiAgcmFkaXVzPzogbnVtYmVyO1xuICBpZD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBmZWF0dXJlQWNjZXNzb3IgPVxuICAoe2dlb2pzb259OiBHZW9Kc29uTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PlxuICAoZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gIGQgPT5cbiAgICBkYy52YWx1ZUF0KGQuaW5kZXgsIGdlb2pzb24uZmllbGRJZHgpO1xuXG5jb25zdCBnZW9Db2x1bW5BY2Nlc3NvciA9XG4gICh7Z2VvanNvbn06IEdlb0pzb25MYXllckNvbHVtbnNDb25maWcpID0+XG4gIChkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZSk6IGFycm93LlZlY3RvciB8IG51bGwgPT5cbiAgICBkYy5nZXRDb2x1bW4/LihnZW9qc29uLmZpZWxkSWR4KSBhcyBhcnJvdy5WZWN0b3I7XG5cbmNvbnN0IGdldFRhYmxlTW9kZVZhbHVlQWNjZXNzb3IgPSBmZWF0dXJlID0+IHtcbiAgLy8gQ2FsbGVkIGZyb20gZ3B1LWZpbHRlci11dGlscy5nZXRGaWx0ZXJWYWx1ZUFjY2Vzc29yKClcbiAgcmV0dXJuIGZpZWxkID0+IGZlYXR1cmUucHJvcGVydGllcy52YWx1ZXMubWFwKHYgPT4gZmllbGQudmFsdWVBY2Nlc3Nvcih2KSk7XG59O1xuXG5jb25zdCBnZXRUYWJsZU1vZGVGaWVsZFZhbHVlID0gKGZpZWxkLCBkYXRhKSA9PiB7XG4gIGxldCBydjtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcnYgPSBkYXRhKGZpZWxkKTtcbiAgfSBlbHNlIHtcbiAgICBydiA9IGRlZmF1bHRHZXRGaWVsZFZhbHVlKGZpZWxkLCBkYXRhKTtcbiAgfVxuICByZXR1cm4gcnY7XG59O1xuXG5jb25zdCBnZW9GaWVsZEFjY2Vzc29yID1cbiAgKHtnZW9qc29ufTogR2VvSnNvbkxheWVyQ29sdW1uc0NvbmZpZykgPT5cbiAgKGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKTogUHJvdG9EYXRhc2V0RmllbGQgfCBudWxsID0+XG4gICAgZGMuZ2V0RmllbGQgPyBkYy5nZXRGaWVsZChnZW9qc29uLmZpZWxkSWR4KSA6IG51bGw7XG5cbi8vIGFjY2VzcyBmZWF0dXJlIHByb3BlcnRpZXMgZnJvbSBnZW9qc29uIHN1YiBsYXllclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRFbGV2YXRpb24gPSA1MDA7XG5leHBvcnQgY29uc3QgZGVmYXVsdExpbmVXaWR0aCA9IDE7XG5leHBvcnQgY29uc3QgZGVmYXVsdFJhZGl1cyA9IDE7XG5cbmV4cG9ydCBjb25zdCBDT0xVTU5fTU9ERV9UQUJMRSA9ICd0YWJsZSc7XG5jb25zdCBTVVBQT1JURURfQ09MVU1OX01PREVTID0gW1xuICB7XG4gICAga2V5OiBDT0xVTU5fTU9ERV9HRU9KU09OLFxuICAgIGxhYmVsOiAnR2VvSlNPTicsXG4gICAgcmVxdWlyZWRDb2x1bW5zOiBbJ2dlb2pzb24nXVxuICB9LFxuICB7XG4gICAga2V5OiBDT0xVTU5fTU9ERV9UQUJMRSxcbiAgICBsYWJlbDogJ1RhYmxlIGNvbHVtbnMnLFxuICAgIHJlcXVpcmVkQ29sdW1uczogWydpZCcsICdsYXQnLCAnbG5nJ10sXG4gICAgb3B0aW9uYWxDb2x1bW5zOiBbJ2FsdGl0dWRlJywgJ3NvcnRCeSddXG4gIH1cbl07XG5jb25zdCBERUZBVUxUX0NPTFVNTl9NT0RFID0gQ09MVU1OX01PREVfR0VPSlNPTjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2VvSnNvbkxheWVyIGV4dGVuZHMgTGF5ZXIge1xuICBkZWNsYXJlIGNvbmZpZzogR2VvSnNvbkxheWVyQ29uZmlnO1xuICBkZWNsYXJlIHZpc0NvbmZpZ1NldHRpbmdzOiBHZW9Kc29uVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgbWV0YTogR2VvSnNvbkxheWVyTWV0YTtcbiAgZGVjbGFyZSBnZW9BcnJvd01vZGU6IGJvb2xlYW47XG5cbiAgZGF0YVRvRmVhdHVyZTogR2VvanNvbkRhdGFNYXBzID0gW107XG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UgfCBudWxsID0gbnVsbDtcbiAgZmlsdGVyZWRJbmRleDogVWludDhDbGFtcGVkQXJyYXkgfCBudWxsID0gbnVsbDtcbiAgZmlsdGVyZWRJbmRleFRyaWdnZXI6IG51bWJlcltdIHwgbnVsbCA9IG51bGw7XG4gIGNlbnRyb2lkczogQXJyYXk8bnVtYmVyW10gfCBudWxsPiA9IFtdO1xuXG4gIF9sYXllckluZm9Nb2RhbDoge1xuICAgIFtDT0xVTU5fTU9ERV9UQUJMRV06ICgpID0+IFJlYWN0LkpTWC5FbGVtZW50O1xuICAgIFtDT0xVTU5fTU9ERV9HRU9KU09OXTogKCkgPT4gUmVhY3QuSlNYLkVsZW1lbnQ7XG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKGdlb2pzb25WaXNDb25maWdzKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IgPSAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT5cbiAgICAgIGZlYXR1cmVBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcbiAgICB0aGlzLl9sYXllckluZm9Nb2RhbCA9IHtcbiAgICAgIFtDT0xVTU5fTU9ERV9UQUJMRV06IEdlb2pzb25JbmZvTW9kYWxGYWN0b3J5KENPTFVNTl9NT0RFX1RBQkxFKSxcbiAgICAgIFtDT0xVTU5fTU9ERV9HRU9KU09OXTogR2VvanNvbkluZm9Nb2RhbEZhY3RvcnkoQ09MVU1OX01PREVfR0VPSlNPTilcbiAgICB9O1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIEdlb0pzb25MYXllci50eXBlO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpOiAnZ2VvanNvbicge1xuICAgIHJldHVybiAnZ2VvanNvbic7XG4gIH1cblxuICBnZXQgbmFtZSgpOiAnUG9seWdvbicge1xuICAgIHJldHVybiAnUG9seWdvbic7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBHZW9qc29uTGF5ZXJJY29uO1xuICB9XG5cbiAgZ2V0IGNvbHVtblBhaXJzKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb2ludENvbHVtblBhaXJzO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZENvbHVtbk1vZGVzKCkge1xuICAgIHJldHVybiBTVVBQT1JURURfQ09MVU1OX01PREVTO1xuICB9XG5cbiAgZ2V0IGxheWVySW5mb01vZGFsKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbQ09MVU1OX01PREVfR0VPSlNPTl06IHtcbiAgICAgICAgaWQ6ICdpY29uSW5mbycsXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLl9sYXllckluZm9Nb2RhbFtDT0xVTU5fTU9ERV9HRU9KU09OXSxcbiAgICAgICAgbW9kYWxQcm9wczoge1xuICAgICAgICAgIHRpdGxlOiAnbW9kYWwucG9seWdvbkluZm8udGl0bGUnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbQ09MVU1OX01PREVfVEFCTEVdOiB7XG4gICAgICAgIGlkOiAnaWNvbkluZm8nLFxuICAgICAgICB0ZW1wbGF0ZTogdGhpcy5fbGF5ZXJJbmZvTW9kYWxbQ09MVU1OX01PREVfVEFCTEVdLFxuICAgICAgICBtb2RhbFByb3BzOiB7XG4gICAgICAgICAgdGl0bGU6ICdtb2RhbC5wb2x5Z29uSW5mby50aXRsZVRhYmxlJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGFjY2Vzc1ZTRmllbGRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTikge1xuICAgICAgcmV0dXJuIGRlZmF1bHRHZXRGaWVsZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0VGFibGVNb2RlRmllbGRWYWx1ZTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVscyA9IHN1cGVyLnZpc3VhbENoYW5uZWxzO1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLmZpbGxlZCxcbiAgICAgICAgbnVsbFZhbHVlOiB2aXN1YWxDaGFubmVscy5jb2xvci5udWxsVmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiBjb25maWcgPT4gZCA9PiBkLnByb3BlcnRpZXMuZmlsbENvbG9yIHx8IGNvbmZpZy5jb2xvcixcbiAgICAgICAgLy8gdXNlZCB0aGlzIHRvIGdldCB1cGRhdGVUcmlnZ2Vyc1xuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzdHJva2VDb2xvcjoge1xuICAgICAgICBwcm9wZXJ0eTogJ3N0cm9rZUNvbG9yJyxcbiAgICAgICAgZmllbGQ6ICdzdHJva2VDb2xvckZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdzdHJva2VDb2xvclNjYWxlJyxcbiAgICAgICAgZG9tYWluOiAnc3Ryb2tlQ29sb3JEb21haW4nLFxuICAgICAgICByYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICAgICAgICBrZXk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLmNvbG9yLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldExpbmVDb2xvcicsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlZCxcbiAgICAgICAgbnVsbFZhbHVlOiB2aXN1YWxDaGFubmVscy5jb2xvci5udWxsVmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiBjb25maWcgPT4gZCA9PlxuICAgICAgICAgIGQucHJvcGVydGllcy5saW5lQ29sb3IgfHwgY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvciB8fCBjb25maWcuY29sb3IsXG4gICAgICAgIC8vIHVzZWQgdGhpcyB0byBnZXQgdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvciB8fCBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIC4uLnZpc3VhbENoYW5uZWxzLnNpemUsXG4gICAgICAgIHByb3BlcnR5OiAnc3Ryb2tlJyxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRMaW5lV2lkdGgnLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZWQsXG4gICAgICAgIG51bGxWYWx1ZTogMCxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6ICgpID0+IGQgPT4gZC5wcm9wZXJ0aWVzLmxpbmVXaWR0aCB8fCBkZWZhdWx0TGluZVdpZHRoXG4gICAgICB9LFxuICAgICAgaGVpZ2h0OiB7XG4gICAgICAgIHByb3BlcnR5OiAnaGVpZ2h0JyxcbiAgICAgICAgZmllbGQ6ICdoZWlnaHRGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAnaGVpZ2h0U2NhbGUnLFxuICAgICAgICBkb21haW46ICdoZWlnaHREb21haW4nLFxuICAgICAgICByYW5nZTogJ2hlaWdodFJhbmdlJyxcbiAgICAgICAga2V5OiAnaGVpZ2h0JyxcbiAgICAgICAgZml4ZWQ6ICdmaXhlZEhlaWdodCcsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLnNpemUsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RWxldmF0aW9uJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5lbmFibGUzZCxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogKCkgPT4gZCA9PiBkLnByb3BlcnRpZXMuZWxldmF0aW9uIHx8IGRlZmF1bHRFbGV2YXRpb25cbiAgICAgIH0sXG4gICAgICByYWRpdXM6IHtcbiAgICAgICAgcHJvcGVydHk6ICdyYWRpdXMnLFxuICAgICAgICBmaWVsZDogJ3JhZGl1c0ZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdyYWRpdXNTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3JhZGl1c0RvbWFpbicsXG4gICAgICAgIHJhbmdlOiAncmFkaXVzUmFuZ2UnLFxuICAgICAgICBrZXk6ICdyYWRpdXMnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5yYWRpdXMsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0UG9pbnRSYWRpdXMnLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiAoKSA9PiBkID0+IGQucHJvcGVydGllcy5yYWRpdXMgfHwgZGVmYXVsdFJhZGl1c1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZmluZERlZmF1bHRMYXllclByb3BzKHtsYWJlbCwgZmllbGRzID0gW119OiBLZXBsZXJUYWJsZSkge1xuICAgIGNvbnN0IGdlb2pzb25Db2x1bW5zID0gZmllbGRzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICBmID0+XG4gICAgICAgICAgKGYudHlwZSA9PT0gJ2dlb2pzb24nIHx8IGYudHlwZSA9PT0gJ2dlb2Fycm93JykgJiZcbiAgICAgICAgICBmLmFuYWx5emVyVHlwZSAmJlxuICAgICAgICAgIFNVUFBPUlRFRF9BTkFMWVpFUl9UWVBFU1tmLmFuYWx5emVyVHlwZV1cbiAgICAgIClcbiAgICAgIC5tYXAoZiA9PiBmLm5hbWUpO1xuXG4gICAgY29uc3QgZGVmYXVsdENvbHVtbnMgPSB7XG4gICAgICBnZW9qc29uOiB1bmlxKFsuLi5HRU9KU09OX0ZJRUxEUy5nZW9qc29uLCAuLi5nZW9qc29uQ29sdW1uc10pXG4gICAgfTtcblxuICAgIGNvbnN0IGZvdW5kQ29sdW1ucyA9IHRoaXMuZmluZERlZmF1bHRDb2x1bW5GaWVsZChkZWZhdWx0Q29sdW1ucywgZmllbGRzKTtcbiAgICBpZiAoIWZvdW5kQ29sdW1ucyB8fCAhZm91bmRDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtwcm9wczogW119O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwcm9wczogZm91bmRDb2x1bW5zLm1hcChjb2x1bW5zID0+ICh7XG4gICAgICAgIGxhYmVsOiAodHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyAmJiBsYWJlbC5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpKSB8fCB0aGlzLnR5cGUsXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGlzVmlzaWJsZTogdHJ1ZVxuICAgICAgfSkpXG4gICAgfTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wczogTGF5ZXJCYXNlQ29uZmlnUGFydGlhbCkge1xuICAgIGNvbnN0IGRlZmF1bHRMYXllckNvbmZpZyA9IHN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyA/PyB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRMYXllckNvbmZpZyxcblxuICAgICAgY29sdW1uTW9kZTogcHJvcHM/LmNvbHVtbk1vZGUgPz8gREVGQVVMVF9DT0xVTU5fTU9ERSxcbiAgICAgIC8vIGFkZCBoZWlnaHQgdmlzdWFsIGNoYW5uZWxcbiAgICAgIGhlaWdodEZpZWxkOiBudWxsLFxuICAgICAgaGVpZ2h0RG9tYWluOiBbMCwgMV0sXG4gICAgICBoZWlnaHRTY2FsZTogJ2xpbmVhcicsXG5cbiAgICAgIC8vIGFkZCByYWRpdXMgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHJhZGl1c0ZpZWxkOiBudWxsLFxuICAgICAgcmFkaXVzRG9tYWluOiBbMCwgMV0sXG4gICAgICByYWRpdXNTY2FsZTogJ2xpbmVhcicsXG5cbiAgICAgIC8vIGFkZCBzdHJva2UgY29sb3IgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IG51bGwsXG4gICAgICBzdHJva2VDb2xvckRvbWFpbjogWzAsIDFdLFxuICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogJ3F1YW50aWxlJyxcbiAgICAgIGNvbG9yVUk6IHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyQ29uZmlnLmNvbG9yVUksXG4gICAgICAgIHN0cm9rZUNvbG9yUmFuZ2U6IERFRkFVTFRfQ09MT1JfVUlcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKG9iamVjdCwgZGF0YUNvbnRhaW5lcikge1xuICAgIC8vIGluZGV4IG9mIGRhdGFDb250YWluZXIgaXMgc2F2ZWQgdG8gZmVhdHVyZS5wcm9wZXJ0aWVzXG4gICAgLy8gZm9yIGFycm93IGZvcm1hdCwgYG9iamVjdGAgaXMgdGhlIGluZGV4IG9mIHRoZSByb3cgcmV0dXJuZWQgZnJvbSBkZWNrXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdlb0Fycm93TW9kZSA/IG9iamVjdCA6IG9iamVjdD8ucHJvcGVydGllcz8uaW5kZXg7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0RmlsdGVyZWRJdGVtQ291bnQoKSB7XG4gICAgLy8gcmV0dXJuIC1wb2x5Z29ucy1maWxsIG9yIC1wb2x5Z29ucy1zdHJva2VcbiAgICAvLyArIC1saW5lc3RyaW5nc1xuICAgIC8vICsgLXBvaW50cy1jaXJjbGVcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5maWx0ZXJlZEl0ZW1Db3VudCkubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwb2x5Z29uQ291bnQgPVxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbUNvdW50W2Ake3RoaXMuaWR9LXBvbHlnb25zLWZpbGxgXSB8fFxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbUNvdW50W2Ake3RoaXMuaWR9LXBvbHlnb25zLXN0cm9rZWBdIHx8XG4gICAgICAgIDA7XG4gICAgICBjb25zdCBsaW5lc3RyaW5nQ291bnQgPSB0aGlzLmZpbHRlcmVkSXRlbUNvdW50W2Ake3RoaXMuaWR9LWxpbmVzdHJpbmdzYF0gfHwgMDtcbiAgICAgIGNvbnN0IHBvaW50Q291bnQgPSB0aGlzLmZpbHRlcmVkSXRlbUNvdW50W2Ake3RoaXMuaWR9LXBvaW50cy1jaXJjbGVgXSB8fCAwO1xuXG4gICAgICByZXR1cm4gcG9seWdvbkNvdW50ICsgbGluZXN0cmluZ0NvdW50ICsgcG9pbnRDb3VudDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUoZGF0YXNldDogS2VwbGVyVGFibGUpIHtcbiAgICB0aGlzLmdlb0Fycm93TW9kZSA9IGZpZWxkSXNHZW9BcnJvdyhcbiAgICAgIGdlb0ZpZWxkQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YXNldC5kYXRhQ29udGFpbmVyKVxuICAgICk7XG5cbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lciwgZmlsdGVyZWRJbmRleH0gPSBkYXRhc2V0O1xuICAgIGlmICh0aGlzLmdlb0Fycm93TW9kZSkge1xuICAgICAgLy8gVE9ETyBhZGQgY29sdW1uTW9kZSBsb2dpYyBoZXJlIGZvciBBcnJvd0RhdGFDb250YWluZXI/XG4gICAgICAvLyBmaWx0ZXIgZ2VvanNvbi9hcnJvdyB0YWJsZSBieSB2YWx1ZXMgYW5kIG1ha2UgYSBwYXJ0aWFsIGNvcHkgb2YgdGhlIHJhdyB0YWJsZSBhcmUgZXhwZW5zaXZlXG4gICAgICAvLyBzbyB3ZSB3aWxsIHVzZSBmaWx0ZXJlZEluZGV4IHRvIGNyZWF0ZSBhbiBhdHRyaWJ1dGUgZS5nLiBmaWx0ZXJlZEluZGV4IFswfDFdIGZvciBHUFUgZmlsdGVyaW5nXG4gICAgICAvLyBpbiBkZWNrLmdsIGxheWVyLCBzZWU6IEZpbHRlckFycm93RXh0ZW5zaW9uIGluIEBrZXBsZXIuZ2wvZGVja2dsLWxheWVyc1xuICAgICAgaWYgKCF0aGlzLmZpbHRlcmVkSW5kZXggfHwgdGhpcy5maWx0ZXJlZEluZGV4Lmxlbmd0aCAhPT0gZGF0YUNvbnRhaW5lci5udW1Sb3dzKCkpIHtcbiAgICAgICAgLy8gZm9yIGluY3JlbWVudGFsIGRhdGEgbG9hZGluZywgd2UgbmVlZCB0byB1cGRhdGUgZmlsdGVyZWRJbmRleFxuICAgICAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoZGF0YUNvbnRhaW5lci5udW1Sb3dzKCkpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkSW5kZXguZmlsbCgxKTtcbiAgICAgIH1cblxuICAgICAgLy8gY2hlY2sgaWYgZmlsdGVyZWRJbmRleCBpcyBhIHJhbmdlIGZyb20gMCB0byBudW1Sb3dzIGlmIGl0IGlzLCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSBpdFxuICAgICAgY29uc3QgaXNSYW5nZSA9IGZpbHRlcmVkSW5kZXggJiYgZmlsdGVyZWRJbmRleC5sZW5ndGggPT09IGRhdGFDb250YWluZXIubnVtUm93cygpO1xuICAgICAgaWYgKCFpc1JhbmdlIHx8IHRoaXMuZmlsdGVyZWRJbmRleFRyaWdnZXIgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZEluZGV4LmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyZWRJbmRleC5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRJbmRleFtmaWx0ZXJlZEluZGV4W2ldXSA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJlZEluZGV4VHJpZ2dlciA9IGZpbHRlcmVkSW5kZXg7XG4gICAgICB9XG4gICAgICAvLyBmb3IgYXJyb3csIGFsd2F5cyByZXR1cm4gZnVsbCBkYXRhVG9GZWF0dXJlIGluc3RlYWQgb2YgYSBmaWx0ZXJlZCBvbmUsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIGF0dHJpYnV0ZXMgaW4gR1BVXG4gICAgICByZXR1cm4gdGhpcy5kYXRhVG9GZWF0dXJlO1xuICAgIH1cblxuICAgIC8vIGZvciBnZW9qc29uLCB0aGlzIHNob3VsZCB3b3JrIGFzIHdlbGwgYW5kIG1vcmUgZWZmaWNpZW50LiBCdXQgd2UgbmVlZCB0byB1cGRhdGUgc29tZSB0ZXN0IGNhc2VzIGUuZy4gI0dlb2pzb25MYXllciAtPiBmb3JtYXRMYXllckRhdGFcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnLmNvbHVtbk1vZGUpIHtcbiAgICAgIGNhc2UgQ09MVU1OX01PREVfR0VPSlNPTjoge1xuICAgICAgICByZXR1cm4gZmlsdGVyZWRJbmRleC5tYXAoaSA9PiB0aGlzLmRhdGFUb0ZlYXR1cmVbaV0pLmZpbHRlcihkID0+IGQpO1xuICAgICAgfVxuXG4gICAgICBjYXNlIENPTFVNTl9NT0RFX1RBQkxFOlxuICAgICAgICByZXR1cm4gYXBwbHlGaWx0ZXJzVG9UYWJsZUNvbHVtbnMoZGF0YXNldCwgdGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGFJZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB7Z3B1RmlsdGVyLCBkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXRzW3RoaXMuY29uZmlnLmRhdGFJZF07XG4gICAgY29uc3Qge2RhdGF9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgbGV0IGZpbHRlclZhbHVlQWNjZXNzb3I7XG4gICAgbGV0IGRhdGFBY2Nlc3NvcjtcbiAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTikge1xuICAgICAgZmlsdGVyVmFsdWVBY2Nlc3NvciA9IChkYywgZCwgZmllbGRJbmRleCkgPT4gZGMudmFsdWVBdChkLnByb3BlcnRpZXMuaW5kZXgsIGZpZWxkSW5kZXgpO1xuICAgICAgZGF0YUFjY2Vzc29yID0gKCkgPT4gZCA9PiAoe2luZGV4OiBkLnByb3BlcnRpZXMuaW5kZXh9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsdGVyVmFsdWVBY2Nlc3NvciA9IGdldFRhYmxlTW9kZVZhbHVlQWNjZXNzb3I7XG4gICAgICBkYXRhQWNjZXNzb3IgPSAoKSA9PiBkID0+ICh7aW5kZXg6IGQucHJvcGVydGllcy5pbmRleH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4QWNjZXNzb3IgPSBmID0+IGYucHJvcGVydGllcy5pbmRleDtcbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLmdldEF0dHJpYnV0ZUFjY2Vzc29ycyh7ZGF0YUFjY2Vzc29yLCBkYXRhQ29udGFpbmVyfSk7XG5cbiAgICBjb25zdCBpc0ZpbHRlcmVkQWNjZXNzb3IgPSBkID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSW5kZXggPyB0aGlzLmZpbHRlcmVkSW5kZXhbZC5wcm9wZXJ0aWVzLmluZGV4XSA6IDE7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKFxuICAgICAgICBpbmRleEFjY2Vzc29yLFxuICAgICAgICBmaWx0ZXJWYWx1ZUFjY2Vzc29yXG4gICAgICApLFxuICAgICAgZ2V0RmlsdGVyZWQ6IGlzRmlsdGVyZWRBY2Nlc3NvcixcbiAgICAgIC4uLmFjY2Vzc29yc1xuICAgIH07XG4gIH1cblxuICBpc0luUG9seWdvbihkYXRhOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBpbmRleDogbnVtYmVyLCBwb2x5Z29uOiBGZWF0dXJlPFBvbHlnb24+KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY2VudHJvaWRzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5jZW50cm9pZHNbaW5kZXhdKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGlzUmVhY3RhbmdsZVNlYXJjaEJveCA9IHBvbHlnb24ucHJvcGVydGllcz8uc2hhcGUgPT09ICdSZWN0YW5nbGUnO1xuICAgIGNvbnN0IHBvaW50ID0gdGhpcy5jZW50cm9pZHNbaW5kZXhdO1xuICAgIC8vIGlmIG5vIHZhbGlkIGNlbnRyb2lkLCByZXR1cm4gZmFsc2VcbiAgICBpZiAoIXBvaW50KSByZXR1cm4gZmFsc2U7XG4gICAgLy8gcXVpY2sgY2hlY2sgaWYgY2VudHJvaWQgaXMgd2l0aGluIHRoZSBxdWVyeSByZWN0YW5nbGVcbiAgICBpZiAoaXNSZWFjdGFuZ2xlU2VhcmNoQm94ICYmIHBvbHlnb24ucHJvcGVydGllcz8uYmJveCkge1xuICAgICAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gcG9seWdvbj8ucHJvcGVydGllcz8uYmJveCB8fCBbXTtcbiAgICAgIHJldHVybiBwb2ludFswXSA+PSBtaW5YICYmIHBvaW50WzBdIDw9IG1heFggJiYgcG9pbnRbMV0gPj0gbWluWSAmJiBwb2ludFsxXSA8PSBtYXhZO1xuICAgIH1cbiAgICAvLyB1c2UgdHVyZi5qcyB0byBjaGVjayBpZiBjZW50cm9pZCBpcyB3aXRoaW4gcXVlcnkgcG9seWdvblxuICAgIHJldHVybiBib29sZWFuV2l0aGluKHR1cmZQb2ludChwb2ludCksIHBvbHlnb24pO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJNZXRhKGRhdGFzZXQ6IEtlcGxlclRhYmxlKSB7XG4gICAgY29uc3Qge2RhdGFDb250YWluZXJ9ID0gZGF0YXNldDtcblxuICAgIHRoaXMuZGF0YUNvbnRhaW5lciA9IGRhdGFDb250YWluZXI7XG5cbiAgICB0aGlzLmdlb0Fycm93TW9kZSA9IGZpZWxkSXNHZW9BcnJvdyhcbiAgICAgIGdlb0ZpZWxkQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YXNldC5kYXRhQ29udGFpbmVyKVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5nZW9BcnJvd01vZGUgJiYgZGF0YUNvbnRhaW5lciBpbnN0YW5jZW9mIEFycm93RGF0YUNvbnRhaW5lcikge1xuICAgICAgY29uc3QgZ2VvQ29sdW1uID0gZ2VvQ29sdW1uQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YUNvbnRhaW5lcik7XG4gICAgICBjb25zdCBnZW9GaWVsZCA9IGdlb0ZpZWxkQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YUNvbnRhaW5lcik7XG5cbiAgICAgIC8vIHVwZGF0ZSB0aGUgbGF0ZXN0IGJhdGNoL2NodW5rIG9mIGdlb2Fycm93IGRhdGEgd2hlbiBsb2FkaW5nIGRhdGEgaW5jcmVtZW50YWxseVxuICAgICAgaWYgKGdlb0NvbHVtbiAmJiBnZW9GaWVsZCAmJiB0aGlzLmRhdGFUb0ZlYXR1cmUubGVuZ3RoIDwgZGF0YUNvbnRhaW5lci5udW1DaHVua3MoKSkge1xuICAgICAgICAvLyBmb3IgaW5jcmVtZW50YWxseSBsb2FkaW5nIGRhdGEsIHdlIG9ubHkgbG9hZCBhbmQgcmVuZGVyIHRoZSBsYXRlc3QgYmF0Y2g7IG90aGVyd2lzZSwgd2Ugd2lsbCBsb2FkIGFuZCByZW5kZXIgYWxsIGJhdGNoZXNcbiAgICAgICAgY29uc3QgaXNJbmNyZW1lbnRhbExvYWQgPSBkYXRhQ29udGFpbmVyLm51bUNodW5rcygpIC0gdGhpcy5kYXRhVG9GZWF0dXJlLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgLy8gVE9ETzogYWRkIHN1cHBvcnQgZm9yIENPTFVNTl9NT0RFX1RBQkxFIGluIGdldEdlb2pzb25MYXllck1ldGFGcm9tQXJyb3dcbiAgICAgICAgY29uc3Qge2RhdGFUb0ZlYXR1cmUsIGJvdW5kcywgZml4ZWRSYWRpdXMsIGZlYXR1cmVUeXBlcywgY2VudHJvaWRzfSA9XG4gICAgICAgICAgZ2V0R2VvanNvbkxheWVyTWV0YUZyb21BcnJvdyh7XG4gICAgICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICAgICAgZ2VvQ29sdW1uLFxuICAgICAgICAgICAgZ2VvRmllbGQsXG4gICAgICAgICAgICAuLi4oaXNJbmNyZW1lbnRhbExvYWQgPyB7Y2h1bmtJbmRleDogdGhpcy5kYXRhVG9GZWF0dXJlLmxlbmd0aH0gOiBudWxsKVxuICAgICAgICAgIH0pO1xuICAgICAgICBpZiAoY2VudHJvaWRzKSB0aGlzLmNlbnRyb2lkcyA9IHRoaXMuY2VudHJvaWRzLmNvbmNhdChjZW50cm9pZHMpO1xuICAgICAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kcywgZml4ZWRSYWRpdXMsIGZlYXR1cmVUeXBlc30pO1xuICAgICAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBbLi4udGhpcy5kYXRhVG9GZWF0dXJlLCAuLi5kYXRhVG9GZWF0dXJlXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YVRvRmVhdHVyZS5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IGdldEZlYXR1cmUgPSB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG5cbiAgICAgIGNvbnN0IHtkYXRhVG9GZWF0dXJlLCBib3VuZHMsIGZpeGVkUmFkaXVzLCBmZWF0dXJlVHlwZXMsIGNlbnRyb2lkc30gPSBnZXRHZW9qc29uTGF5ZXJNZXRhKHtcbiAgICAgICAgZGF0YUNvbnRhaW5lcixcbiAgICAgICAgZ2V0RmVhdHVyZSxcbiAgICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZ1xuICAgICAgfSk7XG4gICAgICBpZiAoY2VudHJvaWRzKSB0aGlzLmNlbnRyb2lkcyA9IGNlbnRyb2lkcztcbiAgICAgIHRoaXMuZGF0YVRvRmVhdHVyZSA9IGRhdGFUb0ZlYXR1cmU7XG4gICAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kcywgZml4ZWRSYWRpdXMsIGZlYXR1cmVUeXBlc30pO1xuICAgIH1cbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0OiBLZXBsZXJUYWJsZSkge1xuICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXQ7XG4gICAgaWYgKCFkYXRhQ29udGFpbmVyLm51bVJvd3MoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gZGVmZWZhdWx0TGF5ZXJQcm9wcyB3aWxsIGF1dG9tYXRpY2FsbHkgZmluZCBnZW9qc29uIGNvbHVtblxuICAgIC8vIGlmIG5vdCBmb3VuZCwgd2UgdHJ5IHRvIHNldCBpdCB0byBpZCAvIGxhdCAvbG5nIC90c1xuICAgIGlmICghdGhpcy5jb25maWcuY29sdW1ucy5nZW9qc29uLnZhbHVlKSB7XG4gICAgICAvLyBmaW5kIGNvbHVtbnMgZnJvbSBsYXQsIGxuZywgaWQsIGFuZCB0c1xuICAgICAgY29uc3QgY29sdW1uQ29uZmlnID0gZGV0ZWN0VGFibGVDb2x1bW5zKGRhdGFzZXQsIHRoaXMuY29uZmlnLmNvbHVtbnMsICdzb3J0QnknKTtcbiAgICAgIGlmIChjb2x1bW5Db25maWcpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICAgICAgLi4uY29sdW1uQ29uZmlnLFxuICAgICAgICAgIGNvbHVtbk1vZGU6IENPTFVNTl9NT0RFX1RBQkxFXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudXBkYXRlTGF5ZXJNZXRhKGRhdGFzZXQpO1xuXG4gICAgY29uc3Qge2ZlYXR1cmVUeXBlc30gPSB0aGlzLm1ldGE7XG4gICAgLy8gZGVmYXVsdCBzZXR0aW5ncyBpcyBzdHJva2U6IHRydWUsIGZpbGxlZDogZmFsc2VcbiAgICBpZiAoZmVhdHVyZVR5cGVzICYmIGZlYXR1cmVUeXBlcy5wb2x5Z29uKSB7XG4gICAgICAvLyBzZXQgYm90aCBmaWxsIGFuZCBzdHJva2UgdG8gdHJ1ZVxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe1xuICAgICAgICBmaWxsZWQ6IHRydWUsXG4gICAgICAgIHN0cm9rZWQ6IHRydWUsXG4gICAgICAgIHN0cm9rZUNvbG9yOiBjb2xvck1ha2VyLm5leHQoKS52YWx1ZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChmZWF0dXJlVHlwZXMgJiYgZmVhdHVyZVR5cGVzLnBvaW50KSB7XG4gICAgICAvLyBzZXQgZmlsbCB0byB0cnVlIGlmIGRldGVjdCBwb2ludFxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe2ZpbGxlZDogdHJ1ZSwgc3Ryb2tlZDogZmFsc2V9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlzTGF5ZXJIb3ZlcmVkKG9iamVjdEluZm86IE9iamVjdEluZm8pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZW9BcnJvd01vZGVcbiAgICAgID8gaXNMYXllckhvdmVyZWRGcm9tQXJyb3cob2JqZWN0SW5mbywgdGhpcy5pZClcbiAgICAgIDogc3VwZXIuaXNMYXllckhvdmVyZWQob2JqZWN0SW5mbyk7XG4gIH1cblxuICBoYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEluZm86IE9iamVjdEluZm8pOiBGZWF0dXJlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZ2VvQXJyb3dNb2RlXG4gICAgICA/IGdldEhvdmVyZWRPYmplY3RGcm9tQXJyb3coXG4gICAgICAgICAgb2JqZWN0SW5mbyxcbiAgICAgICAgICB0aGlzLmRhdGFDb250YWluZXIsXG4gICAgICAgICAgdGhpcy5pZCxcbiAgICAgICAgICBnZW9Db2x1bW5BY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKSxcbiAgICAgICAgICBnZW9GaWVsZEFjY2Vzc29yKHRoaXMuY29uZmlnLmNvbHVtbnMpXG4gICAgICAgIClcbiAgICAgIDogc3VwZXIuaGFzSG92ZXJlZE9iamVjdChvYmplY3RJbmZvKTtcbiAgfVxuXG4gIGdldEVsZXZhdGlvblpvb21GYWN0b3Ioe3pvb20sIHpvb21PZmZzZXQgPSAwfSkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRIZWlnaHQgPyAxIDogTWF0aC5wb3coMiwgTWF0aC5tYXgoOCAtIHpvb20gKyB6b29tT2Zmc2V0LCAwKSk7XG4gIH1cblxuICByZW5kZXJMYXllcihvcHRzKSB7XG4gICAgY29uc3Qge2RhdGE6IGRhdGFQcm9wcywgZ3B1RmlsdGVyLCBvYmplY3RIb3ZlcmVkLCBtYXBTdGF0ZSwgaW50ZXJhY3Rpb25Db25maWd9ID0gb3B0cztcblxuICAgIGNvbnN0IHtmaXhlZFJhZGl1cywgZmVhdHVyZVR5cGVzfSA9IHRoaXMubWV0YTtcbiAgICBjb25zdCByYWRpdXNTY2FsZSA9IHRoaXMuZ2V0UmFkaXVzU2NhbGVCeVpvb20obWFwU3RhdGUsIGZpeGVkUmFkaXVzKTtcbiAgICBjb25zdCB6b29tRmFjdG9yID0gdGhpcy5nZXRab29tRmFjdG9yKG1hcFN0YXRlKTtcbiAgICBjb25zdCBlbGVab29tRmFjdG9yID0gdGhpcy5nZXRFbGV2YXRpb25ab29tRmFjdG9yKG1hcFN0YXRlKTtcblxuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG5cbiAgICBjb25zdCBsYXllclByb3BzID0ge1xuICAgICAgbGluZVdpZHRoU2NhbGU6IHZpc0NvbmZpZy50aGlja25lc3MgKiB6b29tRmFjdG9yICogOCxcbiAgICAgIGVsZXZhdGlvblNjYWxlOiB2aXNDb25maWcuZWxldmF0aW9uU2NhbGUgKiBlbGVab29tRmFjdG9yLFxuICAgICAgcG9pbnRSYWRpdXNTY2FsZTogcmFkaXVzU2NhbGUsXG4gICAgICBsaW5lTWl0ZXJMaW1pdDogNFxuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHtcbiAgICAgIC4uLnRoaXMuZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzKCksXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMsXG4gICAgICBnZXRGaWx0ZXJlZDogdGhpcy5maWx0ZXJlZEluZGV4VHJpZ2dlclxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuICAgIGNvbnN0IG9wYU92ZXJ3cml0ZSA9IHtcbiAgICAgIG9wYWNpdHk6IHZpc0NvbmZpZy5zdHJva2VPcGFjaXR5XG4gICAgfTtcblxuICAgIGNvbnN0IHBpY2thYmxlID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5lbmFibGVkO1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICBjb25zdCB7ZGF0YSwgLi4ucHJvcHN9ID0gZGF0YVByb3BzO1xuXG4gICAgLy8gYXJyb3cgdGFibGUgY2FuIGhhdmUgbXVsdGlwbGUgY2h1bmtzLCBhIGRlY2suZ2wgbGF5ZXIgaXMgY3JlYXRlZCBmb3IgZWFjaCBjaHVua1xuICAgIGNvbnN0IGRlY2tMYXllckRhdGEgPSB0aGlzLmdlb0Fycm93TW9kZSA/IGRhdGEgOiBbZGF0YV07XG4gICAgY29uc3QgZGVja0xheWVycyA9IGRlY2tMYXllckRhdGEubWFwKChkLCBpKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IERlY2tHTEdlb0pzb25MYXllcih7XG4gICAgICAgIC4uLmRlZmF1bHRMYXllclByb3BzLFxuICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgZGF0YTogZCxcbiAgICAgICAgaWQ6IGRlY2tMYXllckRhdGEubGVuZ3RoID4gMSA/IGAke3RoaXMuaWR9LSR7aX1gIDogdGhpcy5pZCxcbiAgICAgICAgcGlja2FibGUsXG4gICAgICAgIGhpZ2hsaWdodENvbG9yOiBISUdITElHSF9DT0xPUl8zRCxcbiAgICAgICAgYXV0b0hpZ2hsaWdodDogdmlzQ29uZmlnLmVuYWJsZTNkICYmIHBpY2thYmxlLFxuICAgICAgICBzdHJva2VkOiB2aXNDb25maWcuc3Ryb2tlZCxcbiAgICAgICAgZmlsbGVkOiB2aXNDb25maWcuZmlsbGVkLFxuICAgICAgICBleHRydWRlZDogdmlzQ29uZmlnLmVuYWJsZTNkLFxuICAgICAgICB3aXJlZnJhbWU6IHZpc0NvbmZpZy53aXJlZnJhbWUsXG4gICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICBsaW5lTWl0ZXJMaW1pdDogMixcbiAgICAgICAgY2FwUm91bmRlZDogdHJ1ZSxcbiAgICAgICAgam9pbnRSb3VuZGVkOiB0cnVlLFxuICAgICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgZXh0ZW5zaW9uczogWy4uLmRlZmF1bHRMYXllclByb3BzLmV4dGVuc2lvbnMsIG5ldyBGaWx0ZXJBcnJvd0V4dGVuc2lvbigpXSxcbiAgICAgICAgX3N1YkxheWVyUHJvcHM6IHtcbiAgICAgICAgICAuLi4oZmVhdHVyZVR5cGVzPy5wb2x5Z29uID8geydwb2x5Z29ucy1zdHJva2UnOiBvcGFPdmVyd3JpdGV9IDoge30pLFxuICAgICAgICAgIC4uLihmZWF0dXJlVHlwZXM/LmxpbmUgPyB7bGluZXN0cmluZ3M6IG9wYU92ZXJ3cml0ZX0gOiB7fSksXG4gICAgICAgICAgLi4uKGZlYXR1cmVUeXBlcz8ucG9pbnRcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHBvaW50czoge1xuICAgICAgICAgICAgICAgICAgbGluZU9wYWNpdHk6IHZpc0NvbmZpZy5zdHJva2VPcGFjaXR5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBbXG4gICAgICAuLi5kZWNrTGF5ZXJzLFxuICAgICAgLy8gaG92ZXIgbGF5ZXJcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0ICYmICF2aXNDb25maWcuZW5hYmxlM2RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgRGVja0dMR2VvSnNvbkxheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCksXG4gICAgICAgICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgICAgICAgIHZpc2libGU6IGRlZmF1bHRMYXllclByb3BzLnZpc2libGUsXG4gICAgICAgICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgIGdldExpbmVXaWR0aDogcHJvcHMuZ2V0TGluZVdpZHRoLFxuICAgICAgICAgICAgICBnZXRQb2ludFJhZGl1czogcHJvcHMuZ2V0UG9pbnRSYWRpdXMsXG4gICAgICAgICAgICAgIGdldEVsZXZhdGlvbjogcHJvcHMuZ2V0RWxldmF0aW9uLFxuICAgICAgICAgICAgICBnZXRMaW5lQ29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICAgICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICAgICAgICAvLyBhbHdheXMgZHJhdyBvdXRsaW5lXG4gICAgICAgICAgICAgIHN0cm9rZWQ6IHRydWUsXG4gICAgICAgICAgICAgIGZpbGxlZDogZmFsc2VcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKVxuICAgIF07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsT0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksYUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBQyx1QkFBQSxDQUFBTixPQUFBO0FBV0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsYUFBQSxHQUFBUixPQUFBO0FBU0EsSUFBQVMsV0FBQSxHQUFBVCxPQUFBO0FBS0EsSUFBQVUsaUJBQUEsR0FBQVIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFXLFVBQUEsR0FBQVgsT0FBQTtBQW9CQSxJQUFBWSxNQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFB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
|
|
688
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfYm9vbGVhbldpdGhpbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoIiwiX3R5cGVBbmFseXplciIsIl9iYXNlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9sYXllcnMiLCJfZ2VvanNvblV0aWxzIiwiX2xheWVyVXRpbHMiLCJfZ2VvanNvbkxheWVySWNvbiIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfZGVja2dsTGF5ZXJzIiwiX2dlb2pzb25JbmZvTW9kYWwiLCJfZXhjbHVkZWQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJTVVBQT1JURURfQU5BTFlaRVJfVFlQRVMiLCJEQVRBX1RZUEVTIiwiR0VPTUVUUlkiLCJHRU9NRVRSWV9GUk9NX1NUUklORyIsIlBBSVJfR0VPTUVUUllfRlJPTV9TVFJJTkciLCJnZW9qc29uVmlzQ29uZmlncyIsImV4cG9ydHMiLCJvcGFjaXR5Iiwic3Ryb2tlT3BhY2l0eSIsIkxBWUVSX1ZJU19DT05GSUdTIiwicHJvcGVydHkiLCJ0aGlja25lc3MiLCJkZWZhdWx0VmFsdWUiLCJzdHJva2VDb2xvciIsImNvbG9yUmFuZ2UiLCJzdHJva2VDb2xvclJhbmdlIiwicmFkaXVzIiwic2l6ZVJhbmdlIiwicmFkaXVzUmFuZ2UiLCJoZWlnaHRSYW5nZSIsImVsZXZhdGlvblNjYWxlIiwic3Ryb2tlZCIsImZpbGxlZCIsImVuYWJsZTNkIiwid2lyZWZyYW1lIiwiZml4ZWRIZWlnaHQiLCJnZW9Kc29uUmVxdWlyZWRDb2x1bW5zIiwiZmVhdHVyZUFjY2Vzc29yIiwiX3JlZiIsImdlb2pzb24iLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImdlb0NvbHVtbkFjY2Vzc29yIiwiX3JlZjIiLCJfZGMkZ2V0Q29sdW1uIiwiZ2V0Q29sdW1uIiwiZ2V0VGFibGVNb2RlVmFsdWVBY2Nlc3NvciIsImZlYXR1cmUiLCJmaWVsZCIsInByb3BlcnRpZXMiLCJ2YWx1ZXMiLCJtYXAiLCJ2IiwidmFsdWVBY2Nlc3NvciIsImdldFRhYmxlTW9kZUZpZWxkVmFsdWUiLCJkYXRhIiwicnYiLCJkZWZhdWx0R2V0RmllbGRWYWx1ZSIsImdlb0ZpZWxkQWNjZXNzb3IiLCJfcmVmMyIsImdldEZpZWxkIiwiZGVmYXVsdEVsZXZhdGlvbiIsImRlZmF1bHRMaW5lV2lkdGgiLCJkZWZhdWx0UmFkaXVzIiwiQ09MVU1OX01PREVfVEFCTEUiLCJTVVBQT1JURURfQ09MVU1OX01PREVTIiwia2V5IiwiQ09MVU1OX01PREVfR0VPSlNPTiIsImxhYmVsIiwicmVxdWlyZWRDb2x1bW5zIiwib3B0aW9uYWxDb2x1bW5zIiwiREVGQVVMVF9DT0xVTU5fTU9ERSIsIkdlb0pzb25MYXllciIsIl9MYXllciIsInByb3BzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJfbGF5ZXJJbmZvTW9kYWwiLCJHZW9qc29uSW5mb01vZGFsRmFjdG9yeSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwidHlwZSIsIkdlb2pzb25MYXllckljb24iLCJkZWZhdWx0UG9pbnRDb2x1bW5QYWlycyIsImlkIiwidGVtcGxhdGUiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJ2YWx1ZSIsImFjY2Vzc1ZTRmllbGRWYWx1ZSIsImNvbHVtbk1vZGUiLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiYWNjZXNzb3IiLCJjb25kaXRpb24iLCJ2aXNDb25maWciLCJudWxsVmFsdWUiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsImZpbGxDb2xvciIsInNjYWxlIiwiZG9tYWluIiwicmFuZ2UiLCJjaGFubmVsU2NhbGVUeXBlIiwiQ0hBTk5FTF9TQ0FMRVMiLCJsaW5lQ29sb3IiLCJzaXplIiwibGluZVdpZHRoIiwiaGVpZ2h0IiwiZml4ZWQiLCJlbGV2YXRpb24iLCJnZXREZWZhdWx0TGF5ZXJDb25maWciLCJfcHJvcHMkY29sdW1uTW9kZSIsImRlZmF1bHRMYXllckNvbmZpZyIsImhlaWdodEZpZWxkIiwiaGVpZ2h0RG9tYWluIiwiaGVpZ2h0U2NhbGUiLCJyYWRpdXNGaWVsZCIsInJhZGl1c0RvbWFpbiIsInJhZGl1c1NjYWxlIiwic3Ryb2tlQ29sb3JGaWVsZCIsInN0cm9rZUNvbG9yRG9tYWluIiwic3Ryb2tlQ29sb3JTY2FsZSIsImNvbG9yVUkiLCJERUZBVUxUX0NPTE9SX1VJIiwiZ2V0SG92ZXJEYXRhIiwib2JqZWN0IiwiX29iamVjdCRwcm9wZXJ0aWVzIiwiZ2VvQXJyb3dNb2RlIiwicm93IiwiZ2V0RmlsdGVyZWRJdGVtQ291bnQiLCJmaWx0ZXJlZEl0ZW1Db3VudCIsInBvbHlnb25Db3VudCIsImNvbmNhdCIsImxpbmVzdHJpbmdDb3VudCIsInBvaW50Q291bnQiLCJjYWxjdWxhdGVEYXRhQXR0cmlidXRlIiwiZGF0YXNldCIsIl90aGlzMiIsImZpZWxkSXNHZW9BcnJvdyIsImZpbHRlcmVkSW5kZXgiLCJudW1Sb3dzIiwiVWludDhDbGFtcGVkQXJyYXkiLCJmaWxsIiwiaXNSYW5nZSIsImZpbHRlcmVkSW5kZXhUcmlnZ2VyIiwiZGF0YVRvRmVhdHVyZSIsImFwcGx5RmlsdGVyc1RvVGFibGVDb2x1bW5zIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJvbGRMYXllckRhdGEiLCJfdGhpczMiLCJkYXRhSWQiLCJfZGF0YXNldHMkdGhpcyRjb25maWciLCJncHVGaWx0ZXIiLCJfdGhpcyR1cGRhdGVEYXRhIiwidXBkYXRlRGF0YSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJkYXRhQWNjZXNzb3IiLCJmaWVsZEluZGV4IiwiaW5kZXhBY2Nlc3NvciIsImYiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJpc0ZpbHRlcmVkQWNjZXNzb3IiLCJnZXRGaWx0ZXJWYWx1ZSIsImdldEZpbHRlcmVkIiwiaXNJblBvbHlnb24iLCJwb2x5Z29uIiwiX3BvbHlnb24kcHJvcGVydGllcyIsIl9wb2x5Z29uJHByb3BlcnRpZXMyIiwiY2VudHJvaWRzIiwiaXNSZWFjdGFuZ2xlU2VhcmNoQm94Iiwic2hhcGUiLCJwb2ludCIsImJib3giLCJfcG9seWdvbiRwcm9wZXJ0aWVzMyIsIl9yZWY1IiwiX3JlZjYiLCJfc2xpY2VkVG9BcnJheTIiLCJtaW5YIiwibWluWSIsIm1heFgiLCJtYXhZIiwiYm9vbGVhbldpdGhpbiIsInR1cmZQb2ludCIsInVwZGF0ZUxheWVyTWV0YSIsIkFycm93RGF0YUNvbnRhaW5lciIsImdlb0NvbHVtbiIsImdlb0ZpZWxkIiwibnVtQ2h1bmtzIiwiaXNJbmNyZW1lbnRhbExvYWQiLCJfZ2V0R2VvanNvbkxheWVyTWV0YUYiLCJnZXRHZW9qc29uTGF5ZXJNZXRhRnJvbUFycm93IiwiY2h1bmtJbmRleCIsImJvdW5kcyIsImZpeGVkUmFkaXVzIiwiZmVhdHVyZVR5cGVzIiwidXBkYXRlTWV0YSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJnZXRGZWF0dXJlIiwiX2dldEdlb2pzb25MYXllck1ldGEiLCJnZXRHZW9qc29uTGF5ZXJNZXRhIiwic2V0SW5pdGlhbExheWVyQ29uZmlnIiwiY29sdW1uQ29uZmlnIiwiZGV0ZWN0VGFibGVDb2x1bW5zIiwidXBkYXRlTGF5ZXJDb25maWciLCJtZXRhIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJjb2xvck1ha2VyIiwibmV4dCIsImlzTGF5ZXJIb3ZlcmVkIiwib2JqZWN0SW5mbyIsImlzTGF5ZXJIb3ZlcmVkRnJvbUFycm93IiwiaGFzSG92ZXJlZE9iamVjdCIsImdldEhvdmVyZWRPYmplY3RGcm9tQXJyb3ciLCJnZXRFbGV2YXRpb25ab29tRmFjdG9yIiwiX3JlZjciLCJ6b29tIiwiX3JlZjckem9vbU9mZnNldCIsInpvb21PZmZzZXQiLCJNYXRoIiwicG93IiwibWF4IiwicmVuZGVyTGF5ZXIiLCJvcHRzIiwiX3RoaXM0IiwiZGF0YVByb3BzIiwib2JqZWN0SG92ZXJlZCIsIm1hcFN0YXRlIiwiaW50ZXJhY3Rpb25Db25maWciLCJfdGhpcyRtZXRhIiwiZ2V0UmFkaXVzU2NhbGVCeVpvb20iLCJ6b29tRmFjdG9yIiwiZ2V0Wm9vbUZhY3RvciIsImVsZVpvb21GYWN0b3IiLCJsYXllclByb3BzIiwibGluZVdpZHRoU2NhbGUiLCJwb2ludFJhZGl1c1NjYWxlIiwibGluZU1pdGVyTGltaXQiLCJ1cGRhdGVUcmlnZ2VycyIsImdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycyIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJkZWZhdWx0TGF5ZXJQcm9wcyIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsIm9wYU92ZXJ3cml0ZSIsInBpY2thYmxlIiwidG9vbHRpcCIsImVuYWJsZWQiLCJob3ZlcmVkT2JqZWN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImRlY2tMYXllckRhdGEiLCJkZWNrTGF5ZXJzIiwiRGVja0dMR2VvSnNvbkxheWVyIiwiaGlnaGxpZ2h0Q29sb3IiLCJISUdITElHSF9DT0xPUl8zRCIsImF1dG9IaWdobGlnaHQiLCJleHRydWRlZCIsIndyYXBMb25naXR1ZGUiLCJjYXBSb3VuZGVkIiwiam9pbnRSb3VuZGVkIiwiZXh0ZW5zaW9ucyIsIkZpbHRlckFycm93RXh0ZW5zaW9uIiwiX3N1YkxheWVyUHJvcHMiLCJsaW5lIiwibGluZXN0cmluZ3MiLCJwb2ludHMiLCJsaW5lT3BhY2l0eSIsImdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMiLCJ2aXNpYmxlIiwiZ2V0TGluZVdpZHRoIiwiZ2V0UG9pbnRSYWRpdXMiLCJnZXRFbGV2YXRpb24iLCJnZXRMaW5lQ29sb3IiLCJnZXRGaWxsQ29sb3IiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJfcmVmOCIsIl90aGlzNSIsIl9yZWY4JGZpZWxkcyIsImZpZWxkcyIsImdlb2pzb25Db2x1bW5zIiwiYW5hbHl6ZXJUeXBlIiwibmFtZSIsImRlZmF1bHRDb2x1bW5zIiwidW5pcSIsIkdFT0pTT05fRklFTERTIiwiZm91bmRDb2x1bW5zIiwiZmluZERlZmF1bHRDb2x1bW5GaWVsZCIsInJlcGxhY2UiLCJpc1Zpc2libGUiLCJMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW9qc29uLWxheWVyL2dlb2pzb24tbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7cG9pbnQgYXMgdHVyZlBvaW50fSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCB7RmVhdHVyZSwgUG9seWdvbn0gZnJvbSAnZ2VvanNvbic7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gudW5pcSc7XG5pbXBvcnQge0RBVEFfVFlQRVN9IGZyb20gJ3R5cGUtYW5hbHl6ZXInO1xuaW1wb3J0IExheWVyLCB7XG4gIGNvbG9yTWFrZXIsXG4gIGRlZmF1bHRHZXRGaWVsZFZhbHVlLFxuICBMYXllckJhc2VDb25maWcsXG4gIExheWVyQmFzZUNvbmZpZ1BhcnRpYWwsXG4gIExheWVyQ29sb3JDb25maWcsXG4gIExheWVySGVpZ2h0Q29uZmlnLFxuICBMYXllclJhZGl1c0NvbmZpZyxcbiAgTGF5ZXJTaXplQ29uZmlnLFxuICBMYXllclN0cm9rZUNvbG9yQ29uZmlnXG59IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtHZW9Kc29uTGF5ZXIgYXMgRGVja0dMR2VvSnNvbkxheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtcbiAgZ2V0R2VvanNvbkxheWVyTWV0YSxcbiAgR2VvanNvbkRhdGFNYXBzLFxuICBEZWNrR2xHZW9UeXBlcyxcbiAgZGV0ZWN0VGFibGVDb2x1bW5zLFxuICBDT0xVTU5fTU9ERV9HRU9KU09OLFxuICBhcHBseUZpbHRlcnNUb1RhYmxlQ29sdW1ucyxcbiAgZmllbGRJc0dlb0Fycm93XG59IGZyb20gJy4vZ2VvanNvbi11dGlscyc7XG5pbXBvcnQge1xuICBnZXRHZW9qc29uTGF5ZXJNZXRhRnJvbUFycm93LFxuICBpc0xheWVySG92ZXJlZEZyb21BcnJvdyxcbiAgZ2V0SG92ZXJlZE9iamVjdEZyb21BcnJvd1xufSBmcm9tICcuLi9sYXllci11dGlscyc7XG5pbXBvcnQgR2VvanNvbkxheWVySWNvbiBmcm9tICcuL2dlb2pzb24tbGF5ZXItaWNvbic7XG5pbXBvcnQge1xuICBHRU9KU09OX0ZJRUxEUyxcbiAgSElHSExJR0hfQ09MT1JfM0QsXG4gIENIQU5ORUxfU0NBTEVTLFxuICBMQVlFUl9WSVNfQ09ORklHUyxcbiAgREVGQVVMVF9DT0xPUl9VSVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBDb2xvclJhbmdlLFxuICBWaXNDb25maWdOdW1iZXIsXG4gIFZpc0NvbmZpZ0NvbG9yU2VsZWN0LFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdSYW5nZSxcbiAgVmlzQ29uZmlnQm9vbGVhbixcbiAgTWVyZ2UsXG4gIFJHQkNvbG9yLFxuICBQcm90b0RhdGFzZXRGaWVsZCxcbiAgTGF5ZXJDb2x1bW5cbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgQXJyb3dEYXRhQ29udGFpbmVyfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7RmlsdGVyQXJyb3dFeHRlbnNpb259IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5pbXBvcnQgR2VvanNvbkluZm9Nb2RhbEZhY3RvcnkgZnJvbSAnLi9nZW9qc29uLWluZm8tbW9kYWwnO1xuXG5jb25zdCBTVVBQT1JURURfQU5BTFlaRVJfVFlQRVMgPSB7XG4gIFtEQVRBX1RZUEVTLkdFT01FVFJZXTogdHJ1ZSxcbiAgW0RBVEFfVFlQRVMuR0VPTUVUUllfRlJPTV9TVFJJTkddOiB0cnVlLFxuICBbREFUQV9UWVBFUy5QQUlSX0dFT01FVFJZX0ZST01fU1RSSU5HXTogdHJ1ZVxufTtcblxuZXhwb3J0IGNvbnN0IGdlb2pzb25WaXNDb25maWdzOiB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JztcbiAgc3Ryb2tlT3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICB0aGlja25lc3M6IFZpc0NvbmZpZ051bWJlcjtcbiAgc3Ryb2tlQ29sb3I6ICdzdHJva2VDb2xvcic7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgc3Ryb2tlQ29sb3JSYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnO1xuICByYWRpdXM6ICdyYWRpdXMnO1xuXG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnO1xuICByYWRpdXNSYW5nZTogJ3JhZGl1c1JhbmdlJztcbiAgaGVpZ2h0UmFuZ2U6ICdlbGV2YXRpb25SYW5nZSc7XG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnO1xuICBzdHJva2VkOiAnc3Ryb2tlZCc7XG4gIGZpbGxlZDogJ2ZpbGxlZCc7XG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnO1xuICB3aXJlZnJhbWU6ICd3aXJlZnJhbWUnO1xuICBmaXhlZEhlaWdodDogJ2ZpeGVkSGVpZ2h0Jztcbn0gPSB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgc3Ryb2tlT3BhY2l0eToge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLm9wYWNpdHksXG4gICAgcHJvcGVydHk6ICdzdHJva2VPcGFjaXR5J1xuICB9LFxuICB0aGlja25lc3M6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy50aGlja25lc3MsXG4gICAgZGVmYXVsdFZhbHVlOiAwLjVcbiAgfSxcbiAgc3Ryb2tlQ29sb3I6ICdzdHJva2VDb2xvcicsXG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgc3Ryb2tlQ29sb3JSYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICByYWRpdXM6ICdyYWRpdXMnLFxuXG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnLFxuICByYWRpdXNSYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgaGVpZ2h0UmFuZ2U6ICdlbGV2YXRpb25SYW5nZScsXG4gIGVsZXZhdGlvblNjYWxlOiAnZWxldmF0aW9uU2NhbGUnLFxuICBzdHJva2VkOiAnc3Ryb2tlZCcsXG4gIGZpbGxlZDogJ2ZpbGxlZCcsXG4gIGVuYWJsZTNkOiAnZW5hYmxlM2QnLFxuICB3aXJlZnJhbWU6ICd3aXJlZnJhbWUnLFxuICBmaXhlZEhlaWdodDogJ2ZpeGVkSGVpZ2h0J1xufTtcblxuZXhwb3J0IHR5cGUgR2VvSnNvblZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHN0cm9rZU9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgdGhpY2tuZXNzOiBWaXNDb25maWdOdW1iZXI7XG4gIHN0cm9rZUNvbG9yOiBWaXNDb25maWdDb2xvclNlbGVjdDtcbiAgY29sb3JSYW5nZTogVmlzQ29uZmlnQ29sb3JSYW5nZTtcbiAgc3Ryb2tlQ29sb3JSYW5nZTogVmlzQ29uZmlnQ29sb3JSYW5nZTtcbiAgcmFkaXVzOiBWaXNDb25maWdOdW1iZXI7XG5cbiAgc2l6ZVJhbmdlOiBWaXNDb25maWdSYW5nZTtcbiAgcmFkaXVzUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICBoZWlnaHRSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIGVsZXZhdGlvblNjYWxlOiBWaXNDb25maWdOdW1iZXI7XG4gIGZpeGVkSGVpZ2h0OiBWaXNDb25maWdCb29sZWFuO1xuICBzdHJva2VkOiBWaXNDb25maWdCb29sZWFuO1xuICBmaWxsZWQ6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIGVuYWJsZTNkOiBWaXNDb25maWdCb29sZWFuO1xuICB3aXJlZnJhbWU6IFZpc0NvbmZpZ0Jvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBHZW9Kc29uTGF5ZXJDb2x1bW5zQ29uZmlnID0ge1xuICBnZW9qc29uOiBMYXllckNvbHVtbjtcbn07XG5cbmV4cG9ydCB0eXBlIEdlb0pzb25MYXllclZpc0NvbmZpZyA9IHtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICBzdHJva2VPcGFjaXR5OiBudW1iZXI7XG4gIHRoaWNrbmVzczogbnVtYmVyO1xuICBzdHJva2VDb2xvcjogUkdCQ29sb3I7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHN0cm9rZUNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHJhZGl1czogbnVtYmVyO1xuXG4gIHNpemVSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgcmFkaXVzUmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG4gIGhlaWdodFJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICBlbGV2YXRpb25TY2FsZTogbnVtYmVyO1xuICBzdHJva2VkOiBib29sZWFuO1xuICBmaWxsZWQ6IGJvb2xlYW47XG4gIGVuYWJsZTNkOiBib29sZWFuO1xuICB3aXJlZnJhbWU6IGJvb2xlYW47XG4gIGZpeGVkSGVpZ2h0OiBib29sZWFuO1xufTtcblxudHlwZSBHZW9Kc29uTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnID0gTGF5ZXJDb2xvckNvbmZpZyAmXG4gIExheWVyU3Ryb2tlQ29sb3JDb25maWcgJlxuICBMYXllclNpemVDb25maWcgJlxuICBMYXllckhlaWdodENvbmZpZyAmXG4gIExheWVyUmFkaXVzQ29uZmlnO1xuZXhwb3J0IHR5cGUgR2VvSnNvbkxheWVyQ29uZmlnID0gTWVyZ2U8XG4gIExheWVyQmFzZUNvbmZpZyxcbiAge2NvbHVtbnM6IEdlb0pzb25MYXllckNvbHVtbnNDb25maWc7IHZpc0NvbmZpZzogR2VvSnNvbkxheWVyVmlzQ29uZmlnfVxuPiAmXG4gIEdlb0pzb25MYXllclZpc3VhbENoYW5uZWxDb25maWc7XG5cbmV4cG9ydCB0eXBlIEdlb0pzb25MYXllck1ldGEgPSB7XG4gIGZlYXR1cmVUeXBlcz86IERlY2tHbEdlb1R5cGVzO1xuICBmaXhlZFJhZGl1cz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZ2VvSnNvblJlcXVpcmVkQ29sdW1uczogWydnZW9qc29uJ10gPSBbJ2dlb2pzb24nXTtcblxudHlwZSBPYmplY3RJbmZvID0ge1xuICBpbmRleDogbnVtYmVyO1xuICBvYmplY3Q/OiBGZWF0dXJlIHwgdW5kZWZpbmVkO1xuICBwaWNrZWQ6IGJvb2xlYW47XG4gIGxheWVyOiBMYXllcjtcbiAgcmFkaXVzPzogbnVtYmVyO1xuICBpZD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBmZWF0dXJlQWNjZXNzb3IgPVxuICAoe2dlb2pzb259OiBHZW9Kc29uTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PlxuICAoZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gIGQgPT5cbiAgICBkYy52YWx1ZUF0KGQuaW5kZXgsIGdlb2pzb24uZmllbGRJZHgpO1xuXG5jb25zdCBnZW9Db2x1bW5BY2Nlc3NvciA9XG4gICh7Z2VvanNvbn06IEdlb0pzb25MYXllckNvbHVtbnNDb25maWcpID0+XG4gIChkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZSk6IGFycm93LlZlY3RvciB8IG51bGwgPT5cbiAgICBkYy5nZXRDb2x1bW4/LihnZW9qc29uLmZpZWxkSWR4KSBhcyBhcnJvdy5WZWN0b3I7XG5cbmNvbnN0IGdldFRhYmxlTW9kZVZhbHVlQWNjZXNzb3IgPSBmZWF0dXJlID0+IHtcbiAgLy8gQ2FsbGVkIGZyb20gZ3B1LWZpbHRlci11dGlscy5nZXRGaWx0ZXJWYWx1ZUFjY2Vzc29yKClcbiAgcmV0dXJuIGZpZWxkID0+IGZlYXR1cmUucHJvcGVydGllcy52YWx1ZXMubWFwKHYgPT4gZmllbGQudmFsdWVBY2Nlc3Nvcih2KSk7XG59O1xuXG5jb25zdCBnZXRUYWJsZU1vZGVGaWVsZFZhbHVlID0gKGZpZWxkLCBkYXRhKSA9PiB7XG4gIGxldCBydjtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcnYgPSBkYXRhKGZpZWxkKTtcbiAgfSBlbHNlIHtcbiAgICBydiA9IGRlZmF1bHRHZXRGaWVsZFZhbHVlKGZpZWxkLCBkYXRhKTtcbiAgfVxuICByZXR1cm4gcnY7XG59O1xuXG5jb25zdCBnZW9GaWVsZEFjY2Vzc29yID1cbiAgKHtnZW9qc29ufTogR2VvSnNvbkxheWVyQ29sdW1uc0NvbmZpZykgPT5cbiAgKGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKTogUHJvdG9EYXRhc2V0RmllbGQgfCBudWxsID0+XG4gICAgZGMuZ2V0RmllbGQgPyBkYy5nZXRGaWVsZChnZW9qc29uLmZpZWxkSWR4KSA6IG51bGw7XG5cbi8vIGFjY2VzcyBmZWF0dXJlIHByb3BlcnRpZXMgZnJvbSBnZW9qc29uIHN1YiBsYXllclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRFbGV2YXRpb24gPSA1MDA7XG5leHBvcnQgY29uc3QgZGVmYXVsdExpbmVXaWR0aCA9IDE7XG5leHBvcnQgY29uc3QgZGVmYXVsdFJhZGl1cyA9IDE7XG5cbmV4cG9ydCBjb25zdCBDT0xVTU5fTU9ERV9UQUJMRSA9ICd0YWJsZSc7XG5jb25zdCBTVVBQT1JURURfQ09MVU1OX01PREVTID0gW1xuICB7XG4gICAga2V5OiBDT0xVTU5fTU9ERV9HRU9KU09OLFxuICAgIGxhYmVsOiAnR2VvSlNPTicsXG4gICAgcmVxdWlyZWRDb2x1bW5zOiBbJ2dlb2pzb24nXVxuICB9LFxuICB7XG4gICAga2V5OiBDT0xVTU5fTU9ERV9UQUJMRSxcbiAgICBsYWJlbDogJ1RhYmxlIGNvbHVtbnMnLFxuICAgIHJlcXVpcmVkQ29sdW1uczogWydpZCcsICdsYXQnLCAnbG5nJ10sXG4gICAgb3B0aW9uYWxDb2x1bW5zOiBbJ2FsdGl0dWRlJywgJ3NvcnRCeSddXG4gIH1cbl07XG5jb25zdCBERUZBVUxUX0NPTFVNTl9NT0RFID0gQ09MVU1OX01PREVfR0VPSlNPTjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2VvSnNvbkxheWVyIGV4dGVuZHMgTGF5ZXIge1xuICBkZWNsYXJlIGNvbmZpZzogR2VvSnNvbkxheWVyQ29uZmlnO1xuICBkZWNsYXJlIHZpc0NvbmZpZ1NldHRpbmdzOiBHZW9Kc29uVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgbWV0YTogR2VvSnNvbkxheWVyTWV0YTtcbiAgZGVjbGFyZSBnZW9BcnJvd01vZGU6IGJvb2xlYW47XG5cbiAgZGF0YVRvRmVhdHVyZTogR2VvanNvbkRhdGFNYXBzID0gW107XG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UgfCBudWxsID0gbnVsbDtcbiAgZmlsdGVyZWRJbmRleDogVWludDhDbGFtcGVkQXJyYXkgfCBudWxsID0gbnVsbDtcbiAgZmlsdGVyZWRJbmRleFRyaWdnZXI6IG51bWJlcltdIHwgbnVsbCA9IG51bGw7XG4gIGNlbnRyb2lkczogQXJyYXk8bnVtYmVyW10gfCBudWxsPiA9IFtdO1xuXG4gIF9sYXllckluZm9Nb2RhbDoge1xuICAgIFtDT0xVTU5fTU9ERV9UQUJMRV06ICgpID0+IFJlYWN0LkpTWC5FbGVtZW50O1xuICAgIFtDT0xVTU5fTU9ERV9HRU9KU09OXTogKCkgPT4gUmVhY3QuSlNYLkVsZW1lbnQ7XG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKGdlb2pzb25WaXNDb25maWdzKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IgPSAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT5cbiAgICAgIGZlYXR1cmVBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcbiAgICB0aGlzLl9sYXllckluZm9Nb2RhbCA9IHtcbiAgICAgIFtDT0xVTU5fTU9ERV9UQUJMRV06IEdlb2pzb25JbmZvTW9kYWxGYWN0b3J5KENPTFVNTl9NT0RFX1RBQkxFKSxcbiAgICAgIFtDT0xVTU5fTU9ERV9HRU9KU09OXTogR2VvanNvbkluZm9Nb2RhbEZhY3RvcnkoQ09MVU1OX01PREVfR0VPSlNPTilcbiAgICB9O1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIEdlb0pzb25MYXllci50eXBlO1xuICB9XG4gIHN0YXRpYyBnZXQgdHlwZSgpOiAnZ2VvanNvbicge1xuICAgIHJldHVybiAnZ2VvanNvbic7XG4gIH1cblxuICBnZXQgbmFtZSgpOiAnUG9seWdvbicge1xuICAgIHJldHVybiAnUG9seWdvbic7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBHZW9qc29uTGF5ZXJJY29uO1xuICB9XG5cbiAgZ2V0IGNvbHVtblBhaXJzKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb2ludENvbHVtblBhaXJzO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZENvbHVtbk1vZGVzKCkge1xuICAgIHJldHVybiBTVVBQT1JURURfQ09MVU1OX01PREVTO1xuICB9XG5cbiAgZ2V0IGxheWVySW5mb01vZGFsKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbQ09MVU1OX01PREVfR0VPSlNPTl06IHtcbiAgICAgICAgaWQ6ICdpY29uSW5mbycsXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLl9sYXllckluZm9Nb2RhbFtDT0xVTU5fTU9ERV9HRU9KU09OXSxcbiAgICAgICAgbW9kYWxQcm9wczoge1xuICAgICAgICAgIHRpdGxlOiAnbW9kYWwucG9seWdvbkluZm8udGl0bGUnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbQ09MVU1OX01PREVfVEFCTEVdOiB7XG4gICAgICAgIGlkOiAnaWNvbkluZm8nLFxuICAgICAgICB0ZW1wbGF0ZTogdGhpcy5fbGF5ZXJJbmZvTW9kYWxbQ09MVU1OX01PREVfVEFCTEVdLFxuICAgICAgICBtb2RhbFByb3BzOiB7XG4gICAgICAgICAgdGl0bGU6ICdtb2RhbC5wb2x5Z29uSW5mby50aXRsZVRhYmxlJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGFjY2Vzc1ZTRmllbGRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTikge1xuICAgICAgcmV0dXJuIGRlZmF1bHRHZXRGaWVsZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0VGFibGVNb2RlRmllbGRWYWx1ZTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVscyA9IHN1cGVyLnZpc3VhbENoYW5uZWxzO1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLmZpbGxlZCxcbiAgICAgICAgbnVsbFZhbHVlOiB2aXN1YWxDaGFubmVscy5jb2xvci5udWxsVmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiBjb25maWcgPT4gZCA9PiBkLnByb3BlcnRpZXMuZmlsbENvbG9yIHx8IGNvbmZpZy5jb2xvcixcbiAgICAgICAgLy8gdXNlZCB0aGlzIHRvIGdldCB1cGRhdGVUcmlnZ2Vyc1xuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzdHJva2VDb2xvcjoge1xuICAgICAgICBwcm9wZXJ0eTogJ3N0cm9rZUNvbG9yJyxcbiAgICAgICAgZmllbGQ6ICdzdHJva2VDb2xvckZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdzdHJva2VDb2xvclNjYWxlJyxcbiAgICAgICAgZG9tYWluOiAnc3Ryb2tlQ29sb3JEb21haW4nLFxuICAgICAgICByYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICAgICAgICBrZXk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLmNvbG9yLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldExpbmVDb2xvcicsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlZCxcbiAgICAgICAgbnVsbFZhbHVlOiB2aXN1YWxDaGFubmVscy5jb2xvci5udWxsVmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiBjb25maWcgPT4gZCA9PlxuICAgICAgICAgIGQucHJvcGVydGllcy5saW5lQ29sb3IgfHwgY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvciB8fCBjb25maWcuY29sb3IsXG4gICAgICAgIC8vIHVzZWQgdGhpcyB0byBnZXQgdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvciB8fCBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIC4uLnZpc3VhbENoYW5uZWxzLnNpemUsXG4gICAgICAgIHByb3BlcnR5OiAnc3Ryb2tlJyxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRMaW5lV2lkdGgnLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZWQsXG4gICAgICAgIG51bGxWYWx1ZTogMCxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6ICgpID0+IGQgPT4gZC5wcm9wZXJ0aWVzLmxpbmVXaWR0aCB8fCBkZWZhdWx0TGluZVdpZHRoXG4gICAgICB9LFxuICAgICAgaGVpZ2h0OiB7XG4gICAgICAgIHByb3BlcnR5OiAnaGVpZ2h0JyxcbiAgICAgICAgZmllbGQ6ICdoZWlnaHRGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAnaGVpZ2h0U2NhbGUnLFxuICAgICAgICBkb21haW46ICdoZWlnaHREb21haW4nLFxuICAgICAgICByYW5nZTogJ2hlaWdodFJhbmdlJyxcbiAgICAgICAga2V5OiAnaGVpZ2h0JyxcbiAgICAgICAgZml4ZWQ6ICdmaXhlZEhlaWdodCcsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLnNpemUsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RWxldmF0aW9uJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5lbmFibGUzZCxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogKCkgPT4gZCA9PiBkLnByb3BlcnRpZXMuZWxldmF0aW9uIHx8IGRlZmF1bHRFbGV2YXRpb25cbiAgICAgIH0sXG4gICAgICByYWRpdXM6IHtcbiAgICAgICAgcHJvcGVydHk6ICdyYWRpdXMnLFxuICAgICAgICBmaWVsZDogJ3JhZGl1c0ZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdyYWRpdXNTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3JhZGl1c0RvbWFpbicsXG4gICAgICAgIHJhbmdlOiAncmFkaXVzUmFuZ2UnLFxuICAgICAgICBrZXk6ICdyYWRpdXMnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5yYWRpdXMsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0UG9pbnRSYWRpdXMnLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiAoKSA9PiBkID0+IGQucHJvcGVydGllcy5yYWRpdXMgfHwgZGVmYXVsdFJhZGl1c1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZmluZERlZmF1bHRMYXllclByb3BzKHtsYWJlbCwgZmllbGRzID0gW119OiBLZXBsZXJUYWJsZSkge1xuICAgIGNvbnN0IGdlb2pzb25Db2x1bW5zID0gZmllbGRzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICBmID0+XG4gICAgICAgICAgKGYudHlwZSA9PT0gJ2dlb2pzb24nIHx8IGYudHlwZSA9PT0gJ2dlb2Fycm93JykgJiZcbiAgICAgICAgICBmLmFuYWx5emVyVHlwZSAmJlxuICAgICAgICAgIFNVUFBPUlRFRF9BTkFMWVpFUl9UWVBFU1tmLmFuYWx5emVyVHlwZV1cbiAgICAgIClcbiAgICAgIC5tYXAoZiA9PiBmLm5hbWUpO1xuXG4gICAgY29uc3QgZGVmYXVsdENvbHVtbnMgPSB7XG4gICAgICBnZW9qc29uOiB1bmlxKFsuLi5HRU9KU09OX0ZJRUxEUy5nZW9qc29uLCAuLi5nZW9qc29uQ29sdW1uc10pXG4gICAgfTtcblxuICAgIGNvbnN0IGZvdW5kQ29sdW1ucyA9IHRoaXMuZmluZERlZmF1bHRDb2x1bW5GaWVsZChkZWZhdWx0Q29sdW1ucywgZmllbGRzKTtcbiAgICBpZiAoIWZvdW5kQ29sdW1ucyB8fCAhZm91bmRDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtwcm9wczogW119O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwcm9wczogZm91bmRDb2x1bW5zLm1hcChjb2x1bW5zID0+ICh7XG4gICAgICAgIGxhYmVsOiAodHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyAmJiBsYWJlbC5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpKSB8fCB0aGlzLnR5cGUsXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGlzVmlzaWJsZTogdHJ1ZVxuICAgICAgfSkpXG4gICAgfTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wczogTGF5ZXJCYXNlQ29uZmlnUGFydGlhbCkge1xuICAgIGNvbnN0IGRlZmF1bHRMYXllckNvbmZpZyA9IHN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyA/PyB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRMYXllckNvbmZpZyxcblxuICAgICAgY29sdW1uTW9kZTogcHJvcHM/LmNvbHVtbk1vZGUgPz8gREVGQVVMVF9DT0xVTU5fTU9ERSxcbiAgICAgIC8vIGFkZCBoZWlnaHQgdmlzdWFsIGNoYW5uZWxcbiAgICAgIGhlaWdodEZpZWxkOiBudWxsLFxuICAgICAgaGVpZ2h0RG9tYWluOiBbMCwgMV0sXG4gICAgICBoZWlnaHRTY2FsZTogJ2xpbmVhcicsXG5cbiAgICAgIC8vIGFkZCByYWRpdXMgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHJhZGl1c0ZpZWxkOiBudWxsLFxuICAgICAgcmFkaXVzRG9tYWluOiBbMCwgMV0sXG4gICAgICByYWRpdXNTY2FsZTogJ2xpbmVhcicsXG5cbiAgICAgIC8vIGFkZCBzdHJva2UgY29sb3IgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IG51bGwsXG4gICAgICBzdHJva2VDb2xvckRvbWFpbjogWzAsIDFdLFxuICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogJ3F1YW50aWxlJyxcbiAgICAgIGNvbG9yVUk6IHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyQ29uZmlnLmNvbG9yVUksXG4gICAgICAgIHN0cm9rZUNvbG9yUmFuZ2U6IERFRkFVTFRfQ09MT1JfVUlcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKG9iamVjdCwgZGF0YUNvbnRhaW5lcikge1xuICAgIC8vIGluZGV4IG9mIGRhdGFDb250YWluZXIgaXMgc2F2ZWQgdG8gZmVhdHVyZS5wcm9wZXJ0aWVzXG4gICAgLy8gZm9yIGFycm93IGZvcm1hdCwgYG9iamVjdGAgaXMgdGhlIGluZGV4IG9mIHRoZSByb3cgcmV0dXJuZWQgZnJvbSBkZWNrXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdlb0Fycm93TW9kZSA/IG9iamVjdCA6IG9iamVjdD8ucHJvcGVydGllcz8uaW5kZXg7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0RmlsdGVyZWRJdGVtQ291bnQoKSB7XG4gICAgLy8gcmV0dXJuIC1wb2x5Z29ucy1maWxsIG9yIC1wb2x5Z29ucy1zdHJva2VcbiAgICAvLyArIC1saW5lc3RyaW5nc1xuICAgIC8vICsgLXBvaW50cy1jaXJjbGVcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5maWx0ZXJlZEl0ZW1Db3VudCkubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwb2x5Z29uQ291bnQgPVxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbUNvdW50W2Ake3RoaXMuaWR9LXBvbHlnb25zLWZpbGxgXSB8fFxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbUNvdW50W2Ake3RoaXMuaWR9LXBvbHlnb25zLXN0cm9rZWBdIHx8XG4gICAgICAgIDA7XG4gICAgICBjb25zdCBsaW5lc3RyaW5nQ291bnQgPSB0aGlzLmZpbHRlcmVkSXRlbUNvdW50W2Ake3RoaXMuaWR9LWxpbmVzdHJpbmdzYF0gfHwgMDtcbiAgICAgIGNvbnN0IHBvaW50Q291bnQgPSB0aGlzLmZpbHRlcmVkSXRlbUNvdW50W2Ake3RoaXMuaWR9LXBvaW50cy1jaXJjbGVgXSB8fCAwO1xuXG4gICAgICByZXR1cm4gcG9seWdvbkNvdW50ICsgbGluZXN0cmluZ0NvdW50ICsgcG9pbnRDb3VudDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUoZGF0YXNldDogS2VwbGVyVGFibGUpIHtcbiAgICB0aGlzLmdlb0Fycm93TW9kZSA9IGZpZWxkSXNHZW9BcnJvdyhcbiAgICAgIGdlb0ZpZWxkQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YXNldC5kYXRhQ29udGFpbmVyKVxuICAgICk7XG5cbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lciwgZmlsdGVyZWRJbmRleH0gPSBkYXRhc2V0O1xuICAgIGlmICh0aGlzLmdlb0Fycm93TW9kZSkge1xuICAgICAgLy8gVE9ETyBhZGQgY29sdW1uTW9kZSBsb2dpYyBoZXJlIGZvciBBcnJvd0RhdGFDb250YWluZXI/XG4gICAgICAvLyBmaWx0ZXIgZ2VvanNvbi9hcnJvdyB0YWJsZSBieSB2YWx1ZXMgYW5kIG1ha2UgYSBwYXJ0aWFsIGNvcHkgb2YgdGhlIHJhdyB0YWJsZSBhcmUgZXhwZW5zaXZlXG4gICAgICAvLyBzbyB3ZSB3aWxsIHVzZSBmaWx0ZXJlZEluZGV4IHRvIGNyZWF0ZSBhbiBhdHRyaWJ1dGUgZS5nLiBmaWx0ZXJlZEluZGV4IFswfDFdIGZvciBHUFUgZmlsdGVyaW5nXG4gICAgICAvLyBpbiBkZWNrLmdsIGxheWVyLCBzZWU6IEZpbHRlckFycm93RXh0ZW5zaW9uIGluIEBrZXBsZXIuZ2wvZGVja2dsLWxheWVyc1xuICAgICAgaWYgKCF0aGlzLmZpbHRlcmVkSW5kZXggfHwgdGhpcy5maWx0ZXJlZEluZGV4Lmxlbmd0aCAhPT0gZGF0YUNvbnRhaW5lci5udW1Sb3dzKCkpIHtcbiAgICAgICAgLy8gZm9yIGluY3JlbWVudGFsIGRhdGEgbG9hZGluZywgd2UgbmVlZCB0byB1cGRhdGUgZmlsdGVyZWRJbmRleFxuICAgICAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoZGF0YUNvbnRhaW5lci5udW1Sb3dzKCkpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkSW5kZXguZmlsbCgxKTtcbiAgICAgIH1cblxuICAgICAgLy8gY2hlY2sgaWYgZmlsdGVyZWRJbmRleCBpcyBhIHJhbmdlIGZyb20gMCB0byBudW1Sb3dzIGlmIGl0IGlzLCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSBpdFxuICAgICAgY29uc3QgaXNSYW5nZSA9IGZpbHRlcmVkSW5kZXggJiYgZmlsdGVyZWRJbmRleC5sZW5ndGggPT09IGRhdGFDb250YWluZXIubnVtUm93cygpO1xuICAgICAgaWYgKCFpc1JhbmdlIHx8IHRoaXMuZmlsdGVyZWRJbmRleFRyaWdnZXIgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZEluZGV4LmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyZWRJbmRleC5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRJbmRleFtmaWx0ZXJlZEluZGV4W2ldXSA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJlZEluZGV4VHJpZ2dlciA9IGZpbHRlcmVkSW5kZXg7XG4gICAgICB9XG4gICAgICAvLyBmb3IgYXJyb3csIGFsd2F5cyByZXR1cm4gZnVsbCBkYXRhVG9GZWF0dXJlIGluc3RlYWQgb2YgYSBmaWx0ZXJlZCBvbmUsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIGF0dHJpYnV0ZXMgaW4gR1BVXG4gICAgICByZXR1cm4gdGhpcy5kYXRhVG9GZWF0dXJlO1xuICAgIH1cblxuICAgIC8vIGZvciBnZW9qc29uLCB0aGlzIHNob3VsZCB3b3JrIGFzIHdlbGwgYW5kIG1vcmUgZWZmaWNpZW50LiBCdXQgd2UgbmVlZCB0byB1cGRhdGUgc29tZSB0ZXN0IGNhc2VzIGUuZy4gI0dlb2pzb25MYXllciAtPiBmb3JtYXRMYXllckRhdGFcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnLmNvbHVtbk1vZGUpIHtcbiAgICAgIGNhc2UgQ09MVU1OX01PREVfR0VPSlNPTjoge1xuICAgICAgICByZXR1cm4gZmlsdGVyZWRJbmRleC5tYXAoaSA9PiB0aGlzLmRhdGFUb0ZlYXR1cmVbaV0pLmZpbHRlcihkID0+IGQpO1xuICAgICAgfVxuXG4gICAgICBjYXNlIENPTFVNTl9NT0RFX1RBQkxFOlxuICAgICAgICByZXR1cm4gYXBwbHlGaWx0ZXJzVG9UYWJsZUNvbHVtbnMoZGF0YXNldCwgdGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGFJZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB7Z3B1RmlsdGVyLCBkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXRzW3RoaXMuY29uZmlnLmRhdGFJZF07XG4gICAgY29uc3Qge2RhdGF9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgbGV0IGZpbHRlclZhbHVlQWNjZXNzb3I7XG4gICAgbGV0IGRhdGFBY2Nlc3NvcjtcbiAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTikge1xuICAgICAgZmlsdGVyVmFsdWVBY2Nlc3NvciA9IChkYywgZCwgZmllbGRJbmRleCkgPT4gZGMudmFsdWVBdChkLnByb3BlcnRpZXMuaW5kZXgsIGZpZWxkSW5kZXgpO1xuICAgICAgZGF0YUFjY2Vzc29yID0gKCkgPT4gZCA9PiAoe2luZGV4OiBkLnByb3BlcnRpZXMuaW5kZXh9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsdGVyVmFsdWVBY2Nlc3NvciA9IGdldFRhYmxlTW9kZVZhbHVlQWNjZXNzb3I7XG4gICAgICBkYXRhQWNjZXNzb3IgPSAoKSA9PiBkID0+ICh7aW5kZXg6IGQucHJvcGVydGllcy5pbmRleH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4QWNjZXNzb3IgPSBmID0+IGYucHJvcGVydGllcy5pbmRleDtcbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLmdldEF0dHJpYnV0ZUFjY2Vzc29ycyh7ZGF0YUFjY2Vzc29yLCBkYXRhQ29udGFpbmVyfSk7XG5cbiAgICBjb25zdCBpc0ZpbHRlcmVkQWNjZXNzb3IgPSBkID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSW5kZXggPyB0aGlzLmZpbHRlcmVkSW5kZXhbZC5wcm9wZXJ0aWVzLmluZGV4XSA6IDE7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKFxuICAgICAgICBpbmRleEFjY2Vzc29yLFxuICAgICAgICBmaWx0ZXJWYWx1ZUFjY2Vzc29yXG4gICAgICApLFxuICAgICAgZ2V0RmlsdGVyZWQ6IGlzRmlsdGVyZWRBY2Nlc3NvcixcbiAgICAgIC4uLmFjY2Vzc29yc1xuICAgIH07XG4gIH1cblxuICBpc0luUG9seWdvbihkYXRhOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBpbmRleDogbnVtYmVyLCBwb2x5Z29uOiBGZWF0dXJlPFBvbHlnb24+KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY2VudHJvaWRzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5jZW50cm9pZHNbaW5kZXhdKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGlzUmVhY3RhbmdsZVNlYXJjaEJveCA9IHBvbHlnb24ucHJvcGVydGllcz8uc2hhcGUgPT09ICdSZWN0YW5nbGUnO1xuICAgIGNvbnN0IHBvaW50ID0gdGhpcy5jZW50cm9pZHNbaW5kZXhdO1xuICAgIC8vIGlmIG5vIHZhbGlkIGNlbnRyb2lkLCByZXR1cm4gZmFsc2VcbiAgICBpZiAoIXBvaW50KSByZXR1cm4gZmFsc2U7XG4gICAgLy8gcXVpY2sgY2hlY2sgaWYgY2VudHJvaWQgaXMgd2l0aGluIHRoZSBxdWVyeSByZWN0YW5nbGVcbiAgICBpZiAoaXNSZWFjdGFuZ2xlU2VhcmNoQm94ICYmIHBvbHlnb24ucHJvcGVydGllcz8uYmJveCkge1xuICAgICAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gcG9seWdvbj8ucHJvcGVydGllcz8uYmJveCB8fCBbXTtcbiAgICAgIHJldHVybiBwb2ludFswXSA+PSBtaW5YICYmIHBvaW50WzBdIDw9IG1heFggJiYgcG9pbnRbMV0gPj0gbWluWSAmJiBwb2ludFsxXSA8PSBtYXhZO1xuICAgIH1cbiAgICAvLyB1c2UgdHVyZi5qcyB0byBjaGVjayBpZiBjZW50cm9pZCBpcyB3aXRoaW4gcXVlcnkgcG9seWdvblxuICAgIHJldHVybiBib29sZWFuV2l0aGluKHR1cmZQb2ludChwb2ludCksIHBvbHlnb24pO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJNZXRhKGRhdGFzZXQ6IEtlcGxlclRhYmxlKSB7XG4gICAgY29uc3Qge2RhdGFDb250YWluZXJ9ID0gZGF0YXNldDtcblxuICAgIHRoaXMuZGF0YUNvbnRhaW5lciA9IGRhdGFDb250YWluZXI7XG5cbiAgICB0aGlzLmdlb0Fycm93TW9kZSA9IGZpZWxkSXNHZW9BcnJvdyhcbiAgICAgIGdlb0ZpZWxkQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YXNldC5kYXRhQ29udGFpbmVyKVxuICAgICk7XG5cbiAgICBpZiAodGhpcy5nZW9BcnJvd01vZGUgJiYgZGF0YUNvbnRhaW5lciBpbnN0YW5jZW9mIEFycm93RGF0YUNvbnRhaW5lcikge1xuICAgICAgY29uc3QgZ2VvQ29sdW1uID0gZ2VvQ29sdW1uQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YUNvbnRhaW5lcik7XG4gICAgICBjb25zdCBnZW9GaWVsZCA9IGdlb0ZpZWxkQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YUNvbnRhaW5lcik7XG5cbiAgICAgIC8vIHVwZGF0ZSB0aGUgbGF0ZXN0IGJhdGNoL2NodW5rIG9mIGdlb2Fycm93IGRhdGEgd2hlbiBsb2FkaW5nIGRhdGEgaW5jcmVtZW50YWxseVxuICAgICAgaWYgKGdlb0NvbHVtbiAmJiBnZW9GaWVsZCAmJiB0aGlzLmRhdGFUb0ZlYXR1cmUubGVuZ3RoIDwgZGF0YUNvbnRhaW5lci5udW1DaHVua3MoKSkge1xuICAgICAgICAvLyBmb3IgaW5jcmVtZW50YWxseSBsb2FkaW5nIGRhdGEsIHdlIG9ubHkgbG9hZCBhbmQgcmVuZGVyIHRoZSBsYXRlc3QgYmF0Y2g7IG90aGVyd2lzZSwgd2Ugd2lsbCBsb2FkIGFuZCByZW5kZXIgYWxsIGJhdGNoZXNcbiAgICAgICAgY29uc3QgaXNJbmNyZW1lbnRhbExvYWQgPSBkYXRhQ29udGFpbmVyLm51bUNodW5rcygpIC0gdGhpcy5kYXRhVG9GZWF0dXJlLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgLy8gVE9ETzogYWRkIHN1cHBvcnQgZm9yIENPTFVNTl9NT0RFX1RBQkxFIGluIGdldEdlb2pzb25MYXllck1ldGFGcm9tQXJyb3dcbiAgICAgICAgY29uc3Qge2RhdGFUb0ZlYXR1cmUsIGJvdW5kcywgZml4ZWRSYWRpdXMsIGZlYXR1cmVUeXBlcywgY2VudHJvaWRzfSA9XG4gICAgICAgICAgZ2V0R2VvanNvbkxheWVyTWV0YUZyb21BcnJvdyh7XG4gICAgICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICAgICAgZ2VvQ29sdW1uLFxuICAgICAgICAgICAgZ2VvRmllbGQsXG4gICAgICAgICAgICAuLi4oaXNJbmNyZW1lbnRhbExvYWQgPyB7Y2h1bmtJbmRleDogdGhpcy5kYXRhVG9GZWF0dXJlLmxlbmd0aH0gOiBudWxsKVxuICAgICAgICAgIH0pO1xuICAgICAgICBpZiAoY2VudHJvaWRzKSB0aGlzLmNlbnRyb2lkcyA9IHRoaXMuY2VudHJvaWRzLmNvbmNhdChjZW50cm9pZHMpO1xuICAgICAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kcywgZml4ZWRSYWRpdXMsIGZlYXR1cmVUeXBlc30pO1xuICAgICAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBbLi4udGhpcy5kYXRhVG9GZWF0dXJlLCAuLi5kYXRhVG9GZWF0dXJlXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YVRvRmVhdHVyZS5sZW5ndGggPT09IDAgfHwgdGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfVEFCTEUpIHtcbiAgICAgIGNvbnN0IGdldEZlYXR1cmUgPSB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG5cbiAgICAgIGNvbnN0IHtkYXRhVG9GZWF0dXJlLCBib3VuZHMsIGZpeGVkUmFkaXVzLCBmZWF0dXJlVHlwZXMsIGNlbnRyb2lkc30gPSBnZXRHZW9qc29uTGF5ZXJNZXRhKHtcbiAgICAgICAgZGF0YUNvbnRhaW5lcixcbiAgICAgICAgZ2V0RmVhdHVyZSxcbiAgICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZ1xuICAgICAgfSk7XG4gICAgICBpZiAoY2VudHJvaWRzKSB0aGlzLmNlbnRyb2lkcyA9IGNlbnRyb2lkcztcbiAgICAgIHRoaXMuZGF0YVRvRmVhdHVyZSA9IGRhdGFUb0ZlYXR1cmU7XG4gICAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kcywgZml4ZWRSYWRpdXMsIGZlYXR1cmVUeXBlc30pO1xuICAgIH1cbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0OiBLZXBsZXJUYWJsZSkge1xuICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXQ7XG4gICAgaWYgKCFkYXRhQ29udGFpbmVyLm51bVJvd3MoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gZGVmZWZhdWx0TGF5ZXJQcm9wcyB3aWxsIGF1dG9tYXRpY2FsbHkgZmluZCBnZW9qc29uIGNvbHVtblxuICAgIC8vIGlmIG5vdCBmb3VuZCwgd2UgdHJ5IHRvIHNldCBpdCB0byBpZCAvIGxhdCAvbG5nIC90c1xuICAgIGlmICghdGhpcy5jb25maWcuY29sdW1ucy5nZW9qc29uLnZhbHVlKSB7XG4gICAgICAvLyBmaW5kIGNvbHVtbnMgZnJvbSBsYXQsIGxuZywgaWQsIGFuZCB0c1xuICAgICAgY29uc3QgY29sdW1uQ29uZmlnID0gZGV0ZWN0VGFibGVDb2x1bW5zKGRhdGFzZXQsIHRoaXMuY29uZmlnLmNvbHVtbnMsICdzb3J0QnknKTtcbiAgICAgIGlmIChjb2x1bW5Db25maWcpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICAgICAgLi4uY29sdW1uQ29uZmlnLFxuICAgICAgICAgIGNvbHVtbk1vZGU6IENPTFVNTl9NT0RFX1RBQkxFXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMYXllck1ldGEoZGF0YXNldCk7XG5cbiAgICBjb25zdCB7ZmVhdHVyZVR5cGVzfSA9IHRoaXMubWV0YTtcbiAgICAvLyBkZWZhdWx0IHNldHRpbmdzIGlzIHN0cm9rZTogdHJ1ZSwgZmlsbGVkOiBmYWxzZVxuICAgIGlmIChmZWF0dXJlVHlwZXMgJiYgZmVhdHVyZVR5cGVzLnBvbHlnb24pIHtcbiAgICAgIC8vIHNldCBib3RoIGZpbGwgYW5kIHN0cm9rZSB0byB0cnVlXG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh7XG4gICAgICAgIGZpbGxlZDogdHJ1ZSxcbiAgICAgICAgc3Ryb2tlZDogdHJ1ZSxcbiAgICAgICAgc3Ryb2tlQ29sb3I6IGNvbG9yTWFrZXIubmV4dCgpLnZhbHVlXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGZlYXR1cmVUeXBlcyAmJiBmZWF0dXJlVHlwZXMucG9pbnQpIHtcbiAgICAgIC8vIHNldCBmaWxsIHRvIHRydWUgaWYgZGV0ZWN0IHBvaW50XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh7ZmlsbGVkOiB0cnVlLCBzdHJva2VkOiBmYWxzZX0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaXNMYXllckhvdmVyZWQob2JqZWN0SW5mbzogT2JqZWN0SW5mbyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdlb0Fycm93TW9kZVxuICAgICAgPyBpc0xheWVySG92ZXJlZEZyb21BcnJvdyhvYmplY3RJbmZvLCB0aGlzLmlkKVxuICAgICAgOiBzdXBlci5pc0xheWVySG92ZXJlZChvYmplY3RJbmZvKTtcbiAgfVxuXG4gIGhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SW5mbzogT2JqZWN0SW5mbyk6IEZlYXR1cmUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZW9BcnJvd01vZGVcbiAgICAgID8gZ2V0SG92ZXJlZE9iamVjdEZyb21BcnJvdyhcbiAgICAgICAgICBvYmplY3RJbmZvLFxuICAgICAgICAgIHRoaXMuZGF0YUNvbnRhaW5lcixcbiAgICAgICAgICB0aGlzLmlkLFxuICAgICAgICAgIGdlb0NvbHVtbkFjY2Vzc29yKHRoaXMuY29uZmlnLmNvbHVtbnMpLFxuICAgICAgICAgIGdlb0ZpZWxkQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucylcbiAgICAgICAgKVxuICAgICAgOiBzdXBlci5oYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEluZm8pO1xuICB9XG5cbiAgZ2V0RWxldmF0aW9uWm9vbUZhY3Rvcih7em9vbSwgem9vbU9mZnNldCA9IDB9KSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnZpc0NvbmZpZy5maXhlZEhlaWdodCA/IDEgOiBNYXRoLnBvdygyLCBNYXRoLm1heCg4IC0gem9vbSArIHpvb21PZmZzZXQsIDApKTtcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YTogZGF0YVByb3BzLCBncHVGaWx0ZXIsIG9iamVjdEhvdmVyZWQsIG1hcFN0YXRlLCBpbnRlcmFjdGlvbkNvbmZpZ30gPSBvcHRzO1xuXG4gICAgY29uc3Qge2ZpeGVkUmFkaXVzLCBmZWF0dXJlVHlwZXN9ID0gdGhpcy5tZXRhO1xuICAgIGNvbnN0IHJhZGl1c1NjYWxlID0gdGhpcy5nZXRSYWRpdXNTY2FsZUJ5Wm9vbShtYXBTdGF0ZSwgZml4ZWRSYWRpdXMpO1xuICAgIGNvbnN0IHpvb21GYWN0b3IgPSB0aGlzLmdldFpvb21GYWN0b3IobWFwU3RhdGUpO1xuICAgIGNvbnN0IGVsZVpvb21GYWN0b3IgPSB0aGlzLmdldEVsZXZhdGlvblpvb21GYWN0b3IobWFwU3RhdGUpO1xuXG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcblxuICAgIGNvbnN0IGxheWVyUHJvcHMgPSB7XG4gICAgICBsaW5lV2lkdGhTY2FsZTogdmlzQ29uZmlnLnRoaWNrbmVzcyAqIHpvb21GYWN0b3IgKiA4LFxuICAgICAgZWxldmF0aW9uU2NhbGU6IHZpc0NvbmZpZy5lbGV2YXRpb25TY2FsZSAqIGVsZVpvb21GYWN0b3IsXG4gICAgICBwb2ludFJhZGl1c1NjYWxlOiByYWRpdXNTY2FsZSxcbiAgICAgIGxpbmVNaXRlckxpbWl0OiA0XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKSxcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyxcbiAgICAgIGdldEZpbHRlcmVkOiB0aGlzLmZpbHRlcmVkSW5kZXhUcmlnZ2VyXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRMYXllclByb3BzID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG4gICAgY29uc3Qgb3BhT3ZlcndyaXRlID0ge1xuICAgICAgb3BhY2l0eTogdmlzQ29uZmlnLnN0cm9rZU9wYWNpdHlcbiAgICB9O1xuXG4gICAgY29uc3QgcGlja2FibGUgPSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmVuYWJsZWQ7XG4gICAgY29uc3QgaG92ZXJlZE9iamVjdCA9IHRoaXMuaGFzSG92ZXJlZE9iamVjdChvYmplY3RIb3ZlcmVkKTtcblxuICAgIGNvbnN0IHtkYXRhLCAuLi5wcm9wc30gPSBkYXRhUHJvcHM7XG5cbiAgICAvLyBhcnJvdyB0YWJsZSBjYW4gaGF2ZSBtdWx0aXBsZSBjaHVua3MsIGEgZGVjay5nbCBsYXllciBpcyBjcmVhdGVkIGZvciBlYWNoIGNodW5rXG4gICAgY29uc3QgZGVja0xheWVyRGF0YSA9IHRoaXMuZ2VvQXJyb3dNb2RlID8gZGF0YSA6IFtkYXRhXTtcbiAgICBjb25zdCBkZWNrTGF5ZXJzID0gZGVja0xheWVyRGF0YS5tYXAoKGQsIGkpID0+IHtcbiAgICAgIHJldHVybiBuZXcgRGVja0dMR2VvSnNvbkxheWVyKHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMsXG4gICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBkYXRhOiBkLFxuICAgICAgICBpZDogZGVja0xheWVyRGF0YS5sZW5ndGggPiAxID8gYCR7dGhpcy5pZH0tJHtpfWAgOiB0aGlzLmlkLFxuICAgICAgICBwaWNrYWJsZSxcbiAgICAgICAgaGlnaGxpZ2h0Q29sb3I6IEhJR0hMSUdIX0NPTE9SXzNELFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiB2aXNDb25maWcuZW5hYmxlM2QgJiYgcGlja2FibGUsXG4gICAgICAgIHN0cm9rZWQ6IHZpc0NvbmZpZy5zdHJva2VkLFxuICAgICAgICBmaWxsZWQ6IHZpc0NvbmZpZy5maWxsZWQsXG4gICAgICAgIGV4dHJ1ZGVkOiB2aXNDb25maWcuZW5hYmxlM2QsXG4gICAgICAgIHdpcmVmcmFtZTogdmlzQ29uZmlnLndpcmVmcmFtZSxcbiAgICAgICAgd3JhcExvbmdpdHVkZTogZmFsc2UsXG4gICAgICAgIGxpbmVNaXRlckxpbWl0OiAyLFxuICAgICAgICBjYXBSb3VuZGVkOiB0cnVlLFxuICAgICAgICBqb2ludFJvdW5kZWQ6IHRydWUsXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICBleHRlbnNpb25zOiBbLi4uZGVmYXVsdExheWVyUHJvcHMuZXh0ZW5zaW9ucywgbmV3IEZpbHRlckFycm93RXh0ZW5zaW9uKCldLFxuICAgICAgICBfc3ViTGF5ZXJQcm9wczoge1xuICAgICAgICAgIC4uLihmZWF0dXJlVHlwZXM/LnBvbHlnb24gPyB7J3BvbHlnb25zLXN0cm9rZSc6IG9wYU92ZXJ3cml0ZX0gOiB7fSksXG4gICAgICAgICAgLi4uKGZlYXR1cmVUeXBlcz8ubGluZSA/IHtsaW5lc3RyaW5nczogb3BhT3ZlcndyaXRlfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZmVhdHVyZVR5cGVzPy5wb2ludFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgcG9pbnRzOiB7XG4gICAgICAgICAgICAgICAgICBsaW5lT3BhY2l0eTogdmlzQ29uZmlnLnN0cm9rZU9wYWNpdHlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge30pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmRlY2tMYXllcnMsXG4gICAgICAvLyBob3ZlciBsYXllclxuICAgICAgLi4uKGhvdmVyZWRPYmplY3QgJiYgIXZpc0NvbmZpZy5lbmFibGUzZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIG5ldyBEZWNrR0xHZW9Kc29uTGF5ZXIoe1xuICAgICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMoKSxcbiAgICAgICAgICAgICAgLi4ubGF5ZXJQcm9wcyxcbiAgICAgICAgICAgICAgdmlzaWJsZTogZGVmYXVsdExheWVyUHJvcHMudmlzaWJsZSxcbiAgICAgICAgICAgICAgd3JhcExvbmdpdHVkZTogZmFsc2UsXG4gICAgICAgICAgICAgIGRhdGE6IFtob3ZlcmVkT2JqZWN0XSxcbiAgICAgICAgICAgICAgZ2V0TGluZVdpZHRoOiBwcm9wcy5nZXRMaW5lV2lkdGgsXG4gICAgICAgICAgICAgIGdldFBvaW50UmFkaXVzOiBwcm9wcy5nZXRQb2ludFJhZGl1cyxcbiAgICAgICAgICAgICAgZ2V0RWxldmF0aW9uOiBwcm9wcy5nZXRFbGV2YXRpb24sXG4gICAgICAgICAgICAgIGdldExpbmVDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIC8vIGFsd2F5cyBkcmF3IG91dGxpbmVcbiAgICAgICAgICAgICAgc3Ryb2tlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlsbGVkOiBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pXG4gICAgXTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxPQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFDLHVCQUFBLENBQUFOLE9BQUE7QUFXQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFTQSxJQUFBUyxXQUFBLEdBQUFULE9BQUE7QUFLQSxJQUFBVSxpQkFBQSxH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
|
|
@@ -20,6 +20,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
20
20
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
21
21
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
22
22
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
23
|
+
var _buffer = require("buffer");
|
|
23
24
|
var _geojsonNormalize = _interopRequireDefault(require("@mapbox/geojson-normalize"));
|
|
24
25
|
var _bbox = _interopRequireDefault(require("@turf/bbox"));
|
|
25
26
|
var _d3Array = require("d3-array");
|
|
@@ -215,7 +216,7 @@ function parseGeometryFromString(geoString) {
|
|
|
215
216
|
// try parse as wkb using loaders.gl WKBLoader
|
|
216
217
|
if (!parsedGeo) {
|
|
217
218
|
try {
|
|
218
|
-
var buffer = Buffer.from(geoString, 'hex');
|
|
219
|
+
var buffer = _buffer.Buffer.from(geoString, 'hex');
|
|
219
220
|
var binaryGeo = (0, _core.parseSync)(buffer, _wkt.WKBLoader);
|
|
220
221
|
// @ts-expect-error
|
|
221
222
|
parsedGeo = (0, _gis.binaryToGeometry)(binaryGeo);
|
|
@@ -243,8 +244,14 @@ function getGeojsonBounds() {
|
|
|
243
244
|
// here we only pick couple
|
|
244
245
|
var maxCount = 10000;
|
|
245
246
|
var samples = features.length > maxCount ? (0, _utils.getSampleData)(features, maxCount) : features;
|
|
247
|
+
var validSingleGeometry = function validSingleGeometry(geom) {
|
|
248
|
+
return geom.coordinates && geom.coordinates.length;
|
|
249
|
+
};
|
|
250
|
+
var validGeometryCollection = function validGeometryCollection(geom) {
|
|
251
|
+
return geom.geometries && geom.geometries.length && geom.geometries.every(validSingleGeometry);
|
|
252
|
+
};
|
|
246
253
|
var nonEmpty = samples.filter(function (d) {
|
|
247
|
-
return d && d.geometry && d.geometry
|
|
254
|
+
return d && d.geometry && (validSingleGeometry(d.geometry) || validGeometryCollection(d.geometry));
|
|
248
255
|
});
|
|
249
256
|
try {
|
|
250
257
|
return (0, _bbox["default"])({
|
|
@@ -418,4 +425,4 @@ function applyFiltersToTableColumns(dataset, dataToFeature) {
|
|
|
418
425
|
}
|
|
419
426
|
return filteredFeatures;
|
|
420
427
|
}
|
|
421
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvanNvbk5vcm1hbGl6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2Jib3giLCJfZDNBcnJheSIsIl9jZW50ZXIiLCJfY29yZSIsIl93a3QiLCJfZ2lzIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIl9sYXllclV0aWxzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiQ09MVU1OX01PREVfR0VPSlNPTiIsImV4cG9ydHMiLCJGZWF0dXJlVHlwZXMiLCJmaWVsZElzR2VvQXJyb3ciLCJnZW9GaWVsZCIsIl9nZW9GaWVsZCRtZXRhZGF0YSIsIkJvb2xlYW4iLCJtZXRhZGF0YSIsImdldCIsInBhcnNlR2VvSnNvblJhd0ZlYXR1cmUiLCJyYXdGZWF0dXJlIiwicHJvcGVydGllcyIsIl90eXBlb2YyIiwibm9ybWFsaXplZCIsIm5vcm1hbGl6ZSIsImZlYXR1cmVzIiwicGFyc2VkR2VvbWV0cnkiLCJwYXJzZUdlb21ldHJ5RnJvbVN0cmluZyIsInR5cGUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwibWFwIiwicHRzIiwiZ2V0R2VvanNvbkxheWVyTWV0YSIsIl9yZWYiLCJkYXRhQ29udGFpbmVyIiwiZ2V0RmVhdHVyZSIsImNvbmZpZyIsImRhdGFUb0ZlYXR1cmUiLCJjb2x1bW5Nb2RlIiwiZ2V0R2VvanNvbkRhdGFNYXBzIiwiZ3JvdXBDb2x1bW5zQXNHZW9Kc29uIiwiY29sdW1ucyIsImJvdW5kcyIsImdldEdlb2pzb25Cb3VuZHMiLCJmaXhlZFJhZGl1cyIsImZpbmQiLCJkIiwiX2QkcHJvcGVydGllcyIsInJhZGl1cyIsImZlYXR1cmVUeXBlcyIsImdldEdlb2pzb25GZWF0dXJlVHlwZXMiLCJtZWFuQ2VudGVycyIsImkiLCJmZWF0dXJlIiwiY2VudCIsImNlbnRlciIsImNlbnRyb2lkcyIsImFjY2VwdGFibGVUeXBlcyIsImluZGV4IiwibnVtUm93cyIsImluY2x1ZGVzIiwiY2xlYW5lZCIsImdldEdlb2pzb25Qb2ludERhdGFNYXBzIiwicm93QXNBcnJheSIsImdlb21ldHJpZXMiLCJyZWR1Y2UiLCJhY2N1IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImdlb1N0cmluZyIsInBhcnNlZEdlbyIsIkpTT04iLCJwYXJzZSIsInBhcnNlU3luYyIsIldLVExvYWRlciIsImJ1ZmZlciIsIkJ1ZmZlciIsImJpbmFyeUdlbyIsIldLQkxvYWRlciIsImJpbmFyeVRvR2VvbWV0cnkiLCJ1bmRlZmluZWQiLCJtYXhDb3VudCIsInNhbXBsZXMiLCJnZXRTYW1wbGVEYXRhIiwibm9uRW1wdHkiLCJiYm94IiwiZmVhdHVyZVRvRGVja0dsR2VvVHlwZSIsIlBvaW50IiwiTXVsdGlQb2ludCIsIkxpbmVTdHJpbmciLCJNdWx0aUxpbmVTdHJpbmciLCJQb2x5Z29uIiwiTXVsdGlQb2x5Z29uIiwiYWxsRmVhdHVyZXMiLCJnZW9UeXBlIiwic29ydEJ5Q29sdW1uIiwiZ3JvdXBlZEJ5SWQiLCJzb3J0QnlGaWVsZElkeCIsImZpZWxkSWR4Iiwic29ydEJ5UmVxdWlyZWQiLCJvcHRpb25hbCIsImRhdHVtIiwiaWQiLCJsYXQiLCJsb24iLCJsbmciLCJhbHRpdHVkZSIsInNvcnRCeSIsImNvb3JkcyIsImRhdHVtSW5kZXgiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInJlc3VsdCIsImVudHJpZXMiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkyIiwiXyIsIml0ZW1zIiwic29ydCIsImIiLCJhc2NlbmRpbmciLCJ2YWx1ZXMiLCJpdGVtIiwiZGV0ZWN0VGFibGVDb2x1bW5zIiwiZGF0YXNldCIsImxheWVyQ29sdW1ucyIsImZpZWxkcyIsImZpZWxkUGFpcnMiLCJmaW5kSW5kZXgiLCJBTExfRklFTERfVFlQRVMiLCJ0aW1lc3RhbXAiLCJpZEZpZWxkSWR4IiwiX2YkbmFtZSIsInRvTG93ZXJDYXNlIiwibWF0Y2giLCJwb2ludENvbHVtbnMiLCJhc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uIiwiY29sIiwiX3BvaW50Q29sdW1ucyRjb2wiLCJnZW9qc29uIiwibGFiZWwiLCJkZWZhdWx0TmFtZSIsImFwcGx5RmlsdGVyc1RvVGFibGVDb2x1bW5zIiwiZmlsdGVyZWRJbmRleCIsImZpbHRlcmVkSW5kZXhTZXQiLCJTZXQiLCJmaWx0ZXJlZEZlYXR1cmVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJmaWx0ZXJlZENvb3JkcyIsImMiLCJoYXMiLCJlcnIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvanNvbi1sYXllci9nZW9qc29uLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7RmVhdHVyZSwgUG9zaXRpb24sIEJCb3h9IGZyb20gJ2dlb2pzb24nO1xuaW1wb3J0IG5vcm1hbGl6ZSBmcm9tICdAbWFwYm94L2dlb2pzb24tbm9ybWFsaXplJztcbmltcG9ydCBiYm94IGZyb20gJ0B0dXJmL2Jib3gnO1xuaW1wb3J0IHthc2NlbmRpbmd9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCBjZW50ZXIgZnJvbSAnQHR1cmYvY2VudGVyJztcbmltcG9ydCB7QWxsR2VvSlNPTn0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQge3BhcnNlU3luY30gZnJvbSAnQGxvYWRlcnMuZ2wvY29yZSc7XG5pbXBvcnQge1dLQkxvYWRlciwgV0tUTG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC93a3QnO1xuaW1wb3J0IHtiaW5hcnlUb0dlb21ldHJ5fSBmcm9tICdAbG9hZGVycy5nbC9naXMnO1xuaW1wb3J0IHtCaW5hcnlGZWF0dXJlQ29sbGVjdGlvbn0gZnJvbSAnQGxvYWRlcnMuZ2wvc2NoZW1hJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgZ2V0U2FtcGxlRGF0YX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMYXllckNvbHVtbnMsIFByb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuXG5pbXBvcnQge0dlb2pzb25MYXllck1ldGFQcm9wcywgYXNzaWduUG9pbnRQYWlyVG9MYXllckNvbHVtbn0gZnJvbSAnLi4vbGF5ZXItdXRpbHMnO1xuaW1wb3J0IHtMYXllckJhc2VDb25maWd9IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuXG5leHBvcnQgdHlwZSBHZXRGZWF0dXJlID0gKGQ6IGFueSkgPT4gRmVhdHVyZTtcbmV4cG9ydCB0eXBlIEdlb2pzb25EYXRhTWFwcyA9IChGZWF0dXJlIHwgQmluYXJ5RmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsKVtdO1xuZXhwb3J0IHR5cGUgR2VvanNvblBvaW50RGF0YU1hcHMgPSAobnVtYmVyW10gfCBudW1iZXJbXVtdIHwgbnVsbClbXTtcblxuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX0dFT0pTT04gPSAnZ2VvanNvbic7XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBUT0RPOiBSZS1lbmFibGUgZXNsaW50IHdoZW4gd2UgdXBncmFkZSB0byBoYW5kbGUgZW51bXMgYW5kIHR5cGUgbWFwc1xuZXhwb3J0IGVudW0gRmVhdHVyZVR5cGVzIHtcbiAgUG9pbnQgPSAnUG9pbnQnLFxuICBNdWx0aVBvaW50ID0gJ011bHRpUG9pbnQnLFxuICBMaW5lU3RyaW5nID0gJ0xpbmVTdHJpbmcnLFxuICBNdWx0aUxpbmVTdHJpbmcgPSAnTXVsdGlMaW5lU3RyaW5nJyxcbiAgUG9seWdvbiA9ICdQb2x5Z29uJyxcbiAgTXVsdGlQb2x5Z29uID0gJ011bHRpUG9seWdvbidcbn1cblxuLy8gQHRzLWV4cGVjdC1lcnJvciByZXR1cm4gdHlwZSBvZiBnZXRHZW9qc29uRmVhdHVyZVR5cGVzID9cbnR5cGUgRmVhdHVyZVR5cGVNYXAgPSB7XG4gIFtrZXkgaW4gRmVhdHVyZVR5cGVzXTogYm9vbGVhbjtcbn07XG5cbi8qIGVzbGludC1lbmFibGUgKi9cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGZpZWxkIGhhcyBnZW9hcnJvdyBleHRlbnNpb24uXG4gKiBAcGFyYW0gZ2VvRmllbGQgQSBmaWVsZCB0byB0ZXN0LlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSXNHZW9BcnJvdyhnZW9GaWVsZD86IFByb3RvRGF0YXNldEZpZWxkIHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihnZW9GaWVsZD8ubWV0YWRhdGE/LmdldCgnQVJST1c6ZXh0ZW5zaW9uOm5hbWUnKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUdlb0pzb25SYXdGZWF0dXJlKHJhd0ZlYXR1cmU6IHVua25vd24pOiBGZWF0dXJlIHwgbnVsbCB7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBudWxsOyAvLyBoZWxwIGVuc3VyZSB0aGF0IHByb3BlcnRpZXMgaXMgcHJlc2VudCBvbiB0aGUgcmV0dXJuZWQgZ2VvanNvbiBmZWF0dXJlXG4gIGlmICh0eXBlb2YgcmF3RmVhdHVyZSA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBTdXBwb3J0IEdlb0pzb24gZmVhdHVyZSBhcyBvYmplY3RcbiAgICAvLyBwcm9iYWJseSBuZWVkIHRvIG5vcm1hbGl6ZSBpdCBhcyB3ZWxsXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZShyYXdGZWF0dXJlKTtcbiAgICBpZiAoIW5vcm1hbGl6ZWQgfHwgIUFycmF5LmlzQXJyYXkobm9ybWFsaXplZC5mZWF0dXJlcykpIHtcbiAgICAgIC8vIGZhaWwgdG8gbm9ybWFsaXplIEdlb0pzb25cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7cHJvcGVydGllcywgLi4ubm9ybWFsaXplZC5mZWF0dXJlc1swXX07XG4gIH0gZWxzZSBpZiAodHlwZW9mIHJhd0ZlYXR1cmUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgcGFyc2VkR2VvbWV0cnkgPSBwYXJzZUdlb21ldHJ5RnJvbVN0cmluZyhyYXdGZWF0dXJlKTtcbiAgICBpZiAoIXBhcnNlZEdlb21ldHJ5KSByZXR1cm4gbnVsbDtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHZlcmlmeSB3aGV0aGVyIHBhcnNlZEdlb21ldHJ5IGFsd2F5cyBjb250YWlucyBwcm9wZXJ0aWVzXG4gICAgcmV0dXJuIHtwcm9wZXJ0aWVzLCAuLi5wYXJzZWRHZW9tZXRyeX07XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyYXdGZWF0dXJlKSkge1xuICAgIC8vIFN1cHBvcnQgR2VvSnNvbiAgTGluZVN0cmluZyBhcyBhbiBhcnJheSBvZiBwb2ludHNcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgLy8gd2h5IGRvIHdlIG5lZWQgdG8gZmxpcCBpdC4uLlxuICAgICAgICBjb29yZGluYXRlczogcmF3RmVhdHVyZS5tYXAocHRzID0+IFtwdHNbMV0sIHB0c1swXV0pLFxuICAgICAgICB0eXBlOiAnTGluZVN0cmluZydcbiAgICAgIH0sXG4gICAgICBwcm9wZXJ0aWVzXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2VvanNvbkxheWVyTWV0YSh7XG4gIGRhdGFDb250YWluZXIsXG4gIGdldEZlYXR1cmUsXG4gIGNvbmZpZ1xufToge1xuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlO1xuICBnZXRGZWF0dXJlOiBHZXRGZWF0dXJlO1xuICBjb25maWc6IExheWVyQmFzZUNvbmZpZztcbn0pOiBHZW9qc29uTGF5ZXJNZXRhUHJvcHMge1xuICBjb25zdCBkYXRhVG9GZWF0dXJlID1cbiAgICBjb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTlxuICAgICAgPyBnZXRHZW9qc29uRGF0YU1hcHMoZGF0YUNvbnRhaW5lciwgZ2V0RmVhdHVyZSlcbiAgICAgIDogLy8gQ09MVU1OX01PREVfVEFCTEVcbiAgICAgICAgZ3JvdXBDb2x1bW5zQXNHZW9Kc29uKGRhdGFDb250YWluZXIsIGNvbmZpZy5jb2x1bW5zLCAnc29ydEJ5Jyk7XG5cbiAgLy8gZ2V0IGJvdW5kcyBmcm9tIGZlYXR1cmVzXG4gIGNvbnN0IGJvdW5kcyA9IGdldEdlb2pzb25Cb3VuZHMoZGF0YVRvRmVhdHVyZSk7XG4gIC8vIGlmIGFueSBvZiB0aGUgZmVhdHVyZSBoYXMgcHJvcGVydGllcy5yYWRpdXMgc2V0IHRvIGJlIHRydWVcbiAgY29uc3QgZml4ZWRSYWRpdXMgPSBCb29sZWFuKFxuICAgIGRhdGFUb0ZlYXR1cmUuZmluZChkID0+IGQgJiYgJ3Byb3BlcnRpZXMnIGluIGQgJiYgZC5wcm9wZXJ0aWVzPy5yYWRpdXMpXG4gICk7XG5cbiAgLy8ga2VlcCBhIHJlY29yZCBvZiB3aGF0IHR5cGUgb2YgZ2VvbWV0cnkgdGhlIGNvbGxlY3Rpb24gaGFzXG4gIGNvbnN0IGZlYXR1cmVUeXBlcyA9IGdldEdlb2pzb25GZWF0dXJlVHlwZXMoZGF0YVRvRmVhdHVyZSk7XG5cbiAgY29uc3QgbWVhbkNlbnRlcnM6IEFycmF5PG51bWJlcltdIHwgbnVsbD4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhVG9GZWF0dXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZmVhdHVyZSA9IGRhdGFUb0ZlYXR1cmVbaV07XG4gICAgaWYgKGZlYXR1cmUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRPRE86IHVzZSBsaW5lIGludGVycG9sYXRlIHRvIGdldCBjZW50ZXIgb2YgbGluZSBmb3IgTGluZVN0cmluZ1xuICAgICAgICBjb25zdCBjZW50ID0gY2VudGVyKGZlYXR1cmUgYXMgQWxsR2VvSlNPTik7XG4gICAgICAgIG1lYW5DZW50ZXJzLnB1c2goY2VudC5nZW9tZXRyeS5jb29yZGluYXRlcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIG1lYW5DZW50ZXJzLnB1c2gobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhVG9GZWF0dXJlLFxuICAgIGJvdW5kcyxcbiAgICBmaXhlZFJhZGl1cyxcbiAgICBmZWF0dXJlVHlwZXMsXG4gICAgY2VudHJvaWRzOiBtZWFuQ2VudGVyc1xuICB9O1xufVxuXG4vKipcbiAqIFBhcnNlIHJhdyBkYXRhIHRvIEdlb0pzb24gZmVhdHVyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2VvanNvbkRhdGFNYXBzKFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICBnZXRGZWF0dXJlOiBHZXRGZWF0dXJlXG4pOiBHZW9qc29uRGF0YU1hcHMge1xuICBjb25zdCBhY2NlcHRhYmxlVHlwZXMgPSBbXG4gICAgJ1BvaW50JyxcbiAgICAnTXVsdGlQb2ludCcsXG4gICAgJ0xpbmVTdHJpbmcnLFxuICAgICdNdWx0aUxpbmVTdHJpbmcnLFxuICAgICdQb2x5Z29uJyxcbiAgICAnTXVsdGlQb2x5Z29uJyxcbiAgICAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICBdO1xuXG4gIGNvbnN0IGRhdGFUb0ZlYXR1cmU6IEdlb2pzb25EYXRhTWFwcyA9IFtdO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTsgaW5kZXgrKykge1xuICAgIGNvbnN0IGZlYXR1cmUgPSBwYXJzZUdlb0pzb25SYXdGZWF0dXJlKGdldEZlYXR1cmUoe2luZGV4fSkpO1xuXG4gICAgaWYgKGZlYXR1cmUgJiYgZmVhdHVyZS5nZW9tZXRyeSAmJiBhY2NlcHRhYmxlVHlwZXMuaW5jbHVkZXMoZmVhdHVyZS5nZW9tZXRyeS50eXBlKSkge1xuICAgICAgY29uc3QgY2xlYW5lZCA9IHtcbiAgICAgICAgLi4uZmVhdHVyZSxcbiAgICAgICAgLy8gc3RvcmUgaW5kZXggb2YgdGhlIGRhdGEgaW4gZmVhdHVyZSBwcm9wZXJ0aWVzXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAuLi5mZWF0dXJlLnByb3BlcnRpZXMsXG4gICAgICAgICAgaW5kZXhcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZGF0YVRvRmVhdHVyZVtpbmRleF0gPSBjbGVhbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhVG9GZWF0dXJlW2luZGV4XSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRhdGFUb0ZlYXR1cmU7XG59XG5cbi8qKlxuICogUGFyc2UgcmF3IGRhdGEgdG8gR2VvSnNvbiBwb2ludCBmZWF0dXJlIGNvb3JkaW5hdGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHZW9qc29uUG9pbnREYXRhTWFwcyhcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgZ2V0RmVhdHVyZTogR2V0RmVhdHVyZVxuKTogR2VvanNvblBvaW50RGF0YU1hcHMge1xuICBjb25zdCBhY2NlcHRhYmxlVHlwZXMgPSBbJ1BvaW50JywgJ011bHRpUG9pbnQnLCAnR2VvbWV0cnlDb2xsZWN0aW9uJ107XG5cbiAgY29uc3QgZGF0YVRvRmVhdHVyZTogR2VvanNvblBvaW50RGF0YU1hcHMgPSBbXTtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YUNvbnRhaW5lci5udW1Sb3dzKCk7IGluZGV4KyspIHtcbiAgICBjb25zdCBmZWF0dXJlID0gcGFyc2VHZW9Kc29uUmF3RmVhdHVyZShnZXRGZWF0dXJlKGRhdGFDb250YWluZXIucm93QXNBcnJheShpbmRleCkpKTtcblxuICAgIGlmIChmZWF0dXJlICYmIGZlYXR1cmUuZ2VvbWV0cnkgJiYgYWNjZXB0YWJsZVR5cGVzLmluY2x1ZGVzKGZlYXR1cmUuZ2VvbWV0cnkudHlwZSkpIHtcbiAgICAgIGRhdGFUb0ZlYXR1cmVbaW5kZXhdID1cbiAgICAgICAgZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnIHx8IGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9pbnQnXG4gICAgICAgICAgPyBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzXG4gICAgICAgICAgOiAvLyBAdHMtZXhwZWN0LWVycm9yIFByb3BlcnR5ICdnZW9tZXRyaWVzJyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICdMaW5lU3RyaW5nJ1xuICAgICAgICAgICAgKGZlYXR1cmUuZ2VvbWV0cnkuZ2VvbWV0cmllcyB8fCBbXSkucmVkdWNlKChhY2N1LCBmKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChmLnR5cGUgPT09ICdQb2ludCcpIHtcbiAgICAgICAgICAgICAgICBhY2N1LnB1c2goZi5jb29yZGluYXRlcyk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZi50eXBlID09PSAnTXVsdGlQb2ludCcpIHtcbiAgICAgICAgICAgICAgICBhY2N1LnB1c2goLi4uZi5jb29yZGluYXRlcyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gYWNjdTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YVRvRmVhdHVyZVtpbmRleF0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRhVG9GZWF0dXJlO1xufVxuXG4vKipcbiAqIFBhcnNlIGdlb2pzb24gZnJvbSBzdHJpbmdcbiAqIEBwYXJhbSB7U3RyaW5nfSBnZW9TdHJpbmdcbiAqIEByZXR1cm5zIHtudWxsIHwgT2JqZWN0fSBnZW9qc29uIG9iamVjdCBvciBudWxsIGlmIGZhaWxlZFxuICovXG5mdW5jdGlvbiBwYXJzZUdlb21ldHJ5RnJvbVN0cmluZyhnZW9TdHJpbmc6IHN0cmluZyk6IEZlYXR1cmUgfCBudWxsIHtcbiAgbGV0IHBhcnNlZEdlbztcblxuICAvLyB0cnkgcGFyc2UgYXMgZ2VvanNvbiBzdHJpbmdcbiAgLy8ge1widHlwZVwiOlwiUG9seWdvblwiLFwiY29vcmRpbmF0ZXNcIjpbW1stNzQuMTU4NDkxLDQwLjgzNTk0XV1dfVxuICB0cnkge1xuICAgIHBhcnNlZEdlbyA9IEpTT04ucGFyc2UoZ2VvU3RyaW5nKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGtlZXAgdHJ5aW5nIHRvIHBhcnNlXG4gIH1cblxuICAvLyB0cnkgcGFyc2UgYXMgd2t0IHVzaW5nIGxvYWRlcnMuZ2wgV0tUTG9hZGVyXG4gIGlmICghcGFyc2VkR2VvKSB7XG4gICAgdHJ5IHtcbiAgICAgIHBhcnNlZEdlbyA9IHBhcnNlU3luYyhnZW9TdHJpbmcsIFdLVExvYWRlcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJ5IHBhcnNlIGFzIHdrYiB1c2luZyBsb2FkZXJzLmdsIFdLQkxvYWRlclxuICBpZiAoIXBhcnNlZEdlbykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShnZW9TdHJpbmcsICdoZXgnKTtcbiAgICAgIGNvbnN0IGJpbmFyeUdlbyA9IHBhcnNlU3luYyhidWZmZXIsIFdLQkxvYWRlcik7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBwYXJzZWRHZW8gPSBiaW5hcnlUb0dlb21ldHJ5KGJpbmFyeUdlbyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYXJzZWRHZW8pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemUocGFyc2VkR2VvKTtcblxuICBpZiAoIW5vcm1hbGl6ZWQgfHwgIUFycmF5LmlzQXJyYXkobm9ybWFsaXplZC5mZWF0dXJlcykpIHtcbiAgICAvLyBmYWlsIHRvIG5vcm1hbGl6ZSBnZW9qc29uXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZC5mZWF0dXJlc1swXTtcbn1cblxuLyoqXG4gKiBHZXQgZ2VvanNvbiBib3VuZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdlb2pzb25Cb3VuZHMoZmVhdHVyZXM6IEdlb2pzb25EYXRhTWFwcyA9IFtdKTogQkJveCB8IG51bGwge1xuICAvLyA3MCBtcyBmb3IgMTAsMDAwIHBvbHlnb25zXG4gIC8vIGhlcmUgd2Ugb25seSBwaWNrIGNvdXBsZVxuICBjb25zdCBtYXhDb3VudCA9IDEwMDAwO1xuICBjb25zdCBzYW1wbGVzID0gZmVhdHVyZXMubGVuZ3RoID4gbWF4Q291bnQgPyBnZXRTYW1wbGVEYXRhKGZlYXR1cmVzLCBtYXhDb3VudCkgOiBmZWF0dXJlcztcblxuICBjb25zdCBub25FbXB0eSA9IHNhbXBsZXMuZmlsdGVyKFxuICAgIGQgPT4gZCAmJiBkLmdlb21ldHJ5ICYmIGQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMgJiYgZC5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGhcbiAgKTtcblxuICB0cnkge1xuICAgIHJldHVybiBiYm94KHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogbm9uRW1wdHlcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBmZWF0dXJlVG9EZWNrR2xHZW9UeXBlID0ge1xuICBQb2ludDogJ3BvaW50JyxcbiAgTXVsdGlQb2ludDogJ3BvaW50JyxcbiAgTGluZVN0cmluZzogJ2xpbmUnLFxuICBNdWx0aUxpbmVTdHJpbmc6ICdsaW5lJyxcbiAgUG9seWdvbjogJ3BvbHlnb24nLFxuICBNdWx0aVBvbHlnb246ICdwb2x5Z29uJ1xufTtcblxuZXhwb3J0IHR5cGUgRGVja0dsR2VvVHlwZXMgPSB7XG4gIHBvaW50OiBib29sZWFuO1xuICBsaW5lOiBib29sZWFuO1xuICBwb2x5Z29uOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBQYXJzZSBnZW9qc29uIGZyb20gc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHZW9qc29uRmVhdHVyZVR5cGVzKGFsbEZlYXR1cmVzOiBHZW9qc29uRGF0YU1hcHMpOiBEZWNrR2xHZW9UeXBlcyB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3Igc29tZSB0ZXN0IGNhc2VzIG9ubHkgaGF2ZSAxIGdlb3R5cGVcbiAgY29uc3QgZmVhdHVyZVR5cGVzOiBEZWNrR2xHZW9UeXBlcyA9IHt9O1xuICBmb3IgKGxldCBmID0gMDsgZiA8IGFsbEZlYXR1cmVzLmxlbmd0aDsgZisrKSB7XG4gICAgY29uc3QgZmVhdHVyZSA9IGFsbEZlYXR1cmVzW2ZdO1xuICAgIGlmIChmZWF0dXJlICYmICdnZW9tZXRyeScgaW4gZmVhdHVyZSkge1xuICAgICAgY29uc3QgZ2VvVHlwZSA9IGZlYXR1cmVUb0RlY2tHbEdlb1R5cGVbZmVhdHVyZS5nZW9tZXRyeSAmJiBmZWF0dXJlLmdlb21ldHJ5LnR5cGVdO1xuICAgICAgaWYgKGdlb1R5cGUpIHtcbiAgICAgICAgZmVhdHVyZVR5cGVzW2dlb1R5cGVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmVhdHVyZVR5cGVzO1xufVxuXG50eXBlIENvb3Jkc1R5cGUgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyIHwgbnVsbF0gJiB7XG4gIGRhdHVtSW5kZXg6IG51bWJlcjtcbiAgZGF0dW06IG51bWJlcltdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwQ29sdW1uc0FzR2VvSnNvbihcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgY29sdW1uczogTGF5ZXJDb2x1bW5zLFxuICBzb3J0QnlDb2x1bW4gPSAndGltZXN0YW1wJ1xuKTogRmVhdHVyZVtdIHtcbiAgY29uc3QgZ3JvdXBlZEJ5SWQ6IHtba2V5OiBzdHJpbmddOiBDb29yZHNUeXBlW119ID0ge307XG4gIGNvbnN0IHNvcnRCeUZpZWxkSWR4ID0gY29sdW1uc1tzb3J0QnlDb2x1bW5dLmZpZWxkSWR4O1xuICBjb25zdCBzb3J0QnlSZXF1aXJlZCA9ICFjb2x1bW5zW3NvcnRCeUNvbHVtbl0ub3B0aW9uYWw7XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTsgaW5kZXgrKykge1xuICAgIC8vIG5vdGU6IGNhbiBtYXRlcmlhbGl6ZSB0aGUgcm93XG4gICAgY29uc3QgZGF0dW0gPSBkYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoaW5kZXgpO1xuICAgIGNvbnN0IGlkID0gZGF0dW1bY29sdW1ucy5pZC5maWVsZElkeF07XG4gICAgY29uc3QgbGF0ID0gZGF0dW1bY29sdW1ucy5sYXQuZmllbGRJZHhdO1xuICAgIGNvbnN0IGxvbiA9IGRhdHVtW2NvbHVtbnMubG5nLmZpZWxkSWR4XTtcbiAgICBjb25zdCBhbHRpdHVkZSA9IGNvbHVtbnMuYWx0aXR1ZGUgPyBkYXR1bVtjb2x1bW5zLmFsdGl0dWRlLmZpZWxkSWR4XSA6IDA7XG4gICAgY29uc3Qgc29ydEJ5ID0gc29ydEJ5RmllbGRJZHggPiAtMSA/IGRhdHVtW3NvcnRCeUZpZWxkSWR4XSA6IG51bGw7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGNvbnN0IGNvb3JkczogQ29vcmRzVHlwZSA9IFtsb24sIGxhdCwgYWx0aXR1ZGUsIHNvcnRCeV07XG4gICAgLy8gQWRkaW5nIHJlZmVyZW5jZXMgdG8gdGhlIG9yaWdpbmFsIGRhdGEgdG8gdGhlIGNvb3JkaW5hdGVzIGFycmF5XG4gICAgY29vcmRzLmRhdHVtSW5kZXggPSBpbmRleDtcbiAgICBjb29yZHMuZGF0dW0gPSBkYXR1bTtcbiAgICBpZiAoIWdyb3VwZWRCeUlkW2lkXSkgZ3JvdXBlZEJ5SWRbaWRdID0gW107XG5cbiAgICBpZiAoXG4gICAgICBOdW1iZXIuaXNGaW5pdGUobG9uKSAmJlxuICAgICAgTnVtYmVyLmlzRmluaXRlKGxhdCkgJiZcbiAgICAgICghc29ydEJ5UmVxdWlyZWQgfHwgKHNvcnRCeVJlcXVpcmVkICYmIHNvcnRCeSkpXG4gICAgKSB7XG4gICAgICAvLyBvbmx5IHB1c2ggcG9pbnRzIGlmIGxhdCxsbmcsYW5kIHNvcnRieSBleGlzdFxuICAgICAgZ3JvdXBlZEJ5SWRbaWRdLnB1c2goY29vcmRzKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IEZlYXR1cmVbXSA9IE9iamVjdC5lbnRyaWVzKGdyb3VwZWRCeUlkKS5tYXAoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIChbXywgaXRlbXNdOiBbc3RyaW5nLCBDb29yZHNUeXBlW11dLCBpbmRleCkgPT4gKHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlJyBhcyBjb25zdCxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyBhcyBjb25zdCxcbiAgICAgICAgLy8gU29ydCBieSBjb2x1bW5zIGlmIGhhcyBzb3J0QnlGaWVsZFxuICAgICAgICAvLyBUT0RPOiBpdGVtcyBhcmUgZXhwZWN0ZWQgaW4gUG9zaXRpb25bXSBmb3JtYXQ/XG4gICAgICAgIGNvb3JkaW5hdGVzOiAoc29ydEJ5RmllbGRJZHggPiAtMVxuICAgICAgICAgID8gaXRlbXMuc29ydCgoYSwgYikgPT4gYXNjZW5kaW5nKGFbM10gYXMgYW55LCBiWzNdIGFzIGFueSkpXG4gICAgICAgICAgOiBpdGVtcykgYXMgUG9zaXRpb25bXVxuICAgICAgfSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIC8vIHZhbHVlcyBhcmUgdXNlZCBmb3IgdmFsdWVBY2Nlc3NvciBpbiBUcmlwTGF5ZXIuZm9ybWF0TGF5ZXJEYXRhKClcbiAgICAgICAgLy8gTm90ZTogdGhpcyBjYW4gY2F1c2Ugcm93IG1hdGVyaWFsaXphdGlvbiBpbiBjYXNlIG9mIG5vbi1yb3cgYmFzZWQgY29udGFpbmVyc1xuICAgICAgICB2YWx1ZXM6IGl0ZW1zLm1hcChpdGVtID0+IGRhdGFDb250YWluZXIucm93QXNBcnJheShpdGVtLmRhdHVtSW5kZXgpKVxuICAgICAgfVxuICAgIH0pXG4gICk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRmluZCBpZCAvIHRzIC8gbGF0IC8gbG5nIGNvbHVtbnMgZnJvbSBhIHRhYmxlIGFuZCBhc3NpZ24gaXQgdG8gbGF5ZXIgY29sdW1uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0VGFibGVDb2x1bW5zKFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZSxcbiAgbGF5ZXJDb2x1bW5zOiBMYXllckNvbHVtbnMsXG4gIHNvcnRCeSA9ICd0aW1lc3RhbXAnXG4pIHtcbiAgY29uc3Qge2ZpZWxkcywgZmllbGRQYWlyc30gPSBkYXRhc2V0O1xuICBpZiAoIWZpZWxkUGFpcnMubGVuZ3RoIHx8ICFmaWVsZHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gZmluZCBzb3J0IGJ5IGZpZWxkXG4gIGNvbnN0IHNvcnRCeUZpZWxkSWR4ID0gZmllbGRzLmZpbmRJbmRleChmID0+IGYudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCk7XG4gIC8vIGZpbmQgaWQgY29sdW1uXG4gIGNvbnN0IGlkRmllbGRJZHggPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lPy50b0xvd2VyQ2FzZSgpLm1hdGNoKC9eKGlkfHV1aWQpJC9nKSk7XG5cbiAgaWYgKHNvcnRCeUZpZWxkSWR4ID4gLTEgJiYgaWRGaWVsZElkeCA+IC0xKSB7XG4gICAgY29uc3QgcG9pbnRDb2x1bW5zID0gYXNzaWduUG9pbnRQYWlyVG9MYXllckNvbHVtbihmaWVsZFBhaXJzWzBdLCB0cnVlKTtcbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uczoge1xuICAgICAgICAuLi5PYmplY3Qua2V5cyhsYXllckNvbHVtbnMpLnJlZHVjZShcbiAgICAgICAgICAoYWNjdSwgY29sKSA9PiAoe1xuICAgICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAgIFtjb2xdOiBwb2ludENvbHVtbnNbY29sXSA/PyBsYXllckNvbHVtbnNbY29sXVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHt9XG4gICAgICAgICksXG4gICAgICAgIGdlb2pzb246IHtcbiAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICBmaWVsZElkeDogLTFcbiAgICAgICAgICAvLyBvcHRpb25hbDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBpZDoge1xuICAgICAgICAgIHZhbHVlOiBmaWVsZHNbaWRGaWVsZElkeF0ubmFtZSxcbiAgICAgICAgICBmaWVsZElkeDogaWRGaWVsZElkeFxuICAgICAgICAgIC8vIG9wdGlvbmFsOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBbc29ydEJ5XToge1xuICAgICAgICAgIHZhbHVlOiBmaWVsZHNbc29ydEJ5RmllbGRJZHhdLm5hbWUsXG4gICAgICAgICAgZmllbGRJZHg6IHNvcnRCeUZpZWxkSWR4XG4gICAgICAgICAgLy8gb3B0aW9uYWw6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsYWJlbDogZmllbGRQYWlyc1swXS5kZWZhdWx0TmFtZVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RmlsdGVyc1RvVGFibGVDb2x1bW5zKFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZSxcbiAgZGF0YVRvRmVhdHVyZTogR2VvanNvbkRhdGFNYXBzXG4pOiBHZW9qc29uRGF0YU1hcHMge1xuICBjb25zdCB7ZGF0YUNvbnRhaW5lciwgZmlsdGVyZWRJbmRleH0gPSBkYXRhc2V0O1xuICBpZiAoZmlsdGVyZWRJbmRleC5sZW5ndGggPT09IGRhdGFDb250YWluZXIubnVtUm93cygpKSB7XG4gICAgLy8gT25seSBhcHBseSB0aGUgZmlsdGVyaW5nIHdoZW4gc29tZXRoaW5nIGlzIHRvIGJlIGZpbHRlcmVkIG91dFxuICAgIHJldHVybiBkYXRhVG9GZWF0dXJlO1xuICB9XG5cbiAgY29uc3QgZmlsdGVyZWRJbmRleFNldCA9IG5ldyBTZXQoZmlsdGVyZWRJbmRleCk7XG4gIGNvbnN0IGZpbHRlcmVkRmVhdHVyZXM6IEdlb2pzb25EYXRhTWFwcyA9IFtdO1xuICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZGF0YVRvRmVhdHVyZSkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgZ2VvbWV0cnkuY29vcmRpbmF0ZXMgbm90IGF2YWlsYWJsZSBmb3IgR2VvbWV0cnlDb2xsZWN0aW9uXG4gICAgY29uc3QgZmlsdGVyZWRDb29yZHMgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmZpbHRlcihjID0+XG4gICAgICBmaWx0ZXJlZEluZGV4U2V0LmhhcyhjLmRhdHVtSW5kZXgpXG4gICAgKTtcbiAgICBpZiAoZmlsdGVyZWRDb29yZHMubGVuZ3RoID4gMCAmJiBmZWF0dXJlKSB7XG4gICAgICBmaWx0ZXJlZEZlYXR1cmVzLnB1c2goe1xuICAgICAgICAuLi5mZWF0dXJlLFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgQmluYXJ5RmVhdHVyZUNvbGxlY3Rpb25cbiAgICAgICAgICAuLi5mZWF0dXJlLmdlb21ldHJ5LFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBmaWx0ZXJlZENvb3Jkc1xuICAgICAgICB9LFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBCaW5hcnlGZWF0dXJlQ29sbGVjdGlvblxuICAgICAgICAgIC4uLmZlYXR1cmUucHJvcGVydGllcyxcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEJpbmFyeUZlYXR1cmVDb2xsZWN0aW9uXG4gICAgICAgICAgdmFsdWVzOiBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLm1hcChjID0+IGRhdGFDb250YWluZXIucm93QXNBcnJheShjLmRhdHVtSW5kZXgpKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZpbHRlcmVkRmVhdHVyZXM7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUksS0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssSUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sSUFBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sTUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBSUEsSUFBQVMsV0FBQSxHQUFBVCxPQUFBO0FBQW1GLFNBQUFVLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5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
|
|
428
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVmZmVyIiwicmVxdWlyZSIsIl9nZW9qc29uTm9ybWFsaXplIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9iYm94IiwiX2QzQXJyYXkiLCJfY2VudGVyIiwiX2NvcmUiLCJfd2t0IiwiX2dpcyIsIl91dGlscyIsIl9jb25zdGFudHMiLCJfbGF5ZXJVdGlscyIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsImUiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwiYSIsInUiLCJjYWxsIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0Iiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIkNPTFVNTl9NT0RFX0dFT0pTT04iLCJleHBvcnRzIiwiRmVhdHVyZVR5cGVzIiwiZmllbGRJc0dlb0Fycm93IiwiZ2VvRmllbGQiLCJfZ2VvRmllbGQkbWV0YWRhdGEiLCJCb29sZWFuIiwibWV0YWRhdGEiLCJnZXQiLCJwYXJzZUdlb0pzb25SYXdGZWF0dXJlIiwicmF3RmVhdHVyZSIsInByb3BlcnRpZXMiLCJfdHlwZW9mMiIsIm5vcm1hbGl6ZWQiLCJub3JtYWxpemUiLCJmZWF0dXJlcyIsInBhcnNlZEdlb21ldHJ5IiwicGFyc2VHZW9tZXRyeUZyb21TdHJpbmciLCJ0eXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIm1hcCIsInB0cyIsImdldEdlb2pzb25MYXllck1ldGEiLCJfcmVmIiwiZGF0YUNvbnRhaW5lciIsImdldEZlYXR1cmUiLCJjb25maWciLCJkYXRhVG9GZWF0dXJlIiwiY29sdW1uTW9kZSIsImdldEdlb2pzb25EYXRhTWFwcyIsImdyb3VwQ29sdW1uc0FzR2VvSnNvbiIsImNvbHVtbnMiLCJib3VuZHMiLCJnZXRHZW9qc29uQm91bmRzIiwiZml4ZWRSYWRpdXMiLCJmaW5kIiwiZCIsIl9kJHByb3BlcnRpZXMiLCJyYWRpdXMiLCJmZWF0dXJlVHlwZXMiLCJnZXRHZW9qc29uRmVhdHVyZVR5cGVzIiwibWVhbkNlbnRlcnMiLCJpIiwiZmVhdHVyZSIsImNlbnQiLCJjZW50ZXIiLCJjZW50cm9pZHMiLCJhY2NlcHRhYmxlVHlwZXMiLCJpbmRleCIsIm51bVJvd3MiLCJpbmNsdWRlcyIsImNsZWFuZWQiLCJnZXRHZW9qc29uUG9pbnREYXRhTWFwcyIsInJvd0FzQXJyYXkiLCJnZW9tZXRyaWVzIiwicmVkdWNlIiwiYWNjdSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJnZW9TdHJpbmciLCJwYXJzZWRHZW8iLCJKU09OIiwicGFyc2UiLCJwYXJzZVN5bmMiLCJXS1RMb2FkZXIiLCJidWZmZXIiLCJCdWZmZXIiLCJiaW5hcnlHZW8iLCJXS0JMb2FkZXIiLCJiaW5hcnlUb0dlb21ldHJ5IiwidW5kZWZpbmVkIiwibWF4Q291bnQiLCJzYW1wbGVzIiwiZ2V0U2FtcGxlRGF0YSIsInZhbGlkU2luZ2xlR2VvbWV0cnkiLCJnZW9tIiwidmFsaWRHZW9tZXRyeUNvbGxlY3Rpb24iLCJldmVyeSIsIm5vbkVtcHR5IiwiYmJveCIsImZlYXR1cmVUb0RlY2tHbEdlb1R5cGUiLCJQb2ludCIsIk11bHRpUG9pbnQiLCJMaW5lU3RyaW5nIiwiTXVsdGlMaW5lU3RyaW5nIiwiUG9seWdvbiIsIk11bHRpUG9seWdvbiIsImFsbEZlYXR1cmVzIiwiZ2VvVHlwZSIsInNvcnRCeUNvbHVtbiIsImdyb3VwZWRCeUlkIiwic29ydEJ5RmllbGRJZHgiLCJmaWVsZElkeCIsInNvcnRCeVJlcXVpcmVkIiwib3B0aW9uYWwiLCJkYXR1bSIsImlkIiwibGF0IiwibG9uIiwibG5nIiwiYWx0aXR1ZGUiLCJzb3J0QnkiLCJjb29yZHMiLCJkYXR1bUluZGV4IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJyZXN1bHQiLCJlbnRyaWVzIiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5MiIsIl8iLCJpdGVtcyIsInNvcnQiLCJiIiwiYXNjZW5kaW5nIiwidmFsdWVzIiwiaXRlbSIsImRldGVjdFRhYmxlQ29sdW1ucyIsImRhdGFzZXQiLCJsYXllckNvbHVtbnMiLCJmaWVsZHMiLCJmaWVsZFBhaXJzIiwiZmluZEluZGV4IiwiQUxMX0ZJRUxEX1RZUEVTIiwidGltZXN0YW1wIiwiaWRGaWVsZElkeCIsIl9mJG5hbWUiLCJ0b0xvd2VyQ2FzZSIsIm1hdGNoIiwicG9pbnRDb2x1bW5zIiwiYXNzaWduUG9pbnRQYWlyVG9MYXllckNvbHVtbiIsImNvbCIsIl9wb2ludENvbHVtbnMkY29sIiwiZ2VvanNvbiIsImxhYmVsIiwiZGVmYXVsdE5hbWUiLCJhcHBseUZpbHRlcnNUb1RhYmxlQ29sdW1ucyIsImZpbHRlcmVkSW5kZXgiLCJmaWx0ZXJlZEluZGV4U2V0IiwiU2V0IiwiZmlsdGVyZWRGZWF0dXJlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiZmlsdGVyZWRDb29yZHMiLCJjIiwiaGFzIiwiZXJyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlb2pzb24tbGF5ZXIvZ2VvanNvbi11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0J1ZmZlcn0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7RmVhdHVyZSwgUG9zaXRpb24sIEJCb3h9IGZyb20gJ2dlb2pzb24nO1xuaW1wb3J0IG5vcm1hbGl6ZSBmcm9tICdAbWFwYm94L2dlb2pzb24tbm9ybWFsaXplJztcbmltcG9ydCBiYm94IGZyb20gJ0B0dXJmL2Jib3gnO1xuaW1wb3J0IHthc2NlbmRpbmd9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCBjZW50ZXIgZnJvbSAnQHR1cmYvY2VudGVyJztcbmltcG9ydCB7QWxsR2VvSlNPTn0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQge3BhcnNlU3luY30gZnJvbSAnQGxvYWRlcnMuZ2wvY29yZSc7XG5pbXBvcnQge1dLQkxvYWRlciwgV0tUTG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC93a3QnO1xuaW1wb3J0IHtiaW5hcnlUb0dlb21ldHJ5fSBmcm9tICdAbG9hZGVycy5nbC9naXMnO1xuaW1wb3J0IHtCaW5hcnlGZWF0dXJlQ29sbGVjdGlvbn0gZnJvbSAnQGxvYWRlcnMuZ2wvc2NoZW1hJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgZ2V0U2FtcGxlRGF0YX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMYXllckNvbHVtbnMsIFByb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuXG5pbXBvcnQge0dlb2pzb25MYXllck1ldGFQcm9wcywgYXNzaWduUG9pbnRQYWlyVG9MYXllckNvbHVtbn0gZnJvbSAnLi4vbGF5ZXItdXRpbHMnO1xuaW1wb3J0IHtMYXllckJhc2VDb25maWd9IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuXG5leHBvcnQgdHlwZSBHZXRGZWF0dXJlID0gKGQ6IGFueSkgPT4gRmVhdHVyZTtcbmV4cG9ydCB0eXBlIEdlb2pzb25EYXRhTWFwcyA9IChGZWF0dXJlIHwgQmluYXJ5RmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsKVtdO1xuZXhwb3J0IHR5cGUgR2VvanNvblBvaW50RGF0YU1hcHMgPSAobnVtYmVyW10gfCBudW1iZXJbXVtdIHwgbnVsbClbXTtcblxuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX0dFT0pTT04gPSAnZ2VvanNvbic7XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBUT0RPOiBSZS1lbmFibGUgZXNsaW50IHdoZW4gd2UgdXBncmFkZSB0byBoYW5kbGUgZW51bXMgYW5kIHR5cGUgbWFwc1xuZXhwb3J0IGVudW0gRmVhdHVyZVR5cGVzIHtcbiAgUG9pbnQgPSAnUG9pbnQnLFxuICBNdWx0aVBvaW50ID0gJ011bHRpUG9pbnQnLFxuICBMaW5lU3RyaW5nID0gJ0xpbmVTdHJpbmcnLFxuICBNdWx0aUxpbmVTdHJpbmcgPSAnTXVsdGlMaW5lU3RyaW5nJyxcbiAgUG9seWdvbiA9ICdQb2x5Z29uJyxcbiAgTXVsdGlQb2x5Z29uID0gJ011bHRpUG9seWdvbidcbn1cblxuLy8gQHRzLWV4cGVjdC1lcnJvciByZXR1cm4gdHlwZSBvZiBnZXRHZW9qc29uRmVhdHVyZVR5cGVzID9cbnR5cGUgRmVhdHVyZVR5cGVNYXAgPSB7XG4gIFtrZXkgaW4gRmVhdHVyZVR5cGVzXTogYm9vbGVhbjtcbn07XG5cbi8qIGVzbGludC1lbmFibGUgKi9cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGZpZWxkIGhhcyBnZW9hcnJvdyBleHRlbnNpb24uXG4gKiBAcGFyYW0gZ2VvRmllbGQgQSBmaWVsZCB0byB0ZXN0LlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSXNHZW9BcnJvdyhnZW9GaWVsZD86IFByb3RvRGF0YXNldEZpZWxkIHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihnZW9GaWVsZD8ubWV0YWRhdGE/LmdldCgnQVJST1c6ZXh0ZW5zaW9uOm5hbWUnKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUdlb0pzb25SYXdGZWF0dXJlKHJhd0ZlYXR1cmU6IHVua25vd24pOiBGZWF0dXJlIHwgbnVsbCB7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBudWxsOyAvLyBoZWxwIGVuc3VyZSB0aGF0IHByb3BlcnRpZXMgaXMgcHJlc2VudCBvbiB0aGUgcmV0dXJuZWQgZ2VvanNvbiBmZWF0dXJlXG4gIGlmICh0eXBlb2YgcmF3RmVhdHVyZSA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBTdXBwb3J0IEdlb0pzb24gZmVhdHVyZSBhcyBvYmplY3RcbiAgICAvLyBwcm9iYWJseSBuZWVkIHRvIG5vcm1hbGl6ZSBpdCBhcyB3ZWxsXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZShyYXdGZWF0dXJlKTtcbiAgICBpZiAoIW5vcm1hbGl6ZWQgfHwgIUFycmF5LmlzQXJyYXkobm9ybWFsaXplZC5mZWF0dXJlcykpIHtcbiAgICAgIC8vIGZhaWwgdG8gbm9ybWFsaXplIEdlb0pzb25cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7cHJvcGVydGllcywgLi4ubm9ybWFsaXplZC5mZWF0dXJlc1swXX07XG4gIH0gZWxzZSBpZiAodHlwZW9mIHJhd0ZlYXR1cmUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgcGFyc2VkR2VvbWV0cnkgPSBwYXJzZUdlb21ldHJ5RnJvbVN0cmluZyhyYXdGZWF0dXJlKTtcbiAgICBpZiAoIXBhcnNlZEdlb21ldHJ5KSByZXR1cm4gbnVsbDtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHZlcmlmeSB3aGV0aGVyIHBhcnNlZEdlb21ldHJ5IGFsd2F5cyBjb250YWlucyBwcm9wZXJ0aWVzXG4gICAgcmV0dXJuIHtwcm9wZXJ0aWVzLCAuLi5wYXJzZWRHZW9tZXRyeX07XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyYXdGZWF0dXJlKSkge1xuICAgIC8vIFN1cHBvcnQgR2VvSnNvbiAgTGluZVN0cmluZyBhcyBhbiBhcnJheSBvZiBwb2ludHNcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgLy8gd2h5IGRvIHdlIG5lZWQgdG8gZmxpcCBpdC4uLlxuICAgICAgICBjb29yZGluYXRlczogcmF3RmVhdHVyZS5tYXAocHRzID0+IFtwdHNbMV0sIHB0c1swXV0pLFxuICAgICAgICB0eXBlOiAnTGluZVN0cmluZydcbiAgICAgIH0sXG4gICAgICBwcm9wZXJ0aWVzXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2VvanNvbkxheWVyTWV0YSh7XG4gIGRhdGFDb250YWluZXIsXG4gIGdldEZlYXR1cmUsXG4gIGNvbmZpZ1xufToge1xuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlO1xuICBnZXRGZWF0dXJlOiBHZXRGZWF0dXJlO1xuICBjb25maWc6IExheWVyQmFzZUNvbmZpZztcbn0pOiBHZW9qc29uTGF5ZXJNZXRhUHJvcHMge1xuICBjb25zdCBkYXRhVG9GZWF0dXJlID1cbiAgICBjb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTlxuICAgICAgPyBnZXRHZW9qc29uRGF0YU1hcHMoZGF0YUNvbnRhaW5lciwgZ2V0RmVhdHVyZSlcbiAgICAgIDogLy8gQ09MVU1OX01PREVfVEFCTEVcbiAgICAgICAgZ3JvdXBDb2x1bW5zQXNHZW9Kc29uKGRhdGFDb250YWluZXIsIGNvbmZpZy5jb2x1bW5zLCAnc29ydEJ5Jyk7XG5cbiAgLy8gZ2V0IGJvdW5kcyBmcm9tIGZlYXR1cmVzXG4gIGNvbnN0IGJvdW5kcyA9IGdldEdlb2pzb25Cb3VuZHMoZGF0YVRvRmVhdHVyZSk7XG4gIC8vIGlmIGFueSBvZiB0aGUgZmVhdHVyZSBoYXMgcHJvcGVydGllcy5yYWRpdXMgc2V0IHRvIGJlIHRydWVcbiAgY29uc3QgZml4ZWRSYWRpdXMgPSBCb29sZWFuKFxuICAgIGRhdGFUb0ZlYXR1cmUuZmluZChkID0+IGQgJiYgJ3Byb3BlcnRpZXMnIGluIGQgJiYgZC5wcm9wZXJ0aWVzPy5yYWRpdXMpXG4gICk7XG5cbiAgLy8ga2VlcCBhIHJlY29yZCBvZiB3aGF0IHR5cGUgb2YgZ2VvbWV0cnkgdGhlIGNvbGxlY3Rpb24gaGFzXG4gIGNvbnN0IGZlYXR1cmVUeXBlcyA9IGdldEdlb2pzb25GZWF0dXJlVHlwZXMoZGF0YVRvRmVhdHVyZSk7XG5cbiAgY29uc3QgbWVhbkNlbnRlcnM6IEFycmF5PG51bWJlcltdIHwgbnVsbD4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhVG9GZWF0dXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZmVhdHVyZSA9IGRhdGFUb0ZlYXR1cmVbaV07XG4gICAgaWYgKGZlYXR1cmUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRPRE86IHVzZSBsaW5lIGludGVycG9sYXRlIHRvIGdldCBjZW50ZXIgb2YgbGluZSBmb3IgTGluZVN0cmluZ1xuICAgICAgICBjb25zdCBjZW50ID0gY2VudGVyKGZlYXR1cmUgYXMgQWxsR2VvSlNPTik7XG4gICAgICAgIG1lYW5DZW50ZXJzLnB1c2goY2VudC5nZW9tZXRyeS5jb29yZGluYXRlcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIG1lYW5DZW50ZXJzLnB1c2gobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhVG9GZWF0dXJlLFxuICAgIGJvdW5kcyxcbiAgICBmaXhlZFJhZGl1cyxcbiAgICBmZWF0dXJlVHlwZXMsXG4gICAgY2VudHJvaWRzOiBtZWFuQ2VudGVyc1xuICB9O1xufVxuXG4vKipcbiAqIFBhcnNlIHJhdyBkYXRhIHRvIEdlb0pzb24gZmVhdHVyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2VvanNvbkRhdGFNYXBzKFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICBnZXRGZWF0dXJlOiBHZXRGZWF0dXJlXG4pOiBHZW9qc29uRGF0YU1hcHMge1xuICBjb25zdCBhY2NlcHRhYmxlVHlwZXMgPSBbXG4gICAgJ1BvaW50JyxcbiAgICAnTXVsdGlQb2ludCcsXG4gICAgJ0xpbmVTdHJpbmcnLFxuICAgICdNdWx0aUxpbmVTdHJpbmcnLFxuICAgICdQb2x5Z29uJyxcbiAgICAnTXVsdGlQb2x5Z29uJyxcbiAgICAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICBdO1xuXG4gIGNvbnN0IGRhdGFUb0ZlYXR1cmU6IEdlb2pzb25EYXRhTWFwcyA9IFtdO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTsgaW5kZXgrKykge1xuICAgIGNvbnN0IGZlYXR1cmUgPSBwYXJzZUdlb0pzb25SYXdGZWF0dXJlKGdldEZlYXR1cmUoe2luZGV4fSkpO1xuXG4gICAgaWYgKGZlYXR1cmUgJiYgZmVhdHVyZS5nZW9tZXRyeSAmJiBhY2NlcHRhYmxlVHlwZXMuaW5jbHVkZXMoZmVhdHVyZS5nZW9tZXRyeS50eXBlKSkge1xuICAgICAgY29uc3QgY2xlYW5lZCA9IHtcbiAgICAgICAgLi4uZmVhdHVyZSxcbiAgICAgICAgLy8gc3RvcmUgaW5kZXggb2YgdGhlIGRhdGEgaW4gZmVhdHVyZSBwcm9wZXJ0aWVzXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAuLi5mZWF0dXJlLnByb3BlcnRpZXMsXG4gICAgICAgICAgaW5kZXhcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZGF0YVRvRmVhdHVyZVtpbmRleF0gPSBjbGVhbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhVG9GZWF0dXJlW2luZGV4XSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRhdGFUb0ZlYXR1cmU7XG59XG5cbi8qKlxuICogUGFyc2UgcmF3IGRhdGEgdG8gR2VvSnNvbiBwb2ludCBmZWF0dXJlIGNvb3JkaW5hdGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHZW9qc29uUG9pbnREYXRhTWFwcyhcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgZ2V0RmVhdHVyZTogR2V0RmVhdHVyZVxuKTogR2VvanNvblBvaW50RGF0YU1hcHMge1xuICBjb25zdCBhY2NlcHRhYmxlVHlwZXMgPSBbJ1BvaW50JywgJ011bHRpUG9pbnQnLCAnR2VvbWV0cnlDb2xsZWN0aW9uJ107XG5cbiAgY29uc3QgZGF0YVRvRmVhdHVyZTogR2VvanNvblBvaW50RGF0YU1hcHMgPSBbXTtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YUNvbnRhaW5lci5udW1Sb3dzKCk7IGluZGV4KyspIHtcbiAgICBjb25zdCBmZWF0dXJlID0gcGFyc2VHZW9Kc29uUmF3RmVhdHVyZShnZXRGZWF0dXJlKGRhdGFDb250YWluZXIucm93QXNBcnJheShpbmRleCkpKTtcblxuICAgIGlmIChmZWF0dXJlICYmIGZlYXR1cmUuZ2VvbWV0cnkgJiYgYWNjZXB0YWJsZVR5cGVzLmluY2x1ZGVzKGZlYXR1cmUuZ2VvbWV0cnkudHlwZSkpIHtcbiAgICAgIGRhdGFUb0ZlYXR1cmVbaW5kZXhdID1cbiAgICAgICAgZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnIHx8IGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9pbnQnXG4gICAgICAgICAgPyBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzXG4gICAgICAgICAgOiAvLyBAdHMtZXhwZWN0LWVycm9yIFByb3BlcnR5ICdnZW9tZXRyaWVzJyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICdMaW5lU3RyaW5nJ1xuICAgICAgICAgICAgKGZlYXR1cmUuZ2VvbWV0cnkuZ2VvbWV0cmllcyB8fCBbXSkucmVkdWNlKChhY2N1LCBmKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChmLnR5cGUgPT09ICdQb2ludCcpIHtcbiAgICAgICAgICAgICAgICBhY2N1LnB1c2goZi5jb29yZGluYXRlcyk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZi50eXBlID09PSAnTXVsdGlQb2ludCcpIHtcbiAgICAgICAgICAgICAgICBhY2N1LnB1c2goLi4uZi5jb29yZGluYXRlcyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gYWNjdTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YVRvRmVhdHVyZVtpbmRleF0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRhVG9GZWF0dXJlO1xufVxuXG4vKipcbiAqIFBhcnNlIGdlb2pzb24gZnJvbSBzdHJpbmdcbiAqIEBwYXJhbSB7U3RyaW5nfSBnZW9TdHJpbmdcbiAqIEByZXR1cm5zIHtudWxsIHwgT2JqZWN0fSBnZW9qc29uIG9iamVjdCBvciBudWxsIGlmIGZhaWxlZFxuICovXG5mdW5jdGlvbiBwYXJzZUdlb21ldHJ5RnJvbVN0cmluZyhnZW9TdHJpbmc6IHN0cmluZyk6IEZlYXR1cmUgfCBudWxsIHtcbiAgbGV0IHBhcnNlZEdlbztcblxuICAvLyB0cnkgcGFyc2UgYXMgZ2VvanNvbiBzdHJpbmdcbiAgLy8ge1widHlwZVwiOlwiUG9seWdvblwiLFwiY29vcmRpbmF0ZXNcIjpbW1stNzQuMTU4NDkxLDQwLjgzNTk0XV1dfVxuICB0cnkge1xuICAgIHBhcnNlZEdlbyA9IEpTT04ucGFyc2UoZ2VvU3RyaW5nKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGtlZXAgdHJ5aW5nIHRvIHBhcnNlXG4gIH1cblxuICAvLyB0cnkgcGFyc2UgYXMgd2t0IHVzaW5nIGxvYWRlcnMuZ2wgV0tUTG9hZGVyXG4gIGlmICghcGFyc2VkR2VvKSB7XG4gICAgdHJ5IHtcbiAgICAgIHBhcnNlZEdlbyA9IHBhcnNlU3luYyhnZW9TdHJpbmcsIFdLVExvYWRlcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJ5IHBhcnNlIGFzIHdrYiB1c2luZyBsb2FkZXJzLmdsIFdLQkxvYWRlclxuICBpZiAoIXBhcnNlZEdlbykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShnZW9TdHJpbmcsICdoZXgnKTtcbiAgICAgIGNvbnN0IGJpbmFyeUdlbyA9IHBhcnNlU3luYyhidWZmZXIsIFdLQkxvYWRlcik7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBwYXJzZWRHZW8gPSBiaW5hcnlUb0dlb21ldHJ5KGJpbmFyeUdlbyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYXJzZWRHZW8pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemUocGFyc2VkR2VvKTtcblxuICBpZiAoIW5vcm1hbGl6ZWQgfHwgIUFycmF5LmlzQXJyYXkobm9ybWFsaXplZC5mZWF0dXJlcykpIHtcbiAgICAvLyBmYWlsIHRvIG5vcm1hbGl6ZSBnZW9qc29uXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZC5mZWF0dXJlc1swXTtcbn1cblxuLyoqXG4gKiBHZXQgZ2VvanNvbiBib3VuZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdlb2pzb25Cb3VuZHMoZmVhdHVyZXM6IEdlb2pzb25EYXRhTWFwcyA9IFtdKTogQkJveCB8IG51bGwge1xuICAvLyA3MCBtcyBmb3IgMTAsMDAwIHBvbHlnb25zXG4gIC8vIGhlcmUgd2Ugb25seSBwaWNrIGNvdXBsZVxuICBjb25zdCBtYXhDb3VudCA9IDEwMDAwO1xuICBjb25zdCBzYW1wbGVzID0gZmVhdHVyZXMubGVuZ3RoID4gbWF4Q291bnQgPyBnZXRTYW1wbGVEYXRhKGZlYXR1cmVzLCBtYXhDb3VudCkgOiBmZWF0dXJlcztcblxuICBjb25zdCB2YWxpZFNpbmdsZUdlb21ldHJ5ID0gZ2VvbSA9PiBnZW9tLmNvb3JkaW5hdGVzICYmIGdlb20uY29vcmRpbmF0ZXMubGVuZ3RoO1xuICBjb25zdCB2YWxpZEdlb21ldHJ5Q29sbGVjdGlvbiA9IGdlb20gPT4gZ2VvbS5nZW9tZXRyaWVzICYmIGdlb20uZ2VvbWV0cmllcy5sZW5ndGggJiYgZ2VvbS5nZW9tZXRyaWVzLmV2ZXJ5KHZhbGlkU2luZ2xlR2VvbWV0cnkpO1xuICBjb25zdCBub25FbXB0eSA9IHNhbXBsZXMuZmlsdGVyKFxuICAgIGQgPT4gZCAmJiBkLmdlb21ldHJ5ICYmICh2YWxpZFNpbmdsZUdlb21ldHJ5KGQuZ2VvbWV0cnkpIHx8IHZhbGlkR2VvbWV0cnlDb2xsZWN0aW9uKGQuZ2VvbWV0cnkpKVxuICApO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGJib3goe1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBub25FbXB0eVxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGZlYXR1cmVUb0RlY2tHbEdlb1R5cGUgPSB7XG4gIFBvaW50OiAncG9pbnQnLFxuICBNdWx0aVBvaW50OiAncG9pbnQnLFxuICBMaW5lU3RyaW5nOiAnbGluZScsXG4gIE11bHRpTGluZVN0cmluZzogJ2xpbmUnLFxuICBQb2x5Z29uOiAncG9seWdvbicsXG4gIE11bHRpUG9seWdvbjogJ3BvbHlnb24nXG59O1xuXG5leHBvcnQgdHlwZSBEZWNrR2xHZW9UeXBlcyA9IHtcbiAgcG9pbnQ6IGJvb2xlYW47XG4gIGxpbmU6IGJvb2xlYW47XG4gIHBvbHlnb246IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIFBhcnNlIGdlb2pzb24gZnJvbSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdlb2pzb25GZWF0dXJlVHlwZXMoYWxsRmVhdHVyZXM6IEdlb2pzb25EYXRhTWFwcyk6IERlY2tHbEdlb1R5cGVzIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBzb21lIHRlc3QgY2FzZXMgb25seSBoYXZlIDEgZ2VvdHlwZVxuICBjb25zdCBmZWF0dXJlVHlwZXM6IERlY2tHbEdlb1R5cGVzID0ge307XG4gIGZvciAobGV0IGYgPSAwOyBmIDwgYWxsRmVhdHVyZXMubGVuZ3RoOyBmKyspIHtcbiAgICBjb25zdCBmZWF0dXJlID0gYWxsRmVhdHVyZXNbZl07XG4gICAgaWYgKGZlYXR1cmUgJiYgJ2dlb21ldHJ5JyBpbiBmZWF0dXJlKSB7XG4gICAgICBjb25zdCBnZW9UeXBlID0gZmVhdHVyZVRvRGVja0dsR2VvVHlwZVtmZWF0dXJlLmdlb21ldHJ5ICYmIGZlYXR1cmUuZ2VvbWV0cnkudHlwZV07XG4gICAgICBpZiAoZ2VvVHlwZSkge1xuICAgICAgICBmZWF0dXJlVHlwZXNbZ2VvVHlwZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmZWF0dXJlVHlwZXM7XG59XG5cbnR5cGUgQ29vcmRzVHlwZSA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXIgfCBudWxsXSAmIHtcbiAgZGF0dW1JbmRleDogbnVtYmVyO1xuICBkYXR1bTogbnVtYmVyW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBDb2x1bW5zQXNHZW9Kc29uKFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICBjb2x1bW5zOiBMYXllckNvbHVtbnMsXG4gIHNvcnRCeUNvbHVtbiA9ICd0aW1lc3RhbXAnXG4pOiBGZWF0dXJlW10ge1xuICBjb25zdCBncm91cGVkQnlJZDoge1trZXk6IHN0cmluZ106IENvb3Jkc1R5cGVbXX0gPSB7fTtcbiAgY29uc3Qgc29ydEJ5RmllbGRJZHggPSBjb2x1bW5zW3NvcnRCeUNvbHVtbl0uZmllbGRJZHg7XG4gIGNvbnN0IHNvcnRCeVJlcXVpcmVkID0gIWNvbHVtbnNbc29ydEJ5Q29sdW1uXS5vcHRpb25hbDtcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRhdGFDb250YWluZXIubnVtUm93cygpOyBpbmRleCsrKSB7XG4gICAgLy8gbm90ZTogY2FuIG1hdGVyaWFsaXplIHRoZSByb3dcbiAgICBjb25zdCBkYXR1bSA9IGRhdGFDb250YWluZXIucm93QXNBcnJheShpbmRleCk7XG4gICAgY29uc3QgaWQgPSBkYXR1bVtjb2x1bW5zLmlkLmZpZWxkSWR4XTtcbiAgICBjb25zdCBsYXQgPSBkYXR1bVtjb2x1bW5zLmxhdC5maWVsZElkeF07XG4gICAgY29uc3QgbG9uID0gZGF0dW1bY29sdW1ucy5sbmcuZmllbGRJZHhdO1xuICAgIGNvbnN0IGFsdGl0dWRlID0gY29sdW1ucy5hbHRpdHVkZSA/IGRhdHVtW2NvbHVtbnMuYWx0aXR1ZGUuZmllbGRJZHhdIDogMDtcbiAgICBjb25zdCBzb3J0QnkgPSBzb3J0QnlGaWVsZElkeCA+IC0xID8gZGF0dW1bc29ydEJ5RmllbGRJZHhdIDogbnVsbDtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgY29uc3QgY29vcmRzOiBDb29yZHNUeXBlID0gW2xvbiwgbGF0LCBhbHRpdHVkZSwgc29ydEJ5XTtcbiAgICAvLyBBZGRpbmcgcmVmZXJlbmNlcyB0byB0aGUgb3JpZ2luYWwgZGF0YSB0byB0aGUgY29vcmRpbmF0ZXMgYXJyYXlcbiAgICBjb29yZHMuZGF0dW1JbmRleCA9IGluZGV4O1xuICAgIGNvb3Jkcy5kYXR1bSA9IGRhdHVtO1xuICAgIGlmICghZ3JvdXBlZEJ5SWRbaWRdKSBncm91cGVkQnlJZFtpZF0gPSBbXTtcblxuICAgIGlmIChcbiAgICAgIE51bWJlci5pc0Zpbml0ZShsb24pICYmXG4gICAgICBOdW1iZXIuaXNGaW5pdGUobGF0KSAmJlxuICAgICAgKCFzb3J0QnlSZXF1aXJlZCB8fCAoc29ydEJ5UmVxdWlyZWQgJiYgc29ydEJ5KSlcbiAgICApIHtcbiAgICAgIC8vIG9ubHkgcHVzaCBwb2ludHMgaWYgbGF0LGxuZyxhbmQgc29ydGJ5IGV4aXN0XG4gICAgICBncm91cGVkQnlJZFtpZF0ucHVzaChjb29yZHMpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogRmVhdHVyZVtdID0gT2JqZWN0LmVudHJpZXMoZ3JvdXBlZEJ5SWQpLm1hcChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgKFtfLCBpdGVtc106IFtzdHJpbmcsIENvb3Jkc1R5cGVbXV0sIGluZGV4KSA9PiAoe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnIGFzIGNvbnN0LFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnIGFzIGNvbnN0LFxuICAgICAgICAvLyBTb3J0IGJ5IGNvbHVtbnMgaWYgaGFzIHNvcnRCeUZpZWxkXG4gICAgICAgIC8vIFRPRE86IGl0ZW1zIGFyZSBleHBlY3RlZCBpbiBQb3NpdGlvbltdIGZvcm1hdD9cbiAgICAgICAgY29vcmRpbmF0ZXM6IChzb3J0QnlGaWVsZElkeCA+IC0xXG4gICAgICAgICAgPyBpdGVtcy5zb3J0KChhLCBiKSA9PiBhc2NlbmRpbmcoYVszXSBhcyBhbnksIGJbM10gYXMgYW55KSlcbiAgICAgICAgICA6IGl0ZW1zKSBhcyBQb3NpdGlvbltdXG4gICAgICB9LFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBpbmRleCxcbiAgICAgICAgLy8gdmFsdWVzIGFyZSB1c2VkIGZvciB2YWx1ZUFjY2Vzc29yIGluIFRyaXBMYXllci5mb3JtYXRMYXllckRhdGEoKVxuICAgICAgICAvLyBOb3RlOiB0aGlzIGNhbiBjYXVzZSByb3cgbWF0ZXJpYWxpemF0aW9uIGluIGNhc2Ugb2Ygbm9uLXJvdyBiYXNlZCBjb250YWluZXJzXG4gICAgICAgIHZhbHVlczogaXRlbXMubWFwKGl0ZW0gPT4gZGF0YUNvbnRhaW5lci5yb3dBc0FycmF5KGl0ZW0uZGF0dW1JbmRleCkpXG4gICAgICB9XG4gICAgfSlcbiAgKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBGaW5kIGlkIC8gdHMgLyBsYXQgLyBsbmcgY29sdW1ucyBmcm9tIGEgdGFibGUgYW5kIGFzc2lnbiBpdCB0byBsYXllciBjb2x1bW5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RUYWJsZUNvbHVtbnMoXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlLFxuICBsYXllckNvbHVtbnM6IExheWVyQ29sdW1ucyxcbiAgc29ydEJ5ID0gJ3RpbWVzdGFtcCdcbikge1xuICBjb25zdCB7ZmllbGRzLCBmaWVsZFBhaXJzfSA9IGRhdGFzZXQ7XG4gIGlmICghZmllbGRQYWlycy5sZW5ndGggfHwgIWZpZWxkcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBmaW5kIHNvcnQgYnkgZmllbGRcbiAgY29uc3Qgc29ydEJ5RmllbGRJZHggPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi50eXBlID09PSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wKTtcbiAgLy8gZmluZCBpZCBjb2x1bW5cbiAgY29uc3QgaWRGaWVsZElkeCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWU/LnRvTG93ZXJDYXNlKCkubWF0Y2goL14oaWR8dXVpZCkkL2cpKTtcblxuICBpZiAoc29ydEJ5RmllbGRJZHggPiAtMSAmJiBpZEZpZWxkSWR4ID4gLTEpIHtcbiAgICBjb25zdCBwb2ludENvbHVtbnMgPSBhc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uKGZpZWxkUGFpcnNbMF0sIHRydWUpO1xuICAgIHJldHVybiB7XG4gICAgICBjb2x1bW5zOiB7XG4gICAgICAgIC4uLk9iamVjdC5rZXlzKGxheWVyQ29sdW1ucykucmVkdWNlKFxuICAgICAgICAgIChhY2N1LCBjb2wpID0+ICh7XG4gICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgW2NvbF06IHBvaW50Q29sdW1uc1tjb2xdID8/IGxheWVyQ29sdW1uc1tjb2xdXG4gICAgICAgICAgfSksXG4gICAgICAgICAge31cbiAgICAgICAgKSxcbiAgICAgICAgZ2VvanNvbjoge1xuICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgIGZpZWxkSWR4OiAtMVxuICAgICAgICAgIC8vIG9wdGlvbmFsOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGlkOiB7XG4gICAgICAgICAgdmFsdWU6IGZpZWxkc1tpZEZpZWxkSWR4XS5uYW1lLFxuICAgICAgICAgIGZpZWxkSWR4OiBpZEZpZWxkSWR4XG4gICAgICAgICAgLy8gb3B0aW9uYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFtzb3J0QnldOiB7XG4gICAgICAgICAgdmFsdWU6IGZpZWxkc1tzb3J0QnlGaWVsZElkeF0ubmFtZSxcbiAgICAgICAgICBmaWVsZElkeDogc29ydEJ5RmllbGRJZHhcbiAgICAgICAgICAvLyBvcHRpb25hbDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxhYmVsOiBmaWVsZFBhaXJzWzBdLmRlZmF1bHROYW1lXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlGaWx0ZXJzVG9UYWJsZUNvbHVtbnMoXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlLFxuICBkYXRhVG9GZWF0dXJlOiBHZW9qc29uRGF0YU1hcHNcbik6IEdlb2pzb25EYXRhTWFwcyB7XG4gIGNvbnN0IHtkYXRhQ29udGFpbmVyLCBmaWx0ZXJlZEluZGV4fSA9IGRhdGFzZXQ7XG4gIGlmIChmaWx0ZXJlZEluZGV4Lmxlbmd0aCA9PT0gZGF0YUNvbnRhaW5lci5udW1Sb3dzKCkpIHtcbiAgICAvLyBPbmx5IGFwcGx5IHRoZSBmaWx0ZXJpbmcgd2hlbiBzb21ldGhpbmcgaXMgdG8gYmUgZmlsdGVyZWQgb3V0XG4gICAgcmV0dXJuIGRhdGFUb0ZlYXR1cmU7XG4gIH1cblxuICBjb25zdCBmaWx0ZXJlZEluZGV4U2V0ID0gbmV3IFNldChmaWx0ZXJlZEluZGV4KTtcbiAgY29uc3QgZmlsdGVyZWRGZWF0dXJlczogR2VvanNvbkRhdGFNYXBzID0gW107XG4gIGZvciAoY29uc3QgZmVhdHVyZSBvZiBkYXRhVG9GZWF0dXJlKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBnZW9tZXRyeS5jb29yZGluYXRlcyBub3QgYXZhaWxhYmxlIGZvciBHZW9tZXRyeUNvbGxlY3Rpb25cbiAgICBjb25zdCBmaWx0ZXJlZENvb3JkcyA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMuZmlsdGVyKGMgPT5cbiAgICAgIGZpbHRlcmVkSW5kZXhTZXQuaGFzKGMuZGF0dW1JbmRleClcbiAgICApO1xuICAgIGlmIChmaWx0ZXJlZENvb3Jkcy5sZW5ndGggPiAwICYmIGZlYXR1cmUpIHtcbiAgICAgIGZpbHRlcmVkRmVhdHVyZXMucHVzaCh7XG4gICAgICAgIC4uLmZlYXR1cmUsXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBCaW5hcnlGZWF0dXJlQ29sbGVjdGlvblxuICAgICAgICAgIC4uLmZlYXR1cmUuZ2VvbWV0cnksXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IGZpbHRlcmVkQ29vcmRzXG4gICAgICAgIH0sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEJpbmFyeUZlYXR1cmVDb2xsZWN0aW9uXG4gICAgICAgICAgLi4uZmVhdHVyZS5wcm9wZXJ0aWVzLFxuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgQmluYXJ5RmVhdHVyZUNvbGxlY3Rpb25cbiAgICAgICAgICB2YWx1ZXM6IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubWFwKGMgPT4gZGF0YUNvbnRhaW5lci5yb3dBc0FycmF5KGMuZGF0dW1JbmRleCkpXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmlsdGVyZWRGZWF0dXJlcztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE9BQUEs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
|
|
@@ -4,6 +4,7 @@ import { LayerBaseConfigPartial, LayerWeightConfig, VisualChannels } from '../ba
|
|
|
4
4
|
import { ColorRange, VisConfigColorRange, VisConfigNumber, Merge, LayerColumn } from '@kepler.gl/types';
|
|
5
5
|
import { DataContainerInterface } from '@kepler.gl/utils';
|
|
6
6
|
import { KeplerTable } from '@kepler.gl/table';
|
|
7
|
+
import { FindDefaultLayerPropsReturnValue } from '../layer-utils';
|
|
7
8
|
export declare type HeatmapLayerVisConfigSettings = {
|
|
8
9
|
opacity: VisConfigNumber;
|
|
9
10
|
colorRange: VisConfigColorRange;
|
|
@@ -52,6 +53,7 @@ declare class HeatmapLayer extends MapboxGLLayer {
|
|
|
52
53
|
requiredColumns: string[];
|
|
53
54
|
}[];
|
|
54
55
|
hasAllColumns(): boolean;
|
|
56
|
+
static findDefaultLayerProps(dataset: KeplerTable): FindDefaultLayerPropsReturnValue;
|
|
55
57
|
get visualChannels(): VisualChannels;
|
|
56
58
|
get layerIcon(): typeof HeatmapLayerIcon;
|
|
57
59
|
getVisualChannelDescription(channel: any): {
|