kepler.gl 3.1.5 → 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 (165) 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/content-v2/sha512/a6/24/e627b9d220d419ebbcd587d4a259bfdefa4e2a415bffa609a2388ad0b2f98ff87bc25b05959f5523f920d81c80d22ea832fea3de26f385bf3980061f6192 +1 -0
  72. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/68/bb/2c3d5cb60ef7b9e6d889b7d9b75b05761c58ee43b954df1a262102d3a106 +2 -0
  73. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/93/38/f167b214acd87fc28cf533f463b7423ce65340878809b494323fae359cb4 +2 -0
  74. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/c9/15/fa84924a275687fd07d9edc843fb826bd3d3733dc8f56523787fb2cba9b4 +2 -0
  75. package/src/constants/package.json +2 -2
  76. package/src/constants/src/default-settings.ts +5 -10
  77. package/src/constants/umd/keplergl.min.js +1 -1
  78. package/src/deckgl-arrow-layers/package.json +2 -2
  79. package/src/deckgl-layers/dist/raster/images.js +3 -3
  80. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.d.ts +1 -1
  81. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +2 -2
  82. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer.js +3 -9
  83. package/src/deckgl-layers/package.json +4 -4
  84. package/src/deckgl-layers/src/raster/images.ts +1 -1
  85. package/src/deckgl-layers/src/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.ts +12 -33
  86. package/src/deckgl-layers/src/raster/raster-mesh-layer/raster-mesh-layer.ts +2 -5
  87. package/src/duckdb/dist/table/duckdb-table.d.ts +1 -1
  88. package/src/duckdb/package.json +6 -6
  89. package/src/effects/dist/effect.d.ts +1 -0
  90. package/src/effects/dist/effect.js +7 -1
  91. package/src/effects/package.json +5 -5
  92. package/src/effects/src/effect.ts +5 -0
  93. package/src/layers/dist/base-layer.d.ts +1 -1
  94. package/src/layers/dist/geojson-layer/geojson-layer.d.ts +1 -1
  95. package/src/layers/dist/geojson-layer/geojson-utils.d.ts +3 -3
  96. package/src/layers/dist/icon-layer/icon-layer.d.ts +0 -1
  97. package/src/layers/dist/icon-layer/icon-layer.js +3 -4
  98. package/src/layers/dist/index.d.ts +2 -1
  99. package/src/layers/dist/index.js +16 -8
  100. package/src/layers/dist/raster-tile/image.d.ts +6 -0
  101. package/src/layers/dist/raster-tile/image.js +39 -22
  102. package/src/layers/dist/raster-tile/raster-tile-layer.d.ts +2 -8
  103. package/src/layers/dist/raster-tile/raster-tile-layer.js +20 -35
  104. package/src/layers/dist/raster-tile/types.d.ts +1 -0
  105. package/src/layers/dist/raster-tile/types.js +1 -1
  106. package/src/layers/dist/raster-tile/url.d.ts +3 -0
  107. package/src/layers/dist/raster-tile/url.js +7 -1
  108. package/src/layers/dist/trip-layer/trip-layer.d.ts +1 -1
  109. package/src/layers/package.json +9 -9
  110. package/src/layers/src/icon-layer/icon-layer.ts +3 -5
  111. package/src/layers/src/index.ts +2 -1
  112. package/src/layers/src/raster-tile/image.ts +17 -5
  113. package/src/layers/src/raster-tile/raster-tile-layer.ts +18 -29
  114. package/src/layers/src/raster-tile/types.ts +1 -0
  115. package/src/layers/src/raster-tile/url.ts +6 -0
  116. package/src/localization/package.json +1 -1
  117. package/src/processors/package.json +7 -7
  118. package/src/reducers/dist/index.d.ts +1 -0
  119. package/src/reducers/dist/index.js +8 -1
  120. package/src/reducers/dist/layer-utils.d.ts +2 -0
  121. package/src/reducers/dist/layer-utils.js +23 -4
  122. package/src/reducers/dist/map-style-updaters.d.ts +1 -0
  123. package/src/reducers/dist/map-style-updaters.js +10 -5
  124. package/src/reducers/dist/vis-state-updaters.js +3 -12
  125. package/src/reducers/dist/vis-state.d.ts +4 -4
  126. package/src/reducers/package.json +16 -16
  127. package/src/reducers/src/index.ts +1 -0
  128. package/src/reducers/src/layer-utils.ts +22 -4
  129. package/src/reducers/src/map-style-updaters.ts +16 -8
  130. package/src/reducers/src/vis-state-updaters.ts +0 -8
  131. package/src/schemas/package.json +7 -7
  132. package/src/styles/dist/base.d.ts +4 -0
  133. package/src/styles/dist/base.js +10 -5
  134. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/15/ff/0d5d265a9aac90d367588258e15bade446b406199e4f89eebe00a15f0ae15cb46533e3490a435bd3c2028c11baf5cf980129b56fbc9df269850d75f36930 +1 -0
  135. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/4b/ee/673360e4b8362fe8483486f8fa132c6b9d9abf45a240d54f76bc3d60d2b01e530c4efd92baad3479d54e7fa48474cb9d52e633ceb9dfec546588b6981cfc +1 -0
  136. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a5/1f/7149cdcef3cb8e64025c197e3a6a47482bf1027c0991969349c7f1ec68e76f091966010bb72674850b48ed8361c1953b1b08da7dd66143642b32ce467635 +1 -0
  137. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/b7/6d/49546dbc3e903a5e6771b0ead707e4f4605454ac2bc718d0f0bf801b96a7 +2 -0
  138. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/bf/bd/77b9889db712486a6db4f34442ad9371c8a7a6a8ea20d4d0f484df4dc841 +2 -0
  139. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c3/91/45735456a88c6ecc20a341b94971da9d02562b936da95a407f157b2f0ece +2 -0
  140. package/src/styles/package.json +2 -2
  141. package/src/styles/src/base.ts +6 -0
  142. package/src/styles/umd/keplergl.min.js +1 -1
  143. package/src/table/dist/{src/table/src/kepler-table.d.ts → kepler-table.d.ts} +2 -2
  144. package/src/table/dist/kepler-table.js +6 -4
  145. package/src/table/dist/tileset/vector-tile-utils.js +2 -2
  146. package/src/table/package.json +5 -5
  147. package/src/table/src/kepler-table.ts +4 -3
  148. package/src/table/src/tileset/vector-tile-utils.ts +1 -1
  149. package/src/table/tsconfig.production.json +2 -1
  150. package/src/tasks/package.json +2 -2
  151. package/src/types/effects.d.ts +1 -0
  152. package/src/types/package.json +1 -1
  153. package/src/utils/dist/application-config.d.ts +1 -0
  154. package/src/utils/dist/application-config.js +4 -4
  155. package/src/utils/package.json +4 -4
  156. package/src/utils/src/application-config.ts +6 -0
  157. package/umd/keplergl.min.js +1226 -1251
  158. package/src/table/dist/src/table/src/tileset/vector-tile-utils.spec.d.ts +0 -1
  159. package/src/table/dist/test/fixtures/tile-metadata.d.ts +0 -65
  160. /package/src/table/dist/{src/table/src/dataset-utils.d.ts → dataset-utils.d.ts} +0 -0
  161. /package/src/table/dist/{src/table/src/gpu-filter-utils.d.ts → gpu-filter-utils.d.ts} +0 -0
  162. /package/src/table/dist/{src/table/src/index.d.ts → index.d.ts} +0 -0
  163. /package/src/table/dist/{src/table/src/tileset → tileset}/raster-tile-utils.d.ts +0 -0
  164. /package/src/table/dist/{src/table/src/tileset → tileset}/tileset-utils.d.ts +0 -0
  165. /package/src/table/dist/{src/table/src/tileset → tileset}/vector-tile-utils.d.ts +0 -0
@@ -17,7 +17,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
17
17
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
18
18
  var _core = require("@loaders.gl/core");
19
19
  var _terrain = require("@loaders.gl/terrain");
20
- var _lodash = _interopRequireDefault(require("lodash.memoize"));
20
+ var _memoize = _interopRequireDefault(require("lodash/memoize"));
21
21
  var _constants = require("@kepler.gl/constants");
22
22
  var _config = require("./config");
23
23
  var _gpuUtils = require("./gpu-utils");
@@ -113,7 +113,7 @@ function _loadImages() {
113
113
  }));
114
114
  return _loadImages.apply(this, arguments);
115
115
  }
116
- var memoizedLoadColormap = (0, _lodash["default"])(function (colormapId) {
116
+ var memoizedLoadColormap = (0, _memoize["default"])(function (colormapId) {
117
117
  if (colormapId === _config.CATEGORICAL_COLORMAP_ID) {
118
118
  return null;
119
119
  } else {
@@ -154,7 +154,7 @@ function _loadColormap() {
154
154
  case 2:
155
155
  _context2.next = 4;
156
156
  return getAssetRequest({
157
- url: _constants.RasterLayerResources.rasterColorMap(colormapId),
157
+ url: _url.RasterLayerResources.rasterColorMap(colormapId),
158
158
  options: {}
159
159
  });
160
160
  case 4:
@@ -556,23 +556,40 @@ function getCategoricalColormapDataUrl(categoricalOptions) {
556
556
  }
557
557
  return getImageDataURL(bitmap, _rasterTileUtils.CATEGORICAL_TEXTURE_WIDTH, 1);
558
558
  }
559
- function loadTerrain(props) {
560
- var _props$index = props.index,
561
- x = _props$index.x,
562
- y = _props$index.y,
563
- z = _props$index.z,
564
- signal = props.signal,
565
- rasterTileServerUrls = props.rasterTileServerUrls;
566
- var meshMaxError = (0, _url.getMeshMaxError)(z, MESH_MULTIPLIER);
567
- var terrainUrl = (0, _url.getTerrainUrl)(rasterTileServerUrls, x, y, z, meshMaxError);
568
- var loaderOptions = (0, _constants.getLoaderOptions)();
569
- return (0, _core.load)(terrainUrl, _terrain.QuantizedMeshLoader, {
570
- fetch: {
571
- signal: signal
572
- },
573
- 'quantized-mesh': _objectSpread(_objectSpread({}, loaderOptions['quantized-mesh']), {}, {
574
- skirtHeight: meshMaxError * 2
575
- })
576
- });
559
+
560
+ /**
561
+ * Load terrain mesh from raster tile server
562
+ * @param props - properties to load terrain data
563
+ * @returns terrain mesh data
564
+ */
565
+ function loadTerrain(_x12) {
566
+ return _loadTerrain.apply(this, arguments);
567
+ }
568
+ function _loadTerrain() {
569
+ _loadTerrain = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(props) {
570
+ var _props$index, x, y, z, boundsForGeometry, signal, rasterTileServerUrls, meshMaxError, terrainUrl, loaderOptions;
571
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
572
+ while (1) switch (_context10.prev = _context10.next) {
573
+ case 0:
574
+ _props$index = props.index, x = _props$index.x, y = _props$index.y, z = _props$index.z, boundsForGeometry = props.boundsForGeometry, signal = props.signal, rasterTileServerUrls = props.rasterTileServerUrls;
575
+ meshMaxError = (0, _url.getMeshMaxError)(z, MESH_MULTIPLIER);
576
+ terrainUrl = (0, _url.getTerrainUrl)(rasterTileServerUrls, x, y, z, meshMaxError);
577
+ loaderOptions = (0, _constants.getLoaderOptions)();
578
+ return _context10.abrupt("return", (0, _core.load)(terrainUrl, _terrain.QuantizedMeshLoader, {
579
+ fetch: {
580
+ signal: signal
581
+ },
582
+ 'quantized-mesh': _objectSpread(_objectSpread({}, loaderOptions['quantized-mesh']), {}, {
583
+ bounds: boundsForGeometry,
584
+ skirtHeight: meshMaxError * 2
585
+ })
586
+ }));
587
+ case 5:
588
+ case "end":
589
+ return _context10.stop();
590
+ }
591
+ }, _callee10);
592
+ }));
593
+ return _loadTerrain.apply(this, arguments);
577
594
  }
578
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfdGVycmFpbiIsIl9sb2Rhc2giLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvbnN0YW50cyIsIl9jb25maWciLCJfZ3B1VXRpbHMiLCJfcmFzdGVyVGlsZVV0aWxzIiwiX3VybCIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZ2V0SW1hZ2VEYXRhVVJMIiwiYml0bWFwIiwid2lkdGgiLCJoZWlnaHQiLCJjYW52YXMiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRDb250ZXh0Iiwic2V0QXR0cmlidXRlIiwiY29uY2F0IiwiY3R4IiwiaSIsIl9iaXRtYXAkc3ViYXJyYXkiLCJzdWJhcnJheSIsIl9iaXRtYXAkc3ViYXJyYXkyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZyIsImIiLCJhIiwiZmlsbFN0eWxlIiwiZmlsbFJlY3QiLCJ0b0RhdGFVUkwiLCJNRVNIX01VTFRJUExJRVIiLCJsb2FkSW1hZ2VzIiwiX3giLCJfeDIiLCJfeDMiLCJfbG9hZEltYWdlcyIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiYXNzZXRSZXF1ZXN0cyIsImNvbG9ybWFwSWQiLCJjYXRlZ29yaWNhbE9wdGlvbnMiLCJfeWllbGQkUHJvbWlzZSRhbGwiLCJfeWllbGQkUHJvbWlzZSRhbGwyIiwic3RhY0ltYWdlcyIsImNvbG9ybWFwIiwiaW1hZ2VDb2xvcm1hcCIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJQcm9taXNlIiwiYWxsIiwibG9hZFNUQUNJbWFnZURhdGEiLCJDQVRFR09SSUNBTF9DT0xPUk1BUF9JRCIsIm1lbW9pemVkTG9hZENvbG9ybWFwIiwic2VudCIsImdlbmVyYXRlQ2F0ZWdvcmljYWxDb2xvcm1hcFRleHR1cmUiLCJhYnJ1cHQiLCJzdG9wIiwibWVtb2l6ZSIsImxvYWRDb2xvcm1hcCIsIl94NCIsIl9sb2FkQ29sb3JtYXAiLCJfY2FsbGVlMiIsInJlcXVlc3QiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJnZXRBc3NldFJlcXVlc3QiLCJ1cmwiLCJjZG5VcmxzIiwicmFzdGVyQ29sb3JNYXAiLCJvcHRpb25zIiwibG9hZEltYWdlIiwiQ09MT1JNQVBfVEVYVFVSRV9QQVJBTUVURVJTIiwiZ2V0U1RBQ0ltYWdlUmVxdWVzdHMiLCJfeDUiLCJfZ2V0U1RBQ0ltYWdlUmVxdWVzdHMiLCJfY2FsbGVlMyIsImxvYWRBc3NldElkcyIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsImdldFNpbmdsZUFzc2V0U1RBQ1JlcXVlc3QiLCJnZXRNdWx0aUFzc2V0U1RBQ1JlcXVlc3QiLCJfeDYiLCJfbG9hZFNUQUNJbWFnZURhdGEiLCJfY2FsbGVlNCIsInJlcXVlc3RzIiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwibG9hZFNpbmdsZUFzc2V0U1RBQyIsImxvYWRNdWx0aUFzc2V0U1RBQyIsIl94NyIsIl9nZXRBc3NldFJlcXVlc3QiLCJfY2FsbGVlNSIsIl9yZWYiLCJwYXJhbXMiLCJfcmVmJHVzZU1hc2siLCJ1c2VNYXNrIiwicmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzIiwicmVxdWVzdFVybCIsInJlcXVlc3RQYXJhbXMiLCJyZXF1ZXN0T3B0aW9ucyIsImFzc2V0VXJsIiwiX2NhbGxlZTUkIiwiX2NvbnRleHQ1IiwiVVJMU2VhcmNoUGFyYW1zIiwidG9TdHJpbmciLCJfeDgiLCJfZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdCIsIl9jYWxsZWU2Iiwic3RhYyIsImxvYWRCYW5kSW5kZXhlcyIsInNpZ25hbCIsInVzZVNUQUNTZWFyY2hpbmciLCJfb3B0aW9ucyRpbmRleCIsIngiLCJ5IiwieiIsInN0YWNTZWFyY2hQcm92aWRlciIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJfc3RhY1F1ZXJ5IiwidXJsUGFyYW1zIiwiX2NhbGxlZTYkIiwiX2NvbnRleHQ2IiwiaW5kZXgiLCJ0eXBlIiwiZ2V0U3RhY0FwaVVybFBhcmFtcyIsIm1hc2siLCJnZXRUaXRpbGVyVXJsIiwiZ2V0U2luZ2xlQ09HVXJsUGFyYW1zIiwibG9hZEFzc2V0SWQiLCJfeDkiLCJfZ2V0TXVsdGlBc3NldFNUQUNSZXF1ZXN0IiwiX2NhbGxlZTciLCJfb3B0aW9ucyRpbmRleDIiLCJyZXF1ZXN0RGF0YSIsInJlcXVlc3RNYXNrIiwiX2NhbGxlZTckIiwiX2NvbnRleHQ3IiwiQXJyYXkiLCJmaWxsIiwiemlwIiwibWFwIiwiX3JlZjIiLCJfcmVmMyIsImFzc2V0SWQiLCJ6aXAzIiwiX3JlZjQiLCJfcmVmNSIsImJhbmRJbmRleCIsImlzVmFsaWRSZXF1ZXN0RGF0YSIsIl9yZXF1ZXN0JG9wdGlvbnMiLCJfeDEwIiwiX2xvYWRTaW5nbGVBc3NldFNUQUMiLCJfY2FsbGVlOCIsImltYWdlQmFuZHMiLCJpbWFnZU1hc2siLCJtYXBwZWRJbWFnZUJhbmRzIiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4IiwibG9hZE5weUFycmF5IiwicG9wIiwiX3gxMSIsIl9sb2FkTXVsdGlBc3NldFNUQUMiLCJfY2FsbGVlOSIsIl9yZXN1bHRzJCIsInJlc3VsdHMiLCJfY2FsbGVlOSQiLCJfY29udGV4dDkiLCJmbGF0IiwiYmFuZCIsImsiLCJjIiwiYXJyIiwiZXZlcnkiLCJnZXRDYXRlZ29yaWNhbENvbG9ybWFwRGF0YVVybCIsImdlbmVyYXRlQ2F0ZWdvcmljYWxCaXRtYXBBcnJheSIsIkNBVEVHT1JJQ0FMX1RFWFRVUkVfV0lEVEgiLCJsb2FkVGVycmFpbiIsInByb3BzIiwiX3Byb3BzJGluZGV4IiwicmFzdGVyVGlsZVNlcnZlclVybHMiLCJtZXNoTWF4RXJyb3IiLCJnZXRNZXNoTWF4RXJyb3IiLCJ0ZXJyYWluVXJsIiwiZ2V0VGVycmFpblVybCIsImxvYWRlck9wdGlvbnMiLCJnZXRMb2FkZXJPcHRpb25zIiwibG9hZCIsIlF1YW50aXplZE1lc2hMb2FkZXIiLCJmZXRjaCIsInNraXJ0SGVpZ2h0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci10aWxlL2ltYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbnMgdG8gY3JlYXRlIG9iamVjdHMgdG8gcGFzcyB0byBkZWNrLmdsLXJhc3RlclxuICovXG5cbmltcG9ydCB7bG9hZH0gZnJvbSAnQGxvYWRlcnMuZ2wvY29yZSc7XG5pbXBvcnQge1F1YW50aXplZE1lc2hMb2FkZXJ9IGZyb20gJ0Bsb2FkZXJzLmdsL3RlcnJhaW4nO1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoLm1lbW9pemUnO1xuXG5pbXBvcnQge2dldExvYWRlck9wdGlvbnMsIFJhc3RlckxheWVyUmVzb3VyY2VzIGFzIGNkblVybHN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtDQVRFR09SSUNBTF9DT0xPUk1BUF9JRH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtcbiAgbG9hZE5weUFycmF5LFxuICBnZW5lcmF0ZUNhdGVnb3JpY2FsQ29sb3JtYXBUZXh0dXJlLFxuICBsb2FkSW1hZ2UsXG4gIENPTE9STUFQX1RFWFRVUkVfUEFSQU1FVEVSU1xufSBmcm9tICcuL2dwdS11dGlscyc7XG5pbXBvcnQge0NBVEVHT1JJQ0FMX1RFWFRVUkVfV0lEVEgsIGdlbmVyYXRlQ2F0ZWdvcmljYWxCaXRtYXBBcnJheX0gZnJvbSAnLi9yYXN0ZXItdGlsZS11dGlscyc7XG5pbXBvcnQge1xuICBHZXRUaWxlRGF0YVByb3BzLFxuICBJbWFnZURhdGEsXG4gIFRlcnJhaW5EYXRhLFxuICBBc3NldFJlcXVlc3REYXRhLFxuICBDYXRlZ29yaWNhbENvbG9ybWFwT3B0aW9ucyxcbiAgQ29sb3JtYXBJbWFnZURhdGFcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBnZXRUaXRpbGVyVXJsLFxuICBnZXRUZXJyYWluVXJsLFxuICBnZXRTaW5nbGVDT0dVcmxQYXJhbXMsXG4gIGdldFN0YWNBcGlVcmxQYXJhbXMsXG4gIGdldE1lc2hNYXhFcnJvclxufSBmcm9tICcuL3VybCc7XG5cbi8qKlxuICogQ3JlYXRlIGRhdGFVcmwgaW1hZ2UgZnJvbSBiaXRtYXAgYXJyYXlcbiAqIEBwYXJhbSBiaXRtYXAgLSBSR0JBIGJ5dGUgYml0bWFwIGFycmF5XG4gKiBAcGFyYW0gd2lkdGggLSB3aWR0aCBvZiB0aGUgaW1hZ2VcbiAqIEBwYXJhbSBoZWlnaHQgLSBoZWlnaHQgb2YgdGhlIGltYWdlXG4gKiBAcmV0dXJucyBiYXNlNjQgZGF0YSB1cmwgb2YgdGhlIGltYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbWFnZURhdGFVUkwoYml0bWFwOiBVaW50OEFycmF5LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgaWYgKCFjYW52YXMuZ2V0Q29udGV4dCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7d2lkdGh9YCk7XG4gIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGAke2hlaWdodH1gKTtcbiAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gIGlmICghY3R4KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7XG4gICAgY29uc3QgW3IsIGcsIGIsIGFdID0gYml0bWFwLnN1YmFycmF5KGkgKiA0LCBpICogNCArIDQpO1xuICAgIGlmIChhICE9PSAwKSB7XG4gICAgICBjdHguZmlsbFN0eWxlID0gYHJnYigke3J9LCAke2d9LCAke2J9KWA7XG4gICAgICBjdHguZmlsbFJlY3QoaSwgMCwgMSwgMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbn1cblxuLy8gR2xvYmFsIG11bHRpcGxpZXIgdG8gYmUgYXBwbGllZCB0byB0ZXJyYWluIG1lc2ggcmVzb2x1dGlvblxuLy8gQSBzbWFsbGVyIG51bWJlciB0b3dhcmRzIDAgd2lsbCBjYXVzZSBnZW5lcmF0aW9uIG9mIG1lc2ggZGF0YSB3aXRoIGEgc21hbGxlciBtYXggZXJyb3IgYW5kIHRodXMgYVxuLy8gaGlnaGVyIHJlc29sdXRpb24gbWVzaFxuY29uc3QgTUVTSF9NVUxUSVBMSUVSID0gMC44O1xuXG4vKipcbiAqIExvYWQgaW1hZ2VzIHJlcXVpcmVkIGZvciByYXN0ZXIgdGlsZVxuICogQHBhcmFtIGFzc2V0UmVxdWVzdHMgLSBTVEFDIGFzc2V0IHJlcXVlc3RzXG4gKiBAcGFyYW0gY29sb3JtYXBJZCAtIGNvbG9ybWFwIGlkXG4gKiBAcGFyYW0gY2F0ZWdvcmljYWxPcHRpb25zIC0gY2F0ZWdvcmljYWwgb3B0aW9ucyByZXF1cmVkIGZvciBtYWtpbmcgb2YgY2F0ZWdvcmljYWwgY29sb3JtYXBcbiAqIEByZXR1cm5zIGltYWdlcyBtYXBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRJbWFnZXMoXG4gIGFzc2V0UmVxdWVzdHM6IEFzc2V0UmVxdWVzdERhdGFbXSxcbiAgY29sb3JtYXBJZDogc3RyaW5nLFxuICBjYXRlZ29yaWNhbE9wdGlvbnM6IENhdGVnb3JpY2FsQ29sb3JtYXBPcHRpb25zXG4pOiBQcm9taXNlPEltYWdlRGF0YT4ge1xuICAvLyBXZSBsb2FkIGltYWdlIGRhdGEgKHNpbmdsZSBvciBtdWx0aSBhc3NldCBiYXNlZCBvbiBudW1iZXIgb2YgcmVxdWVzdHMpIGFuZCBjb2xvcm1hcCBpbiBwYXJhbGxlbFxuICBjb25zdCBbc3RhY0ltYWdlcywgY29sb3JtYXBdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIGxvYWRTVEFDSW1hZ2VEYXRhKGFzc2V0UmVxdWVzdHMpLFxuICAgIChjb2xvcm1hcElkICE9PSBDQVRFR09SSUNBTF9DT0xPUk1BUF9JRCAmJiBtZW1vaXplZExvYWRDb2xvcm1hcChjb2xvcm1hcElkKSkgfHwgbnVsbFxuICBdKTtcbiAgbGV0IGltYWdlQ29sb3JtYXAgPSBjb2xvcm1hcDtcbiAgaWYgKGNvbG9ybWFwSWQgPT09IENBVEVHT1JJQ0FMX0NPTE9STUFQX0lEKSB7XG4gICAgaW1hZ2VDb2xvcm1hcCA9IGdlbmVyYXRlQ2F0ZWdvcmljYWxDb2xvcm1hcFRleHR1cmUoY2F0ZWdvcmljYWxPcHRpb25zKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YWNJbWFnZXMsXG4gICAgaW1hZ2VDb2xvcm1hcFxuICB9O1xufVxuXG4vKipcbiAqIENhY2hlIGxvYWRpbmcgb2YgY29sb3JtYXAuIEVhY2ggY29sb3JtYXAgZmlsZSBpcyB2ZXJ5IHNtYWxsLCBvbiB0aGUgb3JkZXIgb2YgYSBmZXcgaHVuZHJlZCBieXRlcyxcbiAqIHNvIGEgZ2xvYmFsIGNhY2hlIGxpa2UgdGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gZWF0IHVwIHRvbyBtdWNoIG1lbW9yeS5cbiAqIE1vc3QgY29sb3JtYXBzIGFyZSBsb2FkZWQgZnJvbSBDRE4uIEluIGNhc2UgY29sb3JtYXBJZCBpcyBjYXRlZ29yaWNhbCwgdGhlIGltYWdlIGlzIGNyZWF0ZWQgZnJvbVxuICogY2F0ZWdvcmljYWwgY29sb3JtYXAgb3B0aW9ucy5cbiAqIE5PVEU6IHRoaXMgaW1wbGVtZW50YXRpb24gd2lsbCBjYWNoZSBwcm9taXNlIHJlamVjdGlvbnMgYXMgd2VsbCwgYnV0IHNpbmNlIHRoZXNlIGFyZSBzbWFsbCBmaWxlc1xuICogb24gdGhlIENETiwgdGhhdCdzIGFuIGFjY2VwdGFibGUgcmlzayBmb3IgdGhlIHRpbWUgYmVpbmcuXG4gKi9cbmNvbnN0IG1lbW9pemVkTG9hZENvbG9ybWFwOiAoY29sb3JtYXBJZDogc3RyaW5nKSA9PiBQcm9taXNlPENvbG9ybWFwSW1hZ2VEYXRhIHwgbnVsbD4gfCBudWxsID1cbiAgbWVtb2l6ZSgoY29sb3JtYXBJZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGNvbG9ybWFwSWQgPT09IENBVEVHT1JJQ0FMX0NPTE9STUFQX0lEKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxvYWRDb2xvcm1hcChjb2xvcm1hcElkKTtcbiAgICB9XG4gIH0pO1xuXG4vKipcbiAqIExvYWQgUE5HIGNvbG9ybWFwLlxuICogU2luY2UgdGhlIGNvbG9ybWFwIGZpbGVzIGFyZSBzbyBzbWFsbCAoY291cGxlIGh1bmRyZWQgYnl0ZXMpLCB3ZSBsb2FkIHRoZW0gYWx3YXlzLCBldmVuIGZvciBhblxuICogUkdCIGNvbXBvc2l0ZSB3aGVyZSB0aGUgY29sb3JtYXAgd29uJ3QgYmUgdXNlZC4gQWZ0ZXIgdGhlIGZpcnN0IGxvYWQsIHRoZSBjb2xvcm1hcCBzaG91bGQgYmVcbiAqIGxvYWRlZCBmcm9tIHRoZSBkaXNrIGNhY2hlLiBCeSBsb2FkaW5nIGFsd2F5cywgd2UgY2FuIHByZXZlbnQgdW5uZWNlc3NhcmlseSB0cmlnZ2VyaW5nXG4gKiBnZXRUaWxlRGF0YSwgd2hpY2ggcmVkdWNlcyBmbGFzaGluZyBmcm9tIHJlbG9hZGluZyB0aGUgaW1hZ2VzIG9uIHRoZSBHUFUuXG4gKlxuICogQHBhcmFtIGNvbG9ybWFwSWQgICAgICBJRCBvZiBjb2xvcm1hcCBQTkdcbiAqXG4gKiBAcmV0dXJucyBpbWFnZSBvYmplY3QgdG8gcGFzcyB0byBUZXh0dXJlMkQgY29uc3RydWN0b3JcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZENvbG9ybWFwKGNvbG9ybWFwSWQ6IHN0cmluZyk6IFByb21pc2U8Q29sb3JtYXBJbWFnZURhdGEgfCBudWxsPiB7XG4gIGlmICghY29sb3JtYXBJZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IGdldEFzc2V0UmVxdWVzdCh7dXJsOiBjZG5VcmxzLnJhc3RlckNvbG9yTWFwKGNvbG9ybWFwSWQpLCBvcHRpb25zOiB7fX0pO1xuICByZXR1cm4gbG9hZEltYWdlKHJlcXVlc3QudXJsLCBDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlMsIHJlcXVlc3Qub3B0aW9ucyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSByZXF1ZXN0IGRhdGEgZm9yIGxvYWRpbmcgYSBzaW5nbGUgb3IgbXVsdGkgYXNzZXQgU1RBQyBtZXRhZGF0YSBvYmplY3QuXG4gKiBAcGFyYW0gb3B0aW9ucyBTVEFDIG1ldGFkYXRhIG9iamVjdCBhbmQgdXNlci1kZWZpbmVkIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBJbWFnZSBkYXRhLCBvciBudWxsIGlmIHRoZSBTVEFDIG1ldGFkYXRhIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U1RBQ0ltYWdlUmVxdWVzdHMoXG4gIG9wdGlvbnM6IEdldFRpbGVEYXRhUHJvcHNcbik6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YVtdIHwgbnVsbD4ge1xuICBjb25zdCB7bG9hZEFzc2V0SWRzfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGxvYWRBc3NldElkcy5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdChvcHRpb25zKTtcbiAgICByZXR1cm4gcmVxdWVzdCA/IFtyZXF1ZXN0XSA6IG51bGw7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgZ2V0TXVsdGlBc3NldFNUQUNSZXF1ZXN0KG9wdGlvbnMpO1xufVxuXG4vLyBUT0RPOiBpbWFnZSBsb2FkaW5nIHNob3VsZCByZWFsbHkgYmUgX2RyaXZlbiBieSB0aGUgbW9kdWxlc19cbi8vIEUuZy4gdGhlIHVzZXIgY2hvb3NlcyB3aGF0IGtpbmQgb2YgcGlwZWxpbmUgdGhleSB3YW50IG9uIHRoZSBHUFUsIHRoZW4gZnJvbSB0aG9zZSBtb2R1bGVzIHdlIGNhblxuLy8gc2VlIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgdGhlIHBhbnNoYXJwZW5lZCBiYW5kLCBjb2xvcm1hcCwgZXRjXG4vKipcbiAqIExvYWQgaW1hZ2VzIGRlZmluZWQgYnkgYSBTVEFDIG1ldGFkYXRhIG9iamVjdCBwbHVzIHVzZXItZGVmaW5lZCBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU1RBQ0ltYWdlRGF0YShyZXF1ZXN0czogQXNzZXRSZXF1ZXN0RGF0YVtdKTogUHJvbWlzZTxJbWFnZURhdGE+IHtcbiAgcmV0dXJuIHJlcXVlc3RzLmxlbmd0aCA9PT0gMSA/IGxvYWRTaW5nbGVBc3NldFNUQUMocmVxdWVzdHNbMF0pIDogbG9hZE11bHRpQXNzZXRTVEFDKHJlcXVlc3RzKTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRoYXQgZm9ybXMgYW4gYXNzZXQgcmVxdWVzdCBiYXNlZCBvbiBnaXZlbiBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXNzZXRSZXF1ZXN0KHtcbiAgdXJsLFxuICBwYXJhbXMsXG4gIG9wdGlvbnMsXG4gIHVzZU1hc2sgPSB0cnVlLFxuICByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXNcbn06IHtcbiAgdXJsOiBzdHJpbmc7XG4gIHBhcmFtcz86IFVSTFNlYXJjaFBhcmFtcyB8IG51bGw7XG4gIG9wdGlvbnM6IFJlcXVlc3RJbml0O1xuICB1c2VNYXNrPzogYm9vbGVhbjtcbiAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzPzogbnVtYmVyW10gfCBudWxsO1xufSk6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YT4ge1xuICBjb25zdCByZXF1ZXN0VXJsID0gdXJsO1xuICBjb25zdCByZXF1ZXN0UGFyYW1zID0gcGFyYW1zID8/IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIGNvbnN0IGFzc2V0VXJsID0gcmVxdWVzdFBhcmFtcyA/IGAke3JlcXVlc3RVcmx9PyR7cmVxdWVzdFBhcmFtcy50b1N0cmluZygpfWAgOiByZXF1ZXN0VXJsO1xuICByZXR1cm4ge3VybDogYXNzZXRVcmwsIG9wdGlvbnM6IHJlcXVlc3RPcHRpb25zLCB1c2VNYXNrLCByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXN9O1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIGZvcm1pbmcgYSByZXF1ZXN0IGZvciBhIHNpbmdsZSBhc3NldCBTVEFDIG1ldGFkYXRhIG9iamVjdC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHksIG1heC1zdGF0ZW1lbnRzXG5hc3luYyBmdW5jdGlvbiBnZXRTaW5nbGVBc3NldFNUQUNSZXF1ZXN0KFxuICBvcHRpb25zOiBHZXRUaWxlRGF0YVByb3BzXG4pOiBQcm9taXNlPEFzc2V0UmVxdWVzdERhdGEgfCBudWxsPiB7XG4gIGNvbnN0IHtcbiAgICBzdGFjLFxuICAgIGxvYWRBc3NldElkcyxcbiAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgc2lnbmFsLFxuICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgaW5kZXg6IHt4LCB5LCB6fSxcbiAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgc3RhcnREYXRlLFxuICAgIGVuZERhdGUsXG4gICAgX3N0YWNRdWVyeVxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCB1c2VNYXNrID0gdHJ1ZTtcblxuICAvLyBPbmx5IGEgc2luZ2xlIFVSTCBiZWNhdXNlIG9ubHkgYSBzaW5nbGUgYXNzZXRcbiAgbGV0IHVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCB1cmxQYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyB8IG51bGwgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIGxldCByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXM6IG51bWJlcltdIHwgbnVsbCA9IGxvYWRCYW5kSW5kZXhlcztcbiAgaWYgKHVzZVNUQUNTZWFyY2hpbmcgJiYgc3RhYy50eXBlICE9PSAnRmVhdHVyZScpIHtcbiAgICB1cmxQYXJhbXMgPSBnZXRTdGFjQXBpVXJsUGFyYW1zKHtcbiAgICAgIHN0YWMsXG4gICAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgICAgbWFzazogdXNlTWFzayxcbiAgICAgIGxvYWRBc3NldElkcyxcbiAgICAgIF9zdGFjUXVlcnlcbiAgICB9KTtcbiAgICB1cmwgPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gIH0gZWxzZSBpZiAoc3RhYy50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICAvLyBzdGFjIGlzIGFuIEl0ZW1cbiAgICB1cmxQYXJhbXMgPSBnZXRTaW5nbGVDT0dVcmxQYXJhbXMoe1xuICAgICAgc3RhYyxcbiAgICAgIGxvYWRBc3NldElkOiBsb2FkQXNzZXRJZHNbMF0sXG4gICAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgICBtYXNrOiB1c2VNYXNrXG4gICAgfSk7XG4gICAgdXJsID0gZ2V0VGl0aWxlclVybCh7c3RhYywgdXNlU1RBQ1NlYXJjaGluZywgeCwgeSwgen0pO1xuICAgIHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcyA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIXVybCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGdldEFzc2V0UmVxdWVzdCh7XG4gICAgdXJsLFxuICAgIHBhcmFtczogdXJsUGFyYW1zLFxuICAgIG9wdGlvbnM6IHtzaWduYWx9LFxuICAgIHVzZU1hc2ssXG4gICAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzXG4gIH0pO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIGZvcm1pbmcgcmVxdWVzdHMgZm9yIGEgbXVsdGkgYXNzZXQgU1RBQyBtZXRhZGF0YSBvYmplY3QuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldE11bHRpQXNzZXRTVEFDUmVxdWVzdChcbiAgb3B0aW9uczogR2V0VGlsZURhdGFQcm9wc1xuKTogUHJvbWlzZTxBc3NldFJlcXVlc3REYXRhW10gfCBudWxsPiB7XG4gIGNvbnN0IHtcbiAgICBzdGFjLFxuICAgIGxvYWRBc3NldElkcyxcbiAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgc2lnbmFsLFxuICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgIHN0YXJ0RGF0ZSxcbiAgICBlbmREYXRlLFxuICAgIGluZGV4OiB7eCwgeSwgen0sXG4gICAgX3N0YWNRdWVyeVxuICB9ID0gb3B0aW9ucztcblxuICAvLyBNdWx0aXBsZSB1cmxzLCBvbmUgZm9yIGVhY2ggYXNzZXRcbiAgbGV0IHJlcXVlc3REYXRhOiB7dXJsOiBzdHJpbmc7IHBhcmFtczogVVJMU2VhcmNoUGFyYW1zIHwgbnVsbDsgb3B0aW9ucz86IFJlcXVlc3RJbml0fVtdID0gW107XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgdGhlcmUncyBvbmx5IG9uZSB2YWxpZGl0eSBtYXNrIGZvciB0aGUgZW50aXJlIGFzc2V0LCBhbmQgdGhlcmVmb3JlIGFueSBvZiB0aGVcbiAgLy8gcmVxdWVzdHMgd291bGQgcmV0dXJuIHRoZSBzYW1lIHZhbGlkaXR5IGJpdG1hcC4gVGhlcmVmb3JlIHdlIG9ubHkgcmVxdWVzdCBhIG1hc2sgZm9yIHRoZSBmaXJzdFxuICAvLyBhc3NldFxuICBjb25zdCByZXF1ZXN0TWFzazogYm9vbGVhbltdID0gbmV3IEFycmF5KGxvYWRBc3NldElkcy5sZW5ndGgpLmZpbGwoZmFsc2UpO1xuICByZXF1ZXN0TWFza1swXSA9IHRydWU7XG5cbiAgaWYgKHVzZVNUQUNTZWFyY2hpbmcgJiYgc3RhYy50eXBlICE9PSAnRmVhdHVyZScpIHtcbiAgICByZXF1ZXN0RGF0YSA9IHppcChsb2FkQXNzZXRJZHMsIHJlcXVlc3RNYXNrKS5tYXAoKFthc3NldElkLCBtYXNrXSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gZ2V0U3RhY0FwaVVybFBhcmFtcyh7XG4gICAgICAgIHN0YWMsXG4gICAgICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlLFxuICAgICAgICBtYXNrLFxuICAgICAgICBsb2FkQXNzZXRJZHM6IFthc3NldElkXSxcbiAgICAgICAgX3N0YWNRdWVyeVxuICAgICAgfSk7XG4gICAgICBjb25zdCB1cmwgPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gICAgICByZXR1cm4ge3VybCwgcGFyYW1zfTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChzdGFjLnR5cGUgPT09ICdGZWF0dXJlJykge1xuICAgIHJlcXVlc3REYXRhID0gemlwMyhsb2FkQXNzZXRJZHMsIGxvYWRCYW5kSW5kZXhlcywgcmVxdWVzdE1hc2spLm1hcChcbiAgICAgIChbYXNzZXRJZCwgYmFuZEluZGV4LCBtYXNrXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBnZXRTaW5nbGVDT0dVcmxQYXJhbXMoe1xuICAgICAgICAgIHN0YWMsXG4gICAgICAgICAgbG9hZEFzc2V0SWQ6IGFzc2V0SWQsXG4gICAgICAgICAgbG9hZEJhbmRJbmRleGVzOiBbYmFuZEluZGV4XSxcbiAgICAgICAgICBtYXNrXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB1cmwgPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gICAgICAgIHJldHVybiB7dXJsLCBwYXJhbXN9O1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBpZiAoaXNWYWxpZFJlcXVlc3REYXRhKHJlcXVlc3REYXRhKSkge1xuICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHJlcXVlc3REYXRhLm1hcChyZXF1ZXN0ID0+XG4gICAgICAgIGdldEFzc2V0UmVxdWVzdCh7Li4ucmVxdWVzdCwgb3B0aW9uczogcmVxdWVzdC5vcHRpb25zID8/IHtzaWduYWx9fSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogTG9hZCBpbWFnZSBkYXRhIHdoZW4gY29uc29saWRhdGVkIGluIGJhbmRzIHdpdGhpbiBhIHNpbmdsZSBTVEFDIEFzc2V0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRTaW5nbGVBc3NldFNUQUMocmVxdWVzdDogQXNzZXRSZXF1ZXN0RGF0YSk6IFByb21pc2U8SW1hZ2VEYXRhPiB7XG4gIGNvbnN0IGltYWdlQmFuZHMgPSBhd2FpdCBsb2FkTnB5QXJyYXkocmVxdWVzdCwgdHJ1ZSk7XG5cbiAgaWYgKCFpbWFnZUJhbmRzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGltYWdlQmFuZHNcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgaW1hZ2VNYXNrID0gKHJlcXVlc3QudXNlTWFzayAmJiBpbWFnZUJhbmRzLnBvcCgpKSB8fCBudWxsO1xuICBsZXQgbWFwcGVkSW1hZ2VCYW5kcyA9IGltYWdlQmFuZHM7XG4gIGlmIChyZXF1ZXN0LnJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcykge1xuICAgIG1hcHBlZEltYWdlQmFuZHMgPSByZXF1ZXN0LnJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcy5tYXAoaSA9PiBpbWFnZUJhbmRzW2ldKTtcbiAgfVxuICByZXR1cm4ge2ltYWdlQmFuZHM6IG1hcHBlZEltYWdlQmFuZHMsIGltYWdlTWFza307XG59XG5cbi8qKlxuICogTG9hZCBpbWFnZSBkYXRhIHdoZW4gc3BsaXQgYW1vbmcgbXVsdGlwbGUgU1RBQyBBc3NldHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZE11bHRpQXNzZXRTVEFDKHJlcXVlc3RzOiBBc3NldFJlcXVlc3REYXRhW10pOiBQcm9taXNlPEltYWdlRGF0YT4ge1xuICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocmVxdWVzdHMubWFwKHJlcXVlc3QgPT4gbG9hZE5weUFycmF5KHJlcXVlc3QsIHRydWUpKSk7XG4gIC8vIFRoZSBmaXJzdCByZXF1ZXN0IGluY2x1ZGVzIGEgbWFza1xuICBjb25zdCBpbWFnZU1hc2sgPSByZXN1bHRzWzBdPy5wb3AoKSB8fCBudWxsO1xuICBjb25zdCBpbWFnZUJhbmRzID0gcmVzdWx0cy5mbGF0KCkuZmlsdGVyKGJhbmQgPT4gYmFuZCAhPT0gbnVsbCkgYXMgSW1hZ2VEYXRhWydpbWFnZUJhbmRzJ107XG4gIHJldHVybiB7aW1hZ2VCYW5kcywgaW1hZ2VNYXNrfTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgdHdvIGFycmF5cyBzaW11bHRhbmVvdXNseSwgc2ltaWxhciB0byBQeXRob24ncyB6aXAgYnVpbHRpblxuICovXG5mdW5jdGlvbiB6aXA8VDEsIFQyPihhOiBUMVtdLCBiOiBUMltdKTogW1QxLCBUMl1bXSB7XG4gIHJldHVybiBhLm1hcCgoaywgaSkgPT4gW2ssIGJbaV1dKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgdGhyZWUgYXJyYXlzIHNpbXVsdGFuZW91c2x5LCBzaW1pbGFyIHRvIFB5dGhvbidzIHppcCBidWlsdGluXG4gKi9cbmZ1bmN0aW9uIHppcDM8VDEsIFQyLCBUMz4oYTogVDFbXSwgYjogVDJbXSwgYzogVDNbXSk6IFtUMSwgVDIsIFQzXVtdIHtcbiAgcmV0dXJuIGEubWFwKChrLCBpKSA9PiBbaywgYltpXSwgY1tpXV0pO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYWxsIGFycmF5IGVsZW1lbnRzIGFyZSBzdHJpbmdzXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRSZXF1ZXN0RGF0YShcbiAgYXJyOiB7dXJsOiB1bmtub3duOyBwYXJhbXM6IHVua25vd247IG9wdGlvbnM/OiB1bmtub3dufVtdXG4pOiBhcnIgaXMge3VybDogc3RyaW5nOyBwYXJhbXM6IFVSTFNlYXJjaFBhcmFtczsgb3B0aW9uczogdW5rbm93bn1bXSB7XG4gIHJldHVybiBhcnIuZXZlcnkoeCA9PiB0eXBlb2YgeD8udXJsID09PSAnc3RyaW5nJyAmJiB4Py5wYXJhbXMgIT09IG51bGwpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBiYXNlNjQgaW1hZ2UgZGF0YSB1cmwgZm9yIGNhdGVnb3JpY2FsIGNvbG9ybWFwXG4gKiBAcGFyYW0gY2F0ZWdvcmljYWxPcHRpb25zIC0gY29sb3IgbWFwIGNvbmZpZ3VyYXRpb24gYW5kIG1pbi1tYXggdmFsdWVzIG9mIGNhdGVnb3JpY2FsIGJhbmRcbiAqIEByZXR1cm5zIGJhc2U2NCBpbWFnZSBkYXRhIHVybFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2F0ZWdvcmljYWxDb2xvcm1hcERhdGFVcmwoXG4gIGNhdGVnb3JpY2FsT3B0aW9uczogQ2F0ZWdvcmljYWxDb2xvcm1hcE9wdGlvbnNcbik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBiaXRtYXAgPSBnZW5lcmF0ZUNhdGVnb3JpY2FsQml0bWFwQXJyYXkoY2F0ZWdvcmljYWxPcHRpb25zKTtcbiAgaWYgKCFiaXRtYXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gZ2V0SW1hZ2VEYXRhVVJMKGJpdG1hcCwgQ0FURUdPUklDQUxfVEVYVFVSRV9XSURUSCwgMSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkVGVycmFpbihwcm9wczoge1xuICBpbmRleDoge3g6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXJ9O1xuICBzaWduYWw6IEFib3J0U2lnbmFsO1xuICByYXN0ZXJUaWxlU2VydmVyVXJsczogc3RyaW5nW107XG59KTogUHJvbWlzZTxUZXJyYWluRGF0YT4ge1xuICBjb25zdCB7XG4gICAgaW5kZXg6IHt4LCB5LCB6fSxcbiAgICBzaWduYWwsXG4gICAgcmFzdGVyVGlsZVNlcnZlclVybHNcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IG1lc2hNYXhFcnJvciA9IGdldE1lc2hNYXhFcnJvcih6LCBNRVNIX01VTFRJUExJRVIpO1xuICBjb25zdCB0ZXJyYWluVXJsID0gZ2V0VGVycmFpblVybChyYXN0ZXJUaWxlU2VydmVyVXJscywgeCwgeSwgeiwgbWVzaE1heEVycm9yKTtcbiAgY29uc3QgbG9hZGVyT3B0aW9ucyA9IGdldExvYWRlck9wdGlvbnMoKTtcblxuICByZXR1cm4gbG9hZCh0ZXJyYWluVXJsLCBRdWFudGl6ZWRNZXNoTG9hZGVyLCB7XG4gICAgZmV0Y2g6IHtzaWduYWx9LFxuICAgICdxdWFudGl6ZWQtbWVzaCc6IHtcbiAgICAgIC4uLmxvYWRlck9wdGlvbnNbJ3F1YW50aXplZC1tZXNoJ10sXG4gICAgICBza2lydEhlaWdodDogbWVzaE1heEVycm9yICogMlxuICAgIH1cbiAgfSkgYXMgUHJvbWlzZTxUZXJyYWluRGF0YT47XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBRUEsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBTUEsSUFBQU8sZ0JBQUEsR0FBQVAsT0FBQTtBQVNBLElBQUFRLElBQUEsR0FBQVIsT0FBQTtBQU1lLFNBQUFTLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsUUFBQWUsZ0JBQUEsYUFBQWhCLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQUUsTUFBQSxDQUFBYyx5QkFBQSxHQUFBZCxNQUFBLENBQUFlLGdCQUFBLENBQUFsQixDQUFBLEVBQUFHLE1BQUEsQ0FBQWMseUJBQUEsQ0FBQWYsQ0FBQSxLQUFBSCxPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBYSxPQUFBLFdBQUFkLENBQUEsSUFBQUUsTUFBQSxDQUFBZ0IsY0FBQSxDQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQU4sQ0FBQSxFQUFBRCxDQUFBLGlCQUFBRCxDQUFBLElBbkNmO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTb0IsZUFBZUEsQ0FBQ0MsTUFBa0IsRUFBRUMsS0FBYSxFQUFFQyxNQUFjLEVBQWlCO0VBQ2hHLElBQU1DLE1BQU0sR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsUUFBUSxDQUFDO0VBQy9DLElBQUksQ0FBQ0YsTUFBTSxDQUFDRyxVQUFVLEVBQUU7SUFDdEIsT0FBTyxJQUFJO0VBQ2I7RUFDQUgsTUFBTSxDQUFDSSxZQUFZLENBQUMsT0FBTyxLQUFBQyxNQUFBLENBQUtQLEtBQUssQ0FBRSxDQUFDO0VBQ3hDRSxNQUFNLENBQUNJLFlBQVksQ0FBQyxRQUFRLEtBQUFDLE1BQUEsQ0FBS04sTUFBTSxDQUFFLENBQUM7RUFDMUMsSUFBTU8sR0FBRyxHQUFHTixNQUFNLENBQUNHLFVBQVUsQ0FBQyxJQUFJLENBQUM7RUFDbkMsSUFBSSxDQUFDRyxHQUFHLEVBQUU7SUFDUixPQUFPLElBQUk7RUFDYjtFQUNBLEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHVCxLQUFLLEVBQUVTLENBQUMsRUFBRSxFQUFFO0lBQzlCLElBQUFDLGdCQUFBLEdBQXFCWCxNQUFNLENBQUNZLFFBQVEsQ0FBQ0YsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7TUFBQUcsaUJBQUEsT0FBQUMsZUFBQSxhQUFBSCxnQkFBQTtNQUEvQy9CLENBQUMsR0FBQWlDLGlCQUFBO01BQUVFLENBQUMsR0FBQUYsaUJBQUE7TUFBRUcsQ0FBQyxHQUFBSCxpQkFBQTtNQUFFSSxDQUFDLEdBQUFKLGlCQUFBO0lBQ2pCLElBQUlJLENBQUMsS0FBSyxDQUFDLEVBQUU7TUFDWFIsR0FBRyxDQUFDUyxTQUFTLFVBQUFWLE1BQUEsQ0FBVTVCLENBQUMsUUFBQTRCLE1BQUEsQ0FBS08sQ0FBQyxRQUFBUCxNQUFBLENBQUtRLENBQUMsTUFBRztNQUN2Q1AsR0FBRyxDQUFDVSxRQUFRLENBQUNULENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQjtFQUNGO0VBQ0EsT0FBT1AsTUFBTSxDQUFDaUIsU0FBUyxDQUFDLFdBQVcsQ0FBQztBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxlQUFlLEdBQUcsR0FBRzs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQSxTQU9zQkMsVUFBVUEsQ0FBQUMsRUFBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUE7RUFBQSxPQUFBQyxXQUFBLENBQUFwQyxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQW9CaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBLFNBQUFrQyxZQUFBO0VBQUFBLFdBQUEsT0FBQUMsa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQXBCTyxTQUFBQyxRQUNMQyxhQUFpQyxFQUNqQ0MsVUFBa0IsRUFDbEJDLGtCQUE4QztJQUFBLElBQUFDLGtCQUFBLEVBQUFDLG1CQUFBLEVBQUFDLFVBQUEsRUFBQUMsUUFBQSxFQUFBQyxhQUFBO0lBQUEsT0FBQVYsWUFBQSxZQUFBVyxJQUFBLFVBQUFDLFNBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtRQUFBO1VBQUFGLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BR1RDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLENBQy9DQyxpQkFBaUIsQ0FBQ2YsYUFBYSxDQUFDLEVBQy9CQyxVQUFVLEtBQUtlLCtCQUF1QixJQUFJQyxvQkFBb0IsQ0FBQ2hCLFVBQVUsQ0FBQyxJQUFLLElBQUksQ0FDckYsQ0FBQztRQUFBO1VBQUFFLGtCQUFBLEdBQUFPLFFBQUEsQ0FBQVEsSUFBQTtVQUFBZCxtQkFBQSxPQUFBckIsZUFBQSxhQUFBb0Isa0JBQUE7VUFIS0UsVUFBVSxHQUFBRCxtQkFBQTtVQUFFRSxRQUFRLEdBQUFGLG1CQUFBO1VBSXZCRyxhQUFhLEdBQUdELFFBQVE7VUFDNUIsSUFBSUwsVUFBVSxLQUFLZSwrQkFBdUIsRUFBRTtZQUMxQ1QsYUFBYSxHQUFHLElBQUFZLDRDQUFrQyxFQUFDakIsa0JBQWtCLENBQUM7VUFDeEU7VUFBQyxPQUFBUSxRQUFBLENBQUFVLE1BQUEsV0FBQTVELGFBQUEsQ0FBQUEsYUFBQSxLQUVJNkMsVUFBVTtZQUNiRSxhQUFhLEVBQWJBO1VBQWE7UUFBQTtRQUFBO1VBQUEsT0FBQUcsUUFBQSxDQUFBVyxJQUFBO01BQUE7SUFBQSxHQUFBdEIsT0FBQTtFQUFBLENBRWhCO0VBQUEsT0FBQUosV0FBQSxDQUFBcEMsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFVRCxJQUFNd0Qsb0JBQXNGLEdBQzFGLElBQUFLLGtCQUFPLEVBQUMsVUFBQ3JCLFVBQWtCLEVBQUs7RUFDOUIsSUFBSUEsVUFBVSxLQUFLZSwrQkFBdUIsRUFBRTtJQUMxQyxPQUFPLElBQUk7RUFDYixDQUFDLE1BQU07SUFDTCxPQUFPTyxZQUFZLENBQUN0QixVQUFVLENBQUM7RUFDakM7QUFDRixDQUFDLENBQUM7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVZBLFNBV2VzQixZQUFZQSxDQUFBQyxHQUFBO0VBQUEsT0FBQUMsYUFBQSxDQUFBbEUsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFTM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBLFNBQUFnRSxjQUFBO0VBQUFBLGFBQUEsT0FBQTdCLGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FUQSxTQUFBNEIsU0FBNEJ6QixVQUFrQjtJQUFBLElBQUEwQixPQUFBO0lBQUEsT0FBQTlCLFlBQUEsWUFBQVcsSUFBQSxVQUFBb0IsVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFsQixJQUFBLEdBQUFrQixTQUFBLENBQUFqQixJQUFBO1FBQUE7VUFBQSxJQUN2Q1gsVUFBVTtZQUFBNEIsU0FBQSxDQUFBakIsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBaUIsU0FBQSxDQUFBVCxNQUFBLFdBQ04sSUFBSTtRQUFBO1VBQUFTLFNBQUEsQ0FBQWpCLElBQUE7VUFBQSxPQUdTa0IsZUFBZSxDQUFDO1lBQUNDLEdBQUcsRUFBRUMsK0JBQU8sQ0FBQ0MsY0FBYyxDQUFDaEMsVUFBVSxDQUFDO1lBQUVpQyxPQUFPLEVBQUUsQ0FBQztVQUFDLENBQUMsQ0FBQztRQUFBO1VBQXZGUCxPQUFPLEdBQUFFLFNBQUEsQ0FBQVgsSUFBQTtVQUFBLE9BQUFXLFNBQUEsQ0FBQVQsTUFBQSxXQUNOLElBQUFlLG1CQUFTLEVBQUNSLE9BQU8sQ0FBQ0ksR0FBRyxFQUFFSyxxQ0FBMkIsRUFBRVQsT0FBTyxDQUFDTyxPQUFPLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQUwsU0FBQSxDQUFBUixJQUFBO01BQUE7SUFBQSxHQUFBSyxRQUFBO0VBQUEsQ0FDNUU7RUFBQSxPQUFBRCxhQUFBLENBQUFsRSxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUFBLFNBT3FCNEUsb0JBQW9CQSxDQUFBQyxHQUFBO0VBQUEsT0FBQUMscUJBQUEsQ0FBQWhGLEtBQUEsT0FBQUUsU0FBQTtBQUFBLEVBYTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBLFNBQUE4RSxzQkFBQTtFQUFBQSxxQkFBQSxPQUFBM0Msa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQWhCTyxTQUFBMEMsU0FDTE4sT0FBeUI7SUFBQSxJQUFBTyxZQUFBLEVBQUFkLE9BQUE7SUFBQSxPQUFBOUIsWUFBQSxZQUFBVyxJQUFBLFVBQUFrQyxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQWhDLElBQUEsR0FBQWdDLFNBQUEsQ0FBQS9CLElBQUE7UUFBQTtVQUVsQjZCLFlBQVksR0FBSVAsT0FBTyxDQUF2Qk8sWUFBWTtVQUFBLE1BRWZBLFlBQVksQ0FBQy9FLE1BQU0sS0FBSyxDQUFDO1lBQUFpRixTQUFBLENBQUEvQixJQUFBO1lBQUE7VUFBQTtVQUFBK0IsU0FBQSxDQUFBL0IsSUFBQTtVQUFBLE9BQ0xnQyx5QkFBeUIsQ0FBQ1YsT0FBTyxDQUFDO1FBQUE7VUFBbERQLE9BQU8sR0FBQWdCLFNBQUEsQ0FBQXpCLElBQUE7VUFBQSxPQUFBeUIsU0FBQSxDQUFBdkIsTUFBQSxXQUNOTyxPQUFPLEdBQUcsQ0FBQ0EsT0FBTyxDQUFDLEdBQUcsSUFBSTtRQUFBO1VBQUFnQixTQUFBLENBQUEvQixJQUFBO1VBQUEsT0FHdEJpQyx3QkFBd0IsQ0FBQ1gsT0FBTyxDQUFDO1FBQUE7VUFBQSxPQUFBUyxTQUFBLENBQUF2QixNQUFBLFdBQUF1QixTQUFBLENBQUF6QixJQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUF5QixTQUFBLENBQUF0QixJQUFBO01BQUE7SUFBQSxHQUFBbUIsUUFBQTtFQUFBLENBQy9DO0VBQUEsT0FBQUQscUJBQUEsQ0FBQWhGLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBQUEsU0FRcUJzRCxpQkFBaUJBLENBQUErQixHQUFBO0VBQUEsT0FBQUMsa0JBQUEsQ0FBQXhGLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBSXZDO0FBQ0E7QUFDQTtBQUZBLFNBQUFzRixtQkFBQTtFQUFBQSxrQkFBQSxPQUFBbkQsa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUpPLFNBQUFrRCxTQUFpQ0MsUUFBNEI7SUFBQSxPQUFBcEQsWUFBQSxZQUFBVyxJQUFBLFVBQUEwQyxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXhDLElBQUEsR0FBQXdDLFNBQUEsQ0FBQXZDLElBQUE7UUFBQTtVQUFBLE9BQUF1QyxTQUFBLENBQUEvQixNQUFBLFdBQzNENkIsUUFBUSxDQUFDdkYsTUFBTSxLQUFLLENBQUMsR0FBRzBGLG1CQUFtQixDQUFDSCxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0ksa0JBQWtCLENBQUNKLFFBQVEsQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBRSxTQUFBLENBQUE5QixJQUFBO01BQUE7SUFBQSxHQUFBMkIsUUFBQTtFQUFBLENBQy9GO0VBQUEsT0FBQUQsa0JBQUEsQ0FBQXhGLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBQUEsU0FLcUJxRSxlQUFlQSxDQUFBd0IsR0FBQTtFQUFBLE9BQUFDLGdCQUFBLENBQUFoRyxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQXFCckM7QUFDQTtBQUNBO0FBQ0E7QUFBQSxTQUFBOEYsaUJBQUE7RUFBQUEsZ0JBQUEsT0FBQTNELGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0F4Qk8sU0FBQTBELFNBQUFDLElBQUE7SUFBQSxJQUFBMUIsR0FBQSxFQUFBMkIsTUFBQSxFQUFBeEIsT0FBQSxFQUFBeUIsWUFBQSxFQUFBQyxPQUFBLEVBQUFDLDJCQUFBLEVBQUFDLFVBQUEsRUFBQUMsYUFBQSxFQUFBQyxjQUFBLEVBQUFDLFFBQUE7SUFBQSxPQUFBcEUsWUFBQSxZQUFBVyxJQUFBLFVBQUEwRCxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXhELElBQUEsR0FBQXdELFNBQUEsQ0FBQXZELElBQUE7UUFBQTtVQUNMbUIsR0FBRyxHQUFBMEIsSUFBQSxDQUFIMUIsR0FBRyxFQUNIMkIsTUFBTSxHQUFBRCxJQUFBLENBQU5DLE1BQU0sRUFDTnhCLE9BQU8sR0FBQXVCLElBQUEsQ0FBUHZCLE9BQU8sRUFBQXlCLFlBQUEsR0FBQUYsSUFBQSxDQUNQRyxPQUFPLEVBQVBBLE9BQU8sR0FBQUQsWUFBQSxjQUFHLElBQUksR0FBQUEsWUFBQSxFQUNkRSwyQkFBMkIsR0FBQUosSUFBQSxDQUEzQkksMkJBQTJCO1VBUXJCQyxVQUFVLEdBQUcvQixHQUFHO1VBQ2hCZ0MsYUFBYSxHQUFHTCxNQUFNLGFBQU5BLE1BQU0sY0FBTkEsTUFBTSxHQUFJLElBQUlVLGVBQWUsQ0FBQyxDQUFDO1VBQy9DSixjQUFjLEdBQUc5QixPQUFPO1VBRXhCK0IsUUFBUSxHQUFHRixhQUFhLE1BQUF0RixNQUFBLENBQU1xRixVQUFVLE9BQUFyRixNQUFBLENBQUlzRixhQUFhLENBQUNNLFFBQVEsQ0FBQyxDQUFDLElBQUtQLFVBQVU7VUFBQSxPQUFBSyxTQUFBLENBQUEvQyxNQUFBLFdBQ2xGO1lBQUNXLEdBQUcsRUFBRWtDLFFBQVE7WUFBRS9CLE9BQU8sRUFBRThCLGNBQWM7WUFBRUosT0FBTyxFQUFQQSxPQUFPO1lBQUVDLDJCQUEyQixFQUEzQkE7VUFBMkIsQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBTSxTQUFBLENBQUE5QyxJQUFBO01BQUE7SUFBQSxHQUFBbUMsUUFBQTtFQUFBLENBQ3RGO0VBQUEsT0FBQUQsZ0JBQUEsQ0FBQWhHLEtBQUEsT0FBQUUsU0FBQTtBQUFBO0FBQUEsU0FNY21GLHlCQUF5QkEsQ0FBQTBCLEdBQUE7RUFBQSxPQUFBQywwQkFBQSxDQUFBaEgsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUE0RHhDO0FBQ0E7QUFDQTtBQUZBLFNBQUE4RywyQkFBQTtFQUFBQSwwQkFBQSxPQUFBM0Usa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQTVEQSxTQUFBMEUsU0FDRXRDLE9BQXlCO0lBQUEsSUFBQXVDLElBQUEsRUFBQWhDLFlBQUEsRUFBQWlDLGVBQUEsRUFBQUMsTUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxjQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLGtCQUFBLEVBQUFDLFNBQUEsRUFBQUMsT0FBQSxFQUFBQyxVQUFBLEVBQUF4QixPQUFBLEVBQUE3QixHQUFBLEVBQUFzRCxTQUFBLEVBQUF4QiwyQkFBQTtJQUFBLE9BQUFoRSxZQUFBLFlBQUFXLElBQUEsVUFBQThFLFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBNUUsSUFBQSxHQUFBNEUsU0FBQSxDQUFBM0UsSUFBQTtRQUFBO1VBR3ZCNkQsSUFBSSxHQVVGdkMsT0FBTyxDQVZUdUMsSUFBSSxFQUNKaEMsWUFBWSxHQVNWUCxPQUFPLENBVFRPLFlBQVksRUFDWmlDLGVBQWUsR0FRYnhDLE9BQU8sQ0FSVHdDLGVBQWUsRUFDZkMsTUFBTSxHQU9KekMsT0FBTyxDQVBUeUMsTUFBTSxFQUNOQyxnQkFBZ0IsR0FNZDFDLE9BQU8sQ0FOVDBDLGdCQUFnQixFQUFBQyxjQUFBLEdBTWQzQyxPQUFPLENBTFRzRCxLQUFLLEVBQUdWLENBQUMsR0FBQUQsY0FBQSxDQUFEQyxDQUFDLEVBQUVDLENBQUMsR0FBQUYsY0FBQSxDQUFERSxDQUFDLEVBQUVDLENBQUMsR0FBQUgsY0FBQSxDQUFERyxDQUFDLEVBQ2ZDLGtCQUFrQixHQUloQi9DLE9BQU8sQ0FKVCtDLGtCQUFrQixFQUNsQkMsU0FBUyxHQUdQaEQsT0FBTyxDQUhUZ0QsU0FBUyxFQUNUQyxPQUFPLEdBRUxqRCxPQUFPLENBRlRpRCxPQUFPLEVBQ1BDLFVBQVUsR0FDUmxELE9BQU8sQ0FEVGtELFVBQVU7VUFHTnhCLE9BQU8sR0FBRyxJQUFJLEVBRXBCO1VBQ0k3QixHQUFrQixHQUFHLElBQUk7VUFDekJzRCxTQUFpQyxHQUFHLElBQUlqQixlQUFlLENBQUMsQ0FBQztVQUN6RFAsMkJBQTRDLEdBQUdhLGVBQWU7VUFBQSxNQUM5REUsZ0JBQWdCLElBQUlILElBQUksQ0FBQ2dCLElBQUksS0FBSyxTQUFTO1lBQUFGLFNBQUEsQ0FBQTNFLElBQUE7WUFBQTtVQUFBO1VBQzdDeUUsU0FBUyxHQUFHLElBQUFLLHdCQUFtQixFQUFDO1lBQzlCakIsSUFBSSxFQUFKQSxJQUFJO1lBQ0pRLGtCQUFrQixFQUFsQkEsa0JBQWtCO1lBQ2xCQyxTQUFTLEVBQVRBLFNBQVM7WUFDVEMsT0FBTyxFQUFQQSxPQUFPO1lBQ1BRLElBQUksRUFBRS9CLE9BQU87WUFDYm5CLFlBQVksRUFBWkEsWUFBWTtZQUNaMkMsVUFBVSxFQUFWQTtVQUNGLENBQUMsQ0FBQztVQUNGckQsR0FBRyxHQUFHLElBQUE2RCxrQkFBYSxFQUFDO1lBQUNuQixJQUFJLEVBQUpBLElBQUk7WUFBRUcsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7WUFBRUUsQ0FBQyxFQUFEQSxDQUFDO1lBQUVDLENBQUMsRUFBREEsQ0FBQztZQUFFQyxDQUFDLEVBQURBO1VBQUMsQ0FBQyxDQUFDO1VBQUNPLFNBQUEsQ0FBQTNFLElBQUE7VUFBQTtRQUFBO1VBQUEsTUFDOUM2RCxJQUFJLENBQUNnQixJQUFJLEtBQUssU0FBUztZQUFBRixTQUFBLENBQUEzRSxJQUFBO1lBQUE7VUFBQTtVQUNoQztVQUNBeUUsU0FBUyxHQUFHLElBQUFRLDBCQUFxQixFQUFDO1lBQ2hDcEIsSUFBSSxFQUFKQSxJQUFJO1lBQ0pxQixXQUFXLEVBQUVyRCxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzVCaUMsZUFBZSxFQUFmQSxlQUFlO1lBQ2ZpQixJQUFJLEVBQUUvQjtVQUNSLENBQUMsQ0FBQztVQUNGN0IsR0FBRyxHQUFHLElBQUE2RCxrQkFBYSxFQUFDO1lBQUNuQixJQUFJLEVBQUpBLElBQUk7WUFBRUcsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7WUFBRUUsQ0FBQyxFQUFEQSxDQUFDO1lBQUVDLENBQUMsRUFBREEsQ0FBQztZQUFFQyxDQUFDLEVBQURBO1VBQUMsQ0FBQyxDQUFDO1VBQ3REbkIsMkJBQTJCLEdBQUcsSUFBSTtVQUFDMEIsU0FBQSxDQUFBM0UsSUFBQTtVQUFBO1FBQUE7VUFBQSxPQUFBMkUsU0FBQSxDQUFBbkUsTUFBQSxXQUU1QixJQUFJO1FBQUE7VUFBQSxJQUdSVyxHQUFHO1lBQUF3RCxTQUFBLENBQUEzRSxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUEyRSxTQUFBLENBQUFuRSxNQUFBLFdBQ0MsSUFBSTtRQUFBO1VBQUFtRSxTQUFBLENBQUEzRSxJQUFBO1VBQUEsT0FHQWtCLGVBQWUsQ0FBQztZQUMzQkMsR0FBRyxFQUFIQSxHQUFHO1lBQ0gyQixNQUFNLEVBQUUyQixTQUFTO1lBQ2pCbkQsT0FBTyxFQUFFO2NBQUN5QyxNQUFNLEVBQU5BO1lBQU0sQ0FBQztZQUNqQmYsT0FBTyxFQUFQQSxPQUFPO1lBQ1BDLDJCQUEyQixFQUEzQkE7VUFDRixDQUFDLENBQUM7UUFBQTtVQUFBLE9BQUEwQixTQUFBLENBQUFuRSxNQUFBLFdBQUFtRSxTQUFBLENBQUFyRSxJQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUFxRSxTQUFBLENBQUFsRSxJQUFBO01BQUE7SUFBQSxHQUFBbUQsUUFBQTtFQUFBLENBQ0g7RUFBQSxPQUFBRCwwQkFBQSxDQUFBaEgsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFBQSxTQUtjb0Ysd0JBQXdCQSxDQUFBa0QsR0FBQTtFQUFBLE9BQUFDLHlCQUFBLENBQUF6SSxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQWlFdkM7QUFDQTtBQUNBO0FBRkEsU0FBQXVJLDBCQUFBO0VBQUFBLHlCQUFBLE9BQUFwRyxrQkFBQSwyQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBakVBLFNBQUFtRyxTQUNFL0QsT0FBeUI7SUFBQSxJQUFBdUMsSUFBQSxFQUFBaEMsWUFBQSxFQUFBaUMsZUFBQSxFQUFBQyxNQUFBLEVBQUFDLGdCQUFBLEVBQUFLLGtCQUFBLEVBQUFDLFNBQUEsRUFBQUMsT0FBQSxFQUFBZSxlQUFBLEVBQUFwQixDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxFQUFBSSxVQUFBLEVBQUFlLFdBQUEsRUFBQUMsV0FBQTtJQUFBLE9BQUF2RyxZQUFBLFlBQUFXLElBQUEsVUFBQTZGLFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBM0YsSUFBQSxHQUFBMkYsU0FBQSxDQUFBMUYsSUFBQTtRQUFBO1VBR3ZCNkQsSUFBSSxHQVVGdkMsT0FBTyxDQVZUdUMsSUFBSSxFQUNKaEMsWUFBWSxHQVNWUCxPQUFPLENBVFRPLFlBQVksRUFDWmlDLGVBQWUsR0FRYnhDLE9BQU8sQ0FSVHdDLGVBQWUsRUFDZkMsTUFBTSxHQU9KekMsT0FBTyxDQVBUeUMsTUFBTSxFQUNOQyxnQkFBZ0IsR0FNZDFDLE9BQU8sQ0FOVDBDLGdCQUFnQixFQUNoQkssa0JBQWtCLEdBS2hCL0MsT0FBTyxDQUxUK0Msa0JBQWtCLEVBQ2xCQyxTQUFTLEdBSVBoRCxPQUFPLENBSlRnRCxTQUFTLEVBQ1RDLE9BQU8sR0FHTGpELE9BQU8sQ0FIVGlELE9BQU8sRUFBQWUsZUFBQSxHQUdMaEUsT0FBTyxDQUZUc0QsS0FBSyxFQUFHVixDQUFDLEdBQUFvQixlQUFBLENBQURwQixDQUFDLEVBQUVDLENBQUMsR0FBQW1CLGVBQUEsQ0FBRG5CLENBQUMsRUFBRUMsQ0FBQyxHQUFBa0IsZUFBQSxDQUFEbEIsQ0FBQyxFQUNmSSxVQUFVLEdBQ1JsRCxPQUFPLENBRFRrRCxVQUFVLEVBR1o7VUFDSWUsV0FBbUYsR0FBRyxFQUFFLEVBRTVGO1VBQ0E7VUFDQTtVQUNNQyxXQUFzQixHQUFHLElBQUlHLEtBQUssQ0FBQzlELFlBQVksQ0FBQy9FLE1BQU0sQ0FBQyxDQUFDOEksSUFBSSxDQUFDLEtBQUssQ0FBQztVQUN6RUosV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7VUFFckIsSUFBSXhCLGdCQUFnQixJQUFJSCxJQUFJLENBQUNnQixJQUFJLEtBQUssU0FBUyxFQUFFO1lBQy9DVSxXQUFXLEdBQUdNLEdBQUcsQ0FBQ2hFLFlBQVksRUFBRTJELFdBQVcsQ0FBQyxDQUFDTSxHQUFHLENBQUMsVUFBQUMsS0FBQSxFQUFxQjtjQUFBLElBQUFDLEtBQUEsT0FBQTdILGVBQUEsYUFBQTRILEtBQUE7Z0JBQW5CRSxPQUFPLEdBQUFELEtBQUE7Z0JBQUVqQixJQUFJLEdBQUFpQixLQUFBO2NBQzlELElBQU1sRCxNQUFNLEdBQUcsSUFBQWdDLHdCQUFtQixFQUFDO2dCQUNqQ2pCLElBQUksRUFBSkEsSUFBSTtnQkFDSlEsa0JBQWtCLEVBQWxCQSxrQkFBa0I7Z0JBQ2xCQyxTQUFTLEVBQVRBLFNBQVM7Z0JBQ1RDLE9BQU8sRUFBUEEsT0FBTztnQkFDUFEsSUFBSSxFQUFKQSxJQUFJO2dCQUNKbEQsWUFBWSxFQUFFLENBQUNvRSxPQUFPLENBQUM7Z0JBQ3ZCekIsVUFBVSxFQUFWQTtjQUNGLENBQUMsQ0FBQztjQUNGLElBQU1yRCxHQUFHLEdBQUcsSUFBQTZELGtCQUFhLEVBQUM7Z0JBQUNuQixJQUFJLEVBQUpBLElBQUk7Z0JBQUVHLGdCQUFnQixFQUFoQkEsZ0JBQWdCO2dCQUFFRSxDQUFDLEVBQURBLENBQUM7Z0JBQUVDLENBQUMsRUFBREEsQ0FBQztnQkFBRUMsQ0FBQyxFQUFEQTtjQUFDLENBQUMsQ0FBQztjQUM1RCxPQUFPO2dCQUFDakQsR0FBRyxFQUFIQSxHQUFHO2dCQUFFMkIsTUFBTSxFQUFOQTtjQUFNLENBQUM7WUFDdEIsQ0FBQyxDQUFDO1VBQ0osQ0FBQyxNQUFNLElBQUllLElBQUksQ0FBQ2dCLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDbENVLFdBQVcsR0FBR1csSUFBSSxDQUFDckUsWUFBWSxFQUFFaUMsZUFBZSxFQUFFMEIsV0FBVyxDQUFDLENBQUNNLEdBQUcsQ0FDaEUsVUFBQUssS0FBQSxFQUFnQztjQUFBLElBQUFDLEtBQUEsT0FBQWpJLGVBQUEsYUFBQWdJLEtBQUE7Z0JBQTlCRixPQUFPLEdBQUFHLEtBQUE7Z0JBQUVDLFNBQVMsR0FBQUQsS0FBQTtnQkFBRXJCLElBQUksR0FBQXFCLEtBQUE7Y0FDeEIsSUFBTXRELE1BQU0sR0FBRyxJQUFBbUMsMEJBQXFCLEVBQUM7Z0JBQ25DcEIsSUFBSSxFQUFKQSxJQUFJO2dCQUNKcUIsV0FBVyxFQUFFZSxPQUFPO2dCQUNwQm5DLGVBQWUsRUFBRSxDQUFDdUMsU0FBUyxDQUFDO2dCQUM1QnRCLElBQUksRUFBSkE7Y0FDRixDQUFDLENBQUM7Y0FDRixJQUFNNUQsR0FBRyxHQUFHLElBQUE2RCxrQkFBYSxFQUFDO2dCQUFDbkIsSUFBSSxFQUFKQSxJQUFJO2dCQUFFRyxnQkFBZ0IsRUFBaEJBLGdCQUFnQjtnQkFBRUUsQ0FBQyxFQUFEQSxDQUFDO2dCQUFFQyxDQUFDLEVBQURBLENBQUM7Z0JBQUVDLENBQUMsRUFBREE7Y0FBQyxDQUFDLENBQUM7Y0FDNUQsT0FBTztnQkFBQ2pELEdBQUcsRUFBSEEsR0FBRztnQkFBRTJCLE1BQU0sRUFBTkE7Y0FBTSxDQUFDO1lBQ3RCLENBQ0YsQ0FBQztVQUNIO1VBQUMsS0FFR3dELGtCQUFrQixDQUFDZixXQUFXLENBQUM7WUFBQUcsU0FBQSxDQUFBMUYsSUFBQTtZQUFBO1VBQUE7VUFBQTBGLFNBQUEsQ0FBQTFGLElBQUE7VUFBQSxPQUNwQkMsT0FBTyxDQUFDQyxHQUFHLENBQ3RCcUYsV0FBVyxDQUFDTyxHQUFHLENBQUMsVUFBQS9FLE9BQU87WUFBQSxJQUFBd0YsZ0JBQUE7WUFBQSxPQUNyQnJGLGVBQWUsQ0FBQXRFLGFBQUEsQ0FBQUEsYUFBQSxLQUFLbUUsT0FBTztjQUFFTyxPQUFPLEdBQUFpRixnQkFBQSxHQUFFeEYsT0FBTyxDQUFDTyxPQUFPLGNBQUFpRixnQkFBQSxjQUFBQSxnQkFBQSxHQUFJO2dCQUFDeEMsTUFBTSxFQUFOQTtjQUFNO1lBQUMsRUFBQyxDQUFDO1VBQUEsQ0FDckUsQ0FDRixDQUFDO1FBQUE7VUFBQSxPQUFBMkIsU0FBQSxDQUFBbEYsTUFBQSxXQUFBa0YsU0FBQSxDQUFBcEYsSUFBQTtRQUFBO1VBQUEsT0FBQW9GLFNBQUEsQ0FBQWxGLE1BQUEsV0FHSSxJQUFJO1FBQUE7UUFBQTtVQUFBLE9BQUFrRixTQUFBLENBQUFqRixJQUFBO01BQUE7SUFBQSxHQUFBNEUsUUFBQTtFQUFBLENBQ1o7RUFBQSxPQUFBRCx5QkFBQSxDQUFBekksS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFBQSxTQUtjMkYsbUJBQW1CQSxDQUFBZ0UsSUFBQTtFQUFBLE9BQUFDLG9CQUFBLENBQUE5SixLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQWlCbEM7QUFDQTtBQUNBO0FBRkEsU0FBQTRKLHFCQUFBO0VBQUFBLG9CQUFBLE9BQUF6SCxrQkFBQSwyQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBakJBLFNBQUF3SCxTQUFtQzNGLE9BQXlCO0lBQUEsSUFBQTRGLFVBQUEsRUFBQUMsU0FBQSxFQUFBQyxnQkFBQTtJQUFBLE9BQUE1SCxZQUFBLFlBQUFXLElBQUEsVUFBQWtILFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBaEgsSUFBQSxHQUFBZ0gsU0FBQSxDQUFBL0csSUFBQTtRQUFBO1VBQUErRyxTQUFBLENBQUEvRyxJQUFBO1VBQUEsT0FDakMsSUFBQWdILHNCQUFZLEVBQUNqRyxPQUFPLEVBQUUsSUFBSSxDQUFDO1FBQUE7VUFBOUM0RixVQUFVLEdBQUFJLFNBQUEsQ0FBQXpHLElBQUE7VUFBQSxJQUVYcUcsVUFBVTtZQUFBSSxTQUFBLENBQUEvRyxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUErRyxTQUFBLENBQUF2RyxNQUFBLFdBQ047WUFDTG1HLFVBQVUsRUFBVkE7VUFDRixDQUFDO1FBQUE7VUFHR0MsU0FBUyxHQUFJN0YsT0FBTyxDQUFDaUMsT0FBTyxJQUFJMkQsVUFBVSxDQUFDTSxHQUFHLENBQUMsQ0FBQyxJQUFLLElBQUk7VUFDM0RKLGdCQUFnQixHQUFHRixVQUFVO1VBQ2pDLElBQUk1RixPQUFPLENBQUNrQywyQkFBMkIsRUFBRTtZQUN2QzRELGdCQUFnQixHQUFHOUYsT0FBTyxDQUFDa0MsMkJBQTJCLENBQUM2QyxHQUFHLENBQUMsVUFBQS9ILENBQUM7Y0FBQSxPQUFJNEksVUFBVSxDQUFDNUksQ0FBQyxDQUFDO1lBQUEsRUFBQztVQUNoRjtVQUFDLE9BQUFnSixTQUFBLENBQUF2RyxNQUFBLFdBQ007WUFBQ21HLFVBQVUsRUFBRUUsZ0JBQWdCO1lBQUVELFNBQVMsRUFBVEE7VUFBUyxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFHLFNBQUEsQ0FBQXRHLElBQUE7TUFBQTtJQUFBLEdBQUFpRyxRQUFBO0VBQUEsQ0FDakQ7RUFBQSxPQUFBRCxvQkFBQSxDQUFBOUosS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFBQSxTQUtjNEYsa0JBQWtCQSxDQUFBeUUsSUFBQTtFQUFBLE9BQUFDLG1CQUFBLENBQUF4SyxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQVFqQztBQUNBO0FBQ0E7QUFGQSxTQUFBc0ssb0JBQUE7RUFBQUEsbUJBQUEsT0FBQW5JLGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FSQSxTQUFBa0ksU0FBa0MvRSxRQUE0QjtJQUFBLElBQUFnRixTQUFBO0lBQUEsSUFBQUMsT0FBQSxFQUFBVixTQUFBLEVBQUFELFVBQUE7SUFBQSxPQUFBMUgsWUFBQSxZQUFBVyxJQUFBLFVBQUEySCxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXpILElBQUEsR0FBQXlILFNBQUEsQ0FBQXhILElBQUE7UUFBQTtVQUFBd0gsU0FBQSxDQUFBeEgsSUFBQTtVQUFBLE9BQ3RDQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ21DLFFBQVEsQ0FBQ3lELEdBQUcsQ0FBQyxVQUFBL0UsT0FBTztZQUFBLE9BQUksSUFBQWlHLHNCQUFZLEVBQUNqRyxPQUFPLEVBQUUsSUFBSSxDQUFDO1VBQUEsRUFBQyxDQUFDO1FBQUE7VUFBakZ1RyxPQUFPLEdBQUFFLFNBQUEsQ0FBQWxILElBQUE7VUFDYjtVQUNNc0csU0FBUyxHQUFHLEVBQUFTLFNBQUEsR0FBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFBRCxTQUFBLHVCQUFWQSxTQUFBLENBQVlKLEdBQUcsQ0FBQyxDQUFDLEtBQUksSUFBSTtVQUNyQ04sVUFBVSxHQUFHVyxPQUFPLENBQUNHLElBQUksQ0FBQyxDQUFDLENBQUNsTCxNQUFNLENBQUMsVUFBQW1MLElBQUk7WUFBQSxPQUFJQSxJQUFJLEtBQUssSUFBSTtVQUFBLEVBQUM7VUFBQSxPQUFBRixTQUFBLENBQUFoSCxNQUFBLFdBQ3hEO1lBQUNtRyxVQUFVLEVBQVZBLFVBQVU7WUFBRUMsU0FBUyxFQUFUQTtVQUFTLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQVksU0FBQSxDQUFBL0csSUFBQTtNQUFBO0lBQUEsR0FBQTJHLFFBQUE7RUFBQSxDQUMvQjtFQUFBLE9BQUFELG1CQUFBLENBQUF4SyxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUtELFNBQVNnSixHQUFHQSxDQUFTdkgsQ0FBTyxFQUFFRCxDQUFPLEVBQWM7RUFDakQsT0FBT0MsQ0FBQyxDQUFDd0gsR0FBRyxDQUFDLFVBQUM2QixDQUFDLEVBQUU1SixDQUFDO0lBQUEsT0FBSyxDQUFDNEosQ0FBQyxFQUFFdEosQ0FBQyxDQUFDTixDQUFDLENBQUMsQ0FBQztFQUFBLEVBQUM7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBU21JLElBQUlBLENBQWE1SCxDQUFPLEVBQUVELENBQU8sRUFBRXVKLENBQU8sRUFBa0I7RUFDbkUsT0FBT3RKLENBQUMsQ0FBQ3dILEdBQUcsQ0FBQyxVQUFDNkIsQ0FBQyxFQUFFNUosQ0FBQztJQUFBLE9BQUssQ0FBQzRKLENBQUMsRUFBRXRKLENBQUMsQ0FBQ04sQ0FBQyxDQUFDLEVBQUU2SixDQUFDLENBQUM3SixDQUFDLENBQUMsQ0FBQztFQUFBLEVBQUM7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBU3VJLGtCQUFrQkEsQ0FDekJ1QixHQUF5RCxFQUNVO0VBQ25FLE9BQU9BLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLFVBQUE1RCxDQUFDO0lBQUEsT0FBSSxRQUFPQSxDQUFDLGFBQURBLENBQUMsdUJBQURBLENBQUMsQ0FBRS9DLEdBQUcsTUFBSyxRQUFRLElBQUksQ0FBQStDLENBQUMsYUFBREEsQ0FBQyx1QkFBREEsQ0FBQyxDQUFFcEIsTUFBTSxNQUFLLElBQUk7RUFBQSxFQUFDO0FBQ3pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTaUYsNkJBQTZCQSxDQUMzQ3pJLGtCQUE4QyxFQUMvQjtFQUNmLElBQU1qQyxNQUFNLEdBQUcsSUFBQTJLLCtDQUE4QixFQUFDMUksa0JBQWtCLENBQUM7RUFDakUsSUFBSSxDQUFDakMsTUFBTSxFQUFFO0lBQ1gsT0FBTyxJQUFJO0VBQ2I7RUFDQSxPQUFPRCxlQUFlLENBQUNDLE1BQU0sRUFBRTRLLDBDQUF5QixFQUFFLENBQUMsQ0FBQztBQUM5RDtBQUVPLFNBQVNDLFdBQVdBLENBQUNDLEtBSTNCLEVBQXdCO0VBQ3ZCLElBQUFDLFlBQUEsR0FJSUQsS0FBSyxDQUhQdkQsS0FBSztJQUFHVixDQUFDLEdBQUFrRSxZQUFBLENBQURsRSxDQUFDO0lBQUVDLENBQUMsR0FBQWlFLFlBQUEsQ0FBRGpFLENBQUM7SUFBRUMsQ0FBQyxHQUFBZ0UsWUFBQSxDQUFEaEUsQ0FBQztJQUNmTCxNQUFNLEdBRUpvRSxLQUFLLENBRlBwRSxNQUFNO0lBQ05zRSxvQkFBb0IsR0FDbEJGLEtBQUssQ0FEUEUsb0JBQW9CO0VBR3RCLElBQU1DLFlBQVksR0FBRyxJQUFBQyxvQkFBZSxFQUFDbkUsQ0FBQyxFQUFFMUYsZUFBZSxDQUFDO0VBQ3hELElBQU04SixVQUFVLEdBQUcsSUFBQUMsa0JBQWEsRUFBQ0osb0JBQW9CLEVBQUVuRSxDQUFDLEVBQUVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFa0UsWUFBWSxDQUFDO0VBQzdFLElBQU1JLGFBQWEsR0FBRyxJQUFBQywyQkFBZ0IsRUFBQyxDQUFDO0VBRXhDLE9BQU8sSUFBQUMsVUFBSSxFQUFDSixVQUFVLEVBQUVLLDRCQUFtQixFQUFFO0lBQzNDQyxLQUFLLEVBQUU7TUFBQy9FLE1BQU0sRUFBTkE7SUFBTSxDQUFDO0lBQ2YsZ0JBQWdCLEVBQUFuSCxhQUFBLENBQUFBLGFBQUEsS0FDWDhMLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztNQUNsQ0ssV0FBVyxFQUFFVCxZQUFZLEdBQUc7SUFBQztFQUVqQyxDQUFDLENBQUM7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==
595
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfdGVycmFpbiIsIl9tZW1vaXplIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zdGFudHMiLCJfY29uZmlnIiwiX2dwdVV0aWxzIiwiX3Jhc3RlclRpbGVVdGlscyIsIl91cmwiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImdldEltYWdlRGF0YVVSTCIsImJpdG1hcCIsIndpZHRoIiwiaGVpZ2h0IiwiY2FudmFzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiZ2V0Q29udGV4dCIsInNldEF0dHJpYnV0ZSIsImNvbmNhdCIsImN0eCIsImkiLCJfYml0bWFwJHN1YmFycmF5Iiwic3ViYXJyYXkiLCJfYml0bWFwJHN1YmFycmF5MiIsIl9zbGljZWRUb0FycmF5MiIsImciLCJiIiwiYSIsImZpbGxTdHlsZSIsImZpbGxSZWN0IiwidG9EYXRhVVJMIiwiTUVTSF9NVUxUSVBMSUVSIiwibG9hZEltYWdlcyIsIl94IiwiX3gyIiwiX3gzIiwiX2xvYWRJbWFnZXMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsImFzc2V0UmVxdWVzdHMiLCJjb2xvcm1hcElkIiwiY2F0ZWdvcmljYWxPcHRpb25zIiwiX3lpZWxkJFByb21pc2UkYWxsIiwiX3lpZWxkJFByb21pc2UkYWxsMiIsInN0YWNJbWFnZXMiLCJjb2xvcm1hcCIsImltYWdlQ29sb3JtYXAiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiUHJvbWlzZSIsImFsbCIsImxvYWRTVEFDSW1hZ2VEYXRhIiwiQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQiLCJtZW1vaXplZExvYWRDb2xvcm1hcCIsInNlbnQiLCJnZW5lcmF0ZUNhdGVnb3JpY2FsQ29sb3JtYXBUZXh0dXJlIiwiYWJydXB0Iiwic3RvcCIsIm1lbW9pemUiLCJsb2FkQ29sb3JtYXAiLCJfeDQiLCJfbG9hZENvbG9ybWFwIiwiX2NhbGxlZTIiLCJyZXF1ZXN0IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0QXNzZXRSZXF1ZXN0IiwidXJsIiwiUmFzdGVyTGF5ZXJSZXNvdXJjZXMiLCJyYXN0ZXJDb2xvck1hcCIsIm9wdGlvbnMiLCJsb2FkSW1hZ2UiLCJDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlMiLCJnZXRTVEFDSW1hZ2VSZXF1ZXN0cyIsIl94NSIsIl9nZXRTVEFDSW1hZ2VSZXF1ZXN0cyIsIl9jYWxsZWUzIiwibG9hZEFzc2V0SWRzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdCIsImdldE11bHRpQXNzZXRTVEFDUmVxdWVzdCIsIl94NiIsIl9sb2FkU1RBQ0ltYWdlRGF0YSIsIl9jYWxsZWU0IiwicmVxdWVzdHMiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJsb2FkU2luZ2xlQXNzZXRTVEFDIiwibG9hZE11bHRpQXNzZXRTVEFDIiwiX3g3IiwiX2dldEFzc2V0UmVxdWVzdCIsIl9jYWxsZWU1IiwiX3JlZiIsInBhcmFtcyIsIl9yZWYkdXNlTWFzayIsInVzZU1hc2siLCJyZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXMiLCJyZXF1ZXN0VXJsIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RPcHRpb25zIiwiYXNzZXRVcmwiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJVUkxTZWFyY2hQYXJhbXMiLCJ0b1N0cmluZyIsIl94OCIsIl9nZXRTaW5nbGVBc3NldFNUQUNSZXF1ZXN0IiwiX2NhbGxlZTYiLCJzdGFjIiwibG9hZEJhbmRJbmRleGVzIiwic2lnbmFsIiwidXNlU1RBQ1NlYXJjaGluZyIsIl9vcHRpb25zJGluZGV4IiwieCIsInkiLCJ6Iiwic3RhY1NlYXJjaFByb3ZpZGVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsIl9zdGFjUXVlcnkiLCJ1cmxQYXJhbXMiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJpbmRleCIsInR5cGUiLCJnZXRTdGFjQXBpVXJsUGFyYW1zIiwibWFzayIsImdldFRpdGlsZXJVcmwiLCJnZXRTaW5nbGVDT0dVcmxQYXJhbXMiLCJsb2FkQXNzZXRJZCIsIl94OSIsIl9nZXRNdWx0aUFzc2V0U1RBQ1JlcXVlc3QiLCJfY2FsbGVlNyIsIl9vcHRpb25zJGluZGV4MiIsInJlcXVlc3REYXRhIiwicmVxdWVzdE1hc2siLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJBcnJheSIsImZpbGwiLCJ6aXAiLCJtYXAiLCJfcmVmMiIsIl9yZWYzIiwiYXNzZXRJZCIsInppcDMiLCJfcmVmNCIsIl9yZWY1IiwiYmFuZEluZGV4IiwiaXNWYWxpZFJlcXVlc3REYXRhIiwiX3JlcXVlc3Qkb3B0aW9ucyIsIl94MTAiLCJfbG9hZFNpbmdsZUFzc2V0U1RBQyIsIl9jYWxsZWU4IiwiaW1hZ2VCYW5kcyIsImltYWdlTWFzayIsIm1hcHBlZEltYWdlQmFuZHMiLCJfY2FsbGVlOCQiLCJfY29udGV4dDgiLCJsb2FkTnB5QXJyYXkiLCJwb3AiLCJfeDExIiwiX2xvYWRNdWx0aUFzc2V0U1RBQyIsIl9jYWxsZWU5IiwiX3Jlc3VsdHMkIiwicmVzdWx0cyIsIl9jYWxsZWU5JCIsIl9jb250ZXh0OSIsImZsYXQiLCJiYW5kIiwiayIsImMiLCJhcnIiLCJldmVyeSIsImdldENhdGVnb3JpY2FsQ29sb3JtYXBEYXRhVXJsIiwiZ2VuZXJhdGVDYXRlZ29yaWNhbEJpdG1hcEFycmF5IiwiQ0FURUdPUklDQUxfVEVYVFVSRV9XSURUSCIsImxvYWRUZXJyYWluIiwiX3gxMiIsIl9sb2FkVGVycmFpbiIsIl9jYWxsZWUxMCIsInByb3BzIiwiX3Byb3BzJGluZGV4IiwiYm91bmRzRm9yR2VvbWV0cnkiLCJyYXN0ZXJUaWxlU2VydmVyVXJscyIsIm1lc2hNYXhFcnJvciIsInRlcnJhaW5VcmwiLCJsb2FkZXJPcHRpb25zIiwiX2NhbGxlZTEwJCIsIl9jb250ZXh0MTAiLCJnZXRNZXNoTWF4RXJyb3IiLCJnZXRUZXJyYWluVXJsIiwiZ2V0TG9hZGVyT3B0aW9ucyIsImxvYWQiLCJRdWFudGl6ZWRNZXNoTG9hZGVyIiwiZmV0Y2giLCJib3VuZHMiLCJza2lydEhlaWdodCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yYXN0ZXItdGlsZS9pbWFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb25zIHRvIGNyZWF0ZSBvYmplY3RzIHRvIHBhc3MgdG8gZGVjay5nbC1yYXN0ZXJcbiAqL1xuXG5pbXBvcnQge2xvYWR9IGZyb20gJ0Bsb2FkZXJzLmdsL2NvcmUnO1xuaW1wb3J0IHtRdWFudGl6ZWRNZXNoTG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC90ZXJyYWluJztcbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcblxuaW1wb3J0IHtnZXRMb2FkZXJPcHRpb25zfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7Q0FURUdPUklDQUxfQ09MT1JNQVBfSUR9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7XG4gIGxvYWROcHlBcnJheSxcbiAgZ2VuZXJhdGVDYXRlZ29yaWNhbENvbG9ybWFwVGV4dHVyZSxcbiAgbG9hZEltYWdlLFxuICBDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlNcbn0gZnJvbSAnLi9ncHUtdXRpbHMnO1xuaW1wb3J0IHtDQVRFR09SSUNBTF9URVhUVVJFX1dJRFRILCBnZW5lcmF0ZUNhdGVnb3JpY2FsQml0bWFwQXJyYXl9IGZyb20gJy4vcmFzdGVyLXRpbGUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgR2V0VGlsZURhdGFQcm9wcyxcbiAgSW1hZ2VEYXRhLFxuICBUZXJyYWluRGF0YSxcbiAgQXNzZXRSZXF1ZXN0RGF0YSxcbiAgQ2F0ZWdvcmljYWxDb2xvcm1hcE9wdGlvbnMsXG4gIENvbG9ybWFwSW1hZ2VEYXRhXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0VGl0aWxlclVybCxcbiAgZ2V0VGVycmFpblVybCxcbiAgZ2V0U2luZ2xlQ09HVXJsUGFyYW1zLFxuICBnZXRTdGFjQXBpVXJsUGFyYW1zLFxuICBnZXRNZXNoTWF4RXJyb3IsXG4gIFJhc3RlckxheWVyUmVzb3VyY2VzXG59IGZyb20gJy4vdXJsJztcblxuLyoqXG4gKiBDcmVhdGUgZGF0YVVybCBpbWFnZSBmcm9tIGJpdG1hcCBhcnJheVxuICogQHBhcmFtIGJpdG1hcCAtIFJHQkEgYnl0ZSBiaXRtYXAgYXJyYXlcbiAqIEBwYXJhbSB3aWR0aCAtIHdpZHRoIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGhlaWdodCAtIGhlaWdodCBvZiB0aGUgaW1hZ2VcbiAqIEByZXR1cm5zIGJhc2U2NCBkYXRhIHVybCBvZiB0aGUgaW1hZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlRGF0YVVSTChiaXRtYXA6IFVpbnQ4QXJyYXksIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICBpZiAoIWNhbnZhcy5nZXRDb250ZXh0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY2FudmFzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHt3aWR0aH1gKTtcbiAgY2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7aGVpZ2h0fWApO1xuICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHdpZHRoOyBpKyspIHtcbiAgICBjb25zdCBbciwgZywgYiwgYV0gPSBiaXRtYXAuc3ViYXJyYXkoaSAqIDQsIGkgKiA0ICsgNCk7XG4gICAgaWYgKGEgIT09IDApIHtcbiAgICAgIGN0eC5maWxsU3R5bGUgPSBgcmdiKCR7cn0sICR7Z30sICR7Yn0pYDtcbiAgICAgIGN0eC5maWxsUmVjdChpLCAwLCAxLCAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xufVxuXG4vLyBHbG9iYWwgbXVsdGlwbGllciB0byBiZSBhcHBsaWVkIHRvIHRlcnJhaW4gbWVzaCByZXNvbHV0aW9uXG4vLyBBIHNtYWxsZXIgbnVtYmVyIHRvd2FyZHMgMCB3aWxsIGNhdXNlIGdlbmVyYXRpb24gb2YgbWVzaCBkYXRhIHdpdGggYSBzbWFsbGVyIG1heCBlcnJvciBhbmQgdGh1cyBhXG4vLyBoaWdoZXIgcmVzb2x1dGlvbiBtZXNoXG5jb25zdCBNRVNIX01VTFRJUExJRVIgPSAwLjg7XG5cbi8qKlxuICogTG9hZCBpbWFnZXMgcmVxdWlyZWQgZm9yIHJhc3RlciB0aWxlXG4gKiBAcGFyYW0gYXNzZXRSZXF1ZXN0cyAtIFNUQUMgYXNzZXQgcmVxdWVzdHNcbiAqIEBwYXJhbSBjb2xvcm1hcElkIC0gY29sb3JtYXAgaWRcbiAqIEBwYXJhbSBjYXRlZ29yaWNhbE9wdGlvbnMgLSBjYXRlZ29yaWNhbCBvcHRpb25zIHJlcXVyZWQgZm9yIG1ha2luZyBvZiBjYXRlZ29yaWNhbCBjb2xvcm1hcFxuICogQHJldHVybnMgaW1hZ2VzIG1hcFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEltYWdlcyhcbiAgYXNzZXRSZXF1ZXN0czogQXNzZXRSZXF1ZXN0RGF0YVtdLFxuICBjb2xvcm1hcElkOiBzdHJpbmcsXG4gIGNhdGVnb3JpY2FsT3B0aW9uczogQ2F0ZWdvcmljYWxDb2xvcm1hcE9wdGlvbnNcbik6IFByb21pc2U8SW1hZ2VEYXRhPiB7XG4gIC8vIFdlIGxvYWQgaW1hZ2UgZGF0YSAoc2luZ2xlIG9yIG11bHRpIGFzc2V0IGJhc2VkIG9uIG51bWJlciBvZiByZXF1ZXN0cykgYW5kIGNvbG9ybWFwIGluIHBhcmFsbGVsXG4gIGNvbnN0IFtzdGFjSW1hZ2VzLCBjb2xvcm1hcF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgbG9hZFNUQUNJbWFnZURhdGEoYXNzZXRSZXF1ZXN0cyksXG4gICAgKGNvbG9ybWFwSWQgIT09IENBVEVHT1JJQ0FMX0NPTE9STUFQX0lEICYmIG1lbW9pemVkTG9hZENvbG9ybWFwKGNvbG9ybWFwSWQpKSB8fCBudWxsXG4gIF0pO1xuICBsZXQgaW1hZ2VDb2xvcm1hcCA9IGNvbG9ybWFwO1xuICBpZiAoY29sb3JtYXBJZCA9PT0gQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQpIHtcbiAgICBpbWFnZUNvbG9ybWFwID0gZ2VuZXJhdGVDYXRlZ29yaWNhbENvbG9ybWFwVGV4dHVyZShjYXRlZ29yaWNhbE9wdGlvbnMpO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhY0ltYWdlcyxcbiAgICBpbWFnZUNvbG9ybWFwXG4gIH07XG59XG5cbi8qKlxuICogQ2FjaGUgbG9hZGluZyBvZiBjb2xvcm1hcC4gRWFjaCBjb2xvcm1hcCBmaWxlIGlzIHZlcnkgc21hbGwsIG9uIHRoZSBvcmRlciBvZiBhIGZldyBodW5kcmVkIGJ5dGVzLFxuICogc28gYSBnbG9iYWwgY2FjaGUgbGlrZSB0aGlzIGlzIG5vdCBleHBlY3RlZCB0byBlYXQgdXAgdG9vIG11Y2ggbWVtb3J5LlxuICogTW9zdCBjb2xvcm1hcHMgYXJlIGxvYWRlZCBmcm9tIENETi4gSW4gY2FzZSBjb2xvcm1hcElkIGlzIGNhdGVnb3JpY2FsLCB0aGUgaW1hZ2UgaXMgY3JlYXRlZCBmcm9tXG4gKiBjYXRlZ29yaWNhbCBjb2xvcm1hcCBvcHRpb25zLlxuICogTk9URTogdGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIGNhY2hlIHByb21pc2UgcmVqZWN0aW9ucyBhcyB3ZWxsLCBidXQgc2luY2UgdGhlc2UgYXJlIHNtYWxsIGZpbGVzXG4gKiBvbiB0aGUgQ0ROLCB0aGF0J3MgYW4gYWNjZXB0YWJsZSByaXNrIGZvciB0aGUgdGltZSBiZWluZy5cbiAqL1xuY29uc3QgbWVtb2l6ZWRMb2FkQ29sb3JtYXA6IChjb2xvcm1hcElkOiBzdHJpbmcpID0+IFByb21pc2U8Q29sb3JtYXBJbWFnZURhdGEgfCBudWxsPiB8IG51bGwgPVxuICBtZW1vaXplKChjb2xvcm1hcElkOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoY29sb3JtYXBJZCA9PT0gQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbG9hZENvbG9ybWFwKGNvbG9ybWFwSWQpO1xuICAgIH1cbiAgfSk7XG5cbi8qKlxuICogTG9hZCBQTkcgY29sb3JtYXAuXG4gKiBTaW5jZSB0aGUgY29sb3JtYXAgZmlsZXMgYXJlIHNvIHNtYWxsIChjb3VwbGUgaHVuZHJlZCBieXRlcyksIHdlIGxvYWQgdGhlbSBhbHdheXMsIGV2ZW4gZm9yIGFuXG4gKiBSR0IgY29tcG9zaXRlIHdoZXJlIHRoZSBjb2xvcm1hcCB3b24ndCBiZSB1c2VkLiBBZnRlciB0aGUgZmlyc3QgbG9hZCwgdGhlIGNvbG9ybWFwIHNob3VsZCBiZVxuICogbG9hZGVkIGZyb20gdGhlIGRpc2sgY2FjaGUuIEJ5IGxvYWRpbmcgYWx3YXlzLCB3ZSBjYW4gcHJldmVudCB1bm5lY2Vzc2FyaWx5IHRyaWdnZXJpbmdcbiAqIGdldFRpbGVEYXRhLCB3aGljaCByZWR1Y2VzIGZsYXNoaW5nIGZyb20gcmVsb2FkaW5nIHRoZSBpbWFnZXMgb24gdGhlIEdQVS5cbiAqXG4gKiBAcGFyYW0gY29sb3JtYXBJZCAgICAgIElEIG9mIGNvbG9ybWFwIFBOR1xuICpcbiAqIEByZXR1cm5zIGltYWdlIG9iamVjdCB0byBwYXNzIHRvIFRleHR1cmUyRCBjb25zdHJ1Y3RvclxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29sb3JtYXAoY29sb3JtYXBJZDogc3RyaW5nKTogUHJvbWlzZTxDb2xvcm1hcEltYWdlRGF0YSB8IG51bGw+IHtcbiAgaWYgKCFjb2xvcm1hcElkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgZ2V0QXNzZXRSZXF1ZXN0KHtcbiAgICB1cmw6IFJhc3RlckxheWVyUmVzb3VyY2VzLnJhc3RlckNvbG9yTWFwKGNvbG9ybWFwSWQpLFxuICAgIG9wdGlvbnM6IHt9XG4gIH0pO1xuICByZXR1cm4gbG9hZEltYWdlKHJlcXVlc3QudXJsLCBDT0xPUk1BUF9URVhUVVJFX1BBUkFNRVRFUlMsIHJlcXVlc3Qub3B0aW9ucyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSByZXF1ZXN0IGRhdGEgZm9yIGxvYWRpbmcgYSBzaW5nbGUgb3IgbXVsdGkgYXNzZXQgU1RBQyBtZXRhZGF0YSBvYmplY3QuXG4gKiBAcGFyYW0gb3B0aW9ucyBTVEFDIG1ldGFkYXRhIG9iamVjdCBhbmQgdXNlci1kZWZpbmVkIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBJbWFnZSBkYXRhLCBvciBudWxsIGlmIHRoZSBTVEFDIG1ldGFkYXRhIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U1RBQ0ltYWdlUmVxdWVzdHMoXG4gIG9wdGlvbnM6IEdldFRpbGVEYXRhUHJvcHNcbik6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YVtdIHwgbnVsbD4ge1xuICBjb25zdCB7bG9hZEFzc2V0SWRzfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGxvYWRBc3NldElkcy5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgZ2V0U2luZ2xlQXNzZXRTVEFDUmVxdWVzdChvcHRpb25zKTtcbiAgICByZXR1cm4gcmVxdWVzdCA/IFtyZXF1ZXN0XSA6IG51bGw7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgZ2V0TXVsdGlBc3NldFNUQUNSZXF1ZXN0KG9wdGlvbnMpO1xufVxuXG4vLyBUT0RPOiBpbWFnZSBsb2FkaW5nIHNob3VsZCByZWFsbHkgYmUgX2RyaXZlbiBieSB0aGUgbW9kdWxlc19cbi8vIEUuZy4gdGhlIHVzZXIgY2hvb3NlcyB3aGF0IGtpbmQgb2YgcGlwZWxpbmUgdGhleSB3YW50IG9uIHRoZSBHUFUsIHRoZW4gZnJvbSB0aG9zZSBtb2R1bGVzIHdlIGNhblxuLy8gc2VlIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgdGhlIHBhbnNoYXJwZW5lZCBiYW5kLCBjb2xvcm1hcCwgZXRjXG4vKipcbiAqIExvYWQgaW1hZ2VzIGRlZmluZWQgYnkgYSBTVEFDIG1ldGFkYXRhIG9iamVjdCBwbHVzIHVzZXItZGVmaW5lZCBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU1RBQ0ltYWdlRGF0YShyZXF1ZXN0czogQXNzZXRSZXF1ZXN0RGF0YVtdKTogUHJvbWlzZTxJbWFnZURhdGE+IHtcbiAgcmV0dXJuIHJlcXVlc3RzLmxlbmd0aCA9PT0gMSA/IGxvYWRTaW5nbGVBc3NldFNUQUMocmVxdWVzdHNbMF0pIDogbG9hZE11bHRpQXNzZXRTVEFDKHJlcXVlc3RzKTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRoYXQgZm9ybXMgYW4gYXNzZXQgcmVxdWVzdCBiYXNlZCBvbiBnaXZlbiBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXNzZXRSZXF1ZXN0KHtcbiAgdXJsLFxuICBwYXJhbXMsXG4gIG9wdGlvbnMsXG4gIHVzZU1hc2sgPSB0cnVlLFxuICByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXNcbn06IHtcbiAgdXJsOiBzdHJpbmc7XG4gIHBhcmFtcz86IFVSTFNlYXJjaFBhcmFtcyB8IG51bGw7XG4gIG9wdGlvbnM6IFJlcXVlc3RJbml0O1xuICB1c2VNYXNrPzogYm9vbGVhbjtcbiAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzPzogbnVtYmVyW10gfCBudWxsO1xufSk6IFByb21pc2U8QXNzZXRSZXF1ZXN0RGF0YT4ge1xuICBjb25zdCByZXF1ZXN0VXJsID0gdXJsO1xuICBjb25zdCByZXF1ZXN0UGFyYW1zID0gcGFyYW1zID8/IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIGNvbnN0IGFzc2V0VXJsID0gcmVxdWVzdFBhcmFtcyA/IGAke3JlcXVlc3RVcmx9PyR7cmVxdWVzdFBhcmFtcy50b1N0cmluZygpfWAgOiByZXF1ZXN0VXJsO1xuICByZXR1cm4ge3VybDogYXNzZXRVcmwsIG9wdGlvbnM6IHJlcXVlc3RPcHRpb25zLCB1c2VNYXNrLCByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXN9O1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIGZvcm1pbmcgYSByZXF1ZXN0IGZvciBhIHNpbmdsZSBhc3NldCBTVEFDIG1ldGFkYXRhIG9iamVjdC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHksIG1heC1zdGF0ZW1lbnRzXG5hc3luYyBmdW5jdGlvbiBnZXRTaW5nbGVBc3NldFNUQUNSZXF1ZXN0KFxuICBvcHRpb25zOiBHZXRUaWxlRGF0YVByb3BzXG4pOiBQcm9taXNlPEFzc2V0UmVxdWVzdERhdGEgfCBudWxsPiB7XG4gIGNvbnN0IHtcbiAgICBzdGFjLFxuICAgIGxvYWRBc3NldElkcyxcbiAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgc2lnbmFsLFxuICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgaW5kZXg6IHt4LCB5LCB6fSxcbiAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgc3RhcnREYXRlLFxuICAgIGVuZERhdGUsXG4gICAgX3N0YWNRdWVyeVxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCB1c2VNYXNrID0gdHJ1ZTtcblxuICAvLyBPbmx5IGEgc2luZ2xlIFVSTCBiZWNhdXNlIG9ubHkgYSBzaW5nbGUgYXNzZXRcbiAgbGV0IHVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCB1cmxQYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyB8IG51bGwgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIGxldCByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXM6IG51bWJlcltdIHwgbnVsbCA9IGxvYWRCYW5kSW5kZXhlcztcbiAgaWYgKHVzZVNUQUNTZWFyY2hpbmcgJiYgc3RhYy50eXBlICE9PSAnRmVhdHVyZScpIHtcbiAgICB1cmxQYXJhbXMgPSBnZXRTdGFjQXBpVXJsUGFyYW1zKHtcbiAgICAgIHN0YWMsXG4gICAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgICAgbWFzazogdXNlTWFzayxcbiAgICAgIGxvYWRBc3NldElkcyxcbiAgICAgIF9zdGFjUXVlcnlcbiAgICB9KTtcbiAgICB1cmwgPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gIH0gZWxzZSBpZiAoc3RhYy50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICAvLyBzdGFjIGlzIGFuIEl0ZW1cbiAgICB1cmxQYXJhbXMgPSBnZXRTaW5nbGVDT0dVcmxQYXJhbXMoe1xuICAgICAgc3RhYyxcbiAgICAgIGxvYWRBc3NldElkOiBsb2FkQXNzZXRJZHNbMF0sXG4gICAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgICBtYXNrOiB1c2VNYXNrXG4gICAgfSk7XG4gICAgdXJsID0gZ2V0VGl0aWxlclVybCh7c3RhYywgdXNlU1RBQ1NlYXJjaGluZywgeCwgeSwgen0pO1xuICAgIHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcyA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIXVybCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGdldEFzc2V0UmVxdWVzdCh7XG4gICAgdXJsLFxuICAgIHBhcmFtczogdXJsUGFyYW1zLFxuICAgIG9wdGlvbnM6IHtzaWduYWx9LFxuICAgIHVzZU1hc2ssXG4gICAgcmVzcG9uc2VSZXF1aXJlZEJhbmRJbmRpY2VzXG4gIH0pO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIGZvcm1pbmcgcmVxdWVzdHMgZm9yIGEgbXVsdGkgYXNzZXQgU1RBQyBtZXRhZGF0YSBvYmplY3QuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldE11bHRpQXNzZXRTVEFDUmVxdWVzdChcbiAgb3B0aW9uczogR2V0VGlsZURhdGFQcm9wc1xuKTogUHJvbWlzZTxBc3NldFJlcXVlc3REYXRhW10gfCBudWxsPiB7XG4gIGNvbnN0IHtcbiAgICBzdGFjLFxuICAgIGxvYWRBc3NldElkcyxcbiAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgc2lnbmFsLFxuICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgIHN0YXJ0RGF0ZSxcbiAgICBlbmREYXRlLFxuICAgIGluZGV4OiB7eCwgeSwgen0sXG4gICAgX3N0YWNRdWVyeVxuICB9ID0gb3B0aW9ucztcblxuICAvLyBNdWx0aXBsZSB1cmxzLCBvbmUgZm9yIGVhY2ggYXNzZXRcbiAgbGV0IHJlcXVlc3REYXRhOiB7dXJsOiBzdHJpbmc7IHBhcmFtczogVVJMU2VhcmNoUGFyYW1zIHwgbnVsbDsgb3B0aW9ucz86IFJlcXVlc3RJbml0fVtdID0gW107XG5cbiAgLy8gV2UgYXNzdW1lIHRoYXQgdGhlcmUncyBvbmx5IG9uZSB2YWxpZGl0eSBtYXNrIGZvciB0aGUgZW50aXJlIGFzc2V0LCBhbmQgdGhlcmVmb3JlIGFueSBvZiB0aGVcbiAgLy8gcmVxdWVzdHMgd291bGQgcmV0dXJuIHRoZSBzYW1lIHZhbGlkaXR5IGJpdG1hcC4gVGhlcmVmb3JlIHdlIG9ubHkgcmVxdWVzdCBhIG1hc2sgZm9yIHRoZSBmaXJzdFxuICAvLyBhc3NldFxuICBjb25zdCByZXF1ZXN0TWFzazogYm9vbGVhbltdID0gbmV3IEFycmF5KGxvYWRBc3NldElkcy5sZW5ndGgpLmZpbGwoZmFsc2UpO1xuICByZXF1ZXN0TWFza1swXSA9IHRydWU7XG5cbiAgaWYgKHVzZVNUQUNTZWFyY2hpbmcgJiYgc3RhYy50eXBlICE9PSAnRmVhdHVyZScpIHtcbiAgICByZXF1ZXN0RGF0YSA9IHppcChsb2FkQXNzZXRJZHMsIHJlcXVlc3RNYXNrKS5tYXAoKFthc3NldElkLCBtYXNrXSkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gZ2V0U3RhY0FwaVVybFBhcmFtcyh7XG4gICAgICAgIHN0YWMsXG4gICAgICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlLFxuICAgICAgICBtYXNrLFxuICAgICAgICBsb2FkQXNzZXRJZHM6IFthc3NldElkXSxcbiAgICAgICAgX3N0YWNRdWVyeVxuICAgICAgfSk7XG4gICAgICBjb25zdCB1cmwgPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gICAgICByZXR1cm4ge3VybCwgcGFyYW1zfTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChzdGFjLnR5cGUgPT09ICdGZWF0dXJlJykge1xuICAgIHJlcXVlc3REYXRhID0gemlwMyhsb2FkQXNzZXRJZHMsIGxvYWRCYW5kSW5kZXhlcywgcmVxdWVzdE1hc2spLm1hcChcbiAgICAgIChbYXNzZXRJZCwgYmFuZEluZGV4LCBtYXNrXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBnZXRTaW5nbGVDT0dVcmxQYXJhbXMoe1xuICAgICAgICAgIHN0YWMsXG4gICAgICAgICAgbG9hZEFzc2V0SWQ6IGFzc2V0SWQsXG4gICAgICAgICAgbG9hZEJhbmRJbmRleGVzOiBbYmFuZEluZGV4XSxcbiAgICAgICAgICBtYXNrXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB1cmwgPSBnZXRUaXRpbGVyVXJsKHtzdGFjLCB1c2VTVEFDU2VhcmNoaW5nLCB4LCB5LCB6fSk7XG4gICAgICAgIHJldHVybiB7dXJsLCBwYXJhbXN9O1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBpZiAoaXNWYWxpZFJlcXVlc3REYXRhKHJlcXVlc3REYXRhKSkge1xuICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHJlcXVlc3REYXRhLm1hcChyZXF1ZXN0ID0+XG4gICAgICAgIGdldEFzc2V0UmVxdWVzdCh7Li4ucmVxdWVzdCwgb3B0aW9uczogcmVxdWVzdC5vcHRpb25zID8/IHtzaWduYWx9fSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogTG9hZCBpbWFnZSBkYXRhIHdoZW4gY29uc29saWRhdGVkIGluIGJhbmRzIHdpdGhpbiBhIHNpbmdsZSBTVEFDIEFzc2V0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRTaW5nbGVBc3NldFNUQUMocmVxdWVzdDogQXNzZXRSZXF1ZXN0RGF0YSk6IFByb21pc2U8SW1hZ2VEYXRhPiB7XG4gIGNvbnN0IGltYWdlQmFuZHMgPSBhd2FpdCBsb2FkTnB5QXJyYXkocmVxdWVzdCwgdHJ1ZSk7XG5cbiAgaWYgKCFpbWFnZUJhbmRzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGltYWdlQmFuZHNcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgaW1hZ2VNYXNrID0gKHJlcXVlc3QudXNlTWFzayAmJiBpbWFnZUJhbmRzLnBvcCgpKSB8fCBudWxsO1xuICBsZXQgbWFwcGVkSW1hZ2VCYW5kcyA9IGltYWdlQmFuZHM7XG4gIGlmIChyZXF1ZXN0LnJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcykge1xuICAgIG1hcHBlZEltYWdlQmFuZHMgPSByZXF1ZXN0LnJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcy5tYXAoaSA9PiBpbWFnZUJhbmRzW2ldKTtcbiAgfVxuICByZXR1cm4ge2ltYWdlQmFuZHM6IG1hcHBlZEltYWdlQmFuZHMsIGltYWdlTWFza307XG59XG5cbi8qKlxuICogTG9hZCBpbWFnZSBkYXRhIHdoZW4gc3BsaXQgYW1vbmcgbXVsdGlwbGUgU1RBQyBBc3NldHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZE11bHRpQXNzZXRTVEFDKHJlcXVlc3RzOiBBc3NldFJlcXVlc3REYXRhW10pOiBQcm9taXNlPEltYWdlRGF0YT4ge1xuICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocmVxdWVzdHMubWFwKHJlcXVlc3QgPT4gbG9hZE5weUFycmF5KHJlcXVlc3QsIHRydWUpKSk7XG4gIC8vIFRoZSBmaXJzdCByZXF1ZXN0IGluY2x1ZGVzIGEgbWFza1xuICBjb25zdCBpbWFnZU1hc2sgPSByZXN1bHRzWzBdPy5wb3AoKSB8fCBudWxsO1xuICBjb25zdCBpbWFnZUJhbmRzID0gcmVzdWx0cy5mbGF0KCkuZmlsdGVyKGJhbmQgPT4gYmFuZCAhPT0gbnVsbCkgYXMgSW1hZ2VEYXRhWydpbWFnZUJhbmRzJ107XG4gIHJldHVybiB7aW1hZ2VCYW5kcywgaW1hZ2VNYXNrfTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgdHdvIGFycmF5cyBzaW11bHRhbmVvdXNseSwgc2ltaWxhciB0byBQeXRob24ncyB6aXAgYnVpbHRpblxuICovXG5mdW5jdGlvbiB6aXA8VDEsIFQyPihhOiBUMVtdLCBiOiBUMltdKTogW1QxLCBUMl1bXSB7XG4gIHJldHVybiBhLm1hcCgoaywgaSkgPT4gW2ssIGJbaV1dKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgdGhyZWUgYXJyYXlzIHNpbXVsdGFuZW91c2x5LCBzaW1pbGFyIHRvIFB5dGhvbidzIHppcCBidWlsdGluXG4gKi9cbmZ1bmN0aW9uIHppcDM8VDEsIFQyLCBUMz4oYTogVDFbXSwgYjogVDJbXSwgYzogVDNbXSk6IFtUMSwgVDIsIFQzXVtdIHtcbiAgcmV0dXJuIGEubWFwKChrLCBpKSA9PiBbaywgYltpXSwgY1tpXV0pO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYWxsIGFycmF5IGVsZW1lbnRzIGFyZSBzdHJpbmdzXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRSZXF1ZXN0RGF0YShcbiAgYXJyOiB7dXJsOiB1bmtub3duOyBwYXJhbXM6IHVua25vd247IG9wdGlvbnM/OiB1bmtub3dufVtdXG4pOiBhcnIgaXMge3VybDogc3RyaW5nOyBwYXJhbXM6IFVSTFNlYXJjaFBhcmFtczsgb3B0aW9uczogdW5rbm93bn1bXSB7XG4gIHJldHVybiBhcnIuZXZlcnkoeCA9PiB0eXBlb2YgeD8udXJsID09PSAnc3RyaW5nJyAmJiB4Py5wYXJhbXMgIT09IG51bGwpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBiYXNlNjQgaW1hZ2UgZGF0YSB1cmwgZm9yIGNhdGVnb3JpY2FsIGNvbG9ybWFwXG4gKiBAcGFyYW0gY2F0ZWdvcmljYWxPcHRpb25zIC0gY29sb3IgbWFwIGNvbmZpZ3VyYXRpb24gYW5kIG1pbi1tYXggdmFsdWVzIG9mIGNhdGVnb3JpY2FsIGJhbmRcbiAqIEByZXR1cm5zIGJhc2U2NCBpbWFnZSBkYXRhIHVybFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2F0ZWdvcmljYWxDb2xvcm1hcERhdGFVcmwoXG4gIGNhdGVnb3JpY2FsT3B0aW9uczogQ2F0ZWdvcmljYWxDb2xvcm1hcE9wdGlvbnNcbik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBiaXRtYXAgPSBnZW5lcmF0ZUNhdGVnb3JpY2FsQml0bWFwQXJyYXkoY2F0ZWdvcmljYWxPcHRpb25zKTtcbiAgaWYgKCFiaXRtYXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gZ2V0SW1hZ2VEYXRhVVJMKGJpdG1hcCwgQ0FURUdPUklDQUxfVEVYVFVSRV9XSURUSCwgMSk7XG59XG5cbi8qKlxuICogTG9hZCB0ZXJyYWluIG1lc2ggZnJvbSByYXN0ZXIgdGlsZSBzZXJ2ZXJcbiAqIEBwYXJhbSBwcm9wcyAtIHByb3BlcnRpZXMgdG8gbG9hZCB0ZXJyYWluIGRhdGFcbiAqIEByZXR1cm5zIHRlcnJhaW4gbWVzaCBkYXRhXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkVGVycmFpbihwcm9wczoge1xuICBpbmRleDoge3g6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXJ9O1xuICBzaWduYWw6IEFib3J0U2lnbmFsO1xuICByYXN0ZXJUaWxlU2VydmVyVXJsczogc3RyaW5nW107XG4gIGJvdW5kc0Zvckdlb21ldHJ5PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG59KTogUHJvbWlzZTxUZXJyYWluRGF0YT4ge1xuICBjb25zdCB7XG4gICAgaW5kZXg6IHt4LCB5LCB6fSxcbiAgICBib3VuZHNGb3JHZW9tZXRyeSxcbiAgICBzaWduYWwsXG4gICAgcmFzdGVyVGlsZVNlcnZlclVybHNcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IG1lc2hNYXhFcnJvciA9IGdldE1lc2hNYXhFcnJvcih6LCBNRVNIX01VTFRJUExJRVIpO1xuICBjb25zdCB0ZXJyYWluVXJsID0gZ2V0VGVycmFpblVybChyYXN0ZXJUaWxlU2VydmVyVXJscywgeCwgeSwgeiwgbWVzaE1heEVycm9yKTtcbiAgY29uc3QgbG9hZGVyT3B0aW9ucyA9IGdldExvYWRlck9wdGlvbnMoKTtcblxuICByZXR1cm4gbG9hZCh0ZXJyYWluVXJsLCBRdWFudGl6ZWRNZXNoTG9hZGVyLCB7XG4gICAgZmV0Y2g6IHtzaWduYWx9LFxuICAgICdxdWFudGl6ZWQtbWVzaCc6IHtcbiAgICAgIC4uLmxvYWRlck9wdGlvbnNbJ3F1YW50aXplZC1tZXNoJ10sXG4gICAgICBib3VuZHM6IGJvdW5kc0Zvckdlb21ldHJ5LFxuICAgICAgc2tpcnRIZWlnaHQ6IG1lc2hNYXhFcnJvciAqIDJcbiAgICB9XG4gIH0pIGFzIFByb21pc2U8VGVycmFpbkRhdGE+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
@@ -2,14 +2,13 @@
2
2
  import { TileLayer } from '@deck.gl/geo-layers/typed';
3
3
  import { PMTilesTileSource } from '@loaders.gl/pmtiles';
4
4
  import { Texture2DProps } from '@luma.gl/webgl';
5
- import { Matrix4 } from 'math.gl';
6
5
  import { DatasetType } from '@kepler.gl/constants';
7
6
  import { LayerBaseConfig, LayerColorConfig, LayerHeightConfig, VisualChannel, VisConfigColorRange, VisConfigSelection, VisConfigBoolean, VisConfigInput, VisConfigRange, VisConfigNumber } from '@kepler.gl/types';
8
7
  import { Datasets, KeplerTable as KeplerDataset } from '@kepler.gl/table';
9
8
  import { GetTileDataDefaultProps, GetTileDataProps, GetTileDataOutput, DataSourceParams, KeplerRasterDataset, Tile2DHeader, PresetOption, CompleteSTACObject } from './types';
10
9
  import { FindDefaultLayerPropsReturnValue } from '../layer-utils';
11
10
  import { default as KeplerLayer, LayerBaseConfigPartial } from '../base-layer';
12
- export declare const isTilesBeingLoaded: () => boolean;
11
+ export declare const getNumRasterTilesBeingLoaded: () => number;
13
12
  export declare const LOAD_ELEVATION_AFTER_ZOOM = 8.9;
14
13
  export declare type RasterTileLayerVisConfigCommonSettings = {
15
14
  opacity: VisConfigNumber;
@@ -62,7 +61,7 @@ export default class RasterTileLayer extends KeplerLayer {
62
61
  dataset?: undefined;
63
62
  tileSource?: undefined;
64
63
  } | {
65
- dataset: Datasets;
64
+ dataset: KeplerDataset<import("@kepler.gl/types").Field>;
66
65
  tileSource: PMTilesTileSource | null;
67
66
  };
68
67
  updateLayerMeta(dataset: KeplerRasterDataset): void;
@@ -102,9 +101,4 @@ export default class RasterTileLayer extends KeplerLayer {
102
101
  globalBounds: DataSourceParams['globalBounds'];
103
102
  }, tileSource: any): Promise<any>;
104
103
  }
105
- export declare function getMercatorModelMatrix(tile: {
106
- x: number;
107
- y: number;
108
- z: number;
109
- }): Matrix4;
110
104
  export {};