kepler.gl 3.1.6 → 3.1.7

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.
Files changed (157) hide show
  1. package/dist/src/actions/src/action-types.d.ts +2 -2
  2. package/dist/src/actions/src/action-wrapper.d.ts +2 -2
  3. package/dist/src/actions/src/actions.d.ts +3 -3
  4. package/dist/src/actions/src/map-state-actions.d.ts +4 -4
  5. package/dist/src/actions/src/vis-state-actions.d.ts +2 -2
  6. package/dist/src/ai-assistant/src/tools/kepler-tools/index.d.ts +1 -1
  7. package/dist/src/ai-assistant/src/tools/tools.d.ts +1 -1
  8. package/dist/src/components/src/kepler-gl.d.ts +1 -1
  9. package/dist/src/components/src/side-panel/layer-panel/layer-configurator.d.ts +4 -4
  10. package/dist/src/constants/src/default-settings.d.ts +8 -6
  11. package/dist/src/duckdb/src/table/duckdb-table.d.ts +1 -1
  12. package/dist/src/effects/src/effect.d.ts +1 -0
  13. package/dist/src/reducers/src/index.d.ts +1 -0
  14. package/dist/src/reducers/src/layer-utils.d.ts +2 -0
  15. package/dist/src/reducers/src/map-style-updaters.d.ts +1 -0
  16. package/dist/src/reducers/src/vis-state.d.ts +4 -4
  17. package/dist/src/styles/src/base.d.ts +4 -0
  18. package/dist/src/table/src/kepler-table.d.ts +2 -2
  19. package/dist/src/utils/src/application-config.d.ts +1 -0
  20. package/package.json +2 -2
  21. package/src/actions/dist/action-types.d.ts +2 -2
  22. package/src/actions/dist/action-types.js +3 -3
  23. package/src/actions/dist/action-wrapper.d.ts +2 -2
  24. package/src/actions/dist/action-wrapper.js +3 -3
  25. package/src/actions/dist/actions.d.ts +3 -3
  26. package/src/actions/dist/actions.js +4 -4
  27. package/src/actions/dist/map-state-actions.d.ts +4 -4
  28. package/src/actions/dist/map-state-actions.js +5 -5
  29. package/src/actions/dist/vis-state-actions.d.ts +2 -2
  30. package/src/actions/dist/vis-state-actions.js +3 -3
  31. package/src/actions/package.json +8 -8
  32. package/src/actions/src/action-types.ts +2 -2
  33. package/src/actions/src/action-wrapper.ts +2 -2
  34. package/src/actions/src/actions.ts +3 -3
  35. package/src/actions/src/map-state-actions.ts +4 -4
  36. package/src/actions/src/vis-state-actions.ts +2 -2
  37. package/src/ai-assistant/dist/tools/kepler-tools/index.d.ts +1 -1
  38. package/src/ai-assistant/dist/tools/tools.d.ts +1 -1
  39. package/src/ai-assistant/package.json +7 -7
  40. package/src/cloud-providers/package.json +2 -2
  41. package/src/common-utils/package.json +3 -3
  42. package/src/components/dist/effects/effect-type-list-item.js +4 -8
  43. package/src/components/dist/kepler-gl.d.ts +1 -1
  44. package/src/components/dist/loading-indicator.js +7 -3
  45. package/src/components/dist/map-container.js +18 -3
  46. package/src/components/dist/modals/add-map-style-modal.js +2 -2
  47. package/src/components/dist/modals/export-image-modal.js +1 -2
  48. package/src/components/dist/plot-container.js +15 -1
  49. package/src/components/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -4
  50. package/src/components/dist/side-panel/layer-panel/layer-list.js +2 -4
  51. package/src/components/dist/side-panel/layer-panel/layer-type-list-item.js +8 -5
  52. package/src/components/dist/side-panel/layer-panel/raster-tile-colormap-list-item.js +2 -3
  53. package/src/components/dist/side-panel/layer-panel/vis-config-slider.js +10 -5
  54. package/src/components/dist/side-panel/map-style-panel/map-style-selector.js +3 -2
  55. package/src/components/package.json +15 -15
  56. package/src/components/src/effects/effect-type-list-item.tsx +2 -5
  57. package/src/components/src/loading-indicator.tsx +13 -3
  58. package/src/components/src/map-container.tsx +20 -6
  59. package/src/components/src/modals/add-map-style-modal.tsx +1 -1
  60. package/src/components/src/modals/export-image-modal.tsx +0 -1
  61. package/src/components/src/plot-container.tsx +19 -2
  62. package/src/components/src/side-panel/layer-panel/layer-list.tsx +0 -1
  63. package/src/components/src/side-panel/layer-panel/layer-type-list-item.tsx +11 -4
  64. package/src/components/src/side-panel/layer-panel/raster-tile-colormap-list-item.tsx +2 -3
  65. package/src/components/src/side-panel/layer-panel/vis-config-slider.tsx +12 -5
  66. package/src/components/src/side-panel/map-style-panel/map-style-selector.tsx +7 -1
  67. package/src/constants/dist/default-settings.d.ts +8 -6
  68. package/src/constants/dist/default-settings.js +9 -13
  69. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/14/ab/1fbe8d595eaf6f179613022ba62b99ba41fe2f6b8061293406468a705d53002cfb0ba12e6833df2aa9c4c55b7061e239395129a1515da317d57e518b1dc7 +1 -0
  70. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/37/b0/3745c4bb4b6114fa3433e4871042f7db966b48b29cde3301afe38370cecfe41f5aac801adc6fa93f6cd05411c521215e58542853414a81c0904ba4291e09 +1 -0
  71. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/68/bb/2c3d5cb60ef7b9e6d889b7d9b75b05761c58ee43b954df1a262102d3a106 +2 -0
  72. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/93/38/f167b214acd87fc28cf533f463b7423ce65340878809b494323fae359cb4 +2 -0
  73. package/src/constants/package.json +2 -2
  74. package/src/constants/src/default-settings.ts +5 -10
  75. package/src/constants/umd/keplergl.min.js +1 -1
  76. package/src/deckgl-arrow-layers/package.json +2 -2
  77. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.d.ts +1 -1
  78. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +2 -2
  79. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer.js +3 -9
  80. package/src/deckgl-layers/package.json +4 -4
  81. package/src/deckgl-layers/src/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.ts +12 -33
  82. package/src/deckgl-layers/src/raster/raster-mesh-layer/raster-mesh-layer.ts +2 -5
  83. package/src/duckdb/dist/table/duckdb-table.d.ts +1 -1
  84. package/src/duckdb/package.json +6 -6
  85. package/src/effects/dist/effect.d.ts +1 -0
  86. package/src/effects/dist/effect.js +7 -1
  87. package/src/effects/package.json +5 -5
  88. package/src/effects/src/effect.ts +5 -0
  89. package/src/layers/dist/base-layer.d.ts +1 -1
  90. package/src/layers/dist/geojson-layer/geojson-layer.d.ts +1 -1
  91. package/src/layers/dist/geojson-layer/geojson-utils.d.ts +3 -3
  92. package/src/layers/dist/icon-layer/icon-layer.d.ts +0 -1
  93. package/src/layers/dist/icon-layer/icon-layer.js +3 -4
  94. package/src/layers/dist/index.d.ts +2 -1
  95. package/src/layers/dist/index.js +16 -8
  96. package/src/layers/dist/raster-tile/image.d.ts +6 -0
  97. package/src/layers/dist/raster-tile/image.js +37 -20
  98. package/src/layers/dist/raster-tile/raster-tile-layer.d.ts +2 -8
  99. package/src/layers/dist/raster-tile/raster-tile-layer.js +18 -33
  100. package/src/layers/dist/raster-tile/types.d.ts +1 -0
  101. package/src/layers/dist/raster-tile/types.js +1 -1
  102. package/src/layers/dist/raster-tile/url.d.ts +3 -0
  103. package/src/layers/dist/raster-tile/url.js +7 -1
  104. package/src/layers/dist/trip-layer/trip-layer.d.ts +1 -1
  105. package/src/layers/package.json +9 -9
  106. package/src/layers/src/icon-layer/icon-layer.ts +3 -5
  107. package/src/layers/src/index.ts +2 -1
  108. package/src/layers/src/raster-tile/image.ts +16 -4
  109. package/src/layers/src/raster-tile/raster-tile-layer.ts +17 -28
  110. package/src/layers/src/raster-tile/types.ts +1 -0
  111. package/src/layers/src/raster-tile/url.ts +6 -0
  112. package/src/localization/package.json +1 -1
  113. package/src/processors/package.json +7 -7
  114. package/src/reducers/dist/index.d.ts +1 -0
  115. package/src/reducers/dist/index.js +8 -1
  116. package/src/reducers/dist/layer-utils.d.ts +2 -0
  117. package/src/reducers/dist/layer-utils.js +23 -4
  118. package/src/reducers/dist/map-style-updaters.d.ts +1 -0
  119. package/src/reducers/dist/map-style-updaters.js +10 -5
  120. package/src/reducers/dist/vis-state.d.ts +4 -4
  121. package/src/reducers/package.json +16 -16
  122. package/src/reducers/src/index.ts +1 -0
  123. package/src/reducers/src/layer-utils.ts +22 -4
  124. package/src/reducers/src/map-style-updaters.ts +16 -8
  125. package/src/schemas/package.json +7 -7
  126. package/src/styles/dist/base.d.ts +4 -0
  127. package/src/styles/dist/base.js +10 -5
  128. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/4b/ee/673360e4b8362fe8483486f8fa132c6b9d9abf45a240d54f76bc3d60d2b01e530c4efd92baad3479d54e7fa48474cb9d52e633ceb9dfec546588b6981cfc +1 -0
  129. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a5/1f/7149cdcef3cb8e64025c197e3a6a47482bf1027c0991969349c7f1ec68e76f091966010bb72674850b48ed8361c1953b1b08da7dd66143642b32ce467635 +1 -0
  130. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/b7/6d/49546dbc3e903a5e6771b0ead707e4f4605454ac2bc718d0f0bf801b96a7 +2 -0
  131. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c3/91/45735456a88c6ecc20a341b94971da9d02562b936da95a407f157b2f0ece +2 -0
  132. package/src/styles/package.json +2 -2
  133. package/src/styles/src/base.ts +6 -0
  134. package/src/styles/umd/keplergl.min.js +1 -1
  135. package/src/table/dist/{src/table/src/kepler-table.d.ts → kepler-table.d.ts} +2 -2
  136. package/src/table/dist/kepler-table.js +6 -4
  137. package/src/table/dist/tileset/vector-tile-utils.js +2 -2
  138. package/src/table/package.json +5 -5
  139. package/src/table/src/kepler-table.ts +4 -3
  140. package/src/table/src/tileset/vector-tile-utils.ts +1 -1
  141. package/src/table/tsconfig.production.json +2 -1
  142. package/src/tasks/package.json +2 -2
  143. package/src/types/effects.d.ts +1 -0
  144. package/src/types/package.json +1 -1
  145. package/src/utils/dist/application-config.d.ts +1 -0
  146. package/src/utils/dist/application-config.js +4 -4
  147. package/src/utils/package.json +4 -4
  148. package/src/utils/src/application-config.ts +6 -0
  149. package/umd/keplergl.min.js +1069 -1094
  150. package/src/table/dist/src/table/src/tileset/vector-tile-utils.spec.d.ts +0 -1
  151. package/src/table/dist/test/fixtures/tile-metadata.d.ts +0 -65
  152. /package/src/table/dist/{src/table/src/dataset-utils.d.ts → dataset-utils.d.ts} +0 -0
  153. /package/src/table/dist/{src/table/src/gpu-filter-utils.d.ts → gpu-filter-utils.d.ts} +0 -0
  154. /package/src/table/dist/{src/table/src/index.d.ts → index.d.ts} +0 -0
  155. /package/src/table/dist/{src/table/src/tileset → tileset}/raster-tile-utils.d.ts +0 -0
  156. /package/src/table/dist/{src/table/src/tileset → tileset}/tileset-utils.d.ts +0 -0
  157. /package/src/table/dist/{src/table/src/tileset → tileset}/vector-tile-utils.d.ts +0 -0
@@ -4,9 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports["default"] = exports.LOAD_ELEVATION_AFTER_ZOOM = void 0;
8
- exports.getMercatorModelMatrix = getMercatorModelMatrix;
9
- exports.isTilesBeingLoaded = void 0;
7
+ exports.getNumRasterTilesBeingLoaded = exports["default"] = exports.LOAD_ELEVATION_AFTER_ZOOM = void 0;
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -22,7 +20,6 @@ var _typed = require("@deck.gl/core/typed");
22
20
  var _typed2 = require("@deck.gl/geo-layers/typed");
23
21
  var _pmtiles = require("@loaders.gl/pmtiles");
24
22
  var _memoize = _interopRequireDefault(require("lodash/memoize"));
25
- var _math = require("math.gl");
26
23
  var _typed3 = require("@deck.gl/layers/typed");
27
24
  var _constants = require("@kepler.gl/constants");
28
25
  var _deckglLayers = require("@kepler.gl/deckgl-layers");
@@ -49,9 +46,9 @@ var devicePixelRatio = Math.min(2, typeof window !== 'undefined' && window.devic
49
46
  // Global counter that represents the number of tiles currently being loaded across all the raster tile layers
50
47
  var tilesBeingLoaded = 0;
51
48
 
52
- // This is a temp solution, as we don't have proper logic to track loading of asycn layers atm in Kepler.gl
53
- var isTilesBeingLoaded = exports.isTilesBeingLoaded = function isTilesBeingLoaded() {
54
- return tilesBeingLoaded > 0;
49
+ // This is a temp solution to track loading
50
+ var getNumRasterTilesBeingLoaded = exports.getNumRasterTilesBeingLoaded = function getNumRasterTilesBeingLoaded() {
51
+ return tilesBeingLoaded;
55
52
  };
56
53
  var LOAD_ELEVATION_AFTER_ZOOM = exports.LOAD_ELEVATION_AFTER_ZOOM = 8.9;
57
54
  var getShouldLoadTerrain = function getShouldLoadTerrain(stac, mapState, visConfig) {
@@ -365,7 +362,8 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
365
362
  var _data$dataset2,
366
363
  _this2 = this;
367
364
  var data = opts.data,
368
- mapState = opts.mapState;
365
+ mapState = opts.mapState,
366
+ experimentalContext = opts.experimentalContext;
369
367
  var stac = data === null || data === void 0 || (_data$dataset2 = data.dataset) === null || _data$dataset2 === void 0 ? void 0 : _data$dataset2.metadata;
370
368
 
371
369
  // If a tabular dataset is loaded, and then the layer type is switched from Point to Raster Tile
@@ -378,6 +376,7 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
378
376
  id = _this$getDefaultDeckL.id,
379
377
  opacity = _this$getDefaultDeckL.opacity,
380
378
  visible = _this$getDefaultDeckL.visible;
379
+ var hasShadowEffect = experimentalContext === null || experimentalContext === void 0 ? void 0 : experimentalContext.hasShadowEffect;
381
380
  var preset = visConfig.preset,
382
381
  colormapId = visConfig.colormapId,
383
382
  linearRescaling = visConfig.linearRescaling,
@@ -478,7 +477,8 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
478
477
  dataType: dataType,
479
478
  minCategoricalBandValue: minCategoricalBandValue,
480
479
  maxCategoricalBandValue: maxCategoricalBandValue,
481
- hasCategoricalColorMap: Boolean(categoricalColorMap)
480
+ hasCategoricalColorMap: Boolean(categoricalColorMap),
481
+ hasShadowEffect: hasShadowEffect
482
482
  }));
483
483
  return [tileLayer];
484
484
  }
@@ -561,6 +561,7 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
561
561
  }
562
562
  _context.next = 11;
563
563
  return (0, _image.loadTerrain)({
564
+ boundsForGeometry: [west, north, east, south],
564
565
  index: props.index,
565
566
  signal: props.signal,
566
567
  rasterTileServerUrls: props.stac.rasterTileServerUrls || []
@@ -587,6 +588,7 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
587
588
  minValue: props.minCategoricalBandValue,
588
589
  maxValue: props.maxCategoricalBandValue
589
590
  }), shouldLoadTerrain && LOAD_ELEVATION_AFTER_ZOOM < zoom ? (0, _image.loadTerrain)({
591
+ boundsForGeometry: [west, north, east, south],
590
592
  index: props.index,
591
593
  signal: props.signal,
592
594
  rasterTileServerUrls: props.stac.rasterTileServerUrls || []
@@ -659,6 +661,7 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
659
661
  }
660
662
  _context2.next = 13;
661
663
  return (0, _image.loadTerrain)({
664
+ boundsForGeometry: [west, north, east, south],
662
665
  index: props.index,
663
666
  signal: props.signal,
664
667
  rasterTileServerUrls: metadata.rasterTileServerUrls
@@ -765,8 +768,9 @@ function renderSubLayersStac(props) {
765
768
  }),
766
769
  modules = _getModules.modules,
767
770
  moduleProps = _getModules.moduleProps;
771
+ var idSuffix = props.hasShadowEffect ? 'shadow' : '';
768
772
  return terrain ? new _deckglLayers.RasterMeshLayer(props, {
769
- id: "raster-3d-layer-".concat(props.id),
773
+ id: "raster-3d-layer-".concat(props.id, "-").concat(idSuffix),
770
774
  // Dummy data
771
775
  data: [1],
772
776
  mesh: terrain,
@@ -774,16 +778,12 @@ function renderSubLayersStac(props) {
774
778
  modules: modules,
775
779
  moduleProps: moduleProps,
776
780
  getPolygonOffset: null,
777
- coordinateSystem: _typed.COORDINATE_SYSTEM.CARTESIAN,
778
- modelMatrix: getMercatorModelMatrix(tile.index),
779
- getPosition: function getPosition() {
780
- return [0, 0, 0];
781
- },
781
+ coordinateSystem: _typed.COORDINATE_SYSTEM.LNGLAT,
782
782
  // Color to use if surfaceImage is unavailable
783
783
  getColor: [255, 255, 255]
784
784
  // material: false
785
785
  }) : new _deckglLayers.RasterLayer(props, {
786
- id: "raster-2d-layer-".concat(props.id),
786
+ id: "raster-2d-layer-".concat(props.id, "-").concat(idSuffix),
787
787
  images: images,
788
788
  modules: modules,
789
789
  moduleProps: moduleProps,
@@ -791,17 +791,6 @@ function renderSubLayersStac(props) {
791
791
  _imageCoordinateSystem: _typed.COORDINATE_SYSTEM.CARTESIAN
792
792
  });
793
793
  }
794
-
795
- // From https://github.com/uber/deck.gl/blob/b1901b11cbdcb82b317e1579ff236d1ca1d03ea7/modules/geo-layers/src/mvt-tile-layer/mvt-tile-layer.js#L41-L52
796
- function getMercatorModelMatrix(tile) {
797
- var WORLD_SIZE = 512;
798
- var worldScale = Math.pow(2, tile.z);
799
- var xScale = WORLD_SIZE / worldScale;
800
- var yScale = -xScale;
801
- var xOffset = WORLD_SIZE * tile.x / worldScale;
802
- var yOffset = WORLD_SIZE * (1 - tile.y / worldScale);
803
- return new _math.Matrix4().translate([xOffset, yOffset, 0]).scale([xScale, yScale, 1]);
804
- }
805
794
  function renderSubLayersPMTiles(props) {
806
795
  var _props$data;
807
796
  var tileSource = props.tileSource,
@@ -875,11 +864,7 @@ function getRasterLayerPMTiles(props) {
875
864
  modules: modules,
876
865
  moduleProps: moduleProps,
877
866
  getPolygonOffset: null,
878
- coordinateSystem: _typed.COORDINATE_SYSTEM.CARTESIAN,
879
- modelMatrix: getMercatorModelMatrix(tile.index),
880
- getPosition: function getPosition() {
881
- return [0, 0, 0];
882
- },
867
+ coordinateSystem: _typed.COORDINATE_SYSTEM.LNGLAT,
883
868
  // Color to use if surfaceImage is unavailable
884
869
  getColor: [255, 255, 255]
885
870
  // material: false
@@ -893,4 +878,4 @@ function getRasterLayerPMTiles(props) {
893
878
  _imageCoordinateSystem: _typed.COORDINATE_SYSTEM.CARTESIAN
894
879
  });
895
880
  }
896
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3R5cGVkMiIsIl9wbXRpbGVzIiwiX21lbW9pemUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX21hdGgiLCJfdHlwZWQzIiwiX2NvbnN0YW50cyIsIl9kZWNrZ2xMYXllcnMiLCJfY29tbW9uVXRpbHMiLCJfdXRpbHMiLCJfY29uZmlnIiwiX2dwdVV0aWxzIiwiX2ltYWdlIiwiX3Jhc3RlclRpbGVJY29uIiwiX3Jhc3RlclRpbGVVdGlscyIsIl9iYXNlTGF5ZXIiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aW5kb3ciLCJ0aWxlc0JlaW5nTG9hZGVkIiwiaXNUaWxlc0JlaW5nTG9hZGVkIiwiZXhwb3J0cyIsIkxPQURfRUxFVkFUSU9OX0FGVEVSX1pPT00iLCJnZXRTaG91bGRMb2FkVGVycmFpbiIsInN0YWMiLCJtYXBTdGF0ZSIsInZpc0NvbmZpZyIsIl9zdGFjJHJhc3RlclRpbGVTZXJ2ZSIsInJhc3RlclRpbGVTZXJ2ZXJVcmxzIiwiZW5hYmxlVGVycmFpbiIsImRyYWdSb3RhdGUiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsInJhc3RlclNlcnZlclN1cHBvcnRzRWxldmF0aW9uIiwiUmFzdGVyVGlsZUxheWVyIiwiX0tlcGxlckxheWVyIiwicHJvcHMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJJbmZpbml0eSIsInJlZ2lzdGVyVmlzQ29uZmlnIiwicmFzdGVyVmlzQ29uZmlncyIsInJlc29sdmVyIiwicHJlc2V0IiwicHJlc2V0T3B0aW9ucyIsIl9wcmVzZXRPcHRpb25zJHNpbmdsZSIsIl9wcmVzZXRPcHRpb25zJHNpbmdsZTIiLCJjb25jYXQiLCJpZCIsImNvbGxlY3Rpb24iLCJzaW5nbGVCYW5kIiwiYXNzZXRJZCIsImJhbmRJbmRleCIsImdldERhdGFTb3VyY2VQYXJhbXMiLCJtZW1vaXplIiwibWV0YSIsInpSYW5nZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiZ2V0IiwiTEFZRVJfVFlQRVMiLCJyYXN0ZXJUaWxlIiwiUmFzdGVySWNvbiIsIkRhdGFzZXRUeXBlIiwiUkFTVEVSX1RJTEUiLCJjYXRlZ29yaWNhbENvbG9yTGVnZW5kcyIsImNvbmZpZyIsImNvbG9yUmFuZ2UiLCJjb2xvckxlZ2VuZHMiLCJjb2xvciIsImdldERlZmF1bHRMYXllckNvbmZpZyIsImNvbG9yRmllbGQiLCJhbmFseXplclR5cGUiLCJmb3JtYXQiLCJ0eXBlIiwiZmllbGRJZHgiLCJ2YWx1ZUFjY2Vzc29yIiwiZGlzcGxheU5hbWUiLCJnZXRIb3ZlckRhdGEiLCJzaG91bGRSZW5kZXJMYXllciIsImlzVmlzaWJsZSIsImZvcm1hdExheWVyRGF0YSIsImRhdGFzZXRzIiwib2xkTGF5ZXJEYXRhIiwiX2RhdGFzZXQkbWV0YWRhdGEiLCJkYXRhSWQiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJkYXRhc2V0IiwiZGF0YVVwZGF0ZVRyaWdnZXJzIiwiZ2V0RGF0YVVwZGF0ZVRyaWdnZXJzIiwidHJpZ2dlckNoYW5nZWQiLCJnZXRDaGFuZ2VkVHJpZ2dlcnMiLCJnZXRNZXRhIiwidXBkYXRlTGF5ZXJNZXRhIiwidGlsZVNvdXJjZSIsIm1ldGFkYXRhIiwicG10aWxlc1R5cGUiLCJQTVRpbGVzVHlwZSIsIlJBU1RFUiIsIm1ldGFkYXRhVXJsIiwiX3JlZiIsIm9sZERhdGFzZXQiLCJvbGRUaWxlU291cmNlIiwiZGF0YSIsIlBNVGlsZXNTb3VyY2UiLCJjcmVhdGVEYXRhU291cmNlIiwidXBkYXRlTWV0YSIsImJvdW5kcyIsImdldFNUQUNCb3VuZHMiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJ1cGRhdGVMYXllclZpc0NvbmZpZyIsInVzZVNUQUNTZWFyY2hpbmciLCJhdmFpbGFibGVCYW5kcyIsImdldEVPQmFuZHMiLCJzaW5nbGVCYW5kTmFtZSIsImF2YWlsYWJsZVByZXNldHMiLCJmaWx0ZXJBdmFpbGFibGVQcmVzZXRzIiwiUFJFU0VUX09QVElPTlMiLCJpbmNsdWRlcyIsInZpc0NvbmZpZ1NldHRpbmdzIiwiZGVmYXVsdFZhbHVlIiwiY29sb3JEZWZhdWx0cyIsIkRBVEFfU09VUkNFX0NPTE9SX0RFRkFVTFRTIiwib25WaWV3cG9ydExvYWQiLCJ0aWxlcyIsInVwZGF0ZU1pbk1heFBpeGVsVmFsdWUiLCJuZXdaUmFuZ2UiLCJjb21wdXRlWlJhbmdlIiwiX2dldE1pbk1heEZyb21UaWxlMkRIIiwiZ2V0TWluTWF4RnJvbVRpbGUyREhlYWRlcnMiLCJfZ2V0TWluTWF4RnJvbVRpbGUyREgyIiwiX3NsaWNlZFRvQXJyYXkyIiwibWF4IiwibWluVmlld3BvcnRQaXhlbFZhbHVlIiwibWF4Vmlld3BvcnRQaXhlbFZhbHVlIiwiZ2V0TWluTWF4UGl4ZWxWYWx1ZXMiLCJpbWFnZXMiLCJtaW5QaXhlbFZhbHVlIiwibWF4UGl4ZWxWYWx1ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwiaW1hZ2UiLCJfZ2V0SW1hZ2VNaW5NYXgiLCJnZXRJbWFnZU1pbk1heCIsIl9nZXRJbWFnZU1pbk1heDIiLCJlcnIiLCJyZW5kZXJMYXllciIsIm9wdHMiLCJfZGF0YSRkYXRhc2V0IiwicmVuZGVyUE1UaWxlc0xheWVyIiwicmVuZGVyU3RhY0xheWVyIiwiX2RhdGEkZGF0YXNldDIiLCJfdGhpczIiLCJzdGFjX3ZlcnNpb24iLCJfdGhpcyRnZXREZWZhdWx0RGVja0wiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJvcGFjaXR5IiwidmlzaWJsZSIsImNvbG9ybWFwSWQiLCJsaW5lYXJSZXNjYWxpbmciLCJsaW5lYXJSZXNjYWxpbmdGYWN0b3IiLCJub25MaW5lYXJSZXNjYWxpbmciLCJnYW1tYUNvbnRyYXN0RmFjdG9yIiwic2lnbW9pZGFsQ29udHJhc3RGYWN0b3IiLCJzaWdtb2lkYWxCaWFzRmFjdG9yIiwic2F0dXJhdGlvblZhbHVlIiwiZmlsdGVyRW5hYmxlZCIsImZpbHRlclJhbmdlIiwic3RhY1NlYXJjaFByb3ZpZGVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsIl9zdGFjUXVlcnkiLCJjYXRlZ29yaWNhbENvbG9yTWFwIiwiY29sb3JNYXAiLCJkeW5hbWljQ29sb3IiLCJzaG91bGRMb2FkVGVycmFpbiIsIkRhdGUiLCJiYW5kQ29tYmluYXRpb24iLCJnZXRTaW5nbGVCYW5kUHJlc2V0T3B0aW9ucyIsImRhdGFTb3VyY2VQYXJhbXMiLCJtaW5ab29tIiwibWF4Wm9vbSIsImdsb2JhbEJvdW5kcyIsImxvYWRBc3NldElkcyIsImxvYWRCYW5kSW5kZXhlcyIsInJlbmRlckJhbmRJbmRleGVzIiwiZGF0YVR5cGUiLCJkc01pblBpeGVsVmFsdWUiLCJkc01heFBpeGVsVmFsdWUiLCJtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSIsIm1heENhdGVnb3JpY2FsQmFuZFZhbHVlIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRUaWxlRGF0YUN1c3RvbVByb3BzIiwidGlsZUxheWVyIiwiVGlsZUxheWVyIiwidGlsZVNpemUiLCJnZXRUaWxlRGF0YSIsImFyZ3MiLCJiaW5kIiwicmVuZGVyU3ViTGF5ZXJzIiwicmVuZGVyU3ViTGF5ZXJzU3RhYyIsIm1heFJlcXVlc3RzIiwiZ2V0TWF4UmVxdWVzdHMiLCJ1cGRhdGVUcmlnZ2VycyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZWZpbmVtZW50U3RyYXRlZ3kiLCJoYXNDYXRlZ29yaWNhbENvbG9yTWFwIiwiX2RhdGEkZGF0YXNldDMiLCJfdGhpczMiLCJfdGhpcyRnZXREZWZhdWx0RGVja0wyIiwic2hvd1RpbGVCb3JkZXJzIiwiZ2V0VGlsZURhdGFQTVRpbGVzIiwicGlja2FibGUiLCJhdXRvSGlnaGxpZ2h0Iiwiem9vbU9mZnNldCIsInJlbmRlclN1YkxheWVyc1BNVGlsZXMiLCJfZ2V0VGlsZURhdGEiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9wcm9wcyRiYm94Iiwid2VzdCIsInNvdXRoIiwiZWFzdCIsIm5vcnRoIiwiem9vbSIsImFzc2V0UmVxdWVzdHMiLCJ0ZXJyYWluIiwiX3lpZWxkJFByb21pc2UkYWxsIiwiX3lpZWxkJFByb21pc2UkYWxsMiIsIl90ZXJyYWluIiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWIiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWMiIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsImJib3giLCJpbmRleCIsInoiLCJiYm94SW50ZXJzZWN0cyIsImFicnVwdCIsImdldFNUQUNJbWFnZVJlcXVlc3RzIiwic2VudCIsInQwIiwibG9hZFRlcnJhaW4iLCJzaWduYWwiLCJQcm9taXNlIiwiYWxsIiwibG9hZEltYWdlcyIsIm1pblZhbHVlIiwibWF4VmFsdWUiLCJpbWFnZUJhbmRzIiwidDEiLCJzdG9wIiwiX3giLCJfZ2V0VGlsZURhdGFQTVRpbGVzIiwiX2NhbGxlZTIiLCJfcHJvcHMkYmJveDIiLCJfeWllbGQkUHJvbWlzZSRhbGwzIiwiX3lpZWxkJFByb21pc2UkYWxsNCIsIl90aGlzJGdldE1pbk1heFBpeGVsVjMiLCJfdGhpcyRnZXRNaW5NYXhQaXhlbFY0IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiX3gyIiwiX3gzIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwibmV3TGF5ZXJQcm9wIiwibGFiZWwiLCJLZXBsZXJMYXllciIsInRpbGUiLCJnbG9iYWxNaW5QaXhlbFZhbHVlIiwiZ2xvYmFsTWF4UGl4ZWxWYWx1ZSIsInRpbGVNaW5QaXhlbFZhbHVlIiwidGlsZU1heFBpeGVsVmFsdWUiLCJfZ2V0TW9kdWxlcyIsImdldE1vZHVsZXMiLCJtb2R1bGVzIiwibW9kdWxlUHJvcHMiLCJSYXN0ZXJNZXNoTGF5ZXIiLCJtZXNoIiwiZ2V0UG9seWdvbk9mZnNldCIsImNvb3JkaW5hdGVTeXN0ZW0iLCJDT09SRElOQVRFX1NZU1RFTSIsIkNBUlRFU0lBTiIsIm1vZGVsTWF0cml4IiwiZ2V0TWVyY2F0b3JNb2RlbE1hdHJpeCIsImdldFBvc2l0aW9uIiwiZ2V0Q29sb3IiLCJSYXN0ZXJMYXllciIsIl9pbWFnZUNvb3JkaW5hdGVTeXN0ZW0iLCJXT1JMRF9TSVpFIiwid29ybGRTY2FsZSIsInBvdyIsInhTY2FsZSIsInlTY2FsZSIsInhPZmZzZXQiLCJ4IiwieU9mZnNldCIsInkiLCJNYXRyaXg0IiwidHJhbnNsYXRlIiwic2NhbGUiLCJfcHJvcHMkZGF0YSIsIl9wcm9wcyR0aWxlIiwiX3Byb3BzJHRpbGUkYmJveCIsImxheWVycyIsIm1pbWVUeXBlIiwiZ2V0UmFzdGVyTGF5ZXJQTVRpbGVzIiwiYm9yZGVyQ29sb3IiLCJQYXRoTGF5ZXIiLCJnZXRQYXRoIiwiZCIsIndpZHRoTWluUGl4ZWxzIiwiaW1hZ2VSZ2JhIiwiX2dldE1vZHVsZXMyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci10aWxlL3Jhc3Rlci10aWxlLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q09PUkRJTkFURV9TWVNURU0sIExheWVyIGFzIERlY2tMYXllcn0gZnJvbSAnQGRlY2suZ2wvY29yZS90eXBlZCc7XG5pbXBvcnQge1RpbGVMYXllciwgR2VvQm91bmRpbmdCb3h9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMvdHlwZWQnO1xuaW1wb3J0IHtQTVRpbGVzU291cmNlLCBQTVRpbGVzVGlsZVNvdXJjZX0gZnJvbSAnQGxvYWRlcnMuZ2wvcG10aWxlcyc7XG5pbXBvcnQge1RleHR1cmUyRFByb3BzfSBmcm9tICdAbHVtYS5nbC93ZWJnbCc7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdsb2Rhc2gvbWVtb2l6ZSc7XG5pbXBvcnQge01hdHJpeDR9IGZyb20gJ21hdGguZ2wnO1xuXG5pbXBvcnQge1BhdGhMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzL3R5cGVkJztcbmltcG9ydCB7RGF0YXNldFR5cGUsIFBNVGlsZXNUeXBlLCBMQVlFUl9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtSYXN0ZXJMYXllciwgUmFzdGVyTWVzaExheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuaW1wb3J0IHtcbiAgTGF5ZXJCYXNlQ29uZmlnLFxuICBMYXllckNvbG9yQ29uZmlnLFxuICBMYXllckhlaWdodENvbmZpZyxcbiAgVmlzdWFsQ2hhbm5lbCxcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnU2VsZWN0aW9uLFxuICBWaXNDb25maWdCb29sZWFuLFxuICBWaXNDb25maWdJbnB1dCxcbiAgVmlzQ29uZmlnUmFuZ2UsXG4gIFZpc0NvbmZpZ051bWJlclxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7RGF0YXNldHMsIEtlcGxlclRhYmxlIGFzIEtlcGxlckRhdGFzZXQsIFZlY3RvclRpbGVNZXRhZGF0YX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHtyYXN0ZXJWaXNDb25maWdzLCBQUkVTRVRfT1BUSU9OUywgREFUQV9TT1VSQ0VfQ09MT1JfREVGQVVMVFN9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7Z2V0TW9kdWxlc30gZnJvbSAnLi9ncHUtdXRpbHMnO1xuaW1wb3J0IHtnZXRTVEFDSW1hZ2VSZXF1ZXN0cywgbG9hZEltYWdlcywgbG9hZFRlcnJhaW59IGZyb20gJy4vaW1hZ2UnO1xuaW1wb3J0IFJhc3Rlckljb24gZnJvbSAnLi9yYXN0ZXItdGlsZS1pY29uJztcbmltcG9ydCB7XG4gIGdldERhdGFTb3VyY2VQYXJhbXMsXG4gIGdldE1heFJlcXVlc3RzLFxuICBiYm94SW50ZXJzZWN0cyxcbiAgY29tcHV0ZVpSYW5nZSxcbiAgZ2V0U1RBQ0JvdW5kcyxcbiAgZ2V0RU9CYW5kcyxcbiAgZmlsdGVyQXZhaWxhYmxlUHJlc2V0cyxcbiAgZ2V0U2luZ2xlQmFuZFByZXNldE9wdGlvbnMsXG4gIGdldEltYWdlTWluTWF4LFxuICBnZXRNaW5NYXhGcm9tVGlsZTJESGVhZGVyc1xufSBmcm9tICcuL3Jhc3Rlci10aWxlLXV0aWxzJztcbmltcG9ydCB7XG4gIEdldFRpbGVEYXRhQ3VzdG9tUHJvcHMsXG4gIEdldFRpbGVEYXRhRGVmYXVsdFByb3BzLFxuICBHZXRUaWxlRGF0YVByb3BzLFxuICBSZW5kZXJTdWJMYXllcnNQcm9wcyxcbiAgR2V0VGlsZURhdGFPdXRwdXQsXG4gIERhdGFTb3VyY2VQYXJhbXMsXG4gIEtlcGxlclJhc3RlckRhdGFzZXQsXG4gIFRpbGUyREhlYWRlcixcbiAgUHJlc2V0T3B0aW9uLFxuICBDb21wbGV0ZVNUQUNPYmplY3Rcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCB7RmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWV9IGZyb20gJy4uL2xheWVyLXV0aWxzJztcbmltcG9ydCB7ZGVmYXVsdCBhcyBLZXBsZXJMYXllciwgTGF5ZXJCYXNlQ29uZmlnUGFydGlhbH0gZnJvbSAnLi4vYmFzZS1sYXllcic7XG5cbi8vIEFkanVzdCB0aWxlU2l6ZSB0byBkZXZpY2VQaXhlbFJhdGlvLCBidXQgbm90IGhpZ2hlciB0aGFuIDIgdG8gcmVkdWNlIHJlcXVlc3RzIHRvIHNlcnZlclxuY29uc3QgZGV2aWNlUGl4ZWxSYXRpbzogbnVtYmVyID0gTWF0aC5taW4oXG4gIDIsXG4gICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykgfHwgMVxuKTtcblxuLy8gR2xvYmFsIGNvdW50ZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgdGlsZXMgY3VycmVudGx5IGJlaW5nIGxvYWRlZCBhY3Jvc3MgYWxsIHRoZSByYXN0ZXIgdGlsZSBsYXllcnNcbmxldCB0aWxlc0JlaW5nTG9hZGVkID0gMDtcblxuLy8gVGhpcyBpcyBhIHRlbXAgc29sdXRpb24sIGFzIHdlIGRvbid0IGhhdmUgcHJvcGVyIGxvZ2ljIHRvIHRyYWNrIGxvYWRpbmcgb2YgYXN5Y24gbGF5ZXJzIGF0bSBpbiBLZXBsZXIuZ2xcbmV4cG9ydCBjb25zdCBpc1RpbGVzQmVpbmdMb2FkZWQgPSAoKSA9PiB7XG4gIHJldHVybiB0aWxlc0JlaW5nTG9hZGVkID4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBMT0FEX0VMRVZBVElPTl9BRlRFUl9aT09NID0gOC45O1xuXG5jb25zdCBnZXRTaG91bGRMb2FkVGVycmFpbiA9IChzdGFjLCBtYXBTdGF0ZSwgdmlzQ29uZmlnKSA9PiB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIC8vIHdlIG5lZWQgYSByYXN0ZXIgdGlsZSBzZXJ2ZXIgZm9yIGVsZXZhdGlvbnMgZXZlbiB3aGVuIHdlIHVzZXIgUE1UaWxlc1xuICAgIHN0YWMucmFzdGVyVGlsZVNlcnZlclVybHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgIC8vIGNoZWNrIHRoZSBzd2l0Y2ggZnJvbSB0aGUgbGF5ZXIgY29uZmlndXJhdG9yXG4gICAgICB2aXNDb25maWcuZW5hYmxlVGVycmFpbiAmJlxuICAgICAgLy8gZm9yIG5vdyBvbmx5IGluIDNEIG1vZGUsIG5vdCB0b3AgbW9kZVxuICAgICAgbWFwU3RhdGUuZHJhZ1JvdGF0ZSAmJlxuICAgICAgZ2V0QXBwbGljYXRpb25Db25maWcoKS5yYXN0ZXJTZXJ2ZXJTdXBwb3J0c0VsZXZhdGlvblxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnQ29tbW9uU2V0dGluZ3MgPSB7XG4gIG9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgZW5hYmxlVGVycmFpbjogVmlzQ29uZmlnQm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ1NldHRpbmdzID0gUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnQ29tbW9uU2V0dGluZ3MgJiB7XG4gIHByZXNldDogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICB1c2VTVEFDU2VhcmNoaW5nOiBWaXNDb25maWdCb29sZWFuO1xuICBzdGFjU2VhcmNoUHJvdmlkZXI6IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbiAgc3RhcnREYXRlOiBWaXNDb25maWdJbnB1dDtcbiAgZW5kRGF0ZTogVmlzQ29uZmlnSW5wdXQ7XG4gIGR5bmFtaWNDb2xvcjogVmlzQ29uZmlnQm9vbGVhbjtcbiAgY29sb3JtYXBJZDogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICBsaW5lYXJSZXNjYWxpbmdGYWN0b3I6IFZpc0NvbmZpZ1JhbmdlO1xuICBub25MaW5lYXJSZXNjYWxpbmc6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIGdhbW1hQ29udHJhc3RGYWN0b3I6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2lnbW9pZGFsQ29udHJhc3RGYWN0b3I6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2lnbW9pZGFsQmlhc0ZhY3RvcjogVmlzQ29uZmlnTnVtYmVyO1xuICBzYXR1cmF0aW9uVmFsdWU6IFZpc0NvbmZpZ051bWJlcjtcbiAgZmlsdGVyRW5hYmxlZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgZmlsdGVyUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICBfc3RhY1F1ZXJ5OiBWaXNDb25maWdJbnB1dDtcbiAgc2luZ2xlQmFuZE5hbWU6IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbn07XG5cbnR5cGUgUmFzdGVyVGlsZUxheWVyTWV0YSA9IHtcbiAgelJhbmdlOiBudW1iZXJbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYXN0ZXJUaWxlTGF5ZXIgZXh0ZW5kcyBLZXBsZXJMYXllciB7XG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIG1ldGE6IFJhc3RlclRpbGVMYXllck1ldGE7XG5cbiAgLyoqIE1pbiBiYW5kcyBpbWFnZSBkYXRhIHZhbHVlLCBiYXNlZCBvbiB0aGUgY3VycmVudCB2aWV3cG9ydCAqL1xuICBtaW5WaWV3cG9ydFBpeGVsVmFsdWUgPSBJbmZpbml0eTtcbiAgLyoqIE1heCBiYW5kcyBpbWFnZSBkYXRhIHZhbHVlLCBiYXNlZCBvbiB0aGUgY3VycmVudCB2aWV3cG9ydCAqL1xuICBtYXhWaWV3cG9ydFBpeGVsVmFsdWUgPSAtSW5maW5pdHk7XG4gIC8qKiBNZW1vaXplZCBtZXRob2QgdGhhdCBjYWxjdWxhdGVzIGRhdGEgc291cmNlIHBhcmFtcyAqL1xuXG4gIGdldERhdGFTb3VyY2VQYXJhbXM6IChcbiAgICBzdGFjOiBDb21wbGV0ZVNUQUNPYmplY3QsXG4gICAgcHJlc2V0OiBzdHJpbmcsXG4gICAgcHJlc2V0T3B0aW9uczogUHJlc2V0T3B0aW9uXG4gICkgPT4gRGF0YVNvdXJjZVBhcmFtcyB8IG51bGw7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhyYXN0ZXJWaXNDb25maWdzKTtcblxuICAgIC8vIE5vIHR3byBTVEFDIGlkcyBtYXkgYmUgdGhlIHNhbWUgd2l0aGluIGEgc2luZ2xlIGNvbGxlY3Rpb24sIHRob3VnaCBpdCdzIGNvbmNlaXZhYmx5IHBvc3NpYmxlXG4gICAgLy8gYWNyb3NzIG11bHRpcGxlIFNUQUMgY29sbGVjdGlvbnMgdGhlcmUgY291bGQgYmUgYW4gaWQgY29sbGlzaW9uLiBOb3RlOiBTVEFDIENvbGxlY3Rpb25cbiAgICAvLyBvYmplY3RzIGRvbid0IGhhdmUgYSBgY29sbGVjdGlvbmAga2V5OyBTVEFDIEl0ZW0gb2JqZWN0cyBoYXZlIGEgYGNvbGxlY3Rpb25gIGtleSAod2hpY2hcbiAgICAvLyBtYXRjaGVzIHRoZSBjb2xsZWN0aW9uJ3MgYGlkYCkuXG4gICAgY29uc3QgcmVzb2x2ZXIgPSAoc3RhYzogQ29tcGxldGVTVEFDT2JqZWN0LCBwcmVzZXQ6IHN0cmluZywgcHJlc2V0T3B0aW9uczogUHJlc2V0T3B0aW9uKSA9PlxuICAgICAgYCR7c3RhYy5pZH0tJHtzdGFjLmNvbGxlY3Rpb259LSR7cHJlc2V0fS0ke3ByZXNldE9wdGlvbnMuc2luZ2xlQmFuZD8uYXNzZXRJZH0tJHtwcmVzZXRPcHRpb25zLnNpbmdsZUJhbmQ/LmJhbmRJbmRleH1gO1xuICAgIHRoaXMuZ2V0RGF0YVNvdXJjZVBhcmFtcyA9IG1lbW9pemUoXG4gICAgICAoc3RhYywgcHJlc2V0LCBwcmVzZXRPcHRpb25zKSA9PiBnZXREYXRhU291cmNlUGFyYW1zKHN0YWMsIHByZXNldCwgcHJlc2V0T3B0aW9ucyksXG4gICAgICByZXNvbHZlclxuICAgICk7XG5cbiAgICB0aGlzLm1ldGEgPSB7elJhbmdlOiBudWxsfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldDogS2VwbGVyRGF0YXNldCk6IEZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlIHtcbiAgICBpZiAoZGF0YXNldC50eXBlICE9PSBEYXRhc2V0VHlwZS5SQVNURVJfVElMRSkge1xuICAgICAgcmV0dXJuIHtwcm9wczogW119O1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0xheWVyUHJvcCA9IHtcbiAgICAgIGRhdGFJZDogZGF0YXNldC5pZCxcbiAgICAgIGxhYmVsOiBkYXRhc2V0LmxhYmVsLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgfTtcblxuICAgIHJldHVybiB7cHJvcHM6IFtuZXdMYXllclByb3BdfTtcbiAgfVxuXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIExBWUVSX1RZUEVTLnJhc3RlclRpbGU7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnUmFzdGVyIFRpbGUnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpOiBLZXBsZXJMYXllclsnbGF5ZXJJY29uJ10ge1xuICAgIHJldHVybiBSYXN0ZXJJY29uO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZERhdGFzZXRUeXBlcygpOiBEYXRhc2V0VHlwZVtdIHtcbiAgICByZXR1cm4gW0RhdGFzZXRUeXBlLlJBU1RFUl9USUxFXTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpOiBSZWNvcmQ8c3RyaW5nLCBWaXN1YWxDaGFubmVsPiB7XG4gICAgY29uc3Qge1xuICAgICAgdmlzQ29uZmlnOiB7XG4gICAgICAgIGNvbG9yUmFuZ2U6IHtjb2xvckxlZ2VuZHM6IGNhdGVnb3JpY2FsQ29sb3JMZWdlbmRzfVxuICAgICAgfVxuICAgIH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoY2F0ZWdvcmljYWxDb2xvckxlZ2VuZHMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOiBzdXBlci52aXN1YWxDaGFubmVscy5jb2xvclxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIGdldCByZXF1aXJlRGF0YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhcbiAgICBwcm9wczogTGF5ZXJCYXNlQ29uZmlnUGFydGlhbFxuICApOiBMYXllckJhc2VDb25maWcgJiBQYXJ0aWFsPExheWVyQ29sb3JDb25maWcgJiBMYXllckhlaWdodENvbmZpZz4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5nZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHMpLFxuICAgICAgY29sb3JGaWVsZDoge1xuICAgICAgICBhbmFseXplclR5cGU6ICcnLFxuICAgICAgICBuYW1lOiAnQ2F0ZWdvcnknLFxuICAgICAgICBmb3JtYXQ6ICcnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZmllbGRJZHg6IC0xLFxuICAgICAgICB2YWx1ZUFjY2Vzc29yOiAoKSA9PiAnJyxcbiAgICAgICAgZGlzcGxheU5hbWU6ICdDYXRlZ29yeSdcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gV2UgY2FuIHJlbmRlciB3aXRob3V0IGNvbHVtbnMsIHNvIHdlIHJlZGVmaW5lIHRoaXMgbWV0aG9kXG4gIHNob3VsZFJlbmRlckxheWVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMudHlwZSAmJiB0aGlzLmNvbmZpZy5pc1Zpc2libGUpO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzOiBEYXRhc2V0cywgb2xkTGF5ZXJEYXRhPzogYW55KSB7XG4gICAgY29uc3Qge2RhdGFJZH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChkYXRhSWQpKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgLy8gY2FsbCB1cGRhdGVEYXRhIHRvIHVwZGF0ZUxheWVyTWV0YVxuICAgIGNvbnN0IGRhdGFVcGRhdGVUcmlnZ2VycyA9IHRoaXMuZ2V0RGF0YVVwZGF0ZVRyaWdnZXJzKGRhdGFzZXQpO1xuICAgIGNvbnN0IHRyaWdnZXJDaGFuZ2VkID0gdGhpcy5nZXRDaGFuZ2VkVHJpZ2dlcnMoZGF0YVVwZGF0ZVRyaWdnZXJzKTtcblxuICAgIGlmICh0cmlnZ2VyQ2hhbmdlZCAmJiB0cmlnZ2VyQ2hhbmdlZC5nZXRNZXRhKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhc2V0IGFzIEtlcGxlclJhc3RlckRhdGFzZXQpO1xuICAgIH1cblxuICAgIGxldCB0aWxlU291cmNlOiBQTVRpbGVzVGlsZVNvdXJjZSB8IG51bGwgPSBudWxsO1xuICAgIGlmIChkYXRhc2V0Lm1ldGFkYXRhPy5wbXRpbGVzVHlwZSA9PT0gUE1UaWxlc1R5cGUuUkFTVEVSKSB7XG4gICAgICBjb25zdCBtZXRhZGF0YVVybCA9IGRhdGFzZXQubWV0YWRhdGEubWV0YWRhdGFVcmw7XG4gICAgICAvLyB1c2UgdGhlIG9sZCB0aWxlIHNvdXJjZSBpZiBpdCBleGlzdHMgYW5kIG1hdGNoZXMgdGhlIG5ldyBtZXRhZGF0YVVybFxuICAgICAgY29uc3Qge2RhdGFzZXQ6IG9sZERhdGFzZXQsIHRpbGVTb3VyY2U6IG9sZFRpbGVTb3VyY2V9ID0gb2xkTGF5ZXJEYXRhIHx8IHt9O1xuICAgICAgaWYgKG9sZERhdGFzZXQgPT09IGRhdGFzZXQgJiYgb2xkVGlsZVNvdXJjZT8uZGF0YSA9PT0gbWV0YWRhdGFVcmwpIHtcbiAgICAgICAgdGlsZVNvdXJjZSA9IG9sZExheWVyRGF0YS50aWxlU291cmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGlsZVNvdXJjZSA9IG1ldGFkYXRhVXJsID8gUE1UaWxlc1NvdXJjZS5jcmVhdGVEYXRhU291cmNlKG1ldGFkYXRhVXJsLCB7fSkgOiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7ZGF0YXNldCwgdGlsZVNvdXJjZX07XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YXNldDogS2VwbGVyUmFzdGVyRGF0YXNldCk6IHZvaWQge1xuICAgIGlmIChkYXRhc2V0LnR5cGUgIT09IERhdGFzZXRUeXBlLlJBU1RFUl9USUxFKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhYyA9IGRhdGFzZXQubWV0YWRhdGE7XG4gICAgaWYgKHN0YWMucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTWV0YSh7XG4gICAgICAgIGJvdW5kczogc3RhYy5ib3VuZHNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGJvdW5kcyA9IGdldFNUQUNCb3VuZHMoc3RhYyk7XG4gICAgaWYgKGJvdW5kcykge1xuICAgICAgLy8gSWYgYSBTVEFDIEl0ZW0gKGkuZS4gc3RhYy50eXBlID09PSAnRmVhdHVyZScpLCB0aGVuIHNldCBtYXAgYm91bmRzLlxuICAgICAgLy8gQnV0IHdlIGRvbid0IHdhbnQgdG8gc2V0IGJvdW5kcyBmb3IgTGFuZHNhdCBvciBTZW50aW5lbCBiZWNhdXNlIGl0IHdvdWxkIHpvb20gb3V0IHRvIHpvb21cbiAgICAgIC8vIDAsIGFuZCB3ZSBkb24ndCBoYXZlIGxvdy16b29tIHRpbGVzLlxuICAgICAgaWYgKHN0YWMudHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB3aGVuIGFkZGluZyBhIG5ldyBkYXRhc2V0XG4gICAqL1xuICBzZXRJbml0aWFsTGF5ZXJDb25maWcoZGF0YXNldDogS2VwbGVyRGF0YXNldCk6IFJhc3RlclRpbGVMYXllciB7XG4gICAgY29uc3Qgc3RhYyA9IGRhdGFzZXQ/Lm1ldGFkYXRhIGFzIEdldFRpbGVEYXRhQ3VzdG9tUHJvcHNbJ3N0YWMnXTtcblxuICAgIGlmICghc3RhYykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHN0YWMucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gV2hlbiBhIFNUQUMgQ29sbGVjdGlvbiBpcyBhZGRlZCwgdXNlU3RhY1NlYXJjaGluZyBzaG91bGQgYmUgdHJ1ZSB0byBwcmV2ZW50IGEgYmxhY2sgc2NyZWVuXG4gICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh7XG4gICAgICB1c2VTVEFDU2VhcmNoaW5nOiBzdGFjLnR5cGUgPT09ICdDb2xsZWN0aW9uJ1xuICAgIH0pO1xuXG4gICAgLy8gU2V0IHNpbmdsZUJhbmROYW1lIGlmIHRoZXJlIGlzIG9ubHkgb25lIGJhbmRcbiAgICBjb25zdCBhdmFpbGFibGVCYW5kcyA9IGdldEVPQmFuZHMoc3RhYykgfHwgW107XG4gICAgaWYgKGF2YWlsYWJsZUJhbmRzPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe3NpbmdsZUJhbmROYW1lOiBhdmFpbGFibGVCYW5kc1swXS5uYW1lfSk7XG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIHRoZSBwcmVzZXQgaWYgdGhlIGRlZmF1bHQgb25lIGlzIG5vdCBhbGxvd2VkXG4gICAgY29uc3QgYXZhaWxhYmxlUHJlc2V0cyA9IGZpbHRlckF2YWlsYWJsZVByZXNldHMoc3RhYywgUFJFU0VUX09QVElPTlMpO1xuICAgIGlmIChcbiAgICAgIGF2YWlsYWJsZVByZXNldHM/Lmxlbmd0aCAmJlxuICAgICAgIWF2YWlsYWJsZVByZXNldHM/LmluY2x1ZGVzKHRoaXMudmlzQ29uZmlnU2V0dGluZ3MucHJlc2V0LmRlZmF1bHRWYWx1ZSBhcyBzdHJpbmcpXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHtwcmVzZXQ6IGF2YWlsYWJsZVByZXNldHNbMF19KTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBpbXByb3ZlZCBpbWFnZSBwcm9jZXNzaW5nIHByb3BzIG9ubHkgZm9yIG5vbiBzaW5nbGUgYmFuZCBtb2Rlc1xuICAgIGNvbnN0IHByZXNldCA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5wcmVzZXQ7XG4gICAgY29uc3QgY29sb3JEZWZhdWx0cyA9IERBVEFfU09VUkNFX0NPTE9SX0RFRkFVTFRTW3N0YWMuaWRdO1xuICAgIGlmIChjb2xvckRlZmF1bHRzICYmIHByZXNldCAhPT0gJ3NpbmdsZUJhbmQnKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKGNvbG9yRGVmYXVsdHMpO1xuICAgIH1cblxuICAgIC8qXG4gICAgTGFuZFNhdCBzcGVjaWZpZXMgdGVtcG9yYWwgYm91bmRzIGJ1dCB0aGUgdmFsaWQgZGF0YSBpcyBhZnRlciBlbmQgZGF0ZVxuICAgIGNvbnN0IHVwZGF0ZWREYXRlcyA9IHRpbWVSYW5nZVRvU3RhY1RlbXBvcmFsSW50ZXJ2YWwoXG4gICAgICBzdGFjIGFzIFN0YWNUeXBlcy5TVEFDQ29sbGVjdGlvbixcbiAgICAgIHRoaXMuY29uZmlnLnZpc0NvbmZpZy5zdGFydERhdGUsXG4gICAgICB0aGlzLmNvbmZpZy52aXNDb25maWcuZW5kRGF0ZVxuICAgICk7XG4gICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh1cGRhdGVkRGF0ZXMpO1xuICAgICovXG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgelJhbmdlIG9mIHZpZXdwb3J0LiBUaGlzIGlzIG5lY2Vzc2FyeSBzbyB0aGF0IHRpbGVzIGluIGV4dHJ1ZGVkIG1vZGUgYXJlIHNob3duIHByb3Blcmx5XG4gICAqIGF0IGhpZ2ggZWxldmF0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL2ZvdXJzcXVhcmUvc3R1ZGlvLW1vbm9yZXBvL3B1bGwvMTg5Mi9maWxlc1xuICAgKiBEZXJpdmVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2RlY2suZ2wvYmxvYi84ZDgyNGE0YjgzNmZlZTNiZmViZTZmYzk2MmUwZjAzZDhjMWRiZDBkL21vZHVsZXMvZ2VvLWxheWVycy9zcmMvdGVycmFpbi1sYXllci90ZXJyYWluLWxheWVyLmpzI0wxNzMtTDE5NlxuICAgKlxuICAgKiBAcGFyYW0gdGlsZXMgQXJyYXkgb2YgdGlsZXMgaW4gY3VycmVudCB2aWV3cG9ydFxuICAgKi9cbiAgb25WaWV3cG9ydExvYWQodGlsZXM6IChUaWxlMkRIZWFkZXIgfCBudWxsKVtdKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNaW5NYXhQaXhlbFZhbHVlKHRpbGVzKTtcbiAgICBjb25zdCBuZXdaUmFuZ2UgPSBjb21wdXRlWlJhbmdlKHRpbGVzKTtcbiAgICBpZiAoIW5ld1pSYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHt6UmFuZ2V9ID0gdGhpcy5tZXRhO1xuICAgIGlmICghelJhbmdlIHx8IG5ld1pSYW5nZVswXSA8IHpSYW5nZVswXSB8fCBuZXdaUmFuZ2VbMV0gPiB6UmFuZ2VbMV0pIHtcbiAgICAgIHRoaXMubWV0YS56UmFuZ2UgPSBuZXdaUmFuZ2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2aWV3cG9ydC1yZWxhdGVkIG1pblB4ZWxWYWx1ZSBhbmQgbWF4UGl4ZWxWYWx1ZVxuICAgKiBAcGFyYW0gdGlsZXMgLSBkZWNrLmdsIHRpbGVzXG4gICAqL1xuICB1cGRhdGVNaW5NYXhQaXhlbFZhbHVlKHRpbGVzOiAoVGlsZTJESGVhZGVyIHwgbnVsbClbXSk6IHZvaWQge1xuICAgIGNvbnN0IFttaW4sIG1heF0gPSBnZXRNaW5NYXhGcm9tVGlsZTJESGVhZGVycyh0aWxlcyk7XG4gICAgdGhpcy5taW5WaWV3cG9ydFBpeGVsVmFsdWUgPSBtaW47XG4gICAgdGhpcy5tYXhWaWV3cG9ydFBpeGVsVmFsdWUgPSBtYXg7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIG1pbiBhbmQgbWF4IHZhbHVlcyBvZiBpbnB1dCByYXN0ZXIgYmFuZCBpbWFnZSBwcm9wZXJ0aWVzXG4gICAqIGFuZCB1cGRhdGUgYG1pbkJhbmRzVmFsdWVgIGFuZCBgbWF4QmFuZHNWYWx1ZWBcbiAgICogQHBhcmFtIGltYWdlcyAtIHJhc3RlciBiYW5kIGltYWdlIHByb3BlcnRpZXNcbiAgICogQHJldHVybiBbbWluLCBtYXhdIHBpeGVsIHZhbHVlcyBmb3IgdGhlIHRpbGVcbiAgICovXG4gIGdldE1pbk1heFBpeGVsVmFsdWVzKGltYWdlczogVGV4dHVyZTJEUHJvcHNbXSB8IG51bGwpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBsZXQgbWluUGl4ZWxWYWx1ZSA9IEluZmluaXR5O1xuICAgIGxldCBtYXhQaXhlbFZhbHVlID0gLUluZmluaXR5O1xuICAgIGlmIChpbWFnZXMpIHtcbiAgICAgIGZvciAoY29uc3QgaW1hZ2Ugb2YgaW1hZ2VzKSB7XG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBnZXRJbWFnZU1pbk1heChpbWFnZS5kYXRhKTtcbiAgICAgICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgbWluUGl4ZWxWYWx1ZSA9IE1hdGgubWluKG1pbiwgbWluUGl4ZWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtYXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgbWF4UGl4ZWxWYWx1ZSA9IE1hdGgubWF4KG1heCwgbWF4UGl4ZWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFttaW5QaXhlbFZhbHVlLCBtYXhQaXhlbFZhbHVlXTtcbiAgfVxuXG4gIC8vIGdlbmVyYXRlIGEgZGVjayBsYXllclxuICByZW5kZXJMYXllcihvcHRzKTogVGlsZUxheWVyPGFueT5bXSB7XG4gICAgY29uc3Qge2RhdGF9ID0gb3B0cztcblxuICAgIGlmIChkYXRhPy5kYXRhc2V0Py5tZXRhZGF0YT8ucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyUE1UaWxlc0xheWVyKG9wdHMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZW5kZXJTdGFjTGF5ZXIob3B0cyk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclN0YWNMYXllcihvcHRzKTogVGlsZUxheWVyPGFueT5bXSB7XG4gICAgY29uc3Qge2RhdGEsIG1hcFN0YXRlfSA9IG9wdHM7XG4gICAgY29uc3Qgc3RhYyA9IGRhdGE/LmRhdGFzZXQ/Lm1ldGFkYXRhIGFzIEdldFRpbGVEYXRhQ3VzdG9tUHJvcHNbJ3N0YWMnXTtcblxuICAgIC8vIElmIGEgdGFidWxhciBkYXRhc2V0IGlzIGxvYWRlZCwgYW5kIHRoZW4gdGhlIGxheWVyIHR5cGUgaXMgc3dpdGNoZWQgZnJvbSBQb2ludCB0byBSYXN0ZXIgVGlsZVxuICAgIC8vIGxheWVyLCB0aGlzIGBzdGFjYCBvYmplY3Qgd2lsbCBleGlzdCBidXQgd2lsbCBub3QgYmUgcmFzdGVyIG1ldGFkYXRhXG4gICAgaWYgKCFzdGFjIHx8ICFzdGFjLnN0YWNfdmVyc2lvbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qge2lkLCBvcGFjaXR5LCB2aXNpYmxlfSA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJlc2V0LFxuICAgICAgY29sb3JtYXBJZCxcbiAgICAgIGxpbmVhclJlc2NhbGluZyxcbiAgICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcixcbiAgICAgIG5vbkxpbmVhclJlc2NhbGluZyxcbiAgICAgIGdhbW1hQ29udHJhc3RGYWN0b3IsXG4gICAgICBzaWdtb2lkYWxDb250cmFzdEZhY3RvcixcbiAgICAgIHNpZ21vaWRhbEJpYXNGYWN0b3IsXG4gICAgICBzYXR1cmF0aW9uVmFsdWUsXG4gICAgICBmaWx0ZXJFbmFibGVkLFxuICAgICAgZmlsdGVyUmFuZ2UsXG4gICAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICAgIF9zdGFjUXVlcnksXG4gICAgICBzaW5nbGVCYW5kTmFtZSxcbiAgICAgIGNvbG9yUmFuZ2U6IHtjb2xvck1hcDogY2F0ZWdvcmljYWxDb2xvck1hcH0sXG4gICAgICBkeW5hbWljQ29sb3JcbiAgICB9ID0gdmlzQ29uZmlnO1xuXG4gICAgY29uc3Qgc2hvdWxkTG9hZFRlcnJhaW4gPSBnZXRTaG91bGRMb2FkVGVycmFpbihzdGFjLCBtYXBTdGF0ZSwgdmlzQ29uZmlnKTtcblxuICAgIGlmIChuZXcgRGF0ZShlbmREYXRlKSA8IG5ldyBEYXRlKHN0YXJ0RGF0ZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB7YmFuZENvbWJpbmF0aW9ufSA9IFBSRVNFVF9PUFRJT05TW3ByZXNldF07XG5cbiAgICBjb25zdCBzaW5nbGVCYW5kID0gZ2V0U2luZ2xlQmFuZFByZXNldE9wdGlvbnMoc3RhYywgc2luZ2xlQmFuZE5hbWUpO1xuICAgIGNvbnN0IGRhdGFTb3VyY2VQYXJhbXM6IERhdGFTb3VyY2VQYXJhbXMgfCBudWxsID0gdGhpcy5nZXREYXRhU291cmNlUGFyYW1zKHN0YWMsIHByZXNldCwge1xuICAgICAgc2luZ2xlQmFuZFxuICAgIH0pO1xuXG4gICAgaWYgKCFkYXRhU291cmNlUGFyYW1zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgbWluWm9vbSxcbiAgICAgIG1heFpvb20sXG4gICAgICBnbG9iYWxCb3VuZHMsXG4gICAgICBsb2FkQXNzZXRJZHMsXG4gICAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgICByZW5kZXJCYW5kSW5kZXhlcyxcbiAgICAgIGRhdGFUeXBlLFxuICAgICAgbWluUGl4ZWxWYWx1ZTogZHNNaW5QaXhlbFZhbHVlLFxuICAgICAgbWF4UGl4ZWxWYWx1ZTogZHNNYXhQaXhlbFZhbHVlLFxuICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZVxuICAgIH0gPSBkYXRhU291cmNlUGFyYW1zO1xuXG4gICAgY29uc3QgbWluUGl4ZWxWYWx1ZSA9XG4gICAgICAhZHluYW1pY0NvbG9yICYmIE51bWJlci5pc0Zpbml0ZShkc01pblBpeGVsVmFsdWUpXG4gICAgICAgID8gZHNNaW5QaXhlbFZhbHVlXG4gICAgICAgIDogdGhpcy5taW5WaWV3cG9ydFBpeGVsVmFsdWU7XG4gICAgY29uc3QgbWF4UGl4ZWxWYWx1ZSA9XG4gICAgICAhZHluYW1pY0NvbG9yICYmIE51bWJlci5pc0Zpbml0ZShkc01heFBpeGVsVmFsdWUpXG4gICAgICAgID8gZHNNYXhQaXhlbFZhbHVlXG4gICAgICAgIDogdGhpcy5tYXhWaWV3cG9ydFBpeGVsVmFsdWU7XG5cbiAgICBjb25zdCBnZXRUaWxlRGF0YUN1c3RvbVByb3BzOiBHZXRUaWxlRGF0YUN1c3RvbVByb3BzID0ge1xuICAgICAgc3RhYyxcbiAgICAgIGxvYWRBc3NldElkcyxcbiAgICAgIGxvYWRCYW5kSW5kZXhlcyxcbiAgICAgIGNvbG9ybWFwSWQsXG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgICAgX3N0YWNRdWVyeSxcbiAgICAgIGNhdGVnb3JpY2FsQ29sb3JNYXAsXG4gICAgICBtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlXG4gICAgfTtcblxuICAgIGNvbnN0IHRpbGVMYXllciA9IG5ldyBUaWxlTGF5ZXI8YW55LCBSZW5kZXJTdWJMYXllcnNQcm9wcz4oe1xuICAgICAgaWQsXG4gICAgICBtaW5ab29tLFxuICAgICAgbWF4Wm9vbSxcbiAgICAgIHRpbGVTaXplOiA1MTIgLyBkZXZpY2VQaXhlbFJhdGlvLFxuICAgICAgZ2V0VGlsZURhdGE6IChhcmdzOiBhbnkpID0+IHRoaXMuZ2V0VGlsZURhdGEoey4uLmFyZ3MsIC4uLmdldFRpbGVEYXRhQ3VzdG9tUHJvcHN9KSxcbiAgICAgIG9uVmlld3BvcnRMb2FkOiB0aGlzLm9uVmlld3BvcnRMb2FkLmJpbmQodGhpcyksXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gVFMgZG9lc24ndCBrbm93IHdlJ2xsIHBhc3MgYXBwcm9wcmlhdGUgcHJvcHMgaGVyZVxuICAgICAgcmVuZGVyU3ViTGF5ZXJzOiByZW5kZXJTdWJMYXllcnNTdGFjLFxuICAgICAgbWF4UmVxdWVzdHM6IGdldE1heFJlcXVlc3RzKHN0YWMucmFzdGVyVGlsZVNlcnZlclVybHMgfHwgW10pLFxuICAgICAgLy8gUGFzc2luZyB2aXNpYmxlIG9uIHRvIFRpbGVMYXllciBpcyBuZWNlc3NhcnkgZm9yIHNwbGl0IHZpZXcgdG8gd29ya1xuICAgICAgdmlzaWJsZSxcbiAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgIGdldFRpbGVEYXRhOiBbXG4gICAgICAgICAgc2hvdWxkTG9hZFRlcnJhaW4sXG4gICAgICAgICAgLy8gQ29sb3JtYXAgaGFzIGNoYW5nZWRcbiAgICAgICAgICBjb2xvcm1hcElkLFxuICAgICAgICAgIC8vIGFzc2V0cyB0byBiZSBsb2FkZWQgaGFzIGNoYW5nZWRcbiAgICAgICAgICAuLi5sb2FkQXNzZXRJZHMsXG4gICAgICAgICAgLy8gYmFuZCBpbmRleGVzIHRvIGJlIGxvYWRlZCBoYXMgY2hhbmdlZFxuICAgICAgICAgIC4uLmxvYWRCYW5kSW5kZXhlcyxcbiAgICAgICAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgICAgICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICAgICAgICBzdGFydERhdGUsXG4gICAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgICBfc3RhY1F1ZXJ5LFxuICAgICAgICAgIGNhdGVnb3JpY2FsQ29sb3JNYXAsXG4gICAgICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICAgICAgbWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIFByb3BzIGZvciAzRCBtb2RlXG4gICAgICAuLi4oc2hvdWxkTG9hZFRlcnJhaW5cbiAgICAgICAgPyB7XG4gICAgICAgICAgICB6UmFuZ2U6IHRoaXMubWV0YS56UmFuZ2UgfHwgbnVsbCxcbiAgICAgICAgICAgIHJlZmluZW1lbnRTdHJhdGVneTogJ25vLW92ZXJsYXAnXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICAgIHJlbmRlckJhbmRJbmRleGVzLFxuICAgICAgb3BhY2l0eSxcbiAgICAgIGxpbmVhclJlc2NhbGluZyxcbiAgICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcixcbiAgICAgIG5vbkxpbmVhclJlc2NhbGluZyxcbiAgICAgIG1pblBpeGVsVmFsdWUsXG4gICAgICBtYXhQaXhlbFZhbHVlLFxuICAgICAgZ2FtbWFDb250cmFzdEZhY3RvcixcbiAgICAgIHNpZ21vaWRhbENvbnRyYXN0RmFjdG9yLFxuICAgICAgc2lnbW9pZGFsQmlhc0ZhY3RvcixcbiAgICAgIHNhdHVyYXRpb25WYWx1ZSxcbiAgICAgIGJhbmRDb21iaW5hdGlvbixcbiAgICAgIGZpbHRlckVuYWJsZWQsXG4gICAgICBmaWx0ZXJSYW5nZSxcbiAgICAgIGRhdGFUeXBlLFxuICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgIGhhc0NhdGVnb3JpY2FsQ29sb3JNYXA6IEJvb2xlYW4oY2F0ZWdvcmljYWxDb2xvck1hcClcbiAgICB9KTtcblxuICAgIHJldHVybiBbdGlsZUxheWVyXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUE1UaWxlc0xheWVyKG9wdHMpOiBUaWxlTGF5ZXI8YW55PltdIHtcbiAgICBjb25zdCB7aWQsIG9wYWNpdHksIHZpc2libGV9ID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG5cbiAgICBjb25zdCB7ZGF0YSwgbWFwU3RhdGV9ID0gb3B0cztcbiAgICBjb25zdCBtZXRhZGF0YSA9IGRhdGE/LmRhdGFzZXQ/Lm1ldGFkYXRhIGFzIFZlY3RvclRpbGVNZXRhZGF0YTtcbiAgICBjb25zdCB7dmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgY29uc3QgdGlsZVNvdXJjZSA9IGRhdGEudGlsZVNvdXJjZTtcbiAgICBjb25zdCBzaG93VGlsZUJvcmRlcnMgPSBmYWxzZTtcbiAgICBjb25zdCBtaW5ab29tID0gbWV0YWRhdGEubWluWm9vbSB8fCAwO1xuICAgIGNvbnN0IG1heFpvb20gPSBtZXRhZGF0YS5tYXhab29tIHx8IDMwO1xuXG4gICAgY29uc3Qgc2hvdWxkTG9hZFRlcnJhaW4gPSBnZXRTaG91bGRMb2FkVGVycmFpbihtZXRhZGF0YSwgbWFwU3RhdGUsIHZpc0NvbmZpZyk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IFRpbGVMYXllcjxhbnksIFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ0NvbW1vblNldHRpbmdzPih7XG4gICAgICAgIGlkLFxuICAgICAgICBnZXRUaWxlRGF0YTogKGFyZ3M6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmdldFRpbGVEYXRhUE1UaWxlcyh7Li4uYXJncywgc2hvdWxkTG9hZFRlcnJhaW4sIG1ldGFkYXRhfSwgdGlsZVNvdXJjZSksXG5cbiAgICAgICAgLy8gQXNzdW1lIHRoZSBwbXRpbGVzIGZpbGUgc3VwcG9ydCBIVFRQLzIsIHNvIHdlIGFyZW4ndCBsaW1pdGVkIGJ5IHRoZSBicm93c2VyIHRvIGEgY2VydGFpbiBudW1iZXIgcGVyIGRvbWFpbi5cbiAgICAgICAgbWF4UmVxdWVzdHM6IDIwLFxuXG4gICAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiBzaG93VGlsZUJvcmRlcnMsXG5cbiAgICAgICAgb25WaWV3cG9ydExvYWQ6IHRoaXMub25WaWV3cG9ydExvYWQuYmluZCh0aGlzKSxcblxuICAgICAgICBtaW5ab29tLFxuICAgICAgICBtYXhab29tLFxuICAgICAgICB0aWxlU2l6ZTogNTEyIC8gZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgem9vbU9mZnNldDogZGV2aWNlUGl4ZWxSYXRpbyA9PT0gMSA/IC0xIDogMCxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIFRTIGRvZXNuJ3Qga25vdyB3ZSdsbCBwYXNzIGFwcHJvcHJpYXRlIHByb3BzIGhlcmVcbiAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiByZW5kZXJTdWJMYXllcnNQTVRpbGVzLFxuXG4gICAgICAgIHRpbGVTb3VyY2UsXG4gICAgICAgIHNob3dUaWxlQm9yZGVycyxcblxuICAgICAgICB2aXNpYmxlLFxuICAgICAgICBvcGFjaXR5LFxuXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgZ2V0VGlsZURhdGE6IFtzaG91bGRMb2FkVGVycmFpbl1cbiAgICAgICAgfSxcbiAgICAgICAgLy8gUHJvcHMgZm9yIDNEIG1vZGVcbiAgICAgICAgLi4uKHNob3VsZExvYWRUZXJyYWluXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHpSYW5nZTogdGhpcy5tZXRhLnpSYW5nZSB8fCBudWxsLFxuICAgICAgICAgICAgICByZWZpbmVtZW50U3RyYXRlZ3k6ICduby1vdmVybGFwJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pXG4gICAgICB9KVxuICAgIF07XG4gIH1cblxuICBhc3luYyBnZXRUaWxlRGF0YShwcm9wczogR2V0VGlsZURhdGFQcm9wcyk6IFByb21pc2U8R2V0VGlsZURhdGFPdXRwdXQ+IHtcbiAgICBjb25zdCB7XG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9LFxuICAgICAgaW5kZXg6IHt6OiB6b29tfVxuICAgIH0gPSBwcm9wcztcblxuICAgIGlmIChnbG9iYWxCb3VuZHMgJiYgIWJib3hJbnRlcnNlY3RzKGdsb2JhbEJvdW5kcywgW3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aF0pKSB7XG4gICAgICAvLyB0aWxlIGlzIG91dHNpZGUgb2YgU1RBQyBvYmplY3QncyBib3VuZGluZyBib3g7IGRvbid0IGZldGNoIHRpbGVcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0UmVxdWVzdHMgPSBhd2FpdCBnZXRTVEFDSW1hZ2VSZXF1ZXN0cyhwcm9wcyk7XG4gICAgLy8gTm8gYXNzZXRzIHRvIGxvYWQsIG1vc3QgbGlrZWx5IGR1ZSB0byBwcm9wcyBiZWluZyBpbnZhbGlkL3Vuc3VwcG9ydGVkXG4gICAgaWYgKCFhc3NldFJlcXVlc3RzKSB7XG4gICAgICAvLyBXZSBzdGlsbCBpc3N1ZSB0aGUgbG9hZFRlcnJhaW4gcmVxdWVzdCBpZiBhcHBsaWNhYmxlXG4gICAgICBjb25zdCB0ZXJyYWluID1cbiAgICAgICAgc2hvdWxkTG9hZFRlcnJhaW4gJiZcbiAgICAgICAgTE9BRF9FTEVWQVRJT05fQUZURVJfWk9PTSA8IHpvb20gJiZcbiAgICAgICAgKGF3YWl0IGxvYWRUZXJyYWluKHtcbiAgICAgICAgICBpbmRleDogcHJvcHMuaW5kZXgsXG4gICAgICAgICAgc2lnbmFsOiBwcm9wcy5zaWduYWwsXG4gICAgICAgICAgcmFzdGVyVGlsZVNlcnZlclVybHM6IHByb3BzLnN0YWMucmFzdGVyVGlsZVNlcnZlclVybHMgfHwgW11cbiAgICAgICAgfSkpO1xuICAgICAgcmV0dXJuIHtpbWFnZXM6IG51bGwsIC4uLih0ZXJyYWluID8ge3RlcnJhaW59IDoge30pfTtcbiAgICB9XG5cbiAgICB0aWxlc0JlaW5nTG9hZGVkKys7XG5cbiAgICAvLyBXcmFwIGxvYWRpbmcgaW1hZ2VzIGludG8gYSB0cnkvY2F0Y2ggYmVjYXVzZSB0aWxlcyB0aGF0IGFyZSBvbmx5IGJyaWVmbHkgaW4gdmlldyB3aWxsIGJlXG4gICAgLy8gYWJvcnRlZC4gVGhlIGBBYm9ydENvbnRyb2xsZXIuYWJvcnQoKWAgY3JlYXRlcyBhIERPTUV4Y2VwdGlvbiBlcnJvci5cbiAgICAvLyBOb3RlIHRoYXQgc2luY2UgbG9hZGluZyBpcyBhc3luYywgdHJ5L2NhdGNoIHdpbGwgb25seSB3b3JrIHdoZW4gYXdhaXRlZCBpbnNpZGUgdGhlIHRyeSBibG9ja1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBbaW1hZ2VzLCB0ZXJyYWluXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgbG9hZEltYWdlcyhhc3NldFJlcXVlc3RzLCBwcm9wcy5jb2xvcm1hcElkLCB7XG4gICAgICAgICAgY29sb3JNYXA6IHByb3BzLmNhdGVnb3JpY2FsQ29sb3JNYXAsXG4gICAgICAgICAgbWluVmFsdWU6IHByb3BzLm1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlLFxuICAgICAgICAgIG1heFZhbHVlOiBwcm9wcy5tYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZVxuICAgICAgICB9KSxcbiAgICAgICAgc2hvdWxkTG9hZFRlcnJhaW4gJiYgTE9BRF9FTEVWQVRJT05fQUZURVJfWk9PTSA8IHpvb21cbiAgICAgICAgICA/IGxvYWRUZXJyYWluKHtcbiAgICAgICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICAgICAgICBzaWduYWw6IHByb3BzLnNpZ25hbCxcbiAgICAgICAgICAgICAgcmFzdGVyVGlsZVNlcnZlclVybHM6IHByb3BzLnN0YWMucmFzdGVyVGlsZVNlcnZlclVybHMgfHwgW11cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBdKTtcblxuICAgICAgY29uc3QgW21pbiwgbWF4XSA9IHRoaXMuZ2V0TWluTWF4UGl4ZWxWYWx1ZXMoaW1hZ2VzLmltYWdlQmFuZHMpO1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuXG4gICAgICAvLyBBZGQgdGVycmFpbiBkYXRhIG9ubHkgaWYgd2UgcmVxdWVzdGVkIGl0IGFib3ZlXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbWFnZXMsXG4gICAgICAgIC4uLih0ZXJyYWluID8ge3RlcnJhaW59IDoge30pLFxuICAgICAgICBtaW5QaXhlbFZhbHVlOiBtaW4sXG4gICAgICAgIG1heFBpeGVsVmFsdWU6IG1heFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuICAgICAgaWYgKChlcnJvciBhcyBhbnkpLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgICAvLyB0aWxlIHdhcyBhYm9ydGVkXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBTb21lIG90aGVyIHVuaGFuZGxlZCBlcnJvclxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VGlsZURhdGFQTVRpbGVzKFxuICAgIHByb3BzOiBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcyAmIHtcbiAgICAgIHNob3VsZExvYWRUZXJyYWluOiBib29sZWFuO1xuICAgICAgbWV0YWRhdGE6IHtyYXN0ZXJUaWxlU2VydmVyVXJsczogc3RyaW5nW119O1xuICAgICAgZ2xvYmFsQm91bmRzOiBEYXRhU291cmNlUGFyYW1zWydnbG9iYWxCb3VuZHMnXTtcbiAgICB9LFxuICAgIHRpbGVTb3VyY2VcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB7XG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9LFxuICAgICAgaW5kZXg6IHt6OiB6b29tfSxcbiAgICAgIG1ldGFkYXRhXG4gICAgfSA9IHByb3BzO1xuXG4gICAgaWYgKGdsb2JhbEJvdW5kcyAmJiAhYmJveEludGVyc2VjdHMoZ2xvYmFsQm91bmRzLCBbd2VzdCwgc291dGgsIGVhc3QsIG5vcnRoXSkpIHtcbiAgICAgIC8vIHRpbGUgaXMgb3V0c2lkZSBvZiBTVEFDIG9iamVjdCdzIGJvdW5kaW5nIGJveDsgZG9uJ3QgZmV0Y2ggdGlsZVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGlsZXNCZWluZ0xvYWRlZCsrO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFtpbWFnZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbdGlsZVNvdXJjZS5nZXRUaWxlRGF0YShwcm9wcyldKTtcbiAgICAgIC8vIEZvciBud28gY2hlY2sgaWYgdGhlIGJhc2UgdGlsZSBleGlzdHMsIGFzIHRoaXMgY2FuIGNhdXNlIGxvYWRpbmcgdG8gZ2V0IHN0dWNrIHdpdGggXCJzcGFyc2VcIiBQTVRpbGVzLlxuICAgICAgY29uc3QgdGVycmFpbiA9XG4gICAgICAgIGltYWdlICYmIHNob3VsZExvYWRUZXJyYWluICYmIExPQURfRUxFVkFUSU9OX0FGVEVSX1pPT00gPCB6b29tXG4gICAgICAgICAgPyBhd2FpdCBsb2FkVGVycmFpbih7XG4gICAgICAgICAgICAgIGluZGV4OiBwcm9wcy5pbmRleCxcbiAgICAgICAgICAgICAgc2lnbmFsOiBwcm9wcy5zaWduYWwsXG4gICAgICAgICAgICAgIHJhc3RlclRpbGVTZXJ2ZXJVcmxzOiBtZXRhZGF0YS5yYXN0ZXJUaWxlU2VydmVyVXJsc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIGxldCBtaW5QaXhlbFZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAgIGxldCBtYXhQaXhlbFZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAgIGlmIChpbWFnZSkge1xuICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gdGhpcy5nZXRNaW5NYXhQaXhlbFZhbHVlcyhbe2RhdGE6IGltYWdlfV0pO1xuICAgICAgICBtaW5QaXhlbFZhbHVlID0gbWluO1xuICAgICAgICBtYXhQaXhlbFZhbHVlID0gbWF4O1xuICAgICAgfVxuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuXG4gICAgICAvLyBBZGQgdGVycmFpbiBkYXRhIG9ubHkgaWYgd2UgcmVxdWVzdGVkIGl0IGFib3ZlXG4gICAgICByZXR1cm4ge2ltYWdlLCBtaW5QaXhlbFZhbHVlLCBtYXhQaXhlbFZhbHVlLCAuLi4odGVycmFpbiA/IHt0ZXJyYWlufSA6IHt9KX07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRpbGVzQmVpbmdMb2FkZWQtLTtcblxuICAgICAgaWYgKChlcnJvciBhcyBFcnJvcikubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgIC8vIHRpbGUgd2FzIGFib3J0ZWRcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIFNvbWUgb3RoZXIgdW5oYW5kbGVkIGVycm9yXG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyU3ViTGF5ZXJzU3RhYyhwcm9wczogUmVuZGVyU3ViTGF5ZXJzUHJvcHMpOiBEZWNrTGF5ZXI8YW55PiB8IERlY2tMYXllcjxhbnk+W10ge1xuICBjb25zdCB7XG4gICAgdGlsZSxcbiAgICBkYXRhLFxuICAgIG1pblBpeGVsVmFsdWU6IGdsb2JhbE1pblBpeGVsVmFsdWUsXG4gICAgbWF4UGl4ZWxWYWx1ZTogZ2xvYmFsTWF4UGl4ZWxWYWx1ZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGJib3ggPSB0aWxlLmJib3ggYXMgR2VvQm91bmRpbmdCb3g7XG4gIGNvbnN0IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9ID0gYmJveDtcblxuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCB7XG4gICAgaW1hZ2VzLFxuICAgIHRlcnJhaW4sXG4gICAgbWluUGl4ZWxWYWx1ZTogdGlsZU1pblBpeGVsVmFsdWUsXG4gICAgbWF4UGl4ZWxWYWx1ZTogdGlsZU1heFBpeGVsVmFsdWVcbiAgfSA9IGRhdGE7XG4gIGlmICghaW1hZ2VzIHx8IChBcnJheS5pc0FycmF5KGltYWdlcykgJiYgaW1hZ2VzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBtaW5QaXhlbFZhbHVlID0gTnVtYmVyLmlzRmluaXRlKGdsb2JhbE1pblBpeGVsVmFsdWUpXG4gICAgPyBnbG9iYWxNaW5QaXhlbFZhbHVlXG4gICAgOiB0aWxlTWluUGl4ZWxWYWx1ZTtcbiAgY29uc3QgbWF4UGl4ZWxWYWx1ZSA9IE51bWJlci5pc0Zpbml0ZShnbG9iYWxNYXhQaXhlbFZhbHVlKVxuICAgID8gZ2xvYmFsTWF4UGl4ZWxWYWx1ZVxuICAgIDogdGlsZU1heFBpeGVsVmFsdWU7XG4gIGlmICh0eXBlb2YgbWluUGl4ZWxWYWx1ZSAhPT0gJ251bWJlcicgfHwgdHlwZW9mIG1heFBpeGVsVmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3Qge21vZHVsZXMsIG1vZHVsZVByb3BzfSA9IGdldE1vZHVsZXMoe1xuICAgIGltYWdlcyxcbiAgICBwcm9wczogey4uLnByb3BzLCBtaW5QaXhlbFZhbHVlLCBtYXhQaXhlbFZhbHVlfVxuICB9KTtcblxuICByZXR1cm4gdGVycmFpblxuICAgID8gbmV3IFJhc3Rlck1lc2hMYXllcihwcm9wcywge1xuICAgICAgICBpZDogYHJhc3Rlci0zZC1sYXllci0ke3Byb3BzLmlkfWAsXG4gICAgICAgIC8vIER1bW15IGRhdGFcbiAgICAgICAgZGF0YTogWzFdLFxuICAgICAgICBtZXNoOiB0ZXJyYWluLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIG1vZHVsZXMsXG4gICAgICAgIG1vZHVsZVByb3BzLFxuXG4gICAgICAgIGdldFBvbHlnb25PZmZzZXQ6IG51bGwsXG4gICAgICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICAgICAgbW9kZWxNYXRyaXg6IGdldE1lcmNhdG9yTW9kZWxNYXRyaXgodGlsZS5pbmRleCksXG4gICAgICAgIGdldFBvc2l0aW9uOiAoKSA9PiBbMCwgMCwgMF0sXG4gICAgICAgIC8vIENvbG9yIHRvIHVzZSBpZiBzdXJmYWNlSW1hZ2UgaXMgdW5hdmFpbGFibGVcbiAgICAgICAgZ2V0Q29sb3I6IFsyNTUsIDI1NSwgMjU1XVxuICAgICAgICAvLyBtYXRlcmlhbDogZmFsc2VcbiAgICAgIH0pXG4gICAgOiBuZXcgUmFzdGVyTGF5ZXIocHJvcHMsIHtcbiAgICAgICAgaWQ6IGByYXN0ZXItMmQtbGF5ZXItJHtwcm9wcy5pZH1gLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIG1vZHVsZXMsXG4gICAgICAgIG1vZHVsZVByb3BzLFxuICAgICAgICBib3VuZHM6IFt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGhdLFxuICAgICAgICBfaW1hZ2VDb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU5cbiAgICAgIH0pO1xufVxuXG4vLyBGcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS91YmVyL2RlY2suZ2wvYmxvYi9iMTkwMWIxMWNiZGNiODJiMzE3ZTE1NzlmZjIzNmQxY2ExZDAzZWE3L21vZHVsZXMvZ2VvLWxheWVycy9zcmMvbXZ0LXRpbGUtbGF5ZXIvbXZ0LXRpbGUtbGF5ZXIuanMjTDQxLUw1MlxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lcmNhdG9yTW9kZWxNYXRyaXgodGlsZToge3g6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXJ9KTogTWF0cml4NCB7XG4gIGNvbnN0IFdPUkxEX1NJWkUgPSA1MTI7XG4gIGNvbnN0IHdvcmxkU2NhbGUgPSBNYXRoLnBvdygyLCB0aWxlLnopO1xuXG4gIGNvbnN0IHhTY2FsZSA9IFdPUkxEX1NJWkUgLyB3b3JsZFNjYWxlO1xuICBjb25zdCB5U2NhbGUgPSAteFNjYWxlO1xuXG4gIGNvbnN0IHhPZmZzZXQgPSAoV09STERfU0laRSAqIHRpbGUueCkgLyB3b3JsZFNjYWxlO1xuICBjb25zdCB5T2Zmc2V0ID0gV09STERfU0laRSAqICgxIC0gdGlsZS55IC8gd29ybGRTY2FsZSk7XG5cbiAgcmV0dXJuIG5ldyBNYXRyaXg0KCkudHJhbnNsYXRlKFt4T2Zmc2V0LCB5T2Zmc2V0LCAwXSkuc2NhbGUoW3hTY2FsZSwgeVNjYWxlLCAxXSk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclN1YkxheWVyc1BNVGlsZXMocHJvcHM6IHtcbiAgaWQ6IHN0cmluZztcbiAgZGF0YTogYW55O1xuICB0aWxlU291cmNlOiBhbnk7XG4gIHNob3dUaWxlQm9yZGVyczogYW55O1xuICBtaW5ab29tOiBhbnk7XG4gIG1heFpvb206IGFueTtcbiAgdGlsZTogYW55O1xufSkge1xuICBjb25zdCB7XG4gICAgdGlsZVNvdXJjZSxcbiAgICBzaG93VGlsZUJvcmRlcnMsXG4gICAgbWluWm9vbSxcbiAgICBtYXhab29tLFxuICAgIHRpbGU6IHtcbiAgICAgIGluZGV4OiB7ejogem9vbX0sXG4gICAgICBiYm94OiB7d2VzdCwgc291dGgsIGVhc3QsIG5vcnRofVxuICAgIH1cbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGxheWVyczogYW55W10gPSBbXTtcblxuICBpZiAocHJvcHMuZGF0YT8uaW1hZ2UpIHtcbiAgICBzd2l0Y2ggKHRpbGVTb3VyY2UubWltZVR5cGUpIHtcbiAgICAgIGNhc2UgJ2ltYWdlL3BuZyc6XG4gICAgICBjYXNlICdpbWFnZS9qcGVnJzpcbiAgICAgIGNhc2UgJ2ltYWdlL3dlYnAnOlxuICAgICAgY2FzZSAnaW1hZ2UvYXZpZic6XG4gICAgICAgIGxheWVycy5wdXNoKGdldFJhc3RlckxheWVyUE1UaWxlcyhwcm9wcykpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVidWcgdGlsZSBib3JkZXJzXG4gIGNvbnN0IGJvcmRlckNvbG9yID0gem9vbSA8PSBtaW5ab29tIHx8IHpvb20gPj0gbWF4Wm9vbSA/IFsyNTUsIDAsIDAsIDI1NV0gOiBbMCwgMCwgMjU1LCAyNTVdO1xuICBpZiAoc2hvd1RpbGVCb3JkZXJzKSB7XG4gICAgbGF5ZXJzLnB1c2goXG4gICAgICBuZXcgUGF0aExheWVyKHtcbiAgICAgICAgaWQ6IGAke3Byb3BzLmlkfS1ib3JkZXJgLFxuICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgW1xuICAgICAgICAgICAgW3dlc3QsIG5vcnRoXSxcbiAgICAgICAgICAgIFt3ZXN0LCBzb3V0aF0sXG4gICAgICAgICAgICBbZWFzdCwgc291dGhdLFxuICAgICAgICAgICAgW2Vhc3QsIG5vcnRoXSxcbiAgICAgICAgICAgIFt3ZXN0LCBub3J0aF1cbiAgICAgICAgICBdXG4gICAgICAgIF0sXG4gICAgICAgIGdldFBhdGg6IGQgPT4gZCxcbiAgICAgICAgZ2V0Q29sb3I6IGJvcmRlckNvbG9yIGFzIGFueSxcbiAgICAgICAgd2lkdGhNaW5QaXhlbHM6IDRcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBsYXllcnM7XG59XG5cbmZ1bmN0aW9uIGdldFJhc3RlckxheWVyUE1UaWxlcyhwcm9wczoge2lkOiBzdHJpbmc7IGRhdGE6IGFueTsgdGlsZTogYW55fSkge1xuICBjb25zdCB7dGlsZSwgZGF0YX0gPSBwcm9wcztcbiAgY29uc3QgYmJveCA9IHRpbGUuYmJveCBhcyBHZW9Cb3VuZGluZ0JveDtcbiAgY29uc3Qge3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aH0gPSBiYm94O1xuXG4gIGlmICghZGF0YT8uaW1hZ2UpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBpbWFnZXMgPSB7aW1hZ2VSZ2JhOiB7ZGF0YTogZGF0YS5pbWFnZX19O1xuICBjb25zdCB7dGVycmFpbn0gPSBkYXRhO1xuXG4gIGNvbnN0IHttb2R1bGVzLCBtb2R1bGVQcm9wc30gPSBnZXRNb2R1bGVzKHtcbiAgICBpbWFnZXNcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcnJhaW5cbiAgICA/IG5ldyBSYXN0ZXJNZXNoTGF5ZXIocHJvcHMsIHtcbiAgICAgICAgaWQ6IGByYXN0ZXItM2QtbGF5ZXItJHtwcm9wcy5pZH1gLFxuICAgICAgICAvLyBEdW1teSBkYXRhXG4gICAgICAgIGRhdGE6IFsxXSxcbiAgICAgICAgbWVzaDogdGVycmFpbixcbiAgICAgICAgaW1hZ2VzLFxuICAgICAgICBtb2R1bGVzLFxuICAgICAgICBtb2R1bGVQcm9wcyxcblxuICAgICAgICBnZXRQb2x5Z29uT2Zmc2V0OiBudWxsLFxuICAgICAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU4sXG4gICAgICAgIG1vZGVsTWF0cml4OiBnZXRNZXJjYXRvck1vZGVsTWF0cml4KHRpbGUuaW5kZXgpLFxuICAgICAgICBnZXRQb3NpdGlvbjogKCkgPT4gWzAsIDAsIDBdLFxuICAgICAgICAvLyBDb2xvciB0byB1c2UgaWYgc3VyZmFjZUltYWdlIGlzIHVuYXZhaWxhYmxlXG4gICAgICAgIGdldENvbG9yOiBbMjU1LCAyNTUsIDI1NV1cbiAgICAgICAgLy8gbWF0ZXJpYWw6IGZhbHNlXG4gICAgICB9KVxuICAgIDogbmV3IFJhc3RlckxheWVyKHByb3BzLCB7XG4gICAgICAgIGlkOiBgcmFzdGVyLTJkLWxheWVyLSR7cHJvcHMuaWR9YCxcbiAgICAgICAgZGF0YTogbnVsbCBhcyBuZXZlcixcbiAgICAgICAgaW1hZ2VzLFxuICAgICAgICBtb2R1bGVzLFxuICAgICAgICBtb2R1bGVQcm9wcyxcbiAgICAgICAgYm91bmRzOiBbd2VzdCwgc291dGgsIGVhc3QsIG5vcnRoXSxcbiAgICAgICAgX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uQ0FSVEVTSUFOXG4gICAgICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxRQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxLQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFjQSxJQUFBUyxZQUFBLEdBQUFULE9BQUE7QUFFQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFFQSxJQUFBVyxPQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxTQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxNQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxlQUFBLEdBQUFWLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBZSxnQkFBQSxHQUFBZixPQUFBO0FBMEJBLElBQUFnQixVQUFBLEdBQUFaLHNCQUFBLENBQUFKLE9BQUE7QUFBNkUsU0FBQWlCLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxD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
881
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3R5cGVkMiIsIl9wbXRpbGVzIiwiX21lbW9pemUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3R5cGVkMyIsIl9jb25zdGFudHMiLCJfZGVja2dsTGF5ZXJzIiwiX2NvbW1vblV0aWxzIiwiX3V0aWxzIiwiX2NvbmZpZyIsIl9ncHVVdGlscyIsIl9pbWFnZSIsIl9yYXN0ZXJUaWxlSWNvbiIsIl9yYXN0ZXJUaWxlVXRpbHMiLCJfYmFzZUxheWVyIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsImRldmljZVBpeGVsUmF0aW8iLCJNYXRoIiwibWluIiwid2luZG93IiwidGlsZXNCZWluZ0xvYWRlZCIsImdldE51bVJhc3RlclRpbGVzQmVpbmdMb2FkZWQiLCJleHBvcnRzIiwiTE9BRF9FTEVWQVRJT05fQUZURVJfWk9PTSIsImdldFNob3VsZExvYWRUZXJyYWluIiwic3RhYyIsIm1hcFN0YXRlIiwidmlzQ29uZmlnIiwiX3N0YWMkcmFzdGVyVGlsZVNlcnZlIiwicmFzdGVyVGlsZVNlcnZlclVybHMiLCJlbmFibGVUZXJyYWluIiwiZHJhZ1JvdGF0ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwicmFzdGVyU2VydmVyU3VwcG9ydHNFbGV2YXRpb24iLCJSYXN0ZXJUaWxlTGF5ZXIiLCJfS2VwbGVyTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIkluZmluaXR5IiwicmVnaXN0ZXJWaXNDb25maWciLCJyYXN0ZXJWaXNDb25maWdzIiwicmVzb2x2ZXIiLCJwcmVzZXQiLCJwcmVzZXRPcHRpb25zIiwiX3ByZXNldE9wdGlvbnMkc2luZ2xlIiwiX3ByZXNldE9wdGlvbnMkc2luZ2xlMiIsImNvbmNhdCIsImlkIiwiY29sbGVjdGlvbiIsInNpbmdsZUJhbmQiLCJhc3NldElkIiwiYmFuZEluZGV4IiwiZ2V0RGF0YVNvdXJjZVBhcmFtcyIsIm1lbW9pemUiLCJtZXRhIiwielJhbmdlIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJnZXQiLCJMQVlFUl9UWVBFUyIsInJhc3RlclRpbGUiLCJSYXN0ZXJJY29uIiwiRGF0YXNldFR5cGUiLCJSQVNURVJfVElMRSIsImNhdGVnb3JpY2FsQ29sb3JMZWdlbmRzIiwiY29uZmlnIiwiY29sb3JSYW5nZSIsImNvbG9yTGVnZW5kcyIsImNvbG9yIiwiZ2V0RGVmYXVsdExheWVyQ29uZmlnIiwiY29sb3JGaWVsZCIsImFuYWx5emVyVHlwZSIsImZvcm1hdCIsInR5cGUiLCJmaWVsZElkeCIsInZhbHVlQWNjZXNzb3IiLCJkaXNwbGF5TmFtZSIsImdldEhvdmVyRGF0YSIsInNob3VsZFJlbmRlckxheWVyIiwiaXNWaXNpYmxlIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJvbGRMYXllckRhdGEiLCJfZGF0YXNldCRtZXRhZGF0YSIsImRhdGFJZCIsIm5vdE51bGxvclVuZGVmaW5lZCIsImRhdGFzZXQiLCJkYXRhVXBkYXRlVHJpZ2dlcnMiLCJnZXREYXRhVXBkYXRlVHJpZ2dlcnMiLCJ0cmlnZ2VyQ2hhbmdlZCIsImdldENoYW5nZWRUcmlnZ2VycyIsImdldE1ldGEiLCJ1cGRhdGVMYXllck1ldGEiLCJ0aWxlU291cmNlIiwibWV0YWRhdGEiLCJwbXRpbGVzVHlwZSIsIlBNVGlsZXNUeXBlIiwiUkFTVEVSIiwibWV0YWRhdGFVcmwiLCJfcmVmIiwib2xkRGF0YXNldCIsIm9sZFRpbGVTb3VyY2UiLCJkYXRhIiwiUE1UaWxlc1NvdXJjZSIsImNyZWF0ZURhdGFTb3VyY2UiLCJ1cGRhdGVNZXRhIiwiYm91bmRzIiwiZ2V0U1RBQ0JvdW5kcyIsInNldEluaXRpYWxMYXllckNvbmZpZyIsInVwZGF0ZUxheWVyVmlzQ29uZmlnIiwidXNlU1RBQ1NlYXJjaGluZyIsImF2YWlsYWJsZUJhbmRzIiwiZ2V0RU9CYW5kcyIsInNpbmdsZUJhbmROYW1lIiwiYXZhaWxhYmxlUHJlc2V0cyIsImZpbHRlckF2YWlsYWJsZVByZXNldHMiLCJQUkVTRVRfT1BUSU9OUyIsImluY2x1ZGVzIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJkZWZhdWx0VmFsdWUiLCJjb2xvckRlZmF1bHRzIiwiREFUQV9TT1VSQ0VfQ09MT1JfREVGQVVMVFMiLCJvblZpZXdwb3J0TG9hZCIsInRpbGVzIiwidXBkYXRlTWluTWF4UGl4ZWxWYWx1ZSIsIm5ld1pSYW5nZSIsImNvbXB1dGVaUmFuZ2UiLCJfZ2V0TWluTWF4RnJvbVRpbGUyREgiLCJnZXRNaW5NYXhGcm9tVGlsZTJESGVhZGVycyIsIl9nZXRNaW5NYXhGcm9tVGlsZTJESDIiLCJfc2xpY2VkVG9BcnJheTIiLCJtYXgiLCJtaW5WaWV3cG9ydFBpeGVsVmFsdWUiLCJtYXhWaWV3cG9ydFBpeGVsVmFsdWUiLCJnZXRNaW5NYXhQaXhlbFZhbHVlcyIsImltYWdlcyIsIm1pblBpeGVsVmFsdWUiLCJtYXhQaXhlbFZhbHVlIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJpbWFnZSIsIl9nZXRJbWFnZU1pbk1heCIsImdldEltYWdlTWluTWF4IiwiX2dldEltYWdlTWluTWF4MiIsImVyciIsInJlbmRlckxheWVyIiwib3B0cyIsIl9kYXRhJGRhdGFzZXQiLCJyZW5kZXJQTVRpbGVzTGF5ZXIiLCJyZW5kZXJTdGFjTGF5ZXIiLCJfZGF0YSRkYXRhc2V0MiIsIl90aGlzMiIsImV4cGVyaW1lbnRhbENvbnRleHQiLCJzdGFjX3ZlcnNpb24iLCJfdGhpcyRnZXREZWZhdWx0RGVja0wiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJvcGFjaXR5IiwidmlzaWJsZSIsImhhc1NoYWRvd0VmZmVjdCIsImNvbG9ybWFwSWQiLCJsaW5lYXJSZXNjYWxpbmciLCJsaW5lYXJSZXNjYWxpbmdGYWN0b3IiLCJub25MaW5lYXJSZXNjYWxpbmciLCJnYW1tYUNvbnRyYXN0RmFjdG9yIiwic2lnbW9pZGFsQ29udHJhc3RGYWN0b3IiLCJzaWdtb2lkYWxCaWFzRmFjdG9yIiwic2F0dXJhdGlvblZhbHVlIiwiZmlsdGVyRW5hYmxlZCIsImZpbHRlclJhbmdlIiwic3RhY1NlYXJjaFByb3ZpZGVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsIl9zdGFjUXVlcnkiLCJjYXRlZ29yaWNhbENvbG9yTWFwIiwiY29sb3JNYXAiLCJkeW5hbWljQ29sb3IiLCJzaG91bGRMb2FkVGVycmFpbiIsIkRhdGUiLCJiYW5kQ29tYmluYXRpb24iLCJnZXRTaW5nbGVCYW5kUHJlc2V0T3B0aW9ucyIsImRhdGFTb3VyY2VQYXJhbXMiLCJtaW5ab29tIiwibWF4Wm9vbSIsImdsb2JhbEJvdW5kcyIsImxvYWRBc3NldElkcyIsImxvYWRCYW5kSW5kZXhlcyIsInJlbmRlckJhbmRJbmRleGVzIiwiZGF0YVR5cGUiLCJkc01pblBpeGVsVmFsdWUiLCJkc01heFBpeGVsVmFsdWUiLCJtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSIsIm1heENhdGVnb3JpY2FsQmFuZFZhbHVlIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRUaWxlRGF0YUN1c3RvbVByb3BzIiwidGlsZUxheWVyIiwiVGlsZUxheWVyIiwidGlsZVNpemUiLCJnZXRUaWxlRGF0YSIsImFyZ3MiLCJiaW5kIiwicmVuZGVyU3ViTGF5ZXJzIiwicmVuZGVyU3ViTGF5ZXJzU3RhYyIsIm1heFJlcXVlc3RzIiwiZ2V0TWF4UmVxdWVzdHMiLCJ1cGRhdGVUcmlnZ2VycyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZWZpbmVtZW50U3RyYXRlZ3kiLCJoYXNDYXRlZ29yaWNhbENvbG9yTWFwIiwiX2RhdGEkZGF0YXNldDMiLCJfdGhpczMiLCJfdGhpcyRnZXREZWZhdWx0RGVja0wyIiwic2hvd1RpbGVCb3JkZXJzIiwiZ2V0VGlsZURhdGFQTVRpbGVzIiwicGlja2FibGUiLCJhdXRvSGlnaGxpZ2h0Iiwiem9vbU9mZnNldCIsInJlbmRlclN1YkxheWVyc1BNVGlsZXMiLCJfZ2V0VGlsZURhdGEiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9wcm9wcyRiYm94Iiwid2VzdCIsInNvdXRoIiwiZWFzdCIsIm5vcnRoIiwiem9vbSIsImFzc2V0UmVxdWVzdHMiLCJ0ZXJyYWluIiwiX3lpZWxkJFByb21pc2UkYWxsIiwiX3lpZWxkJFByb21pc2UkYWxsMiIsIl90ZXJyYWluIiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWIiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWMiIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsImJib3giLCJpbmRleCIsInoiLCJiYm94SW50ZXJzZWN0cyIsImFicnVwdCIsImdldFNUQUNJbWFnZVJlcXVlc3RzIiwic2VudCIsInQwIiwibG9hZFRlcnJhaW4iLCJib3VuZHNGb3JHZW9tZXRyeSIsInNpZ25hbCIsIlByb21pc2UiLCJhbGwiLCJsb2FkSW1hZ2VzIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsImltYWdlQmFuZHMiLCJ0MSIsInN0b3AiLCJfeCIsIl9nZXRUaWxlRGF0YVBNVGlsZXMiLCJfY2FsbGVlMiIsIl9wcm9wcyRiYm94MiIsIl95aWVsZCRQcm9taXNlJGFsbDMiLCJfeWllbGQkUHJvbWlzZSRhbGw0IiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWMyIsIl90aGlzJGdldE1pbk1heFBpeGVsVjQiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJfeDIiLCJfeDMiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJuZXdMYXllclByb3AiLCJsYWJlbCIsIktlcGxlckxheWVyIiwidGlsZSIsImdsb2JhbE1pblBpeGVsVmFsdWUiLCJnbG9iYWxNYXhQaXhlbFZhbHVlIiwidGlsZU1pblBpeGVsVmFsdWUiLCJ0aWxlTWF4UGl4ZWxWYWx1ZSIsIl9nZXRNb2R1bGVzIiwiZ2V0TW9kdWxlcyIsIm1vZHVsZXMiLCJtb2R1bGVQcm9wcyIsImlkU3VmZml4IiwiUmFzdGVyTWVzaExheWVyIiwibWVzaCIsImdldFBvbHlnb25PZmZzZXQiLCJjb29yZGluYXRlU3lzdGVtIiwiQ09PUkRJTkFURV9TWVNURU0iLCJMTkdMQVQiLCJnZXRDb2xvciIsIlJhc3RlckxheWVyIiwiX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbSIsIkNBUlRFU0lBTiIsIl9wcm9wcyRkYXRhIiwiX3Byb3BzJHRpbGUiLCJfcHJvcHMkdGlsZSRiYm94IiwibGF5ZXJzIiwibWltZVR5cGUiLCJnZXRSYXN0ZXJMYXllclBNVGlsZXMiLCJib3JkZXJDb2xvciIsIlBhdGhMYXllciIsImdldFBhdGgiLCJkIiwid2lkdGhNaW5QaXhlbHMiLCJpbWFnZVJnYmEiLCJfZ2V0TW9kdWxlczIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmFzdGVyLXRpbGUvcmFzdGVyLXRpbGUtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtDT09SRElOQVRFX1NZU1RFTSwgTGF5ZXIgYXMgRGVja0xheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCB7VGlsZUxheWVyLCBHZW9Cb3VuZGluZ0JveH0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycy90eXBlZCc7XG5pbXBvcnQge1BNVGlsZXNTb3VyY2UsIFBNVGlsZXNUaWxlU291cmNlfSBmcm9tICdAbG9hZGVycy5nbC9wbXRpbGVzJztcbmltcG9ydCB7VGV4dHVyZTJEUHJvcHN9IGZyb20gJ0BsdW1hLmdsL3dlYmdsJztcbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcblxuaW1wb3J0IHtQYXRoTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycy90eXBlZCc7XG5pbXBvcnQge0RhdGFzZXRUeXBlLCBQTVRpbGVzVHlwZSwgTEFZRVJfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7UmFzdGVyTGF5ZXIsIFJhc3Rlck1lc2hMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcbmltcG9ydCB7XG4gIExheWVyQmFzZUNvbmZpZyxcbiAgTGF5ZXJDb2xvckNvbmZpZyxcbiAgTGF5ZXJIZWlnaHRDb25maWcsXG4gIFZpc3VhbENoYW5uZWwsXG4gIFZpc0NvbmZpZ0NvbG9yUmFuZ2UsXG4gIFZpc0NvbmZpZ1NlbGVjdGlvbixcbiAgVmlzQ29uZmlnQm9vbGVhbixcbiAgVmlzQ29uZmlnSW5wdXQsXG4gIFZpc0NvbmZpZ1JhbmdlLFxuICBWaXNDb25maWdOdW1iZXJcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0RhdGFzZXRzLCBLZXBsZXJUYWJsZSBhcyBLZXBsZXJEYXRhc2V0LCBWZWN0b3JUaWxlTWV0YWRhdGF9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7cmFzdGVyVmlzQ29uZmlncywgUFJFU0VUX09QVElPTlMsIERBVEFfU09VUkNFX0NPTE9SX0RFRkFVTFRTfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge2dldE1vZHVsZXN9IGZyb20gJy4vZ3B1LXV0aWxzJztcbmltcG9ydCB7Z2V0U1RBQ0ltYWdlUmVxdWVzdHMsIGxvYWRJbWFnZXMsIGxvYWRUZXJyYWlufSBmcm9tICcuL2ltYWdlJztcbmltcG9ydCBSYXN0ZXJJY29uIGZyb20gJy4vcmFzdGVyLXRpbGUtaWNvbic7XG5pbXBvcnQge1xuICBnZXREYXRhU291cmNlUGFyYW1zLFxuICBnZXRNYXhSZXF1ZXN0cyxcbiAgYmJveEludGVyc2VjdHMsXG4gIGNvbXB1dGVaUmFuZ2UsXG4gIGdldFNUQUNCb3VuZHMsXG4gIGdldEVPQmFuZHMsXG4gIGZpbHRlckF2YWlsYWJsZVByZXNldHMsXG4gIGdldFNpbmdsZUJhbmRQcmVzZXRPcHRpb25zLFxuICBnZXRJbWFnZU1pbk1heCxcbiAgZ2V0TWluTWF4RnJvbVRpbGUyREhlYWRlcnNcbn0gZnJvbSAnLi9yYXN0ZXItdGlsZS11dGlscyc7XG5pbXBvcnQge1xuICBHZXRUaWxlRGF0YUN1c3RvbVByb3BzLFxuICBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcyxcbiAgR2V0VGlsZURhdGFQcm9wcyxcbiAgUmVuZGVyU3ViTGF5ZXJzUHJvcHMsXG4gIEdldFRpbGVEYXRhT3V0cHV0LFxuICBEYXRhU291cmNlUGFyYW1zLFxuICBLZXBsZXJSYXN0ZXJEYXRhc2V0LFxuICBUaWxlMkRIZWFkZXIsXG4gIFByZXNldE9wdGlvbixcbiAgQ29tcGxldGVTVEFDT2JqZWN0XG59IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQge0ZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlfSBmcm9tICcuLi9sYXllci11dGlscyc7XG5pbXBvcnQge2RlZmF1bHQgYXMgS2VwbGVyTGF5ZXIsIExheWVyQmFzZUNvbmZpZ1BhcnRpYWx9IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuXG4vLyBBZGp1c3QgdGlsZVNpemUgdG8gZGV2aWNlUGl4ZWxSYXRpbywgYnV0IG5vdCBoaWdoZXIgdGhhbiAyIHRvIHJlZHVjZSByZXF1ZXN0cyB0byBzZXJ2ZXJcbmNvbnN0IGRldmljZVBpeGVsUmF0aW86IG51bWJlciA9IE1hdGgubWluKFxuICAyLFxuICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRldmljZVBpeGVsUmF0aW8pIHx8IDFcbik7XG5cbi8vIEdsb2JhbCBjb3VudGVyIHRoYXQgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHRpbGVzIGN1cnJlbnRseSBiZWluZyBsb2FkZWQgYWNyb3NzIGFsbCB0aGUgcmFzdGVyIHRpbGUgbGF5ZXJzXG5sZXQgdGlsZXNCZWluZ0xvYWRlZCA9IDA7XG5cbi8vIFRoaXMgaXMgYSB0ZW1wIHNvbHV0aW9uIHRvIHRyYWNrIGxvYWRpbmdcbmV4cG9ydCBjb25zdCBnZXROdW1SYXN0ZXJUaWxlc0JlaW5nTG9hZGVkID0gKCkgPT4ge1xuICByZXR1cm4gdGlsZXNCZWluZ0xvYWRlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBMT0FEX0VMRVZBVElPTl9BRlRFUl9aT09NID0gOC45O1xuXG5jb25zdCBnZXRTaG91bGRMb2FkVGVycmFpbiA9IChzdGFjLCBtYXBTdGF0ZSwgdmlzQ29uZmlnKSA9PiB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIC8vIHdlIG5lZWQgYSByYXN0ZXIgdGlsZSBzZXJ2ZXIgZm9yIGVsZXZhdGlvbnMgZXZlbiB3aGVuIHdlIHVzZXIgUE1UaWxlc1xuICAgIHN0YWMucmFzdGVyVGlsZVNlcnZlclVybHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgIC8vIGNoZWNrIHRoZSBzd2l0Y2ggZnJvbSB0aGUgbGF5ZXIgY29uZmlndXJhdG9yXG4gICAgICB2aXNDb25maWcuZW5hYmxlVGVycmFpbiAmJlxuICAgICAgLy8gZm9yIG5vdyBvbmx5IGluIDNEIG1vZGUsIG5vdCB0b3AgbW9kZVxuICAgICAgbWFwU3RhdGUuZHJhZ1JvdGF0ZSAmJlxuICAgICAgZ2V0QXBwbGljYXRpb25Db25maWcoKS5yYXN0ZXJTZXJ2ZXJTdXBwb3J0c0VsZXZhdGlvblxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnQ29tbW9uU2V0dGluZ3MgPSB7XG4gIG9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgZW5hYmxlVGVycmFpbjogVmlzQ29uZmlnQm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ1NldHRpbmdzID0gUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnQ29tbW9uU2V0dGluZ3MgJiB7XG4gIHByZXNldDogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICB1c2VTVEFDU2VhcmNoaW5nOiBWaXNDb25maWdCb29sZWFuO1xuICBzdGFjU2VhcmNoUHJvdmlkZXI6IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbiAgc3RhcnREYXRlOiBWaXNDb25maWdJbnB1dDtcbiAgZW5kRGF0ZTogVmlzQ29uZmlnSW5wdXQ7XG4gIGR5bmFtaWNDb2xvcjogVmlzQ29uZmlnQm9vbGVhbjtcbiAgY29sb3JtYXBJZDogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICBsaW5lYXJSZXNjYWxpbmdGYWN0b3I6IFZpc0NvbmZpZ1JhbmdlO1xuICBub25MaW5lYXJSZXNjYWxpbmc6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIGdhbW1hQ29udHJhc3RGYWN0b3I6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2lnbW9pZGFsQ29udHJhc3RGYWN0b3I6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2lnbW9pZGFsQmlhc0ZhY3RvcjogVmlzQ29uZmlnTnVtYmVyO1xuICBzYXR1cmF0aW9uVmFsdWU6IFZpc0NvbmZpZ051bWJlcjtcbiAgZmlsdGVyRW5hYmxlZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgZmlsdGVyUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICBfc3RhY1F1ZXJ5OiBWaXNDb25maWdJbnB1dDtcbiAgc2luZ2xlQmFuZE5hbWU6IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbn07XG5cbnR5cGUgUmFzdGVyVGlsZUxheWVyTWV0YSA9IHtcbiAgelJhbmdlOiBudW1iZXJbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYXN0ZXJUaWxlTGF5ZXIgZXh0ZW5kcyBLZXBsZXJMYXllciB7XG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIG1ldGE6IFJhc3RlclRpbGVMYXllck1ldGE7XG5cbiAgLyoqIE1pbiBiYW5kcyBpbWFnZSBkYXRhIHZhbHVlLCBiYXNlZCBvbiB0aGUgY3VycmVudCB2aWV3cG9ydCAqL1xuICBtaW5WaWV3cG9ydFBpeGVsVmFsdWUgPSBJbmZpbml0eTtcbiAgLyoqIE1heCBiYW5kcyBpbWFnZSBkYXRhIHZhbHVlLCBiYXNlZCBvbiB0aGUgY3VycmVudCB2aWV3cG9ydCAqL1xuICBtYXhWaWV3cG9ydFBpeGVsVmFsdWUgPSAtSW5maW5pdHk7XG4gIC8qKiBNZW1vaXplZCBtZXRob2QgdGhhdCBjYWxjdWxhdGVzIGRhdGEgc291cmNlIHBhcmFtcyAqL1xuXG4gIGdldERhdGFTb3VyY2VQYXJhbXM6IChcbiAgICBzdGFjOiBDb21wbGV0ZVNUQUNPYmplY3QsXG4gICAgcHJlc2V0OiBzdHJpbmcsXG4gICAgcHJlc2V0T3B0aW9uczogUHJlc2V0T3B0aW9uXG4gICkgPT4gRGF0YVNvdXJjZVBhcmFtcyB8IG51bGw7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhyYXN0ZXJWaXNDb25maWdzKTtcblxuICAgIC8vIE5vIHR3byBTVEFDIGlkcyBtYXkgYmUgdGhlIHNhbWUgd2l0aGluIGEgc2luZ2xlIGNvbGxlY3Rpb24sIHRob3VnaCBpdCdzIGNvbmNlaXZhYmx5IHBvc3NpYmxlXG4gICAgLy8gYWNyb3NzIG11bHRpcGxlIFNUQUMgY29sbGVjdGlvbnMgdGhlcmUgY291bGQgYmUgYW4gaWQgY29sbGlzaW9uLiBOb3RlOiBTVEFDIENvbGxlY3Rpb25cbiAgICAvLyBvYmplY3RzIGRvbid0IGhhdmUgYSBgY29sbGVjdGlvbmAga2V5OyBTVEFDIEl0ZW0gb2JqZWN0cyBoYXZlIGEgYGNvbGxlY3Rpb25gIGtleSAod2hpY2hcbiAgICAvLyBtYXRjaGVzIHRoZSBjb2xsZWN0aW9uJ3MgYGlkYCkuXG4gICAgY29uc3QgcmVzb2x2ZXIgPSAoc3RhYzogQ29tcGxldGVTVEFDT2JqZWN0LCBwcmVzZXQ6IHN0cmluZywgcHJlc2V0T3B0aW9uczogUHJlc2V0T3B0aW9uKSA9PlxuICAgICAgYCR7c3RhYy5pZH0tJHtzdGFjLmNvbGxlY3Rpb259LSR7cHJlc2V0fS0ke3ByZXNldE9wdGlvbnMuc2luZ2xlQmFuZD8uYXNzZXRJZH0tJHtwcmVzZXRPcHRpb25zLnNpbmdsZUJhbmQ/LmJhbmRJbmRleH1gO1xuICAgIHRoaXMuZ2V0RGF0YVNvdXJjZVBhcmFtcyA9IG1lbW9pemUoXG4gICAgICAoc3RhYywgcHJlc2V0LCBwcmVzZXRPcHRpb25zKSA9PiBnZXREYXRhU291cmNlUGFyYW1zKHN0YWMsIHByZXNldCwgcHJlc2V0T3B0aW9ucyksXG4gICAgICByZXNvbHZlclxuICAgICk7XG5cbiAgICB0aGlzLm1ldGEgPSB7elJhbmdlOiBudWxsfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldDogS2VwbGVyRGF0YXNldCk6IEZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlIHtcbiAgICBpZiAoZGF0YXNldC50eXBlICE9PSBEYXRhc2V0VHlwZS5SQVNURVJfVElMRSkge1xuICAgICAgcmV0dXJuIHtwcm9wczogW119O1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0xheWVyUHJvcCA9IHtcbiAgICAgIGRhdGFJZDogZGF0YXNldC5pZCxcbiAgICAgIGxhYmVsOiBkYXRhc2V0LmxhYmVsLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgfTtcblxuICAgIHJldHVybiB7cHJvcHM6IFtuZXdMYXllclByb3BdfTtcbiAgfVxuXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIExBWUVSX1RZUEVTLnJhc3RlclRpbGU7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnUmFzdGVyIFRpbGUnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpOiBLZXBsZXJMYXllclsnbGF5ZXJJY29uJ10ge1xuICAgIHJldHVybiBSYXN0ZXJJY29uO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZERhdGFzZXRUeXBlcygpOiBEYXRhc2V0VHlwZVtdIHtcbiAgICByZXR1cm4gW0RhdGFzZXRUeXBlLlJBU1RFUl9USUxFXTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpOiBSZWNvcmQ8c3RyaW5nLCBWaXN1YWxDaGFubmVsPiB7XG4gICAgY29uc3Qge1xuICAgICAgdmlzQ29uZmlnOiB7XG4gICAgICAgIGNvbG9yUmFuZ2U6IHtjb2xvckxlZ2VuZHM6IGNhdGVnb3JpY2FsQ29sb3JMZWdlbmRzfVxuICAgICAgfVxuICAgIH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoY2F0ZWdvcmljYWxDb2xvckxlZ2VuZHMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOiBzdXBlci52aXN1YWxDaGFubmVscy5jb2xvclxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIGdldCByZXF1aXJlRGF0YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhcbiAgICBwcm9wczogTGF5ZXJCYXNlQ29uZmlnUGFydGlhbFxuICApOiBMYXllckJhc2VDb25maWcgJiBQYXJ0aWFsPExheWVyQ29sb3JDb25maWcgJiBMYXllckhlaWdodENvbmZpZz4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5nZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHMpLFxuICAgICAgY29sb3JGaWVsZDoge1xuICAgICAgICBhbmFseXplclR5cGU6ICcnLFxuICAgICAgICBuYW1lOiAnQ2F0ZWdvcnknLFxuICAgICAgICBmb3JtYXQ6ICcnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZmllbGRJZHg6IC0xLFxuICAgICAgICB2YWx1ZUFjY2Vzc29yOiAoKSA9PiAnJyxcbiAgICAgICAgZGlzcGxheU5hbWU6ICdDYXRlZ29yeSdcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gV2UgY2FuIHJlbmRlciB3aXRob3V0IGNvbHVtbnMsIHNvIHdlIHJlZGVmaW5lIHRoaXMgbWV0aG9kXG4gIHNob3VsZFJlbmRlckxheWVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMudHlwZSAmJiB0aGlzLmNvbmZpZy5pc1Zpc2libGUpO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzOiBEYXRhc2V0cywgb2xkTGF5ZXJEYXRhPzogYW55KSB7XG4gICAgY29uc3Qge2RhdGFJZH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChkYXRhSWQpKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgLy8gY2FsbCB1cGRhdGVEYXRhIHRvIHVwZGF0ZUxheWVyTWV0YVxuICAgIGNvbnN0IGRhdGFVcGRhdGVUcmlnZ2VycyA9IHRoaXMuZ2V0RGF0YVVwZGF0ZVRyaWdnZXJzKGRhdGFzZXQpO1xuICAgIGNvbnN0IHRyaWdnZXJDaGFuZ2VkID0gdGhpcy5nZXRDaGFuZ2VkVHJpZ2dlcnMoZGF0YVVwZGF0ZVRyaWdnZXJzKTtcblxuICAgIGlmICh0cmlnZ2VyQ2hhbmdlZCAmJiB0cmlnZ2VyQ2hhbmdlZC5nZXRNZXRhKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhc2V0IGFzIEtlcGxlclJhc3RlckRhdGFzZXQpO1xuICAgIH1cblxuICAgIGxldCB0aWxlU291cmNlOiBQTVRpbGVzVGlsZVNvdXJjZSB8IG51bGwgPSBudWxsO1xuICAgIGlmIChkYXRhc2V0Lm1ldGFkYXRhPy5wbXRpbGVzVHlwZSA9PT0gUE1UaWxlc1R5cGUuUkFTVEVSKSB7XG4gICAgICBjb25zdCBtZXRhZGF0YVVybCA9IGRhdGFzZXQubWV0YWRhdGEubWV0YWRhdGFVcmw7XG4gICAgICAvLyB1c2UgdGhlIG9sZCB0aWxlIHNvdXJjZSBpZiBpdCBleGlzdHMgYW5kIG1hdGNoZXMgdGhlIG5ldyBtZXRhZGF0YVVybFxuICAgICAgY29uc3Qge2RhdGFzZXQ6IG9sZERhdGFzZXQsIHRpbGVTb3VyY2U6IG9sZFRpbGVTb3VyY2V9ID0gb2xkTGF5ZXJEYXRhIHx8IHt9O1xuICAgICAgaWYgKG9sZERhdGFzZXQgPT09IGRhdGFzZXQgJiYgb2xkVGlsZVNvdXJjZT8uZGF0YSA9PT0gbWV0YWRhdGFVcmwpIHtcbiAgICAgICAgdGlsZVNvdXJjZSA9IG9sZExheWVyRGF0YS50aWxlU291cmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGlsZVNvdXJjZSA9IG1ldGFkYXRhVXJsID8gUE1UaWxlc1NvdXJjZS5jcmVhdGVEYXRhU291cmNlKG1ldGFkYXRhVXJsLCB7fSkgOiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7ZGF0YXNldCwgdGlsZVNvdXJjZX07XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YXNldDogS2VwbGVyUmFzdGVyRGF0YXNldCk6IHZvaWQge1xuICAgIGlmIChkYXRhc2V0LnR5cGUgIT09IERhdGFzZXRUeXBlLlJBU1RFUl9USUxFKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhYyA9IGRhdGFzZXQubWV0YWRhdGE7XG4gICAgaWYgKHN0YWMucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTWV0YSh7XG4gICAgICAgIGJvdW5kczogc3RhYy5ib3VuZHNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGJvdW5kcyA9IGdldFNUQUNCb3VuZHMoc3RhYyk7XG4gICAgaWYgKGJvdW5kcykge1xuICAgICAgLy8gSWYgYSBTVEFDIEl0ZW0gKGkuZS4gc3RhYy50eXBlID09PSAnRmVhdHVyZScpLCB0aGVuIHNldCBtYXAgYm91bmRzLlxuICAgICAgLy8gQnV0IHdlIGRvbid0IHdhbnQgdG8gc2V0IGJvdW5kcyBmb3IgTGFuZHNhdCBvciBTZW50aW5lbCBiZWNhdXNlIGl0IHdvdWxkIHpvb20gb3V0IHRvIHpvb21cbiAgICAgIC8vIDAsIGFuZCB3ZSBkb24ndCBoYXZlIGxvdy16b29tIHRpbGVzLlxuICAgICAgaWYgKHN0YWMudHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB3aGVuIGFkZGluZyBhIG5ldyBkYXRhc2V0XG4gICAqL1xuICBzZXRJbml0aWFsTGF5ZXJDb25maWcoZGF0YXNldDogS2VwbGVyRGF0YXNldCk6IFJhc3RlclRpbGVMYXllciB7XG4gICAgY29uc3Qgc3RhYyA9IGRhdGFzZXQ/Lm1ldGFkYXRhIGFzIEdldFRpbGVEYXRhQ3VzdG9tUHJvcHNbJ3N0YWMnXTtcblxuICAgIGlmICghc3RhYykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHN0YWMucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gV2hlbiBhIFNUQUMgQ29sbGVjdGlvbiBpcyBhZGRlZCwgdXNlU3RhY1NlYXJjaGluZyBzaG91bGQgYmUgdHJ1ZSB0byBwcmV2ZW50IGEgYmxhY2sgc2NyZWVuXG4gICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh7XG4gICAgICB1c2VTVEFDU2VhcmNoaW5nOiBzdGFjLnR5cGUgPT09ICdDb2xsZWN0aW9uJ1xuICAgIH0pO1xuXG4gICAgLy8gU2V0IHNpbmdsZUJhbmROYW1lIGlmIHRoZXJlIGlzIG9ubHkgb25lIGJhbmRcbiAgICBjb25zdCBhdmFpbGFibGVCYW5kcyA9IGdldEVPQmFuZHMoc3RhYykgfHwgW107XG4gICAgaWYgKGF2YWlsYWJsZUJhbmRzPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe3NpbmdsZUJhbmROYW1lOiBhdmFpbGFibGVCYW5kc1swXS5uYW1lfSk7XG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIHRoZSBwcmVzZXQgaWYgdGhlIGRlZmF1bHQgb25lIGlzIG5vdCBhbGxvd2VkXG4gICAgY29uc3QgYXZhaWxhYmxlUHJlc2V0cyA9IGZpbHRlckF2YWlsYWJsZVByZXNldHMoc3RhYywgUFJFU0VUX09QVElPTlMpO1xuICAgIGlmIChcbiAgICAgIGF2YWlsYWJsZVByZXNldHM/Lmxlbmd0aCAmJlxuICAgICAgIWF2YWlsYWJsZVByZXNldHM/LmluY2x1ZGVzKHRoaXMudmlzQ29uZmlnU2V0dGluZ3MucHJlc2V0LmRlZmF1bHRWYWx1ZSBhcyBzdHJpbmcpXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHtwcmVzZXQ6IGF2YWlsYWJsZVByZXNldHNbMF19KTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBpbXByb3ZlZCBpbWFnZSBwcm9jZXNzaW5nIHByb3BzIG9ubHkgZm9yIG5vbiBzaW5nbGUgYmFuZCBtb2Rlc1xuICAgIGNvbnN0IHByZXNldCA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5wcmVzZXQ7XG4gICAgY29uc3QgY29sb3JEZWZhdWx0cyA9IERBVEFfU09VUkNFX0NPTE9SX0RFRkFVTFRTW3N0YWMuaWRdO1xuICAgIGlmIChjb2xvckRlZmF1bHRzICYmIHByZXNldCAhPT0gJ3NpbmdsZUJhbmQnKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKGNvbG9yRGVmYXVsdHMpO1xuICAgIH1cblxuICAgIC8qXG4gICAgTGFuZFNhdCBzcGVjaWZpZXMgdGVtcG9yYWwgYm91bmRzIGJ1dCB0aGUgdmFsaWQgZGF0YSBpcyBhZnRlciBlbmQgZGF0ZVxuICAgIGNvbnN0IHVwZGF0ZWREYXRlcyA9IHRpbWVSYW5nZVRvU3RhY1RlbXBvcmFsSW50ZXJ2YWwoXG4gICAgICBzdGFjIGFzIFN0YWNUeXBlcy5TVEFDQ29sbGVjdGlvbixcbiAgICAgIHRoaXMuY29uZmlnLnZpc0NvbmZpZy5zdGFydERhdGUsXG4gICAgICB0aGlzLmNvbmZpZy52aXNDb25maWcuZW5kRGF0ZVxuICAgICk7XG4gICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh1cGRhdGVkRGF0ZXMpO1xuICAgICovXG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgelJhbmdlIG9mIHZpZXdwb3J0LiBUaGlzIGlzIG5lY2Vzc2FyeSBzbyB0aGF0IHRpbGVzIGluIGV4dHJ1ZGVkIG1vZGUgYXJlIHNob3duIHByb3Blcmx5XG4gICAqIGF0IGhpZ2ggZWxldmF0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL2ZvdXJzcXVhcmUvc3R1ZGlvLW1vbm9yZXBvL3B1bGwvMTg5Mi9maWxlc1xuICAgKiBEZXJpdmVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2RlY2suZ2wvYmxvYi84ZDgyNGE0YjgzNmZlZTNiZmViZTZmYzk2MmUwZjAzZDhjMWRiZDBkL21vZHVsZXMvZ2VvLWxheWVycy9zcmMvdGVycmFpbi1sYXllci90ZXJyYWluLWxheWVyLmpzI0wxNzMtTDE5NlxuICAgKlxuICAgKiBAcGFyYW0gdGlsZXMgQXJyYXkgb2YgdGlsZXMgaW4gY3VycmVudCB2aWV3cG9ydFxuICAgKi9cbiAgb25WaWV3cG9ydExvYWQodGlsZXM6IChUaWxlMkRIZWFkZXIgfCBudWxsKVtdKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNaW5NYXhQaXhlbFZhbHVlKHRpbGVzKTtcbiAgICBjb25zdCBuZXdaUmFuZ2UgPSBjb21wdXRlWlJhbmdlKHRpbGVzKTtcbiAgICBpZiAoIW5ld1pSYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHt6UmFuZ2V9ID0gdGhpcy5tZXRhO1xuICAgIGlmICghelJhbmdlIHx8IG5ld1pSYW5nZVswXSA8IHpSYW5nZVswXSB8fCBuZXdaUmFuZ2VbMV0gPiB6UmFuZ2VbMV0pIHtcbiAgICAgIHRoaXMubWV0YS56UmFuZ2UgPSBuZXdaUmFuZ2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2aWV3cG9ydC1yZWxhdGVkIG1pblB4ZWxWYWx1ZSBhbmQgbWF4UGl4ZWxWYWx1ZVxuICAgKiBAcGFyYW0gdGlsZXMgLSBkZWNrLmdsIHRpbGVzXG4gICAqL1xuICB1cGRhdGVNaW5NYXhQaXhlbFZhbHVlKHRpbGVzOiAoVGlsZTJESGVhZGVyIHwgbnVsbClbXSk6IHZvaWQge1xuICAgIGNvbnN0IFttaW4sIG1heF0gPSBnZXRNaW5NYXhGcm9tVGlsZTJESGVhZGVycyh0aWxlcyk7XG4gICAgdGhpcy5taW5WaWV3cG9ydFBpeGVsVmFsdWUgPSBtaW47XG4gICAgdGhpcy5tYXhWaWV3cG9ydFBpeGVsVmFsdWUgPSBtYXg7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIG1pbiBhbmQgbWF4IHZhbHVlcyBvZiBpbnB1dCByYXN0ZXIgYmFuZCBpbWFnZSBwcm9wZXJ0aWVzXG4gICAqIGFuZCB1cGRhdGUgYG1pbkJhbmRzVmFsdWVgIGFuZCBgbWF4QmFuZHNWYWx1ZWBcbiAgICogQHBhcmFtIGltYWdlcyAtIHJhc3RlciBiYW5kIGltYWdlIHByb3BlcnRpZXNcbiAgICogQHJldHVybiBbbWluLCBtYXhdIHBpeGVsIHZhbHVlcyBmb3IgdGhlIHRpbGVcbiAgICovXG4gIGdldE1pbk1heFBpeGVsVmFsdWVzKGltYWdlczogVGV4dHVyZTJEUHJvcHNbXSB8IG51bGwpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBsZXQgbWluUGl4ZWxWYWx1ZSA9IEluZmluaXR5O1xuICAgIGxldCBtYXhQaXhlbFZhbHVlID0gLUluZmluaXR5O1xuICAgIGlmIChpbWFnZXMpIHtcbiAgICAgIGZvciAoY29uc3QgaW1hZ2Ugb2YgaW1hZ2VzKSB7XG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBnZXRJbWFnZU1pbk1heChpbWFnZS5kYXRhKTtcbiAgICAgICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgbWluUGl4ZWxWYWx1ZSA9IE1hdGgubWluKG1pbiwgbWluUGl4ZWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtYXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgbWF4UGl4ZWxWYWx1ZSA9IE1hdGgubWF4KG1heCwgbWF4UGl4ZWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFttaW5QaXhlbFZhbHVlLCBtYXhQaXhlbFZhbHVlXTtcbiAgfVxuXG4gIC8vIGdlbmVyYXRlIGEgZGVjayBsYXllclxuICByZW5kZXJMYXllcihvcHRzKTogVGlsZUxheWVyPGFueT5bXSB7XG4gICAgY29uc3Qge2RhdGF9ID0gb3B0cztcblxuICAgIGlmIChkYXRhPy5kYXRhc2V0Py5tZXRhZGF0YT8ucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyUE1UaWxlc0xheWVyKG9wdHMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZW5kZXJTdGFjTGF5ZXIob3B0cyk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclN0YWNMYXllcihvcHRzKTogVGlsZUxheWVyPGFueT5bXSB7XG4gICAgY29uc3Qge2RhdGEsIG1hcFN0YXRlLCBleHBlcmltZW50YWxDb250ZXh0fSA9IG9wdHM7XG4gICAgY29uc3Qgc3RhYyA9IGRhdGE/LmRhdGFzZXQ/Lm1ldGFkYXRhIGFzIEdldFRpbGVEYXRhQ3VzdG9tUHJvcHNbJ3N0YWMnXTtcblxuICAgIC8vIElmIGEgdGFidWxhciBkYXRhc2V0IGlzIGxvYWRlZCwgYW5kIHRoZW4gdGhlIGxheWVyIHR5cGUgaXMgc3dpdGNoZWQgZnJvbSBQb2ludCB0byBSYXN0ZXIgVGlsZVxuICAgIC8vIGxheWVyLCB0aGlzIGBzdGFjYCBvYmplY3Qgd2lsbCBleGlzdCBidXQgd2lsbCBub3QgYmUgcmFzdGVyIG1ldGFkYXRhXG4gICAgaWYgKCFzdGFjIHx8ICFzdGFjLnN0YWNfdmVyc2lvbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qge2lkLCBvcGFjaXR5LCB2aXNpYmxlfSA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuXG4gICAgY29uc3QgaGFzU2hhZG93RWZmZWN0ID0gZXhwZXJpbWVudGFsQ29udGV4dD8uaGFzU2hhZG93RWZmZWN0O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJlc2V0LFxuICAgICAgY29sb3JtYXBJZCxcbiAgICAgIGxpbmVhclJlc2NhbGluZyxcbiAgICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcixcbiAgICAgIG5vbkxpbmVhclJlc2NhbGluZyxcbiAgICAgIGdhbW1hQ29udHJhc3RGYWN0b3IsXG4gICAgICBzaWdtb2lkYWxDb250cmFzdEZhY3RvcixcbiAgICAgIHNpZ21vaWRhbEJpYXNGYWN0b3IsXG4gICAgICBzYXR1cmF0aW9uVmFsdWUsXG4gICAgICBmaWx0ZXJFbmFibGVkLFxuICAgICAgZmlsdGVyUmFuZ2UsXG4gICAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICAgIF9zdGFjUXVlcnksXG4gICAgICBzaW5nbGVCYW5kTmFtZSxcbiAgICAgIGNvbG9yUmFuZ2U6IHtjb2xvck1hcDogY2F0ZWdvcmljYWxDb2xvck1hcH0sXG4gICAgICBkeW5hbWljQ29sb3JcbiAgICB9ID0gdmlzQ29uZmlnO1xuXG4gICAgY29uc3Qgc2hvdWxkTG9hZFRlcnJhaW4gPSBnZXRTaG91bGRMb2FkVGVycmFpbihzdGFjLCBtYXBTdGF0ZSwgdmlzQ29uZmlnKTtcblxuICAgIGlmIChuZXcgRGF0ZShlbmREYXRlKSA8IG5ldyBEYXRlKHN0YXJ0RGF0ZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB7YmFuZENvbWJpbmF0aW9ufSA9IFBSRVNFVF9PUFRJT05TW3ByZXNldF07XG5cbiAgICBjb25zdCBzaW5nbGVCYW5kID0gZ2V0U2luZ2xlQmFuZFByZXNldE9wdGlvbnMoc3RhYywgc2luZ2xlQmFuZE5hbWUpO1xuICAgIGNvbnN0IGRhdGFTb3VyY2VQYXJhbXM6IERhdGFTb3VyY2VQYXJhbXMgfCBudWxsID0gdGhpcy5nZXREYXRhU291cmNlUGFyYW1zKHN0YWMsIHByZXNldCwge1xuICAgICAgc2luZ2xlQmFuZFxuICAgIH0pO1xuXG4gICAgaWYgKCFkYXRhU291cmNlUGFyYW1zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgbWluWm9vbSxcbiAgICAgIG1heFpvb20sXG4gICAgICBnbG9iYWxCb3VuZHMsXG4gICAgICBsb2FkQXNzZXRJZHMsXG4gICAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgICByZW5kZXJCYW5kSW5kZXhlcyxcbiAgICAgIGRhdGFUeXBlLFxuICAgICAgbWluUGl4ZWxWYWx1ZTogZHNNaW5QaXhlbFZhbHVlLFxuICAgICAgbWF4UGl4ZWxWYWx1ZTogZHNNYXhQaXhlbFZhbHVlLFxuICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZVxuICAgIH0gPSBkYXRhU291cmNlUGFyYW1zO1xuXG4gICAgY29uc3QgbWluUGl4ZWxWYWx1ZSA9XG4gICAgICAhZHluYW1pY0NvbG9yICYmIE51bWJlci5pc0Zpbml0ZShkc01pblBpeGVsVmFsdWUpXG4gICAgICAgID8gZHNNaW5QaXhlbFZhbHVlXG4gICAgICAgIDogdGhpcy5taW5WaWV3cG9ydFBpeGVsVmFsdWU7XG4gICAgY29uc3QgbWF4UGl4ZWxWYWx1ZSA9XG4gICAgICAhZHluYW1pY0NvbG9yICYmIE51bWJlci5pc0Zpbml0ZShkc01heFBpeGVsVmFsdWUpXG4gICAgICAgID8gZHNNYXhQaXhlbFZhbHVlXG4gICAgICAgIDogdGhpcy5tYXhWaWV3cG9ydFBpeGVsVmFsdWU7XG5cbiAgICBjb25zdCBnZXRUaWxlRGF0YUN1c3RvbVByb3BzOiBHZXRUaWxlRGF0YUN1c3RvbVByb3BzID0ge1xuICAgICAgc3RhYyxcbiAgICAgIGxvYWRBc3NldElkcyxcbiAgICAgIGxvYWRCYW5kSW5kZXhlcyxcbiAgICAgIGNvbG9ybWFwSWQsXG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgICAgX3N0YWNRdWVyeSxcbiAgICAgIGNhdGVnb3JpY2FsQ29sb3JNYXAsXG4gICAgICBtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlXG4gICAgfTtcblxuICAgIGNvbnN0IHRpbGVMYXllciA9IG5ldyBUaWxlTGF5ZXI8YW55LCBSZW5kZXJTdWJMYXllcnNQcm9wcz4oe1xuICAgICAgaWQsXG4gICAgICBtaW5ab29tLFxuICAgICAgbWF4Wm9vbSxcbiAgICAgIHRpbGVTaXplOiA1MTIgLyBkZXZpY2VQaXhlbFJhdGlvLFxuICAgICAgZ2V0VGlsZURhdGE6IChhcmdzOiBhbnkpID0+IHRoaXMuZ2V0VGlsZURhdGEoey4uLmFyZ3MsIC4uLmdldFRpbGVEYXRhQ3VzdG9tUHJvcHN9KSxcbiAgICAgIG9uVmlld3BvcnRMb2FkOiB0aGlzLm9uVmlld3BvcnRMb2FkLmJpbmQodGhpcyksXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gVFMgZG9lc24ndCBrbm93IHdlJ2xsIHBhc3MgYXBwcm9wcmlhdGUgcHJvcHMgaGVyZVxuICAgICAgcmVuZGVyU3ViTGF5ZXJzOiByZW5kZXJTdWJMYXllcnNTdGFjLFxuICAgICAgbWF4UmVxdWVzdHM6IGdldE1heFJlcXVlc3RzKHN0YWMucmFzdGVyVGlsZVNlcnZlclVybHMgfHwgW10pLFxuICAgICAgLy8gUGFzc2luZyB2aXNpYmxlIG9uIHRvIFRpbGVMYXllciBpcyBuZWNlc3NhcnkgZm9yIHNwbGl0IHZpZXcgdG8gd29ya1xuICAgICAgdmlzaWJsZSxcbiAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgIGdldFRpbGVEYXRhOiBbXG4gICAgICAgICAgc2hvdWxkTG9hZFRlcnJhaW4sXG4gICAgICAgICAgLy8gQ29sb3JtYXAgaGFzIGNoYW5nZWRcbiAgICAgICAgICBjb2xvcm1hcElkLFxuICAgICAgICAgIC8vIGFzc2V0cyB0byBiZSBsb2FkZWQgaGFzIGNoYW5nZWRcbiAgICAgICAgICAuLi5sb2FkQXNzZXRJZHMsXG4gICAgICAgICAgLy8gYmFuZCBpbmRleGVzIHRvIGJlIGxvYWRlZCBoYXMgY2hhbmdlZFxuICAgICAgICAgIC4uLmxvYWRCYW5kSW5kZXhlcyxcbiAgICAgICAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgICAgICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICAgICAgICBzdGFydERhdGUsXG4gICAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgICBfc3RhY1F1ZXJ5LFxuICAgICAgICAgIGNhdGVnb3JpY2FsQ29sb3JNYXAsXG4gICAgICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICAgICAgbWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIFByb3BzIGZvciAzRCBtb2RlXG4gICAgICAuLi4oc2hvdWxkTG9hZFRlcnJhaW5cbiAgICAgICAgPyB7XG4gICAgICAgICAgICB6UmFuZ2U6IHRoaXMubWV0YS56UmFuZ2UgfHwgbnVsbCxcbiAgICAgICAgICAgIHJlZmluZW1lbnRTdHJhdGVneTogJ25vLW92ZXJsYXAnXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICAgIHJlbmRlckJhbmRJbmRleGVzLFxuICAgICAgb3BhY2l0eSxcbiAgICAgIGxpbmVhclJlc2NhbGluZyxcbiAgICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcixcbiAgICAgIG5vbkxpbmVhclJlc2NhbGluZyxcbiAgICAgIG1pblBpeGVsVmFsdWUsXG4gICAgICBtYXhQaXhlbFZhbHVlLFxuICAgICAgZ2FtbWFDb250cmFzdEZhY3RvcixcbiAgICAgIHNpZ21vaWRhbENvbnRyYXN0RmFjdG9yLFxuICAgICAgc2lnbW9pZGFsQmlhc0ZhY3RvcixcbiAgICAgIHNhdHVyYXRpb25WYWx1ZSxcbiAgICAgIGJhbmRDb21iaW5hdGlvbixcbiAgICAgIGZpbHRlckVuYWJsZWQsXG4gICAgICBmaWx0ZXJSYW5nZSxcbiAgICAgIGRhdGFUeXBlLFxuICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgIGhhc0NhdGVnb3JpY2FsQ29sb3JNYXA6IEJvb2xlYW4oY2F0ZWdvcmljYWxDb2xvck1hcCksXG4gICAgICBoYXNTaGFkb3dFZmZlY3RcbiAgICB9KTtcblxuICAgIHJldHVybiBbdGlsZUxheWVyXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUE1UaWxlc0xheWVyKG9wdHMpOiBUaWxlTGF5ZXI8YW55PltdIHtcbiAgICBjb25zdCB7aWQsIG9wYWNpdHksIHZpc2libGV9ID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG5cbiAgICBjb25zdCB7ZGF0YSwgbWFwU3RhdGV9ID0gb3B0cztcbiAgICBjb25zdCBtZXRhZGF0YSA9IGRhdGE/LmRhdGFzZXQ/Lm1ldGFkYXRhIGFzIFZlY3RvclRpbGVNZXRhZGF0YTtcbiAgICBjb25zdCB7dmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgY29uc3QgdGlsZVNvdXJjZSA9IGRhdGEudGlsZVNvdXJjZTtcbiAgICBjb25zdCBzaG93VGlsZUJvcmRlcnMgPSBmYWxzZTtcbiAgICBjb25zdCBtaW5ab29tID0gbWV0YWRhdGEubWluWm9vbSB8fCAwO1xuICAgIGNvbnN0IG1heFpvb20gPSBtZXRhZGF0YS5tYXhab29tIHx8IDMwO1xuXG4gICAgY29uc3Qgc2hvdWxkTG9hZFRlcnJhaW4gPSBnZXRTaG91bGRMb2FkVGVycmFpbihtZXRhZGF0YSwgbWFwU3RhdGUsIHZpc0NvbmZpZyk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IFRpbGVMYXllcjxhbnksIFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ0NvbW1vblNldHRpbmdzPih7XG4gICAgICAgIGlkLFxuICAgICAgICBnZXRUaWxlRGF0YTogKGFyZ3M6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmdldFRpbGVEYXRhUE1UaWxlcyh7Li4uYXJncywgc2hvdWxkTG9hZFRlcnJhaW4sIG1ldGFkYXRhfSwgdGlsZVNvdXJjZSksXG5cbiAgICAgICAgLy8gQXNzdW1lIHRoZSBwbXRpbGVzIGZpbGUgc3VwcG9ydCBIVFRQLzIsIHNvIHdlIGFyZW4ndCBsaW1pdGVkIGJ5IHRoZSBicm93c2VyIHRvIGEgY2VydGFpbiBudW1iZXIgcGVyIGRvbWFpbi5cbiAgICAgICAgbWF4UmVxdWVzdHM6IDIwLFxuXG4gICAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiBzaG93VGlsZUJvcmRlcnMsXG5cbiAgICAgICAgb25WaWV3cG9ydExvYWQ6IHRoaXMub25WaWV3cG9ydExvYWQuYmluZCh0aGlzKSxcblxuICAgICAgICBtaW5ab29tLFxuICAgICAgICBtYXhab29tLFxuICAgICAgICB0aWxlU2l6ZTogNTEyIC8gZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgem9vbU9mZnNldDogZGV2aWNlUGl4ZWxSYXRpbyA9PT0gMSA/IC0xIDogMCxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIFRTIGRvZXNuJ3Qga25vdyB3ZSdsbCBwYXNzIGFwcHJvcHJpYXRlIHByb3BzIGhlcmVcbiAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiByZW5kZXJTdWJMYXllcnNQTVRpbGVzLFxuXG4gICAgICAgIHRpbGVTb3VyY2UsXG4gICAgICAgIHNob3dUaWxlQm9yZGVycyxcblxuICAgICAgICB2aXNpYmxlLFxuICAgICAgICBvcGFjaXR5LFxuXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgZ2V0VGlsZURhdGE6IFtzaG91bGRMb2FkVGVycmFpbl1cbiAgICAgICAgfSxcbiAgICAgICAgLy8gUHJvcHMgZm9yIDNEIG1vZGVcbiAgICAgICAgLi4uKHNob3VsZExvYWRUZXJyYWluXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHpSYW5nZTogdGhpcy5tZXRhLnpSYW5nZSB8fCBudWxsLFxuICAgICAgICAgICAgICByZWZpbmVtZW50U3RyYXRlZ3k6ICduby1vdmVybGFwJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pXG4gICAgICB9KVxuICAgIF07XG4gIH1cblxuICBhc3luYyBnZXRUaWxlRGF0YShwcm9wczogR2V0VGlsZURhdGFQcm9wcyk6IFByb21pc2U8R2V0VGlsZURhdGFPdXRwdXQ+IHtcbiAgICBjb25zdCB7XG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9LFxuICAgICAgaW5kZXg6IHt6OiB6b29tfVxuICAgIH0gPSBwcm9wcztcblxuICAgIGlmIChnbG9iYWxCb3VuZHMgJiYgIWJib3hJbnRlcnNlY3RzKGdsb2JhbEJvdW5kcywgW3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aF0pKSB7XG4gICAgICAvLyB0aWxlIGlzIG91dHNpZGUgb2YgU1RBQyBvYmplY3QncyBib3VuZGluZyBib3g7IGRvbid0IGZldGNoIHRpbGVcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0UmVxdWVzdHMgPSBhd2FpdCBnZXRTVEFDSW1hZ2VSZXF1ZXN0cyhwcm9wcyk7XG4gICAgLy8gTm8gYXNzZXRzIHRvIGxvYWQsIG1vc3QgbGlrZWx5IGR1ZSB0byBwcm9wcyBiZWluZyBpbnZhbGlkL3Vuc3VwcG9ydGVkXG4gICAgaWYgKCFhc3NldFJlcXVlc3RzKSB7XG4gICAgICAvLyBXZSBzdGlsbCBpc3N1ZSB0aGUgbG9hZFRlcnJhaW4gcmVxdWVzdCBpZiBhcHBsaWNhYmxlXG4gICAgICBjb25zdCB0ZXJyYWluID1cbiAgICAgICAgc2hvdWxkTG9hZFRlcnJhaW4gJiZcbiAgICAgICAgTE9BRF9FTEVWQVRJT05fQUZURVJfWk9PTSA8IHpvb20gJiZcbiAgICAgICAgKGF3YWl0IGxvYWRUZXJyYWluKHtcbiAgICAgICAgICBib3VuZHNGb3JHZW9tZXRyeTogW3dlc3QsIG5vcnRoLCBlYXN0LCBzb3V0aF0sXG4gICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICAgIHNpZ25hbDogcHJvcHMuc2lnbmFsLFxuICAgICAgICAgIHJhc3RlclRpbGVTZXJ2ZXJVcmxzOiBwcm9wcy5zdGFjLnJhc3RlclRpbGVTZXJ2ZXJVcmxzIHx8IFtdXG4gICAgICAgIH0pKTtcbiAgICAgIHJldHVybiB7aW1hZ2VzOiBudWxsLCAuLi4odGVycmFpbiA/IHt0ZXJyYWlufSA6IHt9KX07XG4gICAgfVxuXG4gICAgdGlsZXNCZWluZ0xvYWRlZCsrO1xuXG4gICAgLy8gV3JhcCBsb2FkaW5nIGltYWdlcyBpbnRvIGEgdHJ5L2NhdGNoIGJlY2F1c2UgdGlsZXMgdGhhdCBhcmUgb25seSBicmllZmx5IGluIHZpZXcgd2lsbCBiZVxuICAgIC8vIGFib3J0ZWQuIFRoZSBgQWJvcnRDb250cm9sbGVyLmFib3J0KClgIGNyZWF0ZXMgYSBET01FeGNlcHRpb24gZXJyb3IuXG4gICAgLy8gTm90ZSB0aGF0IHNpbmNlIGxvYWRpbmcgaXMgYXN5bmMsIHRyeS9jYXRjaCB3aWxsIG9ubHkgd29yayB3aGVuIGF3YWl0ZWQgaW5zaWRlIHRoZSB0cnkgYmxvY2tcbiAgICB0cnkge1xuICAgICAgY29uc3QgW2ltYWdlcywgdGVycmFpbl0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIGxvYWRJbWFnZXMoYXNzZXRSZXF1ZXN0cywgcHJvcHMuY29sb3JtYXBJZCwge1xuICAgICAgICAgIGNvbG9yTWFwOiBwcm9wcy5jYXRlZ29yaWNhbENvbG9yTWFwLFxuICAgICAgICAgIG1pblZhbHVlOiBwcm9wcy5taW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgICAgICBtYXhWYWx1ZTogcHJvcHMubWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWVcbiAgICAgICAgfSksXG4gICAgICAgIHNob3VsZExvYWRUZXJyYWluICYmIExPQURfRUxFVkFUSU9OX0FGVEVSX1pPT00gPCB6b29tXG4gICAgICAgICAgPyBsb2FkVGVycmFpbih7XG4gICAgICAgICAgICAgIGJvdW5kc0Zvckdlb21ldHJ5OiBbd2VzdCwgbm9ydGgsIGVhc3QsIHNvdXRoXSxcbiAgICAgICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICAgICAgICBzaWduYWw6IHByb3BzLnNpZ25hbCxcbiAgICAgICAgICAgICAgcmFzdGVyVGlsZVNlcnZlclVybHM6IHByb3BzLnN0YWMucmFzdGVyVGlsZVNlcnZlclVybHMgfHwgW11cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBdKTtcblxuICAgICAgY29uc3QgW21pbiwgbWF4XSA9IHRoaXMuZ2V0TWluTWF4UGl4ZWxWYWx1ZXMoaW1hZ2VzLmltYWdlQmFuZHMpO1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuXG4gICAgICAvLyBBZGQgdGVycmFpbiBkYXRhIG9ubHkgaWYgd2UgcmVxdWVzdGVkIGl0IGFib3ZlXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbWFnZXMsXG4gICAgICAgIC4uLih0ZXJyYWluID8ge3RlcnJhaW59IDoge30pLFxuICAgICAgICBtaW5QaXhlbFZhbHVlOiBtaW4sXG4gICAgICAgIG1heFBpeGVsVmFsdWU6IG1heFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuICAgICAgaWYgKChlcnJvciBhcyBhbnkpLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgICAvLyB0aWxlIHdhcyBhYm9ydGVkXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBTb21lIG90aGVyIHVuaGFuZGxlZCBlcnJvclxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VGlsZURhdGFQTVRpbGVzKFxuICAgIHByb3BzOiBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcyAmIHtcbiAgICAgIHNob3VsZExvYWRUZXJyYWluOiBib29sZWFuO1xuICAgICAgbWV0YWRhdGE6IHtyYXN0ZXJUaWxlU2VydmVyVXJsczogc3RyaW5nW119O1xuICAgICAgZ2xvYmFsQm91bmRzOiBEYXRhU291cmNlUGFyYW1zWydnbG9iYWxCb3VuZHMnXTtcbiAgICB9LFxuICAgIHRpbGVTb3VyY2VcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB7XG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9LFxuICAgICAgaW5kZXg6IHt6OiB6b29tfSxcbiAgICAgIG1ldGFkYXRhXG4gICAgfSA9IHByb3BzO1xuXG4gICAgaWYgKGdsb2JhbEJvdW5kcyAmJiAhYmJveEludGVyc2VjdHMoZ2xvYmFsQm91bmRzLCBbd2VzdCwgc291dGgsIGVhc3QsIG5vcnRoXSkpIHtcbiAgICAgIC8vIHRpbGUgaXMgb3V0c2lkZSBvZiBTVEFDIG9iamVjdCdzIGJvdW5kaW5nIGJveDsgZG9uJ3QgZmV0Y2ggdGlsZVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGlsZXNCZWluZ0xvYWRlZCsrO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFtpbWFnZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbdGlsZVNvdXJjZS5nZXRUaWxlRGF0YShwcm9wcyldKTtcbiAgICAgIC8vIEZvciBud28gY2hlY2sgaWYgdGhlIGJhc2UgdGlsZSBleGlzdHMsIGFzIHRoaXMgY2FuIGNhdXNlIGxvYWRpbmcgdG8gZ2V0IHN0dWNrIHdpdGggXCJzcGFyc2VcIiBQTVRpbGVzLlxuICAgICAgY29uc3QgdGVycmFpbiA9XG4gICAgICAgIGltYWdlICYmIHNob3VsZExvYWRUZXJyYWluICYmIExPQURfRUxFVkFUSU9OX0FGVEVSX1pPT00gPCB6b29tXG4gICAgICAgICAgPyBhd2FpdCBsb2FkVGVycmFpbih7XG4gICAgICAgICAgICAgIGJvdW5kc0Zvckdlb21ldHJ5OiBbd2VzdCwgbm9ydGgsIGVhc3QsIHNvdXRoXSxcbiAgICAgICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICAgICAgICBzaWduYWw6IHByb3BzLnNpZ25hbCxcbiAgICAgICAgICAgICAgcmFzdGVyVGlsZVNlcnZlclVybHM6IG1ldGFkYXRhLnJhc3RlclRpbGVTZXJ2ZXJVcmxzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogbnVsbDtcblxuICAgICAgbGV0IG1pblBpeGVsVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgbGV0IG1heFBpeGVsVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgaWYgKGltYWdlKSB7XG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSB0aGlzLmdldE1pbk1heFBpeGVsVmFsdWVzKFt7ZGF0YTogaW1hZ2V9XSk7XG4gICAgICAgIG1pblBpeGVsVmFsdWUgPSBtaW47XG4gICAgICAgIG1heFBpeGVsVmFsdWUgPSBtYXg7XG4gICAgICB9XG4gICAgICB0aWxlc0JlaW5nTG9hZGVkLS07XG5cbiAgICAgIC8vIEFkZCB0ZXJyYWluIGRhdGEgb25seSBpZiB3ZSByZXF1ZXN0ZWQgaXQgYWJvdmVcbiAgICAgIHJldHVybiB7aW1hZ2UsIG1pblBpeGVsVmFsdWUsIG1heFBpeGVsVmFsdWUsIC4uLih0ZXJyYWluID8ge3RlcnJhaW59IDoge30pfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuXG4gICAgICBpZiAoKGVycm9yIGFzIEVycm9yKS5uYW1lID09PSAnQWJvcnRFcnJvcicpIHtcbiAgICAgICAgLy8gdGlsZSB3YXMgYWJvcnRlZFxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gU29tZSBvdGhlciB1bmhhbmRsZWQgZXJyb3JcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJTdWJMYXllcnNTdGFjKHByb3BzOiBSZW5kZXJTdWJMYXllcnNQcm9wcyk6IERlY2tMYXllcjxhbnk+IHwgRGVja0xheWVyPGFueT5bXSB7XG4gIGNvbnN0IHtcbiAgICB0aWxlLFxuICAgIGRhdGEsXG4gICAgbWluUGl4ZWxWYWx1ZTogZ2xvYmFsTWluUGl4ZWxWYWx1ZSxcbiAgICBtYXhQaXhlbFZhbHVlOiBnbG9iYWxNYXhQaXhlbFZhbHVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgYmJveCA9IHRpbGUuYmJveCBhcyBHZW9Cb3VuZGluZ0JveDtcbiAgY29uc3Qge3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aH0gPSBiYm94O1xuXG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpbWFnZXMsXG4gICAgdGVycmFpbixcbiAgICBtaW5QaXhlbFZhbHVlOiB0aWxlTWluUGl4ZWxWYWx1ZSxcbiAgICBtYXhQaXhlbFZhbHVlOiB0aWxlTWF4UGl4ZWxWYWx1ZVxuICB9ID0gZGF0YTtcbiAgaWYgKCFpbWFnZXMgfHwgKEFycmF5LmlzQXJyYXkoaW1hZ2VzKSAmJiBpbWFnZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IG1pblBpeGVsVmFsdWUgPSBOdW1iZXIuaXNGaW5pdGUoZ2xvYmFsTWluUGl4ZWxWYWx1ZSlcbiAgICA/IGdsb2JhbE1pblBpeGVsVmFsdWVcbiAgICA6IHRpbGVNaW5QaXhlbFZhbHVlO1xuICBjb25zdCBtYXhQaXhlbFZhbHVlID0gTnVtYmVyLmlzRmluaXRlKGdsb2JhbE1heFBpeGVsVmFsdWUpXG4gICAgPyBnbG9iYWxNYXhQaXhlbFZhbHVlXG4gICAgOiB0aWxlTWF4UGl4ZWxWYWx1ZTtcbiAgaWYgKHR5cGVvZiBtaW5QaXhlbFZhbHVlICE9PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4UGl4ZWxWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCB7bW9kdWxlcywgbW9kdWxlUHJvcHN9ID0gZ2V0TW9kdWxlcyh7XG4gICAgaW1hZ2VzLFxuICAgIHByb3BzOiB7Li4ucHJvcHMsIG1pblBpeGVsVmFsdWUsIG1heFBpeGVsVmFsdWV9XG4gIH0pO1xuXG4gIGNvbnN0IGlkU3VmZml4ID0gcHJvcHMuaGFzU2hhZG93RWZmZWN0ID8gJ3NoYWRvdycgOiAnJztcblxuICByZXR1cm4gdGVycmFpblxuICAgID8gbmV3IFJhc3Rlck1lc2hMYXllcihwcm9wcywge1xuICAgICAgICBpZDogYHJhc3Rlci0zZC1sYXllci0ke3Byb3BzLmlkfS0ke2lkU3VmZml4fWAsXG4gICAgICAgIC8vIER1bW15IGRhdGFcbiAgICAgICAgZGF0YTogWzFdLFxuICAgICAgICBtZXNoOiB0ZXJyYWluLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIG1vZHVsZXMsXG4gICAgICAgIG1vZHVsZVByb3BzLFxuXG4gICAgICAgIGdldFBvbHlnb25PZmZzZXQ6IG51bGwsXG4gICAgICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkxOR0xBVCxcbiAgICAgICAgLy8gQ29sb3IgdG8gdXNlIGlmIHN1cmZhY2VJbWFnZSBpcyB1bmF2YWlsYWJsZVxuICAgICAgICBnZXRDb2xvcjogWzI1NSwgMjU1LCAyNTVdXG4gICAgICAgIC8vIG1hdGVyaWFsOiBmYWxzZVxuICAgICAgfSlcbiAgICA6IG5ldyBSYXN0ZXJMYXllcihwcm9wcywge1xuICAgICAgICBpZDogYHJhc3Rlci0yZC1sYXllci0ke3Byb3BzLmlkfS0ke2lkU3VmZml4fWAsXG4gICAgICAgIGltYWdlcyxcbiAgICAgICAgbW9kdWxlcyxcbiAgICAgICAgbW9kdWxlUHJvcHMsXG4gICAgICAgIGJvdW5kczogW3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aF0sXG4gICAgICAgIF9pbWFnZUNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTlxuICAgICAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclN1YkxheWVyc1BNVGlsZXMocHJvcHM6IHtcbiAgaWQ6IHN0cmluZztcbiAgZGF0YTogYW55O1xuICB0aWxlU291cmNlOiBhbnk7XG4gIHNob3dUaWxlQm9yZGVyczogYW55O1xuICBtaW5ab29tOiBhbnk7XG4gIG1heFpvb206IGFueTtcbiAgdGlsZTogYW55O1xufSkge1xuICBjb25zdCB7XG4gICAgdGlsZVNvdXJjZSxcbiAgICBzaG93VGlsZUJvcmRlcnMsXG4gICAgbWluWm9vbSxcbiAgICBtYXhab29tLFxuICAgIHRpbGU6IHtcbiAgICAgIGluZGV4OiB7ejogem9vbX0sXG4gICAgICBiYm94OiB7d2VzdCwgc291dGgsIGVhc3QsIG5vcnRofVxuICAgIH1cbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGxheWVyczogYW55W10gPSBbXTtcblxuICBpZiAocHJvcHMuZGF0YT8uaW1hZ2UpIHtcbiAgICBzd2l0Y2ggKHRpbGVTb3VyY2UubWltZVR5cGUpIHtcbiAgICAgIGNhc2UgJ2ltYWdlL3BuZyc6XG4gICAgICBjYXNlICdpbWFnZS9qcGVnJzpcbiAgICAgIGNhc2UgJ2ltYWdlL3dlYnAnOlxuICAgICAgY2FzZSAnaW1hZ2UvYXZpZic6XG4gICAgICAgIGxheWVycy5wdXNoKGdldFJhc3RlckxheWVyUE1UaWxlcyhwcm9wcykpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVidWcgdGlsZSBib3JkZXJzXG4gIGNvbnN0IGJvcmRlckNvbG9yID0gem9vbSA8PSBtaW5ab29tIHx8IHpvb20gPj0gbWF4Wm9vbSA/IFsyNTUsIDAsIDAsIDI1NV0gOiBbMCwgMCwgMjU1LCAyNTVdO1xuICBpZiAoc2hvd1RpbGVCb3JkZXJzKSB7XG4gICAgbGF5ZXJzLnB1c2goXG4gICAgICBuZXcgUGF0aExheWVyKHtcbiAgICAgICAgaWQ6IGAke3Byb3BzLmlkfS1ib3JkZXJgLFxuICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgW1xuICAgICAgICAgICAgW3dlc3QsIG5vcnRoXSxcbiAgICAgICAgICAgIFt3ZXN0LCBzb3V0aF0sXG4gICAgICAgICAgICBbZWFzdCwgc291dGhdLFxuICAgICAgICAgICAgW2Vhc3QsIG5vcnRoXSxcbiAgICAgICAgICAgIFt3ZXN0LCBub3J0aF1cbiAgICAgICAgICBdXG4gICAgICAgIF0sXG4gICAgICAgIGdldFBhdGg6IGQgPT4gZCxcbiAgICAgICAgZ2V0Q29sb3I6IGJvcmRlckNvbG9yIGFzIGFueSxcbiAgICAgICAgd2lkdGhNaW5QaXhlbHM6IDRcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBsYXllcnM7XG59XG5cbmZ1bmN0aW9uIGdldFJhc3RlckxheWVyUE1UaWxlcyhwcm9wczoge2lkOiBzdHJpbmc7IGRhdGE6IGFueTsgdGlsZTogYW55fSkge1xuICBjb25zdCB7dGlsZSwgZGF0YX0gPSBwcm9wcztcbiAgY29uc3QgYmJveCA9IHRpbGUuYmJveCBhcyBHZW9Cb3VuZGluZ0JveDtcbiAgY29uc3Qge3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aH0gPSBiYm94O1xuXG4gIGlmICghZGF0YT8uaW1hZ2UpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBpbWFnZXMgPSB7aW1hZ2VSZ2JhOiB7ZGF0YTogZGF0YS5pbWFnZX19O1xuICBjb25zdCB7dGVycmFpbn0gPSBkYXRhO1xuXG4gIGNvbnN0IHttb2R1bGVzLCBtb2R1bGVQcm9wc30gPSBnZXRNb2R1bGVzKHtcbiAgICBpbWFnZXNcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcnJhaW5cbiAgICA/IG5ldyBSYXN0ZXJNZXNoTGF5ZXIocHJvcHMsIHtcbiAgICAgICAgaWQ6IGByYXN0ZXItM2QtbGF5ZXItJHtwcm9wcy5pZH1gLFxuICAgICAgICAvLyBEdW1teSBkYXRhXG4gICAgICAgIGRhdGE6IFsxXSxcbiAgICAgICAgbWVzaDogdGVycmFpbixcbiAgICAgICAgaW1hZ2VzLFxuICAgICAgICBtb2R1bGVzLFxuICAgICAgICBtb2R1bGVQcm9wcyxcblxuICAgICAgICBnZXRQb2x5Z29uT2Zmc2V0OiBudWxsLFxuICAgICAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5MTkdMQVQsXG4gICAgICAgIC8vIENvbG9yIHRvIHVzZSBpZiBzdXJmYWNlSW1hZ2UgaXMgdW5hdmFpbGFibGVcbiAgICAgICAgZ2V0Q29sb3I6IFsyNTUsIDI1NSwgMjU1XVxuICAgICAgICAvLyBtYXRlcmlhbDogZmFsc2VcbiAgICAgIH0pXG4gICAgOiBuZXcgUmFzdGVyTGF5ZXIocHJvcHMsIHtcbiAgICAgICAgaWQ6IGByYXN0ZXItMmQtbGF5ZXItJHtwcm9wcy5pZH1gLFxuICAgICAgICBkYXRhOiBudWxsIGFzIG5ldmVyLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIG1vZHVsZXMsXG4gICAgICAgIG1vZHVsZVByb3BzLFxuICAgICAgICBib3VuZHM6IFt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGhdLFxuICAgICAgICBfaW1hZ2VDb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU5cbiAgICAgIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxRQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFFQSxJQUFBSyxPQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFjQSxJQUFBUSxZQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFFQSxJQUFBVSxPQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxTQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxNQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFB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
@@ -135,6 +135,7 @@ export declare type RenderSubLayersCustomProps = ColorRescaling & Pick<AssetRequ
135
135
  minCategoricalBandValue?: number;
136
136
  maxCategoricalBandValue?: number;
137
137
  hasCategoricalColorMap: boolean;
138
+ hasShadowEffect?: boolean;
138
139
  };
139
140
  export interface RenderSubLayersDefaultProps {
140
141
  id: string;
@@ -43,4 +43,4 @@ var BandCombination = exports.BandCombination = /*#__PURE__*/function (BandCombi
43
43
  /** Properties provided to getTileData by the deck.gl TileLayer */
44
44
  /** Properties passed into the deck.gl TileLayer getTileData callback */
45
45
  /** Required information on how to render each preset */
46
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYW5kQ29tYmluYXRpb24iLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci10aWxlL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7X1RpbGUyREhlYWRlcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycy90eXBlZCc7XG5pbXBvcnQge1R5cGVkQXJyYXl9IGZyb20gJ0Bsb2FkZXJzLmdsL2xvYWRlci11dGlscy9zcmMvdHlwZXMnO1xuaW1wb3J0IHtUZXh0dXJlMkRQcm9wc30gZnJvbSAnQGx1bWEuZ2wvd2ViZ2wnO1xuXG5pbXBvcnQge0tlcGxlclRhYmxlIGFzIEtlcGxlckRhdGFzZXR9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHR5cGUge0NvbG9yTWFwLCBTdGFjVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBTVEFDT2JqZWN0ID0gU3RhY1R5cGVzLlNUQUNPYmplY3Q7XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNJdGVtID0gU3RhY1R5cGVzLkNvbXBsZXRlU1RBQ0l0ZW07XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNDb2xsZWN0aW9uID0gU3RhY1R5cGVzLkNvbXBsZXRlU1RBQ0NvbGxlY3Rpb247XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNPYmplY3QgPSBTdGFjVHlwZXMuQ29tcGxldGVTVEFDT2JqZWN0O1xuXG50eXBlIERhdGFUeXBlT2ZUaGVCYW5kID0gU3RhY1R5cGVzLkRhdGFUeXBlT2ZUaGVCYW5kO1xuXG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNBc3NldExpbmtzID1cbiAgfCBDb21wbGV0ZVNUQUNJdGVtWydhc3NldHMnXVxuICB8IENvbXBsZXRlU1RBQ0NvbGxlY3Rpb25bJ2l0ZW1fYXNzZXRzJ107XG5cbmV4cG9ydCBlbnVtIEJhbmRDb21iaW5hdGlvbiB7XG4gIC8qKiBSZW5kZXIgYSBzaW5nbGUgcmFzdGVyIGJhbmQuICovXG4gIFNpbmdsZSA9ICdzaW5nbGUnLFxuXG4gIC8qKiBSZW5kZXIgdGhyZWUgYmFuZHMgdG9nZXRoZXIgb24gdGhlIEdQVS5cbiAgICogTm90ZSB0aGF0IHRoaXMgY291bGQgYmUgXCJ0cnVlIGNvbG9yXCIgaWYgdGhlIGZpcnN0IGJhbmQgaXMgcmVkLCB0aGUgc2Vjb25kIGlzIGdyZWVuLCBhbmQgdGhlXG4gICAqIHRoaXJkIGlzIGJsdWUuIEJ1dCBpdCBjb3VsZCBhbHNvIGJlIFwiZmFsc2UgY29sb3JcIiBpZiB0aGUgdGhyZWUgYmFuZHMgY2hvc2VuIGFyZSBub3QgUkdCLlxuICAgKi9cbiAgUmdiID0gJ3JnYicsXG5cbiAgLyoqIENhbGN1bGF0ZSB0aGUgTm9ybWFsaXplZCBEaWZmZXJlbmNlIFZlZ2V0YXRpb24gSW5kZXggKE5EVkkpIG9uIHR3byBiYW5kcy4gKi9cbiAgTm9ybWFsaXplZERpZmZlcmVuY2UgPSAnbm9ybWFsaXplZERpZmZlcmVuY2UnLFxuXG4gIC8qKiBDYWxjdWxhdGUgdGhlIEVWSSBvbiB0d28gYmFuZHMuICovXG4gIEVuaGFuY2VkVmVnZXRhdGlvbkluZGV4ID0gJ2VuaGFuY2VkVmVnZXRhdGlvbkluZGV4JyxcblxuICAvKiogQ2FsY3VsYXRlIFNBVkkgb24gdHdvIGJhbmRzLiAqL1xuICBTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXggPSAnc29pbEFkanVzdGVkVmVnZXRhdGlvbkluZGV4JyxcblxuICAvKiogQ2FsY3VsYXRlIE1TQVZJIG9uIHR3byBiYW5kcy4gKi9cbiAgTW9kaWZpZWRTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXggPSAnbW9kaWZpZWRTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXgnXG59XG5cbi8qKlxuICogSWRlbnRpZmllcnMgb2YgU1RBQyBhc3NldHMgdG8gbG9hZFxuICpcbiAqIFRoZXNlIGlkZW50aWZpZXJzIHNob3VsZCBtYXRjaCB0aGUga2V5cyBvZiB0aGUgU1RBQyBhc3NldHMgb2JqZWN0LiBSZWZlciB0b1xuICogaHR0cHM6Ly9naXRodWIuY29tL3JhZGlhbnRlYXJ0aC9zdGFjLXNwZWMvYmxvYi9tYXN0ZXIvaXRlbS1zcGVjL2l0ZW0tc3BlYy5tZCNhc3NldHNcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXRJZHMgPSBzdHJpbmdbXTtcblxuLyoqXG4gKiBJbmRleGVzIG9mIGJhbmRzIHdpdGhpbiBlYWNoIGFzc2V0IHRoYXQgc2hvdWxkIGJlIGxvYWRlZC5cbiAqXG4gKiBFYWNoIGFzc2V0IHJlZmVycyB0byBhIHNpbmdsZSBDbG91ZC1PcHRpbWl6ZWQgR2VvVElGRiBmaWxlIG9uIGRpc2suIEVhY2ggQ09HIGhhcyBhIHdpZHRoLCBoZWlnaHQsXG4gKiBhbmQgb25lIG9yIG1vcmUgYmFuZHMuXG4gKlxuICogVGhpcyBhcnJheSBvZiBpbmRleGVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBsaXN0IG9mIEFzc2V0SWRzLiBUaGUgbnRoIGJhbmQgaW5kZXhcbiAqIGRlc2NyaWJlcyB0aGUgd2hpY2ggaW5kZXggZnJvbSB0aGUgbnRoIGFzc2V0IGlkIHRvIGxvYWQuXG4gKi9cbmV4cG9ydCB0eXBlIEJhbmRJbmRleGVzID0gbnVtYmVyW107XG5cbi8qKlxuICogQW4gYXJyYXkgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIGhvdyBiYW5kcyBzaG91bGQgYmUgcmVvcmRlcmVkIG9uIHRoZSBHUFUuIFRoaXMgYWxsb3dzIGZvclxuICogZmFzdGVyIGNoYW5naW5nIG9mIGJhbmRzIGZvciBzaW5nbGUtYXNzZXQgcmFzdGVyIGRhdGEsIHN1Y2ggYXMgTkFJUC4gV2lsbCBiZSBudWxsIGZvciBtdWx0aS1hc3NldFxuICogU1RBQyBpdGVtcy5cbiAqL1xuZXhwb3J0IHR5cGUgUmVuZGVyQmFuZEluZGV4ZXMgPSBCYW5kSW5kZXhlcyB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIEFzc2V0UmVxdWVzdEluZm8gPSB7XG4gIGxvYWRBc3NldElkczogQXNzZXRJZHM7XG4gIGxvYWRCYW5kSW5kZXhlczogQmFuZEluZGV4ZXM7XG4gIHJlbmRlckJhbmRJbmRleGVzOiBSZW5kZXJCYW5kSW5kZXhlcztcbn07XG5cbi8qKiBVc2VyLXByb3ZpZGVkIGluZm9ybWF0aW9uIGZvciBob3cgdG8gcmVuZGVyIGEgcHJlc2V0ICovXG5leHBvcnQgdHlwZSBQcmVzZXRPcHRpb24gPSB7XG4gIHNpbmdsZUJhbmQ/OiB7XG4gICAgYXNzZXRJZDogc3RyaW5nO1xuICAgIGJhbmRJbmRleD86IG51bWJlcjtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFTb3VyY2VQYXJhbXMgPSBBc3NldFJlcXVlc3RJbmZvICYge1xuICBtaW5ab29tOiBudW1iZXI7XG4gIG1heFpvb206IG51bWJlcjtcbiAgbWluUGl4ZWxWYWx1ZTogbnVtYmVyO1xuICBtYXhQaXhlbFZhbHVlOiBudW1iZXI7XG4gIG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZT86IG51bWJlcjtcbiAgZ2xvYmFsQm91bmRzOiBudW1iZXJbXSB8IG51bGw7XG4gIGRhdGFUeXBlOiBEYXRhVHlwZU9mVGhlQmFuZDtcbn07XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsQ29sb3JtYXBPcHRpb25zID0ge1xuICBjb2xvck1hcD86IENvbG9yTWFwO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBFeHRlbmRlZEtlcGxlclNUQUMgPSB7cmFzdGVyVGlsZVNlcnZlclVybHM/OiBbXX07XG5cbi8qKlxuICogQ3VzdG9tIGZpZWxkcyB3ZSBwYXNzIG9uIHRvIHRoZSBnZXRUaWxlRGF0YSBjYWxsYmFja1xuICogQW55dGhpbmcgcmVxdWlyZWQgdG8ga25vdyBfd2hhdCBkYXRhIHRvIGxvYWRfIHNob3VsZCBiZSBwYXNzZWQgaW4gaGVyZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFDdXN0b21Qcm9wcyA9IFBpY2s8QXNzZXRSZXF1ZXN0SW5mbywgJ2xvYWRBc3NldElkcycgfCAnbG9hZEJhbmRJbmRleGVzJz4gJiB7XG4gIHN0YWM6IENvbXBsZXRlU1RBQ09iamVjdCAmIEV4dGVuZGVkS2VwbGVyU1RBQztcbiAgY29sb3JtYXBJZDogc3RyaW5nO1xuICBjYXRlZ29yaWNhbENvbG9yTWFwOiBDb2xvck1hcDtcbiAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWU/OiBudW1iZXI7XG4gIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuXG4gIC8qKiBJZiB0cnVlLCBmZXRjaCB0ZXJyYWluIGRhdGEgYXMgd2VsbCBhcyB0ZXh0dXJlIGRhdGEuICovXG4gIHNob3VsZExvYWRUZXJyYWluOiBib29sZWFuO1xuICBnbG9iYWxCb3VuZHM6IG51bWJlcltdIHwgbnVsbDtcbiAgdXNlU1RBQ1NlYXJjaGluZzogYm9vbGVhbjtcbiAgc3RhY1NlYXJjaFByb3ZpZGVyOiBzdHJpbmc7XG4gIHN0YXJ0RGF0ZTogc3RyaW5nO1xuICBlbmREYXRlOiBzdHJpbmc7XG5cbiAgLyogU3RyaW5naWZpZWQgSlNPTiByZXByZXNlbnRpbmcgYSBTVEFDIEFQSSBTZWFyY2ggUXVlcnkgdGhlIGJhY2tlbmQgc2hvdWxkIHJlcXVlc3QgZnJvbSBhIHNlcnZlci4gKi9cbiAgX3N0YWNRdWVyeT86IHN0cmluZztcbn07XG5cbi8qKiBQcm9wZXJ0aWVzIHByb3ZpZGVkIHRvIGdldFRpbGVEYXRhIGJ5IHRoZSBkZWNrLmdsIFRpbGVMYXllciAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcyB7XG4gIGluZGV4OiB7eDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcn07XG4gIHVybD86IHN0cmluZztcblxuICAvKiogQm91bmRpbmcgYm94IG9mIHRoZSBjdXJyZW50IHdlYiBtZXJjYXRvciB0aWxlLiAqL1xuICBiYm94OiB7d2VzdDogbnVtYmVyOyBub3J0aDogbnVtYmVyOyBlYXN0OiBudW1iZXI7IHNvdXRoOiBudW1iZXJ9O1xuXG4gIC8qKiBBYm9ydFNpZ25hbCB1c2VkIGZvciBjYW5jZWxsaW5nIHJlcXVlc3RzICovXG4gIHNpZ25hbDogQWJvcnRTaWduYWw7XG59XG5cbi8qKiBQcm9wZXJ0aWVzIHBhc3NlZCBpbnRvIHRoZSBkZWNrLmdsIFRpbGVMYXllciBnZXRUaWxlRGF0YSBjYWxsYmFjayAqL1xuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFQcm9wcyA9IEdldFRpbGVEYXRhQ3VzdG9tUHJvcHMgJiBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcztcblxuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFPdXRwdXQgPSBhbnkgfCBudWxsO1xuXG5leHBvcnQgdHlwZSBSZW5kZXJTdWJMYXllcnNDdXN0b21Qcm9wcyA9IENvbG9yUmVzY2FsaW5nICZcbiAgUGljazxBc3NldFJlcXVlc3RJbmZvLCAncmVuZGVyQmFuZEluZGV4ZXMnPiAmIHtcbiAgICBvcGFjaXR5OiBudW1iZXI7XG4gICAgbGluZWFyUmVzY2FsaW5nOiBib29sZWFuO1xuICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcjogW251bWJlciwgbnVtYmVyXTtcbiAgICBub25MaW5lYXJSZXNjYWxpbmc6IGJvb2xlYW47XG4gICAgbWluUGl4ZWxWYWx1ZTogbnVtYmVyO1xuICAgIG1heFBpeGVsVmFsdWU6IG51bWJlcjtcbiAgICBiYW5kQ29tYmluYXRpb246IEJhbmRDb21iaW5hdGlvbjtcbiAgICBmaWx0ZXJFbmFibGVkOiBib29sZWFuO1xuICAgIGZpbHRlclJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICAgIGN1cnJlbnRUaW1lOiBudW1iZXI7XG4gICAgZGF0YVR5cGU6IERhdGFUeXBlT2ZUaGVCYW5kO1xuICAgIG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICAgIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICAgIGhhc0NhdGVnb3JpY2FsQ29sb3JNYXA6IGJvb2xlYW47XG4gIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyU3ViTGF5ZXJzRGVmYXVsdFByb3BzIHtcbiAgaWQ6IHN0cmluZztcbiAgdGlsZTogX1RpbGUyREhlYWRlcjxHZXRUaWxlRGF0YU91dHB1dD47XG4gIGRhdGE6IEdldFRpbGVEYXRhT3V0cHV0O1xufVxuXG5leHBvcnQgdHlwZSBSZW5kZXJTdWJMYXllcnNQcm9wcyA9IFJlbmRlclN1YkxheWVyc0N1c3RvbVByb3BzICYgUmVuZGVyU3ViTGF5ZXJzRGVmYXVsdFByb3BzO1xuXG4vKiogUmVxdWlyZWQgaW5mb3JtYXRpb24gb24gaG93IHRvIHJlbmRlciBlYWNoIHByZXNldCAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVzZXREYXRhIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgYmFuZENvbWJpbmF0aW9uOiBCYW5kQ29tYmluYXRpb247XG4gIGNvbW1vbk5hbWVzPzogc3RyaW5nW107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpbmZvVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yUmVzY2FsaW5nIHtcbiAgZ2FtbWFDb250cmFzdEZhY3RvcjogbnVtYmVyO1xuICBzaWdtb2lkYWxDb250cmFzdEZhY3RvcjogbnVtYmVyO1xuICBzaWdtb2lkYWxCaWFzRmFjdG9yOiBudW1iZXI7XG4gIHNhdHVyYXRpb25WYWx1ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ09wdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENvbG9ybWFwSW1hZ2VEYXRhID0gVGV4dHVyZTJEUHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VEYXRhIHtcbiAgaW1hZ2VCYW5kczogVGV4dHVyZTJEUHJvcHNbXSB8IG51bGw7XG4gIGltYWdlQ29sb3JtYXA/OiBUZXh0dXJlMkRQcm9wcyB8IG51bGw7XG4gIGltYWdlTWFzaz86IFRleHR1cmUyRFByb3BzIHwgbnVsbDtcbiAgaW1hZ2VQYW4/OiBUZXh0dXJlMkRQcm9wcyB8IG51bGw7XG4gIGltYWdlUmdiYT86IFRleHR1cmUyRFByb3BzIHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgQXNzZXRSZXF1ZXN0RGF0YSA9IHtcbiAgdXJsOiBzdHJpbmc7XG4gIG9wdGlvbnM6IFJlcXVlc3RJbml0O1xuICB1c2VNYXNrOiBib29sZWFuO1xuICAvKiogUGFzcyB0aGlzIHByb3BlcnR5IHRocm91Z2ggdGhlIHJlcXVlc3QgdG8gcGljayBzcGVjaWZpYyBiYW5kcyBmcm9tIHRoZSByZXNwb25zZSAqL1xuICByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXM/OiBudW1iZXJbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBOUFlMb2FkZXJEYXRhVHlwZXMgPVxuICB8IFVpbnQ4QXJyYXlcbiAgfCBVaW50OENsYW1wZWRBcnJheVxuICB8IEludDhBcnJheVxuICB8IFVpbnQxNkFycmF5XG4gIHwgSW50MTZBcnJheVxuICB8IFVpbnQzMkFycmF5XG4gIHwgSW50MzJBcnJheVxuICB8IEZsb2F0MzJBcnJheVxuICB8IEZsb2F0NjRBcnJheTtcblxuZXhwb3J0IGludGVyZmFjZSBOUFlMb2FkZXJSZXNwb25zZSB7XG4gIGRhdGE6IE5QWUxvYWRlckRhdGFUeXBlcztcbiAgaGVhZGVyOiB7XG4gICAgZGVzY3I6IHN0cmluZztcbiAgICBzaGFwZTogbnVtYmVyW107XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFpbkRhdGEge1xuICBoZWFkZXI6IHtcbiAgICB2ZXJ0ZXhDb3VudDogbnVtYmVyO1xuICAgIGJvdW5kaW5nQm94OiBbW251bWJlciwgbnVtYmVyLCBudW1iZXJdLCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl1dO1xuICB9O1xuICBtb2RlOiA0O1xuICBpbmRpY2VzOiB7XG4gICAgdmFsdWU6IFR5cGVkQXJyYXk7XG4gICAgc2l6ZTogMTtcbiAgfTtcbiAgYXR0cmlidXRlczoge1xuICAgIFBPU0lUSU9OOiB7XG4gICAgICB2YWx1ZTogVHlwZWRBcnJheTtcbiAgICAgIHNpemU6IDM7XG4gICAgfTtcbiAgICBURVhDT09SRF8wOiB7XG4gICAgICB2YWx1ZTogVHlwZWRBcnJheTtcbiAgICAgIHNpemU6IDI7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgS2VwbGVyUmFzdGVyRGF0YXNldCA9IEtlcGxlckRhdGFzZXQgJiB7XG4gIG1ldGFkYXRhOiBDb21wbGV0ZVNUQUNPYmplY3Q7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbGUyREhlYWRlciB7XG4gIGNvbnRlbnQ/OiB7XG4gICAgdGVycmFpbj86IFRlcnJhaW5EYXRhO1xuICAgIGltYWdlczogR2V0VGlsZURhdGFPdXRwdXQ7XG4gIH0gfCBudWxsO1xuICBnZXQgZGF0YSgpOiBHZXRUaWxlRGF0YU91dHB1dDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUFBLElBb0JZQSxlQUFlLEdBQUFDLE9BQUEsQ0FBQUQsZUFBQSwwQkFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFBLE9BQWZBLGVBQWU7QUFBQTtBQXVCM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBMkJBO0FBQ0E7QUFDQTtBQUNBO0FBb0JBO0FBWUE7QUErQkEiLCJpZ25vcmVMaXN0IjpbXX0=
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYW5kQ29tYmluYXRpb24iLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci10aWxlL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7X1RpbGUyREhlYWRlcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycy90eXBlZCc7XG5pbXBvcnQge1R5cGVkQXJyYXl9IGZyb20gJ0Bsb2FkZXJzLmdsL2xvYWRlci11dGlscy9zcmMvdHlwZXMnO1xuaW1wb3J0IHtUZXh0dXJlMkRQcm9wc30gZnJvbSAnQGx1bWEuZ2wvd2ViZ2wnO1xuXG5pbXBvcnQge0tlcGxlclRhYmxlIGFzIEtlcGxlckRhdGFzZXR9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHR5cGUge0NvbG9yTWFwLCBTdGFjVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBTVEFDT2JqZWN0ID0gU3RhY1R5cGVzLlNUQUNPYmplY3Q7XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNJdGVtID0gU3RhY1R5cGVzLkNvbXBsZXRlU1RBQ0l0ZW07XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNDb2xsZWN0aW9uID0gU3RhY1R5cGVzLkNvbXBsZXRlU1RBQ0NvbGxlY3Rpb247XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNPYmplY3QgPSBTdGFjVHlwZXMuQ29tcGxldGVTVEFDT2JqZWN0O1xuXG50eXBlIERhdGFUeXBlT2ZUaGVCYW5kID0gU3RhY1R5cGVzLkRhdGFUeXBlT2ZUaGVCYW5kO1xuXG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNBc3NldExpbmtzID1cbiAgfCBDb21wbGV0ZVNUQUNJdGVtWydhc3NldHMnXVxuICB8IENvbXBsZXRlU1RBQ0NvbGxlY3Rpb25bJ2l0ZW1fYXNzZXRzJ107XG5cbmV4cG9ydCBlbnVtIEJhbmRDb21iaW5hdGlvbiB7XG4gIC8qKiBSZW5kZXIgYSBzaW5nbGUgcmFzdGVyIGJhbmQuICovXG4gIFNpbmdsZSA9ICdzaW5nbGUnLFxuXG4gIC8qKiBSZW5kZXIgdGhyZWUgYmFuZHMgdG9nZXRoZXIgb24gdGhlIEdQVS5cbiAgICogTm90ZSB0aGF0IHRoaXMgY291bGQgYmUgXCJ0cnVlIGNvbG9yXCIgaWYgdGhlIGZpcnN0IGJhbmQgaXMgcmVkLCB0aGUgc2Vjb25kIGlzIGdyZWVuLCBhbmQgdGhlXG4gICAqIHRoaXJkIGlzIGJsdWUuIEJ1dCBpdCBjb3VsZCBhbHNvIGJlIFwiZmFsc2UgY29sb3JcIiBpZiB0aGUgdGhyZWUgYmFuZHMgY2hvc2VuIGFyZSBub3QgUkdCLlxuICAgKi9cbiAgUmdiID0gJ3JnYicsXG5cbiAgLyoqIENhbGN1bGF0ZSB0aGUgTm9ybWFsaXplZCBEaWZmZXJlbmNlIFZlZ2V0YXRpb24gSW5kZXggKE5EVkkpIG9uIHR3byBiYW5kcy4gKi9cbiAgTm9ybWFsaXplZERpZmZlcmVuY2UgPSAnbm9ybWFsaXplZERpZmZlcmVuY2UnLFxuXG4gIC8qKiBDYWxjdWxhdGUgdGhlIEVWSSBvbiB0d28gYmFuZHMuICovXG4gIEVuaGFuY2VkVmVnZXRhdGlvbkluZGV4ID0gJ2VuaGFuY2VkVmVnZXRhdGlvbkluZGV4JyxcblxuICAvKiogQ2FsY3VsYXRlIFNBVkkgb24gdHdvIGJhbmRzLiAqL1xuICBTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXggPSAnc29pbEFkanVzdGVkVmVnZXRhdGlvbkluZGV4JyxcblxuICAvKiogQ2FsY3VsYXRlIE1TQVZJIG9uIHR3byBiYW5kcy4gKi9cbiAgTW9kaWZpZWRTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXggPSAnbW9kaWZpZWRTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXgnXG59XG5cbi8qKlxuICogSWRlbnRpZmllcnMgb2YgU1RBQyBhc3NldHMgdG8gbG9hZFxuICpcbiAqIFRoZXNlIGlkZW50aWZpZXJzIHNob3VsZCBtYXRjaCB0aGUga2V5cyBvZiB0aGUgU1RBQyBhc3NldHMgb2JqZWN0LiBSZWZlciB0b1xuICogaHR0cHM6Ly9naXRodWIuY29tL3JhZGlhbnRlYXJ0aC9zdGFjLXNwZWMvYmxvYi9tYXN0ZXIvaXRlbS1zcGVjL2l0ZW0tc3BlYy5tZCNhc3NldHNcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXRJZHMgPSBzdHJpbmdbXTtcblxuLyoqXG4gKiBJbmRleGVzIG9mIGJhbmRzIHdpdGhpbiBlYWNoIGFzc2V0IHRoYXQgc2hvdWxkIGJlIGxvYWRlZC5cbiAqXG4gKiBFYWNoIGFzc2V0IHJlZmVycyB0byBhIHNpbmdsZSBDbG91ZC1PcHRpbWl6ZWQgR2VvVElGRiBmaWxlIG9uIGRpc2suIEVhY2ggQ09HIGhhcyBhIHdpZHRoLCBoZWlnaHQsXG4gKiBhbmQgb25lIG9yIG1vcmUgYmFuZHMuXG4gKlxuICogVGhpcyBhcnJheSBvZiBpbmRleGVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBsaXN0IG9mIEFzc2V0SWRzLiBUaGUgbnRoIGJhbmQgaW5kZXhcbiAqIGRlc2NyaWJlcyB0aGUgd2hpY2ggaW5kZXggZnJvbSB0aGUgbnRoIGFzc2V0IGlkIHRvIGxvYWQuXG4gKi9cbmV4cG9ydCB0eXBlIEJhbmRJbmRleGVzID0gbnVtYmVyW107XG5cbi8qKlxuICogQW4gYXJyYXkgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIGhvdyBiYW5kcyBzaG91bGQgYmUgcmVvcmRlcmVkIG9uIHRoZSBHUFUuIFRoaXMgYWxsb3dzIGZvclxuICogZmFzdGVyIGNoYW5naW5nIG9mIGJhbmRzIGZvciBzaW5nbGUtYXNzZXQgcmFzdGVyIGRhdGEsIHN1Y2ggYXMgTkFJUC4gV2lsbCBiZSBudWxsIGZvciBtdWx0aS1hc3NldFxuICogU1RBQyBpdGVtcy5cbiAqL1xuZXhwb3J0IHR5cGUgUmVuZGVyQmFuZEluZGV4ZXMgPSBCYW5kSW5kZXhlcyB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIEFzc2V0UmVxdWVzdEluZm8gPSB7XG4gIGxvYWRBc3NldElkczogQXNzZXRJZHM7XG4gIGxvYWRCYW5kSW5kZXhlczogQmFuZEluZGV4ZXM7XG4gIHJlbmRlckJhbmRJbmRleGVzOiBSZW5kZXJCYW5kSW5kZXhlcztcbn07XG5cbi8qKiBVc2VyLXByb3ZpZGVkIGluZm9ybWF0aW9uIGZvciBob3cgdG8gcmVuZGVyIGEgcHJlc2V0ICovXG5leHBvcnQgdHlwZSBQcmVzZXRPcHRpb24gPSB7XG4gIHNpbmdsZUJhbmQ/OiB7XG4gICAgYXNzZXRJZDogc3RyaW5nO1xuICAgIGJhbmRJbmRleD86IG51bWJlcjtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFTb3VyY2VQYXJhbXMgPSBBc3NldFJlcXVlc3RJbmZvICYge1xuICBtaW5ab29tOiBudW1iZXI7XG4gIG1heFpvb206IG51bWJlcjtcbiAgbWluUGl4ZWxWYWx1ZTogbnVtYmVyO1xuICBtYXhQaXhlbFZhbHVlOiBudW1iZXI7XG4gIG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZT86IG51bWJlcjtcbiAgZ2xvYmFsQm91bmRzOiBudW1iZXJbXSB8IG51bGw7XG4gIGRhdGFUeXBlOiBEYXRhVHlwZU9mVGhlQmFuZDtcbn07XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsQ29sb3JtYXBPcHRpb25zID0ge1xuICBjb2xvck1hcD86IENvbG9yTWFwO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBFeHRlbmRlZEtlcGxlclNUQUMgPSB7cmFzdGVyVGlsZVNlcnZlclVybHM/OiBbXX07XG5cbi8qKlxuICogQ3VzdG9tIGZpZWxkcyB3ZSBwYXNzIG9uIHRvIHRoZSBnZXRUaWxlRGF0YSBjYWxsYmFja1xuICogQW55dGhpbmcgcmVxdWlyZWQgdG8ga25vdyBfd2hhdCBkYXRhIHRvIGxvYWRfIHNob3VsZCBiZSBwYXNzZWQgaW4gaGVyZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFDdXN0b21Qcm9wcyA9IFBpY2s8QXNzZXRSZXF1ZXN0SW5mbywgJ2xvYWRBc3NldElkcycgfCAnbG9hZEJhbmRJbmRleGVzJz4gJiB7XG4gIHN0YWM6IENvbXBsZXRlU1RBQ09iamVjdCAmIEV4dGVuZGVkS2VwbGVyU1RBQztcbiAgY29sb3JtYXBJZDogc3RyaW5nO1xuICBjYXRlZ29yaWNhbENvbG9yTWFwOiBDb2xvck1hcDtcbiAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWU/OiBudW1iZXI7XG4gIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuXG4gIC8qKiBJZiB0cnVlLCBmZXRjaCB0ZXJyYWluIGRhdGEgYXMgd2VsbCBhcyB0ZXh0dXJlIGRhdGEuICovXG4gIHNob3VsZExvYWRUZXJyYWluOiBib29sZWFuO1xuICBnbG9iYWxCb3VuZHM6IG51bWJlcltdIHwgbnVsbDtcbiAgdXNlU1RBQ1NlYXJjaGluZzogYm9vbGVhbjtcbiAgc3RhY1NlYXJjaFByb3ZpZGVyOiBzdHJpbmc7XG4gIHN0YXJ0RGF0ZTogc3RyaW5nO1xuICBlbmREYXRlOiBzdHJpbmc7XG5cbiAgLyogU3RyaW5naWZpZWQgSlNPTiByZXByZXNlbnRpbmcgYSBTVEFDIEFQSSBTZWFyY2ggUXVlcnkgdGhlIGJhY2tlbmQgc2hvdWxkIHJlcXVlc3QgZnJvbSBhIHNlcnZlci4gKi9cbiAgX3N0YWNRdWVyeT86IHN0cmluZztcbn07XG5cbi8qKiBQcm9wZXJ0aWVzIHByb3ZpZGVkIHRvIGdldFRpbGVEYXRhIGJ5IHRoZSBkZWNrLmdsIFRpbGVMYXllciAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcyB7XG4gIGluZGV4OiB7eDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcn07XG4gIHVybD86IHN0cmluZztcblxuICAvKiogQm91bmRpbmcgYm94IG9mIHRoZSBjdXJyZW50IHdlYiBtZXJjYXRvciB0aWxlLiAqL1xuICBiYm94OiB7d2VzdDogbnVtYmVyOyBub3J0aDogbnVtYmVyOyBlYXN0OiBudW1iZXI7IHNvdXRoOiBudW1iZXJ9O1xuXG4gIC8qKiBBYm9ydFNpZ25hbCB1c2VkIGZvciBjYW5jZWxsaW5nIHJlcXVlc3RzICovXG4gIHNpZ25hbDogQWJvcnRTaWduYWw7XG59XG5cbi8qKiBQcm9wZXJ0aWVzIHBhc3NlZCBpbnRvIHRoZSBkZWNrLmdsIFRpbGVMYXllciBnZXRUaWxlRGF0YSBjYWxsYmFjayAqL1xuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFQcm9wcyA9IEdldFRpbGVEYXRhQ3VzdG9tUHJvcHMgJiBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcztcblxuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFPdXRwdXQgPSBhbnkgfCBudWxsO1xuXG5leHBvcnQgdHlwZSBSZW5kZXJTdWJMYXllcnNDdXN0b21Qcm9wcyA9IENvbG9yUmVzY2FsaW5nICZcbiAgUGljazxBc3NldFJlcXVlc3RJbmZvLCAncmVuZGVyQmFuZEluZGV4ZXMnPiAmIHtcbiAgICBvcGFjaXR5OiBudW1iZXI7XG4gICAgbGluZWFyUmVzY2FsaW5nOiBib29sZWFuO1xuICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcjogW251bWJlciwgbnVtYmVyXTtcbiAgICBub25MaW5lYXJSZXNjYWxpbmc6IGJvb2xlYW47XG4gICAgbWluUGl4ZWxWYWx1ZTogbnVtYmVyO1xuICAgIG1heFBpeGVsVmFsdWU6IG51bWJlcjtcbiAgICBiYW5kQ29tYmluYXRpb246IEJhbmRDb21iaW5hdGlvbjtcbiAgICBmaWx0ZXJFbmFibGVkOiBib29sZWFuO1xuICAgIGZpbHRlclJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICAgIGN1cnJlbnRUaW1lOiBudW1iZXI7XG4gICAgZGF0YVR5cGU6IERhdGFUeXBlT2ZUaGVCYW5kO1xuICAgIG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICAgIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICAgIGhhc0NhdGVnb3JpY2FsQ29sb3JNYXA6IGJvb2xlYW47XG4gICAgaGFzU2hhZG93RWZmZWN0PzogYm9vbGVhbjtcbiAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJTdWJMYXllcnNEZWZhdWx0UHJvcHMge1xuICBpZDogc3RyaW5nO1xuICB0aWxlOiBfVGlsZTJESGVhZGVyPEdldFRpbGVEYXRhT3V0cHV0PjtcbiAgZGF0YTogR2V0VGlsZURhdGFPdXRwdXQ7XG59XG5cbmV4cG9ydCB0eXBlIFJlbmRlclN1YkxheWVyc1Byb3BzID0gUmVuZGVyU3ViTGF5ZXJzQ3VzdG9tUHJvcHMgJiBSZW5kZXJTdWJMYXllcnNEZWZhdWx0UHJvcHM7XG5cbi8qKiBSZXF1aXJlZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcmVuZGVyIGVhY2ggcHJlc2V0ICovXG5leHBvcnQgaW50ZXJmYWNlIFByZXNldERhdGEge1xuICBsYWJlbDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBiYW5kQ29tYmluYXRpb246IEJhbmRDb21iaW5hdGlvbjtcbiAgY29tbW9uTmFtZXM/OiBzdHJpbmdbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGluZm9Vcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JSZXNjYWxpbmcge1xuICBnYW1tYUNvbnRyYXN0RmFjdG9yOiBudW1iZXI7XG4gIHNpZ21vaWRhbENvbnRyYXN0RmFjdG9yOiBudW1iZXI7XG4gIHNpZ21vaWRhbEJpYXNGYWN0b3I6IG51bWJlcjtcbiAgc2F0dXJhdGlvblZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3B0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQ29sb3JtYXBJbWFnZURhdGEgPSBUZXh0dXJlMkRQcm9wcztcblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZURhdGEge1xuICBpbWFnZUJhbmRzOiBUZXh0dXJlMkRQcm9wc1tdIHwgbnVsbDtcbiAgaW1hZ2VDb2xvcm1hcD86IFRleHR1cmUyRFByb3BzIHwgbnVsbDtcbiAgaW1hZ2VNYXNrPzogVGV4dHVyZTJEUHJvcHMgfCBudWxsO1xuICBpbWFnZVBhbj86IFRleHR1cmUyRFByb3BzIHwgbnVsbDtcbiAgaW1hZ2VSZ2JhPzogVGV4dHVyZTJEUHJvcHMgfCBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBBc3NldFJlcXVlc3REYXRhID0ge1xuICB1cmw6IHN0cmluZztcbiAgb3B0aW9uczogUmVxdWVzdEluaXQ7XG4gIHVzZU1hc2s6IGJvb2xlYW47XG4gIC8qKiBQYXNzIHRoaXMgcHJvcGVydHkgdGhyb3VnaCB0aGUgcmVxdWVzdCB0byBwaWNrIHNwZWNpZmljIGJhbmRzIGZyb20gdGhlIHJlc3BvbnNlICovXG4gIHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcz86IG51bWJlcltdIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIE5QWUxvYWRlckRhdGFUeXBlcyA9XG4gIHwgVWludDhBcnJheVxuICB8IFVpbnQ4Q2xhbXBlZEFycmF5XG4gIHwgSW50OEFycmF5XG4gIHwgVWludDE2QXJyYXlcbiAgfCBJbnQxNkFycmF5XG4gIHwgVWludDMyQXJyYXlcbiAgfCBJbnQzMkFycmF5XG4gIHwgRmxvYXQzMkFycmF5XG4gIHwgRmxvYXQ2NEFycmF5O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5QWUxvYWRlclJlc3BvbnNlIHtcbiAgZGF0YTogTlBZTG9hZGVyRGF0YVR5cGVzO1xuICBoZWFkZXI6IHtcbiAgICBkZXNjcjogc3RyaW5nO1xuICAgIHNoYXBlOiBudW1iZXJbXTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWluRGF0YSB7XG4gIGhlYWRlcjoge1xuICAgIHZlcnRleENvdW50OiBudW1iZXI7XG4gICAgYm91bmRpbmdCb3g6IFtbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXV07XG4gIH07XG4gIG1vZGU6IDQ7XG4gIGluZGljZXM6IHtcbiAgICB2YWx1ZTogVHlwZWRBcnJheTtcbiAgICBzaXplOiAxO1xuICB9O1xuICBhdHRyaWJ1dGVzOiB7XG4gICAgUE9TSVRJT046IHtcbiAgICAgIHZhbHVlOiBUeXBlZEFycmF5O1xuICAgICAgc2l6ZTogMztcbiAgICB9O1xuICAgIFRFWENPT1JEXzA6IHtcbiAgICAgIHZhbHVlOiBUeXBlZEFycmF5O1xuICAgICAgc2l6ZTogMjtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBLZXBsZXJSYXN0ZXJEYXRhc2V0ID0gS2VwbGVyRGF0YXNldCAmIHtcbiAgbWV0YWRhdGE6IENvbXBsZXRlU1RBQ09iamVjdDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGlsZTJESGVhZGVyIHtcbiAgY29udGVudD86IHtcbiAgICB0ZXJyYWluPzogVGVycmFpbkRhdGE7XG4gICAgaW1hZ2VzOiBHZXRUaWxlRGF0YU91dHB1dDtcbiAgfSB8IG51bGw7XG4gIGdldCBkYXRhKCk6IEdldFRpbGVEYXRhT3V0cHV0O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQUEsSUFvQllBLGVBQWUsR0FBQUMsT0FBQSxDQUFBRCxlQUFBLDBCQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQUEsT0FBZkEsZUFBZTtBQUFBO0FBdUIzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFvQkE7QUFZQTtBQWdDQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -36,3 +36,6 @@ export declare function getTerrainUrl(rasterTileServerUrls: string[], x: number,
36
36
  * https://www.linkedin.com/pulse/fast-cesium-terrain-rendering-new-quantized-mesh-output-alvaro-huarte/
37
37
  */
38
38
  export declare function getMeshMaxError(z: number, multiplier: number): number;
39
+ export declare const RasterLayerResources: {
40
+ rasterColorMap: (colormapId: string) => string;
41
+ };