kepler.gl 3.2.0 → 3.2.2

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 (96) hide show
  1. package/dist/src/ai-assistant/src/config/models.d.ts +8 -0
  2. package/dist/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
  3. package/dist/src/localization/src/translations/en.d.ts +1 -0
  4. package/dist/src/utils/src/arrow-data-container.d.ts +3 -2
  5. package/dist/src/utils/src/data-container-utils.d.ts +2 -0
  6. package/package.json +2 -2
  7. package/src/actions/package.json +8 -8
  8. package/src/ai-assistant/dist/components/ai-assistant-config.js +40 -24
  9. package/src/ai-assistant/dist/config/models.d.ts +8 -0
  10. package/src/ai-assistant/dist/config/models.js +16 -8
  11. package/src/ai-assistant/dist/localization.js +7 -7
  12. package/src/ai-assistant/dist/reducers/index.js +3 -2
  13. package/src/ai-assistant/package.json +16 -16
  14. package/src/ai-assistant/src/components/ai-assistant-config.tsx +39 -28
  15. package/src/ai-assistant/src/config/models.ts +37 -25
  16. package/src/ai-assistant/src/localization.ts +6 -6
  17. package/src/ai-assistant/src/reducers/index.ts +2 -1
  18. package/src/cloud-providers/package.json +2 -2
  19. package/src/common-utils/package.json +3 -3
  20. package/src/components/dist/common/color-legend.js +8 -8
  21. package/src/components/dist/common/data-table/index.js +13 -9
  22. package/src/components/dist/map/map-legend-panel.js +10 -4
  23. package/src/components/dist/map/map-legend.js +2 -2
  24. package/src/components/dist/plot-container.js +4 -2
  25. package/src/components/dist/side-panel/interaction-panel/interaction-panel.js +2 -2
  26. package/src/components/dist/side-panel/layer-panel/color-breaks-panel.js +11 -2
  27. package/src/components/dist/side-panel/layer-panel/color-scale-selector.js +65 -12
  28. package/src/components/dist/side-panel/layer-panel/custom-palette.js +18 -7
  29. package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
  30. package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +18 -4
  31. package/src/components/package.json +15 -15
  32. package/src/components/src/common/color-legend.tsx +15 -2
  33. package/src/components/src/common/data-table/index.tsx +1 -1
  34. package/src/components/src/map/map-legend-panel.tsx +21 -2
  35. package/src/components/src/map/map-legend.tsx +1 -1
  36. package/src/components/src/plot-container.tsx +2 -1
  37. package/src/components/src/side-panel/interaction-panel/interaction-panel.tsx +1 -0
  38. package/src/components/src/side-panel/layer-panel/color-breaks-panel.tsx +14 -3
  39. package/src/components/src/side-panel/layer-panel/color-scale-selector.tsx +62 -8
  40. package/src/components/src/side-panel/layer-panel/custom-palette.tsx +11 -5
  41. package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +19 -2
  42. package/src/constants/dist/default-settings.js +1 -1
  43. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/1b/11/43d4199b6142de0b88c672f2b036c5aa4ca836cf35977bbafcdb1962b91e94f8336655a57f0742571ceb13fc69ef4ba0e3cb91dc9a8d61ef041c6eb15e7a +1 -0
  44. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/b3/bd/e4f91c7af9e320b979e29ad3b9e3a4dfcd61e4a09d6e4579104c40dcace7651b443fdd6d7ff5d947ed6c9df2c0bbbcc76a2ea86d6398e4945257eeb80dd5 +1 -0
  45. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/ac/e2/e903ec95ada0b0075fdcfb6133e2e75c9b3b0504a29ca665704aaed90b2b +2 -0
  46. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/b4/c5/a43653dff3b380f7b0793080a57c980a9a136764933e79454de0fe43a5ca +2 -0
  47. package/src/constants/package.json +2 -2
  48. package/src/constants/umd/keplergl.min.js +1 -1
  49. package/src/deckgl-arrow-layers/package.json +2 -2
  50. package/src/deckgl-layers/package.json +4 -4
  51. package/src/duckdb/dist/table/duckdb-table-utils.js +3 -2
  52. package/src/duckdb/package.json +6 -6
  53. package/src/duckdb/src/table/duckdb-table-utils.ts +5 -1
  54. package/src/effects/package.json +5 -5
  55. package/src/layers/dist/geojson-layer/geojson-utils.js +23 -5
  56. package/src/layers/dist/icon-layer/icon-layer.js +12 -2
  57. package/src/layers/dist/vector-tile/common-tile/tile-dataset.d.ts +4 -0
  58. package/src/layers/dist/vector-tile/common-tile/tile-dataset.js +10 -1
  59. package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +11 -0
  60. package/src/layers/dist/vector-tile/vector-tile-layer.js +113 -7
  61. package/src/layers/package.json +9 -9
  62. package/src/layers/src/geojson-layer/geojson-utils.ts +22 -0
  63. package/src/layers/src/icon-layer/icon-layer.ts +49 -38
  64. package/src/layers/src/vector-tile/common-tile/tile-dataset.ts +7 -0
  65. package/src/layers/src/vector-tile/vector-tile-layer.ts +110 -6
  66. package/src/localization/dist/translations/en.d.ts +1 -0
  67. package/src/localization/dist/translations/en.js +2 -1
  68. package/src/localization/package.json +1 -1
  69. package/src/localization/src/translations/en.ts +1 -0
  70. package/src/processors/dist/data-processor.js +15 -5
  71. package/src/processors/package.json +7 -7
  72. package/src/processors/src/data-processor.ts +19 -4
  73. package/src/reducers/package.json +16 -16
  74. package/src/schemas/package.json +7 -7
  75. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/52/82/28cacf6fd462b779c22675964b655bf3a9f3ce9ec3c9b141a401a5bf90cb7d904ac65ab8e484570130b12771af0a0d5bab20e6976cfa773666763e046a6a +1 -0
  76. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/53/93/f8e389b6450ee0636bf336363d2d6865d8a1fe2445c15cc1e36c651e1ddf448358eb74e894f4bf6fc48ef881dc64cc221c48b133ecf0e02132f2c5fbfe11 +1 -0
  77. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/2e/45/ed6e0c1beb8bca4698a47b5feda8789a22d96978bc4839949bd26e827454 +2 -0
  78. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/56/db/b5a812c56b0d1dcdcd33da37e464062a19c8752cb2296603dc72d2c54d31 +2 -0
  79. package/src/styles/package.json +2 -2
  80. package/src/styles/umd/keplergl.min.js +1 -1
  81. package/src/table/dist/dataset-utils.js +18 -7
  82. package/src/table/dist/kepler-table.js +2 -1
  83. package/src/table/package.json +5 -5
  84. package/src/table/src/dataset-utils.ts +7 -2
  85. package/src/table/src/kepler-table.ts +1 -0
  86. package/src/tasks/package.json +2 -2
  87. package/src/types/actions.d.ts +1 -0
  88. package/src/types/package.json +1 -1
  89. package/src/utils/dist/arrow-data-container.d.ts +3 -2
  90. package/src/utils/dist/arrow-data-container.js +3 -3
  91. package/src/utils/dist/data-container-utils.d.ts +2 -0
  92. package/src/utils/dist/data-container-utils.js +3 -2
  93. package/src/utils/package.json +4 -4
  94. package/src/utils/src/arrow-data-container.ts +9 -7
  95. package/src/utils/src/data-container-utils.ts +3 -1
  96. package/umd/keplergl.min.js +1366 -1333
@@ -32,10 +32,10 @@ var _templateObject, _templateObject2; // SPDX-License-Identifier: MIT
32
32
  // Copyright contributors to the kepler.gl project
33
33
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
34
34
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
35
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
36
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
37
35
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
38
36
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
37
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
38
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
39
39
  var defaultHeaderRowHeight = 55;
40
40
  var defaultHeaderStatsControlHeight = 40;
41
41
  var defaultRowHeight = 32;
@@ -135,7 +135,7 @@ var TableSection = exports.TableSection = function TableSection(_ref4) {
135
135
  fixedWidth = _ref4.fixedWidth,
136
136
  _ref4$fixedHeight = _ref4.fixedHeight,
137
137
  fixedHeight = _ref4$fixedHeight === void 0 ? undefined : _ref4$fixedHeight,
138
- onScroll = _ref4.onScroll,
138
+ _onScroll = _ref4.onScroll,
139
139
  scrollTop = _ref4.scrollTop,
140
140
  dataGridProps = _ref4.dataGridProps,
141
141
  columnWidth = _ref4.columnWidth,
@@ -175,7 +175,11 @@ var TableSection = exports.TableSection = function TableSection(_ref4) {
175
175
  height: headerGridProps.height + browserScrollBarWidth,
176
176
  width: headerGridWidth,
177
177
  scrollLeft: scrollLeft,
178
- onScroll: onScroll
178
+ onScroll: function onScroll(args) {
179
+ return _onScroll === null || _onScroll === void 0 ? void 0 : _onScroll(_objectSpread(_objectSpread({}, args), {}, {
180
+ scrollTop: scrollTop !== null && scrollTop !== void 0 ? scrollTop : 0
181
+ }));
182
+ }
179
183
  }))), /*#__PURE__*/_react["default"].createElement("div", {
180
184
  className: (0, _classnames2["default"])('scroll-in-ui-thread', classList === null || classList === void 0 ? void 0 : classList.rows),
181
185
  style: contentStyle
@@ -184,7 +188,7 @@ var TableSection = exports.TableSection = function TableSection(_ref4) {
184
188
  }, dataGridProps, gridDimension, {
185
189
  className: isPinned ? 'pinned-grid' : 'body-grid',
186
190
  height: dataGridHeight - headerGridProps.height,
187
- onScroll: onScroll,
191
+ onScroll: _onScroll,
188
192
  scrollLeft: scrollLeft,
189
193
  scrollTop: scrollTop,
190
194
  setGridRef: setGridRef
@@ -389,7 +393,7 @@ function DataTableFactory(HeaderCell) {
389
393
  ref: this.root,
390
394
  hasCustomScrollBarStyle: hasCustomScrollBarStyle
391
395
  }, Object.keys(cellSizeCache).length ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_reactVirtualized.ScrollSync, null, function (_ref7) {
392
- var _onScroll = _ref7.onScroll,
396
+ var _onScroll2 = _ref7.onScroll,
393
397
  scrollLeft = _ref7.scrollLeft,
394
398
  scrollTop = _ref7.scrollTop;
395
399
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -404,7 +408,7 @@ function DataTableFactory(HeaderCell) {
404
408
  headerGridProps: headerGridProps,
405
409
  fixedWidth: pinnedColumnsWidth,
406
410
  onScroll: function onScroll(args) {
407
- return _onScroll(_objectSpread(_objectSpread({}, args), {}, {
411
+ return _onScroll2(_objectSpread(_objectSpread({}, args), {}, {
408
412
  scrollLeft: scrollLeft
409
413
  }));
410
414
  },
@@ -430,7 +434,7 @@ function DataTableFactory(HeaderCell) {
430
434
  headerGridProps: headerGridProps,
431
435
  fixedWidth: fixedWidth,
432
436
  fixedHeight: fixedHeight,
433
- onScroll: _onScroll,
437
+ onScroll: _onScroll2,
434
438
  scrollTop: scrollTop,
435
439
  scrollLeft: scrollLeft,
436
440
  dataGridProps: dataGridProps,
@@ -464,4 +468,4 @@ function DataTableFactory(HeaderCell) {
464
468
  return (0, _styledComponents.withTheme)(DataTable);
465
469
  }
466
470
  var _default = exports["default"] = DataTableFactory;
467
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RWaXJ0dWFsaXplZCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2NsYXNzbmFtZXMyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZXNlbGVjdCIsIl9nZXQiLCJfZGVib3VuY2UiLCJfaWNvbnMiLCJfZ3JpZCIsIl9oZWFkZXJDZWxsIiwiX3V0aWxzIiwiX2NlbGxTaXplIiwiX2NvbnN0YW50cyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImRlZmF1bHRIZWFkZXJSb3dIZWlnaHQiLCJkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0IiwiZGVmYXVsdFJvd0hlaWdodCIsIm92ZXJzY2FuQ29sdW1uQ291bnQiLCJvdmVyc2NhblJvd0NvdW50IiwiYnJvd3NlclNjcm9sbEJhcldpZHRoIiwiZmllbGRUb0FsaWduUmlnaHQiLCJBTExfRklFTERfVFlQRVMiLCJpbnRlZ2VyIiwicmVhbCIsInBpbm5lZENsYXNzTGlzdCIsImhlYWRlciIsInJvd3MiLCJ1bnBpbm5lZENsYXNzTGlzdCIsIkNvbnRhaW5lciIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJkYXRhVGFibGVUZXh0Q29sb3IiLCJoYXNDdXN0b21TY3JvbGxCYXJTdHlsZSIsIm1vZGFsU2Nyb2xsQmFyIiwiY2VsbEJvcmRlckNvbG9yIiwicGlubmVkR3JpZEJvcmRlckNvbG9yIiwiZXZlblJvd0JhY2tncm91bmQiLCJvZGRSb3dCYWNrZ3JvdW5kIiwiY2VsbFBhZGRpbmdTaWRlIiwiY2VsbEZvbnRTaXplIiwiZWRnZUNlbGxQYWRkaW5nU2lkZSIsImRlZmF1bHRDb2x1bW5XaWR0aCIsImNvbHVtbldpZHRoRnVuY3Rpb24iLCJjb2x1bW5zIiwiY2VsbFNpemVDYWNoZSIsImdob3N0IiwiX3JlZiIsImluZGV4IiwiZGVmYXVsdEdldFJvd0NlbGwiLCJfcmVmMiIsImZvcm1hdHRlciIsImRhdGFDb250YWluZXIiLCJjb2x1bW4iLCJjb2xNZXRhIiwicm93SW5kZXgiLCJzb3J0T3JkZXIiLCJyb3dJZHgiLCJ0eXBlIiwidmFsdWUiLCJ2YWx1ZUF0IiwiaW5kZXhPZiIsInVuZGVmaW5lZCIsInBhcnNlRmllbGRWYWx1ZSIsIlN0eWxlZFN0YXRzQ29udHJvbCIsImhlYWRlclN0YXRzQ29udHJvbEhlaWdodCIsInRvcCIsImZvbnRGYW1pbHlNZWRpdW0iLCJhY3RpdmVDb2xvciIsImhlYWRlckNlbGxTdGF0c0NvbnRyb2xCYWNrZ3JvdW5kIiwic2hvd1N0YXRzIiwiU3RhdHNDb250cm9sIiwiX3JlZjMiLCJ0b2dnbGVTaG93U3RhdHMiLCJjcmVhdGVFbGVtZW50Iiwib25DbGljayIsIkFycm93RG93biIsImhlaWdodCIsIlRhYmxlU2VjdGlvbiIsIl9yZWY0IiwiY2xhc3NMaXN0IiwiaXNQaW5uZWQiLCJoZWFkZXJHcmlkUHJvcHMiLCJmaXhlZFdpZHRoIiwiX3JlZjQkZml4ZWRIZWlnaHQiLCJmaXhlZEhlaWdodCIsIm9uU2Nyb2xsIiwic2Nyb2xsVG9wIiwiZGF0YUdyaWRQcm9wcyIsImNvbHVtbldpZHRoIiwiX3JlZjQkc2V0R3JpZFJlZiIsInNldEdyaWRSZWYiLCJoZWFkZXJDZWxsUmVuZGVyIiwiZGF0YUNlbGxSZW5kZXIiLCJfcmVmNCRzY3JvbGxMZWZ0Iiwic2Nyb2xsTGVmdCIsImhlYWRlckhlaWdodCIsImhlYWRlclN0eWxlIiwidXNlTWVtbyIsImNvbmNhdCIsImNvbnRlbnRTdHlsZSIsIkF1dG9TaXplciIsIl9yZWY1Iiwid2lkdGgiLCJncmlkRGltZW5zaW9uIiwiY29sdW1uQ291bnQiLCJoZWFkZXJHcmlkV2lkdGgiLCJkYXRhR3JpZEhlaWdodCIsIkZyYWdtZW50IiwiY2xhc3NOYW1lIiwiY2xhc3NuYW1lcyIsInN0eWxlIiwiX2V4dGVuZHMyIiwiY2VsbFJlbmRlcmVyIiwiRFVNTVlfU1RZTEUiLCJEYXRhVGFibGVGYWN0b3J5IiwiZGVwcyIsIkhlYWRlckNlbGxGYWN0b3J5IiwiSGVhZGVyQ2VsbCIsIkRhdGFUYWJsZSIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIm1vcmVPcHRpb25zQ29sdW1uIiwiY3JlYXRlUmVmIiwicGlubmVkQ29sdW1ucyIsImNyZWF0ZVNlbGVjdG9yIiwiaXNBcnJheSIsImMiLCJpbmNsdWRlcyIsImhhc01vdW50ZWQiLCJzZXRTdGF0ZSIsInN0YXRlIiwiX3RoaXMkcHJvcHMiLCJfdGhpcyRwcm9wcyRjZWxsU2l6ZUMiLCJwcm9wc0NhY2hlIiwiX3RoaXMkcHJvcHMkcGlubmVkQ29sIiwidW5waW5uZWRDb2x1bW5zIiwicm9vdCIsImN1cnJlbnQiLCJjbGllbnRXaWR0aCIsImFkanVzdFdpZHRoIiwiX3JlZjYiLCJhZGp1c3RDZWxsc1RvQ29udGFpbmVyIiwiZ2V0Q2VsbFNpemVDYWNoZSIsImRlYm91bmNlIiwiZG9TY2FsZUNlbGxzVG9XaWR0aCIsIl90aGlzJHByb3BzJGdldFJvd0NlbCIsImdldFJvd0NlbGwiLCJEYXRhQ2VsbFJlbmRlcmVyIiwiY2VsbEluZm8iLCJjb2x1bW5JbmRleCIsImtleSIsImlzR2hvc3QiLCJnZXRDb2x1bW5Gb3JtYXR0ZXIiLCJyb3dDZWxsIiwibGFzdFJvd0luZGV4IiwibnVtUm93cyIsImVuZENlbGwiLCJmaXJzdENlbGwiLCJib3R0b21DZWxsIiwiYWxpZ25SaWdodCIsIk51bWJlciIsImNlbGwiLCJ0aXRsZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwic2NhbGVDZWxsc1RvV2lkdGgiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW5kZXJIZWFkZXJDZWxsIiwidG9nZ2xlTW9yZU9wdGlvbnMiLCJfdGhpczIiLCJIZWFkZXJDZWxsUmVuZGVyZXIiLCJyZW5kZXIiLCJfdGhpczMiLCJfdGhpcyRwcm9wczIiLCJfdGhpcyRwcm9wczIkcGlubmVkQ28iLCJfdGhpcyRwcm9wczIkdGhlbWUiLCJfdGhpcyRwcm9wczIkZml4ZWRIZWkiLCJoYXNTdGF0cyIsIl90aGlzJHN0YXRlIiwiX3RoaXMkc3RhdGUkY2VsbFNpemVDIiwidW5waW5uZWRDb2x1bW5zR2hvc3QiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwicGlubmVkQ29sdW1uc1dpZHRoIiwicmVkdWNlIiwiYWNjIiwidmFsIiwiaGFzUGlubmVkQ29sdW1ucyIsIl90aGVtZSRoZWFkZXJSb3dIZWlnaCIsImhlYWRlclJvd0hlaWdodCIsIl90aGVtZSRoZWFkZXJTdGF0c0NvbiIsIl90aGVtZSRoZWFkZXJSb3dXU3RhdCIsImhlYWRlclJvd1dTdGF0c0hlaWdodCIsIl90aGVtZSRyb3dIZWlnaHQiLCJyb3dIZWlnaHQiLCJyb3dDb3VudCIsInJlZiIsIlNjcm9sbFN5bmMiLCJfcmVmNyIsInBpbm5lZEdyaWQiLCJyZW5kZXJEYXRhQ2VsbCIsIm1hcmdpbkxlZnQiLCJ1bnBpbm5lZEdyaWQiLCJDb21wb25lbnQiLCJzb3J0Q29sdW1uIiwid2l0aFRoZW1lIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2RhdGEtdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1Njcm9sbFN5bmMsIEF1dG9TaXplciwgT25TY3JvbGxQYXJhbXMsIEdyaWRQcm9wcywgSW5kZXh9IGZyb20gJ3JlYWN0LXZpcnR1YWxpemVkJztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuaW1wb3J0IHtBcnJvd0Rvd259IGZyb20gJy4uL2ljb25zJztcblxuaW1wb3J0IHtDZWxsU2l6ZUNhY2hlfSBmcm9tICcuL2NlbGwtc2l6ZSc7XG5cbmltcG9ydCBHcmlkIGZyb20gJy4vZ3JpZCc7XG5pbXBvcnQgSGVhZGVyQ2VsbEZhY3RvcnkgZnJvbSAnLi9oZWFkZXItY2VsbCc7XG5cbmltcG9ydCB7Q29sTWV0YX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge3BhcnNlRmllbGRWYWx1ZSwgZ2V0Q29sdW1uRm9ybWF0dGVyLCBEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7YWRqdXN0Q2VsbHNUb0NvbnRhaW5lcn0gZnJvbSAnLi9jZWxsLXNpemUnO1xuXG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0ID0gNTU7XG5jb25zdCBkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0ID0gNDA7XG5jb25zdCBkZWZhdWx0Um93SGVpZ2h0ID0gMzI7XG5jb25zdCBvdmVyc2NhbkNvbHVtbkNvdW50ID0gMTA7XG5jb25zdCBvdmVyc2NhblJvd0NvdW50ID0gMTA7XG4vLyBUaGUgZGVmYXVsdCBzY3JvbGxiYXIgd2lkdGggY2FuIHJhbmdlIGFueXdoZXJlIGZyb20gMTJweCB0byAxN3B4XG5jb25zdCBicm93c2VyU2Nyb2xsQmFyV2lkdGggPSAxNztcbmNvbnN0IGZpZWxkVG9BbGlnblJpZ2h0ID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB0cnVlLFxuICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiB0cnVlXG59O1xuXG5jb25zdCBwaW5uZWRDbGFzc0xpc3QgPSB7XG4gIGhlYWRlcjogJ3Bpbm5lZC1jb2x1bW5zLS1oZWFkZXIgcGlubmVkLWdyaWQtY29udGFpbmVyJyxcbiAgcm93czogJ3Bpbm5lZC1jb2x1bW5zLS1yb3dzIHBpbm5lZC1ncmlkLWNvbnRhaW5lcidcbn07XG5cbmNvbnN0IHVucGlubmVkQ2xhc3NMaXN0ID0ge1xuICBoZWFkZXI6ICd1bnBpbm5lZC1jb2x1bW5zLS1oZWFkZXIgdW5waW5uZWQtZ3JpZC1jb250YWluZXInLFxuICByb3dzOiAndW5waW5uZWQtY29sdW1ucy0tcm93cyB1bnBpbm5lZC1ncmlkLWNvbnRhaW5lcidcbn07XG5cbnR5cGUgQ29udGFpbmVyUHJvcHMgPSB7XG4gIGhhc0N1c3RvbVNjcm9sbEJhclN0eWxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2PENvbnRhaW5lclByb3BzPmBcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmbGV4LWdyb3c6IDE7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRhdGFUYWJsZVRleHRDb2xvcn07XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC5SZWFjdFZpcnR1YWxpemVkX19HcmlkOmZvY3VzLFxuICAuUmVhY3RWaXJ0dWFsaXplZF9fR3JpZDphY3RpdmUge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbiAgLmJvZHktZ3JpZCB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy5oYXNDdXN0b21TY3JvbGxCYXJTdHlsZSAmJiBwcm9wcy50aGVtZS5tb2RhbFNjcm9sbEJhcn1cbiAgfVxuXG4gIC5jZWxsIHtcbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICo6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cblxuICAucmVzdWx0cy10YWJsZS13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkLnBpbm5lZC1jb2x1bW5zLS1oZWFkZXIge1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHticm93c2VyU2Nyb2xsQmFyV2lkdGh9cHg7XG4gICAgfVxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkLnVucGlubmVkLWNvbHVtbnMtLWhlYWRlciB7XG4gICAgICB3aWR0aDogMTAwdnc7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbEJvcmRlckNvbG9yfTtcbiAgICAgIC8vIGxlYXZlIHJvb20gZm9yIHNjcm9sbGJhclxuICAgICAgcGFkZGluZy1ib3R0b206ICR7YnJvd3NlclNjcm9sbEJhcldpZHRofXB4O1xuICAgIH1cblxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5ncmlkLXJvdyB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG4gICAgLmdyaWQtY29sdW1uIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuICAgIC5waW5uZWQtZ3JpZC1jb250YWluZXIge1xuICAgICAgZmxleDogMCAwIDc1cHg7XG4gICAgICB6LWluZGV4OiAxMDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBpbm5lZEdyaWRCb3JkZXJDb2xvcn07XG4gICAgfVxuICAgIC5ldmVuLXJvdyB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmV2ZW5Sb3dCYWNrZ3JvdW5kfTtcbiAgICB9XG4gICAgLm9kZC1yb3cge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5vZGRSb3dCYWNrZ3JvdW5kfTtcbiAgICB9XG4gICAgLmNlbGwsXG4gICAgLmhlYWRlci1jZWxsIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIC8vIGhlYWRlciBib3JkZXIgaXMgcmVuZGVyZWQgYnkgaGVhZGVyIGNvbnRhaW5lclxuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgIC5uLXNvcnQtaWR4IHtcbiAgICAgICAgZm9udC1zaXplOiA5cHg7XG4gICAgICB9XG4gICAgfVxuICAgIC5jZWxsIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICBwYWRkaW5nOiAwICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgICAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxGb250U2l6ZX1weDtcblxuICAgICAgLnJlc3VsdC1saW5rIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAuY2VsbC5lbmQtY2VsbCxcbiAgICAuaGVhZGVyLWNlbGwuZW5kLWNlbGwge1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuY2VsbC5maXJzdC1jZWxsLFxuICAgIC5oZWFkZXItY2VsbC5maXJzdC1jZWxsIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuY2VsbC5ib3R0b20tY2VsbCB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbiAgICAuY2VsbC5hbGlnbi1yaWdodCB7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYDtcblxuY29uc3QgZGVmYXVsdENvbHVtbldpZHRoID0gMjAwO1xuXG5leHBvcnQgdHlwZSBTb3J0Q29sdW1uID0ge1xuICBjb2x1bW4/OiBzdHJpbmc7XG4gIG1vZGU/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBjb2x1bW5XaWR0aEZ1bmN0aW9uID1cbiAgKGNvbHVtbnMsIGNlbGxTaXplQ2FjaGUsIGdob3N0PykgPT5cbiAgKHtpbmRleH0pID0+IHtcbiAgICByZXR1cm4gKGNvbHVtbnNbaW5kZXhdIHx8IHt9KS5naG9zdFxuICAgICAgPyBnaG9zdFxuICAgICAgOiBjZWxsU2l6ZUNhY2hlW2NvbHVtbnNbaW5kZXhdXSB8fCBkZWZhdWx0Q29sdW1uV2lkdGg7XG4gIH07XG5cbmludGVyZmFjZSBHZXRSb3dDZWxsUHJvcHMge1xuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlIHwgbnVsbDtcbiAgY29sdW1uczogKHN0cmluZyAmIHtnaG9zdD86IGJvb2xlYW59KVtdO1xuICBjb2x1bW46IHN0cmluZztcbiAgY29sTWV0YTtcbiAgcm93SW5kZXg6IG51bWJlcjtcbiAgc29ydE9yZGVyPzogbnVtYmVyW10gfCBudWxsO1xufVxuXG4vKlxuICogVGhpcyBpcyBhbiBhY2Nlc3NvciBtZXRob2QgdXNlZCB0byBnZW5lcmFsaXplIGdldHRpbmcgYSBjZWxsIGZyb20gYSBkYXRhIHJvd1xuICovXG5jb25zdCBkZWZhdWx0R2V0Um93Q2VsbCA9IChcbiAge2RhdGFDb250YWluZXIsIGNvbHVtbnMsIGNvbHVtbiwgY29sTWV0YSwgcm93SW5kZXgsIHNvcnRPcmRlcn06IEdldFJvd0NlbGxQcm9wcyxcbiAgZm9ybWF0dGVyXG4pID0+IHtcbiAgY29uc3Qgcm93SWR4ID0gc29ydE9yZGVyICYmIHNvcnRPcmRlci5sZW5ndGggPyBnZXQoc29ydE9yZGVyLCByb3dJbmRleCkgOiByb3dJbmRleDtcbiAgY29uc3Qge3R5cGV9ID0gY29sTWV0YVtjb2x1bW5dO1xuXG4gIGNvbnN0IHZhbHVlID0gZGF0YUNvbnRhaW5lcj8udmFsdWVBdChyb3dJZHgsIGNvbHVtbnMuaW5kZXhPZihjb2x1bW4pKTtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnXG4gICAgPyAnJ1xuICAgIDogZm9ybWF0dGVyXG4gICAgPyBmb3JtYXR0ZXIodmFsdWUpXG4gICAgOiBwYXJzZUZpZWxkVmFsdWUodmFsdWUsIHR5cGUpO1xufTtcblxudHlwZSBTdGF0c0NvbnRyb2xQcm9wcyA9IHtcbiAgdG9wOiBudW1iZXI7XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBTdHlsZWRTdGF0c0NvbnRyb2wgPSBzdHlsZWQuZGl2PFN0YXRzQ29udHJvbFByb3BzPmBcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlclN0YXRzQ29udHJvbEhlaWdodH1weDtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudG9wfXB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5TWVkaXVtfXB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmFjdGl2ZUNvbG9yfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsU3RhdHNDb250cm9sQmFja2dyb3VuZH07XG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gID4gZGl2IHtcbiAgICBwYWRkaW5nOiAwcHggMjRweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBzdmcge1xuICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBlYXNlO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoJHtwcm9wcyA9PiAocHJvcHMuc2hvd1N0YXRzID8gMTgwIDogMCl9ZGVnKTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0YXRzQ29udHJvbCA9ICh7XG4gIHRvcCxcbiAgc2hvd1N0YXRzLFxuICB0b2dnbGVTaG93U3RhdHNcbn06IHtcbiAgdG9wOiBudW1iZXI7XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG4gIHRvZ2dsZVNob3dTdGF0czogKCkgPT4gdm9pZDtcbn0pID0+IChcbiAgPFN0eWxlZFN0YXRzQ29udHJvbCB0b3A9e3RvcH0gc2hvd1N0YXRzPXtzaG93U3RhdHN9PlxuICAgIDxkaXYgb25DbGljaz17dG9nZ2xlU2hvd1N0YXRzfT5cbiAgICAgIHtzaG93U3RhdHMgPyAnSGlkZSBDb2x1bW4gU3RhdHMnIDogJ1Nob3cgQ29sdW1uIFN0YXRzJ31cbiAgICAgIDxBcnJvd0Rvd24gaGVpZ2h0PVwiMThweFwiIC8+XG4gICAgPC9kaXY+XG4gIDwvU3R5bGVkU3RhdHNDb250cm9sPlxuKTtcblxuaW50ZXJmYWNlIFRhYmxlU2VjdGlvblByb3BzIHtcbiAgY2xhc3NMaXN0Pzoge1xuICAgIGhlYWRlcjogc3RyaW5nO1xuICAgIHJvd3M6IHN0cmluZztcbiAgfTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xuICBjb2x1bW5zOiAoc3RyaW5nICYge2dob3N0PzogYm9vbGVhbn0pW107XG4gIGhlYWRlckdyaWRQcm9wcz87XG4gIGZpeGVkV2lkdGg/OiBudW1iZXIgfCBudWxsO1xuICBmaXhlZEhlaWdodD86IG51bWJlciB8IG51bGw7XG4gIG9uU2Nyb2xsPzogKHBhcmFtczogT25TY3JvbGxQYXJhbXMpID0+IHZvaWQ7XG4gIHNjcm9sbFRvcD86IG51bWJlcjtcbiAgZGF0YUdyaWRQcm9wczoge1xuICAgIHJvd0hlaWdodDogbnVtYmVyIHwgKChwYXJhbXM6IEluZGV4KSA9PiBudW1iZXIpO1xuICAgIHJvd0NvdW50OiBudW1iZXI7XG4gIH0gJiBQYXJ0aWFsPEdyaWRQcm9wcz47XG4gIGNvbHVtbldpZHRoPztcbiAgc2V0R3JpZFJlZj86IChyZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZDtcbiAgaGVhZGVyQ2VsbFJlbmRlcj87XG4gIGRhdGFDZWxsUmVuZGVyPztcbiAgc2Nyb2xsTGVmdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFRhYmxlU2VjdGlvbiA9ICh7XG4gIGNsYXNzTGlzdCxcbiAgaXNQaW5uZWQsXG4gIGNvbHVtbnMsXG4gIGhlYWRlckdyaWRQcm9wcyxcbiAgZml4ZWRXaWR0aCxcbiAgZml4ZWRIZWlnaHQgPSB1bmRlZmluZWQsXG4gIG9uU2Nyb2xsLFxuICBzY3JvbGxUb3AsXG4gIGRhdGFHcmlkUHJvcHMsXG4gIGNvbHVtbldpZHRoLFxuICBzZXRHcmlkUmVmID0gdW5kZWZpbmVkLFxuICBoZWFkZXJDZWxsUmVuZGVyLFxuICBkYXRhQ2VsbFJlbmRlcixcbiAgc2Nyb2xsTGVmdCA9IDBcbn06IFRhYmxlU2VjdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IGhlYWRlckhlaWdodCA9IGhlYWRlckdyaWRQcm9wcy5oZWlnaHQ7XG5cbiAgY29uc3QgaGVhZGVyU3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBoZWlnaHQ6IGAke2hlYWRlckhlaWdodH1weGBcbiAgICB9KSxcbiAgICBbaGVhZGVySGVpZ2h0XVxuICApO1xuICBjb25zdCBjb250ZW50U3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICB0b3A6IGAke2hlYWRlckhlaWdodH1weGBcbiAgICB9KSxcbiAgICBbaGVhZGVySGVpZ2h0XVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9TaXplcj5cbiAgICAgIHsoe3dpZHRoLCBoZWlnaHR9KSA9PiB7XG4gICAgICAgIGNvbnN0IGdyaWREaW1lbnNpb24gPSB7XG4gICAgICAgICAgY29sdW1uQ291bnQ6IGNvbHVtbnMubGVuZ3RoLFxuICAgICAgICAgIGNvbHVtbldpZHRoLFxuICAgICAgICAgIHdpZHRoOiBmaXhlZFdpZHRoIHx8IHdpZHRoXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhlYWRlckdyaWRXaWR0aCA9IGZpeGVkV2lkdGggfHwgd2lkdGg7XG4gICAgICAgIGNvbnN0IGRhdGFHcmlkSGVpZ2h0ID0gZml4ZWRIZWlnaHQgfHwgaGVpZ2h0O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdzY3JvbGwtaW4tdWktdGhyZWFkJywgY2xhc3NMaXN0Py5oZWFkZXIpfVxuICAgICAgICAgICAgICBzdHlsZT17aGVhZGVyU3R5bGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyPXtoZWFkZXJDZWxsUmVuZGVyfVxuICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgey4uLmdyaWREaW1lbnNpb259XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtoZWFkZXJHcmlkUHJvcHMuaGVpZ2h0ICsgYnJvd3NlclNjcm9sbEJhcldpZHRofVxuICAgICAgICAgICAgICAgIHdpZHRoPXtoZWFkZXJHcmlkV2lkdGh9XG4gICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICBvblNjcm9sbD17b25TY3JvbGx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdzY3JvbGwtaW4tdWktdGhyZWFkJywgY2xhc3NMaXN0Py5yb3dzKX1cbiAgICAgICAgICAgICAgc3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI9e2RhdGFDZWxsUmVuZGVyfVxuICAgICAgICAgICAgICAgIHsuLi5kYXRhR3JpZFByb3BzfVxuICAgICAgICAgICAgICAgIHsuLi5ncmlkRGltZW5zaW9ufVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17aXNQaW5uZWQgPyAncGlubmVkLWdyaWQnIDogJ2JvZHktZ3JpZCd9XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtkYXRhR3JpZEhlaWdodCAtIGhlYWRlckdyaWRQcm9wcy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgb25TY3JvbGw9e29uU2Nyb2xsfVxuICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ9e3Njcm9sbExlZnR9XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG9wPXtzY3JvbGxUb3B9XG4gICAgICAgICAgICAgICAgc2V0R3JpZFJlZj17c2V0R3JpZFJlZn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0F1dG9TaXplcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRhYmxlUHJvcHMge1xuICBkYXRhSWQ/OiBzdHJpbmc7XG4gIGhhc1N0YXRzPzogYm9vbGVhbjtcbiAgY2VsbFNpemVDYWNoZT86IENlbGxTaXplQ2FjaGU7XG4gIHBpbm5lZENvbHVtbnM/OiBzdHJpbmdbXTtcbiAgY29sdW1uczogKHN0cmluZyAmIHtnaG9zdD86IGJvb2xlYW59KVtdO1xuICBmaXhlZFdpZHRoPzogbnVtYmVyIHwgbnVsbDtcbiAgdGhlbWU/OiBhbnk7XG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UgfCBudWxsO1xuICBmaXhlZEhlaWdodD86IG51bWJlciB8IG51bGw7XG4gIGNvbE1ldGE6IENvbE1ldGE7XG4gIHNvcnRDb2x1bW46IFNvcnRDb2x1bW47XG4gIHNvcnRUYWJsZUNvbHVtbjogKGNvbHVtbjogc3RyaW5nLCBtb2RlPzogc3RyaW5nKSA9PiB2b2lkO1xuICBwaW5UYWJsZUNvbHVtbjogKGNvbHVtbjogc3RyaW5nKSA9PiB2b2lkO1xuICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0PzogKGZvcm1hdHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSA9PiB2b2lkO1xuICBjb3B5VGFibGVDb2x1bW46IChjb2x1bW46IHN0cmluZykgPT4gdm9pZDtcbiAgc29ydE9yZGVyPzogbnVtYmVyW10gfCBudWxsO1xuICBzaG93U3RhdHM/OiBib29sZWFuO1xuICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZT86IGJvb2xlYW47XG4gIGdldFJvd0NlbGw/OiAocmVuZGVyRGF0YUNlbGxQcm9wczogR2V0Um93Q2VsbFByb3BzLCBmb3JtYXR0ZXI6IGFueSkgPT4gc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRGF0YVRhYmxlU3RhdGUge1xuICBjZWxsU2l6ZUNhY2hlPzogQ2VsbFNpemVDYWNoZTtcbiAgbW9yZU9wdGlvbnNDb2x1bW4/O1xuICBnaG9zdD87XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG59XG5cbmNvbnN0IERVTU1ZX1NUWUxFID0ge307XG5cbkRhdGFUYWJsZUZhY3RvcnkuZGVwcyA9IFtIZWFkZXJDZWxsRmFjdG9yeV07XG5mdW5jdGlvbiBEYXRhVGFibGVGYWN0b3J5KFxuICBIZWFkZXJDZWxsOiBSZXR1cm5UeXBlPHR5cGVvZiBIZWFkZXJDZWxsRmFjdG9yeT5cbik6IFJlYWN0LkNvbXBvbmVudFR5cGU8RGF0YVRhYmxlUHJvcHM+IHtcbiAgY2xhc3MgRGF0YVRhYmxlIGV4dGVuZHMgQ29tcG9uZW50PERhdGFUYWJsZVByb3BzLCBEYXRhVGFibGVTdGF0ZT4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBkYXRhQ29udGFpbmVyOiBudWxsLFxuICAgICAgcGlubmVkQ29sdW1uczogW10sXG4gICAgICBjb2xNZXRhOiB7fSxcbiAgICAgIGNlbGxTaXplQ2FjaGU6IHt9LFxuICAgICAgc29ydENvbHVtbjoge30sXG4gICAgICBmaXhlZFdpZHRoOiBudWxsLFxuICAgICAgZml4ZWRIZWlnaHQ6IG51bGwsXG4gICAgICB0aGVtZToge30sXG4gICAgICBoYXNTdGF0czogZmFsc2UsXG4gICAgICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZTogdHJ1ZVxuICAgIH07XG5cbiAgICBwaW5uZWRHcmlkOiBIVE1MRGl2RWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIHVucGlubmVkR3JpZDogSFRNTERpdkVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBoYXNNb3VudGVkID0gZmFsc2U7XG5cbiAgICBzdGF0ZTogRGF0YVRhYmxlU3RhdGUgPSB7XG4gICAgICBjZWxsU2l6ZUNhY2hlOiB7fSxcbiAgICAgIG1vcmVPcHRpb25zQ29sdW1uOiBudWxsLFxuICAgICAgc2hvd1N0YXRzOiB0cnVlXG4gICAgfTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5oYXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnNjYWxlQ2VsbHNUb1dpZHRoKTtcbiAgICAgIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgoKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMucHJvcHMuY2VsbFNpemVDYWNoZSAhPT0gcHJldlByb3BzLmNlbGxTaXplQ2FjaGUgfHxcbiAgICAgICAgdGhpcy5wcm9wcy5waW5uZWRDb2x1bW5zICE9PSBwcmV2UHJvcHMucGlubmVkQ29sdW1uc1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMuaGFzTW91bnRlZCA9IGZhbHNlO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgpO1xuICAgIH1cblxuICAgIHJvb3QgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgY29sdW1ucyA9IChwcm9wczogRGF0YVRhYmxlUHJvcHMpID0+IHByb3BzLmNvbHVtbnM7XG4gICAgcGlubmVkQ29sdW1ucyA9IChwcm9wczogRGF0YVRhYmxlUHJvcHMpID0+IHByb3BzLnBpbm5lZENvbHVtbnM7XG4gICAgdW5waW5uZWRDb2x1bW5zID0gY3JlYXRlU2VsZWN0b3IodGhpcy5jb2x1bW5zLCB0aGlzLnBpbm5lZENvbHVtbnMsIChjb2x1bW5zLCBwaW5uZWRDb2x1bW5zKSA9PlxuICAgICAgIUFycmF5LmlzQXJyYXkocGlubmVkQ29sdW1ucykgPyBjb2x1bW5zIDogY29sdW1ucy5maWx0ZXIoYyA9PiAhcGlubmVkQ29sdW1ucy5pbmNsdWRlcyhjKSlcbiAgICApO1xuXG4gICAgdG9nZ2xlTW9yZU9wdGlvbnMgPSBtb3JlT3B0aW9uc0NvbHVtbiA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNNb3VudGVkKVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtbjpcbiAgICAgICAgICAgIHRoaXMuc3RhdGUubW9yZU9wdGlvbnNDb2x1bW4gPT09IG1vcmVPcHRpb25zQ29sdW1uID8gbnVsbCA6IG1vcmVPcHRpb25zQ29sdW1uXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgdG9nZ2xlU2hvd1N0YXRzID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzTW91bnRlZCkgdGhpcy5zZXRTdGF0ZSh7c2hvd1N0YXRzOiAhdGhpcy5zdGF0ZS5zaG93U3RhdHN9KTtcbiAgICB9O1xuICAgIGdldENlbGxTaXplQ2FjaGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCB7Y2VsbFNpemVDYWNoZTogcHJvcHNDYWNoZSA9IHt9LCBmaXhlZFdpZHRoLCBwaW5uZWRDb2x1bW5zID0gW119ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHVucGlubmVkQ29sdW1ucyA9IHRoaXMudW5waW5uZWRDb2x1bW5zKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB3aWR0aCA9IGZpeGVkV2lkdGggPyBmaXhlZFdpZHRoIDogdGhpcy5yb290LmN1cnJlbnQgPyB0aGlzLnJvb3QuY3VycmVudC5jbGllbnRXaWR0aCA6IDA7XG5cbiAgICAgIC8vIHBpbiBjb2x1bW4gYm9yZGVyIGlzIDIgcGl4ZWwgdnMgMSBwaXhlbFxuICAgICAgY29uc3QgYWRqdXN0V2lkdGggPSBwaW5uZWRDb2x1bW5zLmxlbmd0aCA/IHdpZHRoIC0gMSA6IHdpZHRoO1xuICAgICAgY29uc3Qge2NlbGxTaXplQ2FjaGUsIGdob3N0fSA9IGFkanVzdENlbGxzVG9Db250YWluZXIoXG4gICAgICAgIGFkanVzdFdpZHRoLFxuICAgICAgICBwcm9wc0NhY2hlLFxuICAgICAgICBwaW5uZWRDb2x1bW5zLFxuICAgICAgICB1bnBpbm5lZENvbHVtbnNcbiAgICAgICkgYXMge2NlbGxTaXplQ2FjaGU6IENlbGxTaXplQ2FjaGU7IGdob3N0OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgZ2hvc3RcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGRvU2NhbGVDZWxsc1RvV2lkdGggPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNNb3VudGVkKSB0aGlzLnNldFN0YXRlKHRoaXMuZ2V0Q2VsbFNpemVDYWNoZSgpKTtcbiAgICB9O1xuXG4gICAgc2NhbGVDZWxsc1RvV2lkdGggPSBkZWJvdW5jZSh0aGlzLmRvU2NhbGVDZWxsc1RvV2lkdGgsIDMwMCk7XG5cbiAgICByZW5kZXJEYXRhQ2VsbCA9IChjb2x1bW5zLCBpc1Bpbm5lZCwgcHJvcHM6IERhdGFUYWJsZVByb3BzKSA9PiB7XG4gICAgICBjb25zdCBnZXRSb3dDZWxsID0gdGhpcy5wcm9wcy5nZXRSb3dDZWxsID8/IGRlZmF1bHRHZXRSb3dDZWxsO1xuICAgICAgY29uc3QgRGF0YUNlbGxSZW5kZXJlciA9IGNlbGxJbmZvID0+IHtcbiAgICAgICAgY29uc3Qge2NvbHVtbkluZGV4LCBrZXksIHN0eWxlLCByb3dJbmRleH0gPSBjZWxsSW5mbztcbiAgICAgICAgY29uc3Qge2RhdGFDb250YWluZXIsIGNvbE1ldGF9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnNbY29sdW1uSW5kZXhdO1xuICAgICAgICBjb25zdCBpc0dob3N0ID0gY29sdW1uLmdob3N0O1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IGlzR2hvc3QgPyBudWxsIDogZ2V0Q29sdW1uRm9ybWF0dGVyKGNvbE1ldGFbY29sdW1uXSk7XG4gICAgICAgIGNvbnN0IHJvd0NlbGwgPSBpc0dob3N0ID8gJycgOiBnZXRSb3dDZWxsKHsuLi5wcm9wcywgY29sdW1uLCByb3dJbmRleH0sIGZvcm1hdHRlcik7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBpc0dob3N0ID8gbnVsbCA6IGNvbE1ldGFbY29sdW1uXS50eXBlO1xuXG4gICAgICAgIGNvbnN0IGxhc3RSb3dJbmRleCA9IGRhdGFDb250YWluZXIgPyBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSAtIDEgOiAwO1xuXG4gICAgICAgIGNvbnN0IGVuZENlbGwgPSBjb2x1bW5JbmRleCA9PT0gY29sdW1ucy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBmaXJzdENlbGwgPSBjb2x1bW5JbmRleCA9PT0gMDtcbiAgICAgICAgY29uc3QgYm90dG9tQ2VsbCA9IHJvd0luZGV4ID09PSBsYXN0Um93SW5kZXg7XG4gICAgICAgIGNvbnN0IGFsaWduUmlnaHQgPSBmaWVsZFRvQWxpZ25SaWdodFtOdW1iZXIodHlwZSldO1xuXG4gICAgICAgIGNvbnN0IGNlbGwgPSAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdjZWxsJywge1xuICAgICAgICAgICAgICBbcm93SW5kZXggJSAyID09PSAwID8gJ2V2ZW4tcm93JyA6ICdvZGQtcm93J106IHRydWUsXG4gICAgICAgICAgICAgIFtgcm93LSR7cm93SW5kZXh9YF06IHRydWUsXG4gICAgICAgICAgICAgICdwaW5uZWQtY2VsbCc6IGlzUGlubmVkLFxuICAgICAgICAgICAgICAnZmlyc3QtY2VsbCc6IGZpcnN0Q2VsbCxcbiAgICAgICAgICAgICAgJ2VuZC1jZWxsJzogZW5kQ2VsbCxcbiAgICAgICAgICAgICAgJ2JvdHRvbS1jZWxsJzogYm90dG9tQ2VsbCxcbiAgICAgICAgICAgICAgJ2FsaWduLXJpZ2h0JzogYWxpZ25SaWdodFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIHRpdGxlPXtpc0dob3N0ID8gdW5kZWZpbmVkIDogcm93Q2VsbH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YCR7cm93Q2VsbH0ke2VuZENlbGwgPyAnXFxuJyA6ICdcXHQnfWB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIERhdGFDZWxsUmVuZGVyZXI7XG4gICAgfTtcblxuICAgIHJlbmRlckhlYWRlckNlbGwoY29sdW1ucywgaXNQaW5uZWQsIHByb3BzLCB0b2dnbGVNb3JlT3B0aW9ucywgbW9yZU9wdGlvbnNDb2x1bW4pIHtcbiAgICAgIGNvbnN0IEhlYWRlckNlbGxSZW5kZXJlciA9IGNlbGxJbmZvID0+IChcbiAgICAgICAgPEhlYWRlckNlbGxcbiAgICAgICAgICBjZWxsSW5mbz17Y2VsbEluZm99XG4gICAgICAgICAga2V5PXtjZWxsSW5mby5jb2x1bW5JbmRleH1cbiAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgIGlzUGlubmVkPXtpc1Bpbm5lZH1cbiAgICAgICAgICBzaG93U3RhdHM9e3RoaXMuc3RhdGUuc2hvd1N0YXRzfVxuICAgICAgICAgIHByb3BzPXtwcm9wc31cbiAgICAgICAgICB0b2dnbGVNb3JlT3B0aW9ucz17dG9nZ2xlTW9yZU9wdGlvbnN9XG4gICAgICAgICAgbW9yZU9wdGlvbnNDb2x1bW49e21vcmVPcHRpb25zQ29sdW1ufVxuICAgICAgICAgIC8vIHBhc3MgZHVtbXkgc3R5bGUgdG8gcHJldmVudCB3YXJuaW5ncyBmcm9tIHJlYWN0LXZpcnR1YWxpemVkIEdyaWRcbiAgICAgICAgICBzdHlsZT17RFVNTVlfU1RZTEV9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgICAgcmV0dXJuIEhlYWRlckNlbGxSZW5kZXJlcjtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICBwaW5uZWRDb2x1bW5zID0gW10sXG4gICAgICAgIHRoZW1lID0ge30sXG4gICAgICAgIGZpeGVkV2lkdGgsXG4gICAgICAgIGZpeGVkSGVpZ2h0ID0gMCxcbiAgICAgICAgaGFzU3RhdHMsXG4gICAgICAgIGhhc0N1c3RvbVNjcm9sbEJhclN0eWxlXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHVucGlubmVkQ29sdW1ucyA9IHRoaXMudW5waW5uZWRDb2x1bW5zKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB7Y2VsbFNpemVDYWNoZSA9IHt9LCBtb3JlT3B0aW9uc0NvbHVtbiwgZ2hvc3QsIHNob3dTdGF0c30gPSB0aGlzLnN0YXRlO1xuICAgICAgY29uc3QgdW5waW5uZWRDb2x1bW5zR2hvc3QgPSBnaG9zdFxuICAgICAgICA/IFsuLi51bnBpbm5lZENvbHVtbnMsIHtnaG9zdDogdHJ1ZX0gYXMgc3RyaW5nICYge2dob3N0OiBib29sZWFufV1cbiAgICAgICAgOiB1bnBpbm5lZENvbHVtbnM7XG4gICAgICBjb25zdCBwaW5uZWRDb2x1bW5zV2lkdGggPSBwaW5uZWRDb2x1bW5zLnJlZHVjZShcbiAgICAgICAgKGFjYywgdmFsKSA9PiBhY2MgKyAoZ2V0KGNlbGxTaXplQ2FjaGUsIHZhbCwgMCkgYXMgbnVtYmVyKSxcbiAgICAgICAgMFxuICAgICAgKTtcblxuICAgICAgY29uc3QgaGFzUGlubmVkQ29sdW1ucyA9IEJvb2xlYW4ocGlubmVkQ29sdW1ucy5sZW5ndGgpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBoZWFkZXJSb3dIZWlnaHQgPSBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0LFxuICAgICAgICBoZWFkZXJTdGF0c0NvbnRyb2xIZWlnaHQgPSBkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0LFxuICAgICAgICBoZWFkZXJSb3dXU3RhdHNIZWlnaHQgPSBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0LFxuICAgICAgICByb3dIZWlnaHQgPSBkZWZhdWx0Um93SGVpZ2h0XG4gICAgICB9ID0gdGhlbWU7XG5cbiAgICAgIGNvbnN0IGhlYWRlckdyaWRQcm9wcyA9IHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgY2xhc3NOYW1lOiAnaGVhZGVyLWdyaWQnLFxuICAgICAgICBoZWlnaHQ6ICFoYXNTdGF0c1xuICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgOiBzaG93U3RhdHNcbiAgICAgICAgICA/IGhlYWRlclJvd1dTdGF0c0hlaWdodFxuICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0ICsgaGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0LFxuICAgICAgICByb3dDb3VudDogMSxcbiAgICAgICAgcm93SGVpZ2h0OiAhaGFzU3RhdHNcbiAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgIDogc2hvd1N0YXRzXG4gICAgICAgICAgPyBoZWFkZXJSb3dXU3RhdHNIZWlnaHRcbiAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCArIGhlYWRlclN0YXRzQ29udHJvbEhlaWdodFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZGF0YUdyaWRQcm9wcyA9IHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgb3ZlcnNjYW5Db2x1bW5Db3VudCxcbiAgICAgICAgb3ZlcnNjYW5Sb3dDb3VudCxcbiAgICAgICAgcm93Q291bnQ6IGRhdGFDb250YWluZXIgPyBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA6IDAsXG4gICAgICAgIHJvd0hlaWdodFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbnRhaW5lclxuICAgICAgICAgIGNsYXNzTmFtZT1cImRhdGEtdGFibGUtY29udGFpbmVyXCJcbiAgICAgICAgICByZWY9e3RoaXMucm9vdH1cbiAgICAgICAgICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZT17aGFzQ3VzdG9tU2Nyb2xsQmFyU3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoY2VsbFNpemVDYWNoZSkubGVuZ3RoID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPFNjcm9sbFN5bmM+XG4gICAgICAgICAgICAgICAgeyh7b25TY3JvbGwsIHNjcm9sbExlZnQsIHNjcm9sbFRvcH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVzdWx0cy10YWJsZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2hhc1Bpbm5lZENvbHVtbnMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9XCJwaW5uZWQtY29sdW1uc1wiIGNsYXNzTmFtZT1cInBpbm5lZC1jb2x1bW5zIGdyaWQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0xpc3Q9e3Bpbm5lZENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Bpbm5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3Bpbm5lZENvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyR3JpZFByb3BzPXtoZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRXaWR0aD17cGlubmVkQ29sdW1uc1dpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2Nyb2xsPXthcmdzID0+IG9uU2Nyb2xsKHsuLi5hcmdzLCBzY3JvbGxMZWZ0fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wPXtzY3JvbGxUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JpZFByb3BzPXtkYXRhR3JpZFByb3BzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEdyaWRSZWY9e3Bpbm5lZEdyaWQgPT4gKHRoaXMucGlubmVkR3JpZCA9IHBpbm5lZEdyaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoPXtjb2x1bW5XaWR0aEZ1bmN0aW9uKHBpbm5lZENvbHVtbnMsIGNlbGxTaXplQ2FjaGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGxSZW5kZXI9e3RoaXMucmVuZGVySGVhZGVyQ2VsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZENvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTW9yZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUNlbGxSZW5kZXI9e3RoaXMucmVuZGVyRGF0YUNlbGwocGlubmVkQ29sdW1ucywgdHJ1ZSwgdGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cInVucGlubmVkLWNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogYCR7aGFzUGlubmVkQ29sdW1ucyA/IGAke3Bpbm5lZENvbHVtbnNXaWR0aH1weGAgOiAnMCd9YFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInVucGlubmVkLWNvbHVtbnMgZ3JpZC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NMaXN0PXt1bnBpbm5lZENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQaW5uZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXt1bnBpbm5lZENvbHVtbnNHaG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyR3JpZFByb3BzPXtoZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkV2lkdGg9e2ZpeGVkV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkSGVpZ2h0PXtmaXhlZEhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25TY3JvbGw9e29uU2Nyb2xsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A9e3Njcm9sbFRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWRQcm9wcz17ZGF0YUdyaWRQcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0R3JpZFJlZj17dW5waW5uZWRHcmlkID0+ICh0aGlzLnVucGlubmVkR3JpZCA9IHVucGlubmVkR3JpZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoPXtjb2x1bW5XaWR0aEZ1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGlubmVkQ29sdW1uc0dob3N0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxTaXplQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2hvc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbFJlbmRlcj17dGhpcy5yZW5kZXJIZWFkZXJDZWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGlubmVkQ29sdW1uc0dob3N0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVNb3JlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhQ2VsbFJlbmRlcj17dGhpcy5yZW5kZXJEYXRhQ2VsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBpbm5lZENvbHVtbnNHaG9zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9TY3JvbGxTeW5jPlxuICAgICAgICAgICAgICB7aGFzU3RhdHMgPyAoXG4gICAgICAgICAgICAgICAgPFN0YXRzQ29udHJvbFxuICAgICAgICAgICAgICAgICAgdG9wPXtoZWFkZXJSb3dIZWlnaHR9XG4gICAgICAgICAgICAgICAgICBzaG93U3RhdHM9e3Nob3dTdGF0c31cbiAgICAgICAgICAgICAgICAgIHRvZ2dsZVNob3dTdGF0cz17dGhpcy50b2dnbGVTaG93U3RhdHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9Db250YWluZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3aXRoVGhlbWUoRGF0YVRhYmxlIGFzIFJlYWN0LkNvbXBvbmVudFR5cGU8RGF0YVRhYmxlUHJvcHM+KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0YVRhYmxlRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUgsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLElBQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQUgsc0JBQUEsQ0FBQUosT0FB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
471
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RWaXJ0dWFsaXplZCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2NsYXNzbmFtZXMyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZXNlbGVjdCIsIl9nZXQiLCJfZGVib3VuY2UiLCJfaWNvbnMiLCJfZ3JpZCIsIl9oZWFkZXJDZWxsIiwiX3V0aWxzIiwiX2NlbGxTaXplIiwiX2NvbnN0YW50cyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmF1bHRIZWFkZXJSb3dIZWlnaHQiLCJkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0IiwiZGVmYXVsdFJvd0hlaWdodCIsIm92ZXJzY2FuQ29sdW1uQ291bnQiLCJvdmVyc2NhblJvd0NvdW50IiwiYnJvd3NlclNjcm9sbEJhcldpZHRoIiwiZmllbGRUb0FsaWduUmlnaHQiLCJBTExfRklFTERfVFlQRVMiLCJpbnRlZ2VyIiwicmVhbCIsInBpbm5lZENsYXNzTGlzdCIsImhlYWRlciIsInJvd3MiLCJ1bnBpbm5lZENsYXNzTGlzdCIsIkNvbnRhaW5lciIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJkYXRhVGFibGVUZXh0Q29sb3IiLCJoYXNDdXN0b21TY3JvbGxCYXJTdHlsZSIsIm1vZGFsU2Nyb2xsQmFyIiwiY2VsbEJvcmRlckNvbG9yIiwicGlubmVkR3JpZEJvcmRlckNvbG9yIiwiZXZlblJvd0JhY2tncm91bmQiLCJvZGRSb3dCYWNrZ3JvdW5kIiwiY2VsbFBhZGRpbmdTaWRlIiwiY2VsbEZvbnRTaXplIiwiZWRnZUNlbGxQYWRkaW5nU2lkZSIsImRlZmF1bHRDb2x1bW5XaWR0aCIsImNvbHVtbldpZHRoRnVuY3Rpb24iLCJjb2x1bW5zIiwiY2VsbFNpemVDYWNoZSIsImdob3N0IiwiX3JlZiIsImluZGV4IiwiZGVmYXVsdEdldFJvd0NlbGwiLCJfcmVmMiIsImZvcm1hdHRlciIsImRhdGFDb250YWluZXIiLCJjb2x1bW4iLCJjb2xNZXRhIiwicm93SW5kZXgiLCJzb3J0T3JkZXIiLCJyb3dJZHgiLCJ0eXBlIiwidmFsdWUiLCJ2YWx1ZUF0IiwiaW5kZXhPZiIsInVuZGVmaW5lZCIsInBhcnNlRmllbGRWYWx1ZSIsIlN0eWxlZFN0YXRzQ29udHJvbCIsImhlYWRlclN0YXRzQ29udHJvbEhlaWdodCIsInRvcCIsImZvbnRGYW1pbHlNZWRpdW0iLCJhY3RpdmVDb2xvciIsImhlYWRlckNlbGxTdGF0c0NvbnRyb2xCYWNrZ3JvdW5kIiwic2hvd1N0YXRzIiwiU3RhdHNDb250cm9sIiwiX3JlZjMiLCJ0b2dnbGVTaG93U3RhdHMiLCJjcmVhdGVFbGVtZW50Iiwib25DbGljayIsIkFycm93RG93biIsImhlaWdodCIsIlRhYmxlU2VjdGlvbiIsIl9yZWY0IiwiY2xhc3NMaXN0IiwiaXNQaW5uZWQiLCJoZWFkZXJHcmlkUHJvcHMiLCJmaXhlZFdpZHRoIiwiX3JlZjQkZml4ZWRIZWlnaHQiLCJmaXhlZEhlaWdodCIsIm9uU2Nyb2xsIiwic2Nyb2xsVG9wIiwiZGF0YUdyaWRQcm9wcyIsImNvbHVtbldpZHRoIiwiX3JlZjQkc2V0R3JpZFJlZiIsInNldEdyaWRSZWYiLCJoZWFkZXJDZWxsUmVuZGVyIiwiZGF0YUNlbGxSZW5kZXIiLCJfcmVmNCRzY3JvbGxMZWZ0Iiwic2Nyb2xsTGVmdCIsImhlYWRlckhlaWdodCIsImhlYWRlclN0eWxlIiwidXNlTWVtbyIsImNvbmNhdCIsImNvbnRlbnRTdHlsZSIsIkF1dG9TaXplciIsIl9yZWY1Iiwid2lkdGgiLCJncmlkRGltZW5zaW9uIiwiY29sdW1uQ291bnQiLCJoZWFkZXJHcmlkV2lkdGgiLCJkYXRhR3JpZEhlaWdodCIsIkZyYWdtZW50IiwiY2xhc3NOYW1lIiwiY2xhc3NuYW1lcyIsInN0eWxlIiwiX2V4dGVuZHMyIiwiY2VsbFJlbmRlcmVyIiwiYXJncyIsIkRVTU1ZX1NUWUxFIiwiRGF0YVRhYmxlRmFjdG9yeSIsImRlcHMiLCJIZWFkZXJDZWxsRmFjdG9yeSIsIkhlYWRlckNlbGwiLCJEYXRhVGFibGUiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsIkFycmF5IiwiX2tleSIsIm1vcmVPcHRpb25zQ29sdW1uIiwiY3JlYXRlUmVmIiwicGlubmVkQ29sdW1ucyIsImNyZWF0ZVNlbGVjdG9yIiwiaXNBcnJheSIsImMiLCJpbmNsdWRlcyIsImhhc01vdW50ZWQiLCJzZXRTdGF0ZSIsInN0YXRlIiwiX3RoaXMkcHJvcHMiLCJfdGhpcyRwcm9wcyRjZWxsU2l6ZUMiLCJwcm9wc0NhY2hlIiwiX3RoaXMkcHJvcHMkcGlubmVkQ29sIiwidW5waW5uZWRDb2x1bW5zIiwicm9vdCIsImN1cnJlbnQiLCJjbGllbnRXaWR0aCIsImFkanVzdFdpZHRoIiwiX3JlZjYiLCJhZGp1c3RDZWxsc1RvQ29udGFpbmVyIiwiZ2V0Q2VsbFNpemVDYWNoZSIsImRlYm91bmNlIiwiZG9TY2FsZUNlbGxzVG9XaWR0aCIsIl90aGlzJHByb3BzJGdldFJvd0NlbCIsImdldFJvd0NlbGwiLCJEYXRhQ2VsbFJlbmRlcmVyIiwiY2VsbEluZm8iLCJjb2x1bW5JbmRleCIsImtleSIsImlzR2hvc3QiLCJnZXRDb2x1bW5Gb3JtYXR0ZXIiLCJyb3dDZWxsIiwibGFzdFJvd0luZGV4IiwibnVtUm93cyIsImVuZENlbGwiLCJmaXJzdENlbGwiLCJib3R0b21DZWxsIiwiYWxpZ25SaWdodCIsIk51bWJlciIsImNlbGwiLCJ0aXRsZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwic2NhbGVDZWxsc1RvV2lkdGgiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW5kZXJIZWFkZXJDZWxsIiwidG9nZ2xlTW9yZU9wdGlvbnMiLCJfdGhpczIiLCJIZWFkZXJDZWxsUmVuZGVyZXIiLCJyZW5kZXIiLCJfdGhpczMiLCJfdGhpcyRwcm9wczIiLCJfdGhpcyRwcm9wczIkcGlubmVkQ28iLCJfdGhpcyRwcm9wczIkdGhlbWUiLCJfdGhpcyRwcm9wczIkZml4ZWRIZWkiLCJoYXNTdGF0cyIsIl90aGlzJHN0YXRlIiwiX3RoaXMkc3RhdGUkY2VsbFNpemVDIiwidW5waW5uZWRDb2x1bW5zR2hvc3QiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwicGlubmVkQ29sdW1uc1dpZHRoIiwicmVkdWNlIiwiYWNjIiwidmFsIiwiaGFzUGlubmVkQ29sdW1ucyIsIl90aGVtZSRoZWFkZXJSb3dIZWlnaCIsImhlYWRlclJvd0hlaWdodCIsIl90aGVtZSRoZWFkZXJTdGF0c0NvbiIsIl90aGVtZSRoZWFkZXJSb3dXU3RhdCIsImhlYWRlclJvd1dTdGF0c0hlaWdodCIsIl90aGVtZSRyb3dIZWlnaHQiLCJyb3dIZWlnaHQiLCJyb3dDb3VudCIsInJlZiIsIlNjcm9sbFN5bmMiLCJfcmVmNyIsInBpbm5lZEdyaWQiLCJyZW5kZXJEYXRhQ2VsbCIsIm1hcmdpbkxlZnQiLCJ1bnBpbm5lZEdyaWQiLCJDb21wb25lbnQiLCJzb3J0Q29sdW1uIiwid2l0aFRoZW1lIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2RhdGEtdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1Njcm9sbFN5bmMsIEF1dG9TaXplciwgT25TY3JvbGxQYXJhbXMsIEdyaWRQcm9wcywgSW5kZXh9IGZyb20gJ3JlYWN0LXZpcnR1YWxpemVkJztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuaW1wb3J0IHtBcnJvd0Rvd259IGZyb20gJy4uL2ljb25zJztcblxuaW1wb3J0IHtDZWxsU2l6ZUNhY2hlfSBmcm9tICcuL2NlbGwtc2l6ZSc7XG5cbmltcG9ydCBHcmlkIGZyb20gJy4vZ3JpZCc7XG5pbXBvcnQgSGVhZGVyQ2VsbEZhY3RvcnkgZnJvbSAnLi9oZWFkZXItY2VsbCc7XG5cbmltcG9ydCB7Q29sTWV0YX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge3BhcnNlRmllbGRWYWx1ZSwgZ2V0Q29sdW1uRm9ybWF0dGVyLCBEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7YWRqdXN0Q2VsbHNUb0NvbnRhaW5lcn0gZnJvbSAnLi9jZWxsLXNpemUnO1xuXG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0ID0gNTU7XG5jb25zdCBkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0ID0gNDA7XG5jb25zdCBkZWZhdWx0Um93SGVpZ2h0ID0gMzI7XG5jb25zdCBvdmVyc2NhbkNvbHVtbkNvdW50ID0gMTA7XG5jb25zdCBvdmVyc2NhblJvd0NvdW50ID0gMTA7XG4vLyBUaGUgZGVmYXVsdCBzY3JvbGxiYXIgd2lkdGggY2FuIHJhbmdlIGFueXdoZXJlIGZyb20gMTJweCB0byAxN3B4XG5jb25zdCBicm93c2VyU2Nyb2xsQmFyV2lkdGggPSAxNztcbmNvbnN0IGZpZWxkVG9BbGlnblJpZ2h0ID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB0cnVlLFxuICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiB0cnVlXG59O1xuXG5jb25zdCBwaW5uZWRDbGFzc0xpc3QgPSB7XG4gIGhlYWRlcjogJ3Bpbm5lZC1jb2x1bW5zLS1oZWFkZXIgcGlubmVkLWdyaWQtY29udGFpbmVyJyxcbiAgcm93czogJ3Bpbm5lZC1jb2x1bW5zLS1yb3dzIHBpbm5lZC1ncmlkLWNvbnRhaW5lcidcbn07XG5cbmNvbnN0IHVucGlubmVkQ2xhc3NMaXN0ID0ge1xuICBoZWFkZXI6ICd1bnBpbm5lZC1jb2x1bW5zLS1oZWFkZXIgdW5waW5uZWQtZ3JpZC1jb250YWluZXInLFxuICByb3dzOiAndW5waW5uZWQtY29sdW1ucy0tcm93cyB1bnBpbm5lZC1ncmlkLWNvbnRhaW5lcidcbn07XG5cbnR5cGUgQ29udGFpbmVyUHJvcHMgPSB7XG4gIGhhc0N1c3RvbVNjcm9sbEJhclN0eWxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2PENvbnRhaW5lclByb3BzPmBcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmbGV4LWdyb3c6IDE7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRhdGFUYWJsZVRleHRDb2xvcn07XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC5SZWFjdFZpcnR1YWxpemVkX19HcmlkOmZvY3VzLFxuICAuUmVhY3RWaXJ0dWFsaXplZF9fR3JpZDphY3RpdmUge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbiAgLmJvZHktZ3JpZCB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy5oYXNDdXN0b21TY3JvbGxCYXJTdHlsZSAmJiBwcm9wcy50aGVtZS5tb2RhbFNjcm9sbEJhcn1cbiAgfVxuXG4gIC5jZWxsIHtcbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICo6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cblxuICAucmVzdWx0cy10YWJsZS13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkLnBpbm5lZC1jb2x1bW5zLS1oZWFkZXIge1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHticm93c2VyU2Nyb2xsQmFyV2lkdGh9cHg7XG4gICAgfVxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkLnVucGlubmVkLWNvbHVtbnMtLWhlYWRlciB7XG4gICAgICB3aWR0aDogMTAwdnc7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbEJvcmRlckNvbG9yfTtcbiAgICAgIC8vIGxlYXZlIHJvb20gZm9yIHNjcm9sbGJhclxuICAgICAgcGFkZGluZy1ib3R0b206ICR7YnJvd3NlclNjcm9sbEJhcldpZHRofXB4O1xuICAgIH1cblxuICAgIC5zY3JvbGwtaW4tdWktdGhyZWFkOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5ncmlkLXJvdyB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG4gICAgLmdyaWQtY29sdW1uIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuICAgIC5waW5uZWQtZ3JpZC1jb250YWluZXIge1xuICAgICAgZmxleDogMCAwIDc1cHg7XG4gICAgICB6LWluZGV4OiAxMDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBpbm5lZEdyaWRCb3JkZXJDb2xvcn07XG4gICAgfVxuICAgIC5ldmVuLXJvdyB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmV2ZW5Sb3dCYWNrZ3JvdW5kfTtcbiAgICB9XG4gICAgLm9kZC1yb3cge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5vZGRSb3dCYWNrZ3JvdW5kfTtcbiAgICB9XG4gICAgLmNlbGwsXG4gICAgLmhlYWRlci1jZWxsIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIC8vIGhlYWRlciBib3JkZXIgaXMgcmVuZGVyZWQgYnkgaGVhZGVyIGNvbnRhaW5lclxuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgIC5uLXNvcnQtaWR4IHtcbiAgICAgICAgZm9udC1zaXplOiA5cHg7XG4gICAgICB9XG4gICAgfVxuICAgIC5jZWxsIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICBwYWRkaW5nOiAwICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgICAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxGb250U2l6ZX1weDtcblxuICAgICAgLnJlc3VsdC1saW5rIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAuY2VsbC5lbmQtY2VsbCxcbiAgICAuaGVhZGVyLWNlbGwuZW5kLWNlbGwge1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuY2VsbC5maXJzdC1jZWxsLFxuICAgIC5oZWFkZXItY2VsbC5maXJzdC1jZWxsIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuY2VsbC5ib3R0b20tY2VsbCB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbiAgICAuY2VsbC5hbGlnbi1yaWdodCB7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYDtcblxuY29uc3QgZGVmYXVsdENvbHVtbldpZHRoID0gMjAwO1xuXG5leHBvcnQgdHlwZSBTb3J0Q29sdW1uID0ge1xuICBjb2x1bW4/OiBzdHJpbmc7XG4gIG1vZGU/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBjb2x1bW5XaWR0aEZ1bmN0aW9uID1cbiAgKGNvbHVtbnMsIGNlbGxTaXplQ2FjaGUsIGdob3N0PykgPT5cbiAgKHtpbmRleH0pID0+IHtcbiAgICByZXR1cm4gKGNvbHVtbnNbaW5kZXhdIHx8IHt9KS5naG9zdFxuICAgICAgPyBnaG9zdFxuICAgICAgOiBjZWxsU2l6ZUNhY2hlW2NvbHVtbnNbaW5kZXhdXSB8fCBkZWZhdWx0Q29sdW1uV2lkdGg7XG4gIH07XG5cbmludGVyZmFjZSBHZXRSb3dDZWxsUHJvcHMge1xuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlIHwgbnVsbDtcbiAgY29sdW1uczogKHN0cmluZyAmIHtnaG9zdD86IGJvb2xlYW59KVtdO1xuICBjb2x1bW46IHN0cmluZztcbiAgY29sTWV0YTtcbiAgcm93SW5kZXg6IG51bWJlcjtcbiAgc29ydE9yZGVyPzogbnVtYmVyW10gfCBudWxsO1xufVxuXG4vKlxuICogVGhpcyBpcyBhbiBhY2Nlc3NvciBtZXRob2QgdXNlZCB0byBnZW5lcmFsaXplIGdldHRpbmcgYSBjZWxsIGZyb20gYSBkYXRhIHJvd1xuICovXG5jb25zdCBkZWZhdWx0R2V0Um93Q2VsbCA9IChcbiAge2RhdGFDb250YWluZXIsIGNvbHVtbnMsIGNvbHVtbiwgY29sTWV0YSwgcm93SW5kZXgsIHNvcnRPcmRlcn06IEdldFJvd0NlbGxQcm9wcyxcbiAgZm9ybWF0dGVyXG4pID0+IHtcbiAgY29uc3Qgcm93SWR4ID0gc29ydE9yZGVyICYmIHNvcnRPcmRlci5sZW5ndGggPyBnZXQoc29ydE9yZGVyLCByb3dJbmRleCkgOiByb3dJbmRleDtcbiAgY29uc3Qge3R5cGV9ID0gY29sTWV0YVtjb2x1bW5dO1xuXG4gIGNvbnN0IHZhbHVlID0gZGF0YUNvbnRhaW5lcj8udmFsdWVBdChyb3dJZHgsIGNvbHVtbnMuaW5kZXhPZihjb2x1bW4pKTtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnXG4gICAgPyAnJ1xuICAgIDogZm9ybWF0dGVyXG4gICAgPyBmb3JtYXR0ZXIodmFsdWUpXG4gICAgOiBwYXJzZUZpZWxkVmFsdWUodmFsdWUsIHR5cGUpO1xufTtcblxudHlwZSBTdGF0c0NvbnRyb2xQcm9wcyA9IHtcbiAgdG9wOiBudW1iZXI7XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBTdHlsZWRTdGF0c0NvbnRyb2wgPSBzdHlsZWQuZGl2PFN0YXRzQ29udHJvbFByb3BzPmBcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlclN0YXRzQ29udHJvbEhlaWdodH1weDtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICR7cHJvcHMgPT4gcHJvcHMudG9wfXB4O1xuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5TWVkaXVtfXB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmFjdGl2ZUNvbG9yfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsU3RhdHNDb250cm9sQmFja2dyb3VuZH07XG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gID4gZGl2IHtcbiAgICBwYWRkaW5nOiAwcHggMjRweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBzdmcge1xuICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBlYXNlO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoJHtwcm9wcyA9PiAocHJvcHMuc2hvd1N0YXRzID8gMTgwIDogMCl9ZGVnKTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0YXRzQ29udHJvbCA9ICh7XG4gIHRvcCxcbiAgc2hvd1N0YXRzLFxuICB0b2dnbGVTaG93U3RhdHNcbn06IHtcbiAgdG9wOiBudW1iZXI7XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG4gIHRvZ2dsZVNob3dTdGF0czogKCkgPT4gdm9pZDtcbn0pID0+IChcbiAgPFN0eWxlZFN0YXRzQ29udHJvbCB0b3A9e3RvcH0gc2hvd1N0YXRzPXtzaG93U3RhdHN9PlxuICAgIDxkaXYgb25DbGljaz17dG9nZ2xlU2hvd1N0YXRzfT5cbiAgICAgIHtzaG93U3RhdHMgPyAnSGlkZSBDb2x1bW4gU3RhdHMnIDogJ1Nob3cgQ29sdW1uIFN0YXRzJ31cbiAgICAgIDxBcnJvd0Rvd24gaGVpZ2h0PVwiMThweFwiIC8+XG4gICAgPC9kaXY+XG4gIDwvU3R5bGVkU3RhdHNDb250cm9sPlxuKTtcblxuaW50ZXJmYWNlIFRhYmxlU2VjdGlvblByb3BzIHtcbiAgY2xhc3NMaXN0Pzoge1xuICAgIGhlYWRlcjogc3RyaW5nO1xuICAgIHJvd3M6IHN0cmluZztcbiAgfTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xuICBjb2x1bW5zOiAoc3RyaW5nICYge2dob3N0PzogYm9vbGVhbn0pW107XG4gIGhlYWRlckdyaWRQcm9wcz87XG4gIGZpeGVkV2lkdGg/OiBudW1iZXIgfCBudWxsO1xuICBmaXhlZEhlaWdodD86IG51bWJlciB8IG51bGw7XG4gIG9uU2Nyb2xsPzogKHBhcmFtczogT25TY3JvbGxQYXJhbXMpID0+IHZvaWQ7XG4gIHNjcm9sbFRvcD86IG51bWJlcjtcbiAgZGF0YUdyaWRQcm9wczoge1xuICAgIHJvd0hlaWdodDogbnVtYmVyIHwgKChwYXJhbXM6IEluZGV4KSA9PiBudW1iZXIpO1xuICAgIHJvd0NvdW50OiBudW1iZXI7XG4gIH0gJiBQYXJ0aWFsPEdyaWRQcm9wcz47XG4gIGNvbHVtbldpZHRoPztcbiAgc2V0R3JpZFJlZj86IChyZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZDtcbiAgaGVhZGVyQ2VsbFJlbmRlcj87XG4gIGRhdGFDZWxsUmVuZGVyPztcbiAgc2Nyb2xsTGVmdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFRhYmxlU2VjdGlvbiA9ICh7XG4gIGNsYXNzTGlzdCxcbiAgaXNQaW5uZWQsXG4gIGNvbHVtbnMsXG4gIGhlYWRlckdyaWRQcm9wcyxcbiAgZml4ZWRXaWR0aCxcbiAgZml4ZWRIZWlnaHQgPSB1bmRlZmluZWQsXG4gIG9uU2Nyb2xsLFxuICBzY3JvbGxUb3AsXG4gIGRhdGFHcmlkUHJvcHMsXG4gIGNvbHVtbldpZHRoLFxuICBzZXRHcmlkUmVmID0gdW5kZWZpbmVkLFxuICBoZWFkZXJDZWxsUmVuZGVyLFxuICBkYXRhQ2VsbFJlbmRlcixcbiAgc2Nyb2xsTGVmdCA9IDBcbn06IFRhYmxlU2VjdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IGhlYWRlckhlaWdodCA9IGhlYWRlckdyaWRQcm9wcy5oZWlnaHQ7XG5cbiAgY29uc3QgaGVhZGVyU3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBoZWlnaHQ6IGAke2hlYWRlckhlaWdodH1weGBcbiAgICB9KSxcbiAgICBbaGVhZGVySGVpZ2h0XVxuICApO1xuICBjb25zdCBjb250ZW50U3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICB0b3A6IGAke2hlYWRlckhlaWdodH1weGBcbiAgICB9KSxcbiAgICBbaGVhZGVySGVpZ2h0XVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9TaXplcj5cbiAgICAgIHsoe3dpZHRoLCBoZWlnaHR9KSA9PiB7XG4gICAgICAgIGNvbnN0IGdyaWREaW1lbnNpb24gPSB7XG4gICAgICAgICAgY29sdW1uQ291bnQ6IGNvbHVtbnMubGVuZ3RoLFxuICAgICAgICAgIGNvbHVtbldpZHRoLFxuICAgICAgICAgIHdpZHRoOiBmaXhlZFdpZHRoIHx8IHdpZHRoXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhlYWRlckdyaWRXaWR0aCA9IGZpeGVkV2lkdGggfHwgd2lkdGg7XG4gICAgICAgIGNvbnN0IGRhdGFHcmlkSGVpZ2h0ID0gZml4ZWRIZWlnaHQgfHwgaGVpZ2h0O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdzY3JvbGwtaW4tdWktdGhyZWFkJywgY2xhc3NMaXN0Py5oZWFkZXIpfVxuICAgICAgICAgICAgICBzdHlsZT17aGVhZGVyU3R5bGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyPXtoZWFkZXJDZWxsUmVuZGVyfVxuICAgICAgICAgICAgICAgIHsuLi5oZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgey4uLmdyaWREaW1lbnNpb259XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtoZWFkZXJHcmlkUHJvcHMuaGVpZ2h0ICsgYnJvd3NlclNjcm9sbEJhcldpZHRofVxuICAgICAgICAgICAgICAgIHdpZHRoPXtoZWFkZXJHcmlkV2lkdGh9XG4gICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICBvblNjcm9sbD17YXJncyA9PiBvblNjcm9sbD8uKHsuLi5hcmdzLCBzY3JvbGxUb3A6c2Nyb2xsVG9wID8/IDAgfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdzY3JvbGwtaW4tdWktdGhyZWFkJywgY2xhc3NMaXN0Py5yb3dzKX1cbiAgICAgICAgICAgICAgc3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI9e2RhdGFDZWxsUmVuZGVyfVxuICAgICAgICAgICAgICAgIHsuLi5kYXRhR3JpZFByb3BzfVxuICAgICAgICAgICAgICAgIHsuLi5ncmlkRGltZW5zaW9ufVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17aXNQaW5uZWQgPyAncGlubmVkLWdyaWQnIDogJ2JvZHktZ3JpZCd9XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtkYXRhR3JpZEhlaWdodCAtIGhlYWRlckdyaWRQcm9wcy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgb25TY3JvbGw9e29uU2Nyb2xsfVxuICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ9e3Njcm9sbExlZnR9XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG9wPXtzY3JvbGxUb3B9XG4gICAgICAgICAgICAgICAgc2V0R3JpZFJlZj17c2V0R3JpZFJlZn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0F1dG9TaXplcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRhYmxlUHJvcHMge1xuICBkYXRhSWQ/OiBzdHJpbmc7XG4gIGhhc1N0YXRzPzogYm9vbGVhbjtcbiAgY2VsbFNpemVDYWNoZT86IENlbGxTaXplQ2FjaGU7XG4gIHBpbm5lZENvbHVtbnM/OiBzdHJpbmdbXTtcbiAgY29sdW1uczogKHN0cmluZyAmIHtnaG9zdD86IGJvb2xlYW59KVtdO1xuICBmaXhlZFdpZHRoPzogbnVtYmVyIHwgbnVsbDtcbiAgdGhlbWU/OiBhbnk7XG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UgfCBudWxsO1xuICBmaXhlZEhlaWdodD86IG51bWJlciB8IG51bGw7XG4gIGNvbE1ldGE6IENvbE1ldGE7XG4gIHNvcnRDb2x1bW46IFNvcnRDb2x1bW47XG4gIHNvcnRUYWJsZUNvbHVtbjogKGNvbHVtbjogc3RyaW5nLCBtb2RlPzogc3RyaW5nKSA9PiB2b2lkO1xuICBwaW5UYWJsZUNvbHVtbjogKGNvbHVtbjogc3RyaW5nKSA9PiB2b2lkO1xuICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0PzogKGZvcm1hdHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSA9PiB2b2lkO1xuICBjb3B5VGFibGVDb2x1bW46IChjb2x1bW46IHN0cmluZykgPT4gdm9pZDtcbiAgc29ydE9yZGVyPzogbnVtYmVyW10gfCBudWxsO1xuICBzaG93U3RhdHM/OiBib29sZWFuO1xuICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZT86IGJvb2xlYW47XG4gIGdldFJvd0NlbGw/OiAocmVuZGVyRGF0YUNlbGxQcm9wczogR2V0Um93Q2VsbFByb3BzLCBmb3JtYXR0ZXI6IGFueSkgPT4gc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRGF0YVRhYmxlU3RhdGUge1xuICBjZWxsU2l6ZUNhY2hlPzogQ2VsbFNpemVDYWNoZTtcbiAgbW9yZU9wdGlvbnNDb2x1bW4/O1xuICBnaG9zdD87XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG59XG5cbmNvbnN0IERVTU1ZX1NUWUxFID0ge307XG5cbkRhdGFUYWJsZUZhY3RvcnkuZGVwcyA9IFtIZWFkZXJDZWxsRmFjdG9yeV07XG5mdW5jdGlvbiBEYXRhVGFibGVGYWN0b3J5KFxuICBIZWFkZXJDZWxsOiBSZXR1cm5UeXBlPHR5cGVvZiBIZWFkZXJDZWxsRmFjdG9yeT5cbik6IFJlYWN0LkNvbXBvbmVudFR5cGU8RGF0YVRhYmxlUHJvcHM+IHtcbiAgY2xhc3MgRGF0YVRhYmxlIGV4dGVuZHMgQ29tcG9uZW50PERhdGFUYWJsZVByb3BzLCBEYXRhVGFibGVTdGF0ZT4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBkYXRhQ29udGFpbmVyOiBudWxsLFxuICAgICAgcGlubmVkQ29sdW1uczogW10sXG4gICAgICBjb2xNZXRhOiB7fSxcbiAgICAgIGNlbGxTaXplQ2FjaGU6IHt9LFxuICAgICAgc29ydENvbHVtbjoge30sXG4gICAgICBmaXhlZFdpZHRoOiBudWxsLFxuICAgICAgZml4ZWRIZWlnaHQ6IG51bGwsXG4gICAgICB0aGVtZToge30sXG4gICAgICBoYXNTdGF0czogZmFsc2UsXG4gICAgICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZTogdHJ1ZVxuICAgIH07XG5cbiAgICBwaW5uZWRHcmlkOiBIVE1MRGl2RWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIHVucGlubmVkR3JpZDogSFRNTERpdkVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBoYXNNb3VudGVkID0gZmFsc2U7XG5cbiAgICBzdGF0ZTogRGF0YVRhYmxlU3RhdGUgPSB7XG4gICAgICBjZWxsU2l6ZUNhY2hlOiB7fSxcbiAgICAgIG1vcmVPcHRpb25zQ29sdW1uOiBudWxsLFxuICAgICAgc2hvd1N0YXRzOiB0cnVlXG4gICAgfTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5oYXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnNjYWxlQ2VsbHNUb1dpZHRoKTtcbiAgICAgIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgoKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMucHJvcHMuY2VsbFNpemVDYWNoZSAhPT0gcHJldlByb3BzLmNlbGxTaXplQ2FjaGUgfHxcbiAgICAgICAgdGhpcy5wcm9wcy5waW5uZWRDb2x1bW5zICE9PSBwcmV2UHJvcHMucGlubmVkQ29sdW1uc1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMuaGFzTW91bnRlZCA9IGZhbHNlO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgpO1xuICAgIH1cblxuICAgIHJvb3QgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgY29sdW1ucyA9IChwcm9wczogRGF0YVRhYmxlUHJvcHMpID0+IHByb3BzLmNvbHVtbnM7XG4gICAgcGlubmVkQ29sdW1ucyA9IChwcm9wczogRGF0YVRhYmxlUHJvcHMpID0+IHByb3BzLnBpbm5lZENvbHVtbnM7XG4gICAgdW5waW5uZWRDb2x1bW5zID0gY3JlYXRlU2VsZWN0b3IodGhpcy5jb2x1bW5zLCB0aGlzLnBpbm5lZENvbHVtbnMsIChjb2x1bW5zLCBwaW5uZWRDb2x1bW5zKSA9PlxuICAgICAgIUFycmF5LmlzQXJyYXkocGlubmVkQ29sdW1ucykgPyBjb2x1bW5zIDogY29sdW1ucy5maWx0ZXIoYyA9PiAhcGlubmVkQ29sdW1ucy5pbmNsdWRlcyhjKSlcbiAgICApO1xuXG4gICAgdG9nZ2xlTW9yZU9wdGlvbnMgPSBtb3JlT3B0aW9uc0NvbHVtbiA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNNb3VudGVkKVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtbjpcbiAgICAgICAgICAgIHRoaXMuc3RhdGUubW9yZU9wdGlvbnNDb2x1bW4gPT09IG1vcmVPcHRpb25zQ29sdW1uID8gbnVsbCA6IG1vcmVPcHRpb25zQ29sdW1uXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgdG9nZ2xlU2hvd1N0YXRzID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzTW91bnRlZCkgdGhpcy5zZXRTdGF0ZSh7c2hvd1N0YXRzOiAhdGhpcy5zdGF0ZS5zaG93U3RhdHN9KTtcbiAgICB9O1xuICAgIGdldENlbGxTaXplQ2FjaGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCB7Y2VsbFNpemVDYWNoZTogcHJvcHNDYWNoZSA9IHt9LCBmaXhlZFdpZHRoLCBwaW5uZWRDb2x1bW5zID0gW119ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHVucGlubmVkQ29sdW1ucyA9IHRoaXMudW5waW5uZWRDb2x1bW5zKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB3aWR0aCA9IGZpeGVkV2lkdGggPyBmaXhlZFdpZHRoIDogdGhpcy5yb290LmN1cnJlbnQgPyB0aGlzLnJvb3QuY3VycmVudC5jbGllbnRXaWR0aCA6IDA7XG5cbiAgICAgIC8vIHBpbiBjb2x1bW4gYm9yZGVyIGlzIDIgcGl4ZWwgdnMgMSBwaXhlbFxuICAgICAgY29uc3QgYWRqdXN0V2lkdGggPSBwaW5uZWRDb2x1bW5zLmxlbmd0aCA/IHdpZHRoIC0gMSA6IHdpZHRoO1xuICAgICAgY29uc3Qge2NlbGxTaXplQ2FjaGUsIGdob3N0fSA9IGFkanVzdENlbGxzVG9Db250YWluZXIoXG4gICAgICAgIGFkanVzdFdpZHRoLFxuICAgICAgICBwcm9wc0NhY2hlLFxuICAgICAgICBwaW5uZWRDb2x1bW5zLFxuICAgICAgICB1bnBpbm5lZENvbHVtbnNcbiAgICAgICkgYXMge2NlbGxTaXplQ2FjaGU6IENlbGxTaXplQ2FjaGU7IGdob3N0OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgZ2hvc3RcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGRvU2NhbGVDZWxsc1RvV2lkdGggPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNNb3VudGVkKSB0aGlzLnNldFN0YXRlKHRoaXMuZ2V0Q2VsbFNpemVDYWNoZSgpKTtcbiAgICB9O1xuXG4gICAgc2NhbGVDZWxsc1RvV2lkdGggPSBkZWJvdW5jZSh0aGlzLmRvU2NhbGVDZWxsc1RvV2lkdGgsIDMwMCk7XG5cbiAgICByZW5kZXJEYXRhQ2VsbCA9IChjb2x1bW5zLCBpc1Bpbm5lZCwgcHJvcHM6IERhdGFUYWJsZVByb3BzKSA9PiB7XG4gICAgICBjb25zdCBnZXRSb3dDZWxsID0gdGhpcy5wcm9wcy5nZXRSb3dDZWxsID8/IGRlZmF1bHRHZXRSb3dDZWxsO1xuICAgICAgY29uc3QgRGF0YUNlbGxSZW5kZXJlciA9IGNlbGxJbmZvID0+IHtcbiAgICAgICAgY29uc3Qge2NvbHVtbkluZGV4LCBrZXksIHN0eWxlLCByb3dJbmRleH0gPSBjZWxsSW5mbztcbiAgICAgICAgY29uc3Qge2RhdGFDb250YWluZXIsIGNvbE1ldGF9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnNbY29sdW1uSW5kZXhdO1xuICAgICAgICBjb25zdCBpc0dob3N0ID0gY29sdW1uLmdob3N0O1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IGlzR2hvc3QgPyBudWxsIDogZ2V0Q29sdW1uRm9ybWF0dGVyKGNvbE1ldGFbY29sdW1uXSk7XG4gICAgICAgIGNvbnN0IHJvd0NlbGwgPSBpc0dob3N0ID8gJycgOiBnZXRSb3dDZWxsKHsuLi5wcm9wcywgY29sdW1uLCByb3dJbmRleH0sIGZvcm1hdHRlcik7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBpc0dob3N0ID8gbnVsbCA6IGNvbE1ldGFbY29sdW1uXS50eXBlO1xuXG4gICAgICAgIGNvbnN0IGxhc3RSb3dJbmRleCA9IGRhdGFDb250YWluZXIgPyBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSAtIDEgOiAwO1xuXG4gICAgICAgIGNvbnN0IGVuZENlbGwgPSBjb2x1bW5JbmRleCA9PT0gY29sdW1ucy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBmaXJzdENlbGwgPSBjb2x1bW5JbmRleCA9PT0gMDtcbiAgICAgICAgY29uc3QgYm90dG9tQ2VsbCA9IHJvd0luZGV4ID09PSBsYXN0Um93SW5kZXg7XG4gICAgICAgIGNvbnN0IGFsaWduUmlnaHQgPSBmaWVsZFRvQWxpZ25SaWdodFtOdW1iZXIodHlwZSldO1xuXG4gICAgICAgIGNvbnN0IGNlbGwgPSAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdjZWxsJywge1xuICAgICAgICAgICAgICBbcm93SW5kZXggJSAyID09PSAwID8gJ2V2ZW4tcm93JyA6ICdvZGQtcm93J106IHRydWUsXG4gICAgICAgICAgICAgIFtgcm93LSR7cm93SW5kZXh9YF06IHRydWUsXG4gICAgICAgICAgICAgICdwaW5uZWQtY2VsbCc6IGlzUGlubmVkLFxuICAgICAgICAgICAgICAnZmlyc3QtY2VsbCc6IGZpcnN0Q2VsbCxcbiAgICAgICAgICAgICAgJ2VuZC1jZWxsJzogZW5kQ2VsbCxcbiAgICAgICAgICAgICAgJ2JvdHRvbS1jZWxsJzogYm90dG9tQ2VsbCxcbiAgICAgICAgICAgICAgJ2FsaWduLXJpZ2h0JzogYWxpZ25SaWdodFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIHRpdGxlPXtpc0dob3N0ID8gdW5kZWZpbmVkIDogcm93Q2VsbH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YCR7cm93Q2VsbH0ke2VuZENlbGwgPyAnXFxuJyA6ICdcXHQnfWB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGNlbGw7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIERhdGFDZWxsUmVuZGVyZXI7XG4gICAgfTtcblxuICAgIHJlbmRlckhlYWRlckNlbGwoY29sdW1ucywgaXNQaW5uZWQsIHByb3BzLCB0b2dnbGVNb3JlT3B0aW9ucywgbW9yZU9wdGlvbnNDb2x1bW4pIHtcbiAgICAgIGNvbnN0IEhlYWRlckNlbGxSZW5kZXJlciA9IGNlbGxJbmZvID0+IChcbiAgICAgICAgPEhlYWRlckNlbGxcbiAgICAgICAgICBjZWxsSW5mbz17Y2VsbEluZm99XG4gICAgICAgICAga2V5PXtjZWxsSW5mby5jb2x1bW5JbmRleH1cbiAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgIGlzUGlubmVkPXtpc1Bpbm5lZH1cbiAgICAgICAgICBzaG93U3RhdHM9e3RoaXMuc3RhdGUuc2hvd1N0YXRzfVxuICAgICAgICAgIHByb3BzPXtwcm9wc31cbiAgICAgICAgICB0b2dnbGVNb3JlT3B0aW9ucz17dG9nZ2xlTW9yZU9wdGlvbnN9XG4gICAgICAgICAgbW9yZU9wdGlvbnNDb2x1bW49e21vcmVPcHRpb25zQ29sdW1ufVxuICAgICAgICAgIC8vIHBhc3MgZHVtbXkgc3R5bGUgdG8gcHJldmVudCB3YXJuaW5ncyBmcm9tIHJlYWN0LXZpcnR1YWxpemVkIEdyaWRcbiAgICAgICAgICBzdHlsZT17RFVNTVlfU1RZTEV9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgICAgcmV0dXJuIEhlYWRlckNlbGxSZW5kZXJlcjtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICBwaW5uZWRDb2x1bW5zID0gW10sXG4gICAgICAgIHRoZW1lID0ge30sXG4gICAgICAgIGZpeGVkV2lkdGgsXG4gICAgICAgIGZpeGVkSGVpZ2h0ID0gMCxcbiAgICAgICAgaGFzU3RhdHMsXG4gICAgICAgIGhhc0N1c3RvbVNjcm9sbEJhclN0eWxlXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHVucGlubmVkQ29sdW1ucyA9IHRoaXMudW5waW5uZWRDb2x1bW5zKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB7Y2VsbFNpemVDYWNoZSA9IHt9LCBtb3JlT3B0aW9uc0NvbHVtbiwgZ2hvc3QsIHNob3dTdGF0c30gPSB0aGlzLnN0YXRlO1xuICAgICAgY29uc3QgdW5waW5uZWRDb2x1bW5zR2hvc3QgPSBnaG9zdFxuICAgICAgICA/IFsuLi51bnBpbm5lZENvbHVtbnMsIHtnaG9zdDogdHJ1ZX0gYXMgc3RyaW5nICYge2dob3N0OiBib29sZWFufV1cbiAgICAgICAgOiB1bnBpbm5lZENvbHVtbnM7XG4gICAgICBjb25zdCBwaW5uZWRDb2x1bW5zV2lkdGggPSBwaW5uZWRDb2x1bW5zLnJlZHVjZShcbiAgICAgICAgKGFjYywgdmFsKSA9PiBhY2MgKyAoZ2V0KGNlbGxTaXplQ2FjaGUsIHZhbCwgMCkgYXMgbnVtYmVyKSxcbiAgICAgICAgMFxuICAgICAgKTtcblxuICAgICAgY29uc3QgaGFzUGlubmVkQ29sdW1ucyA9IEJvb2xlYW4ocGlubmVkQ29sdW1ucy5sZW5ndGgpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBoZWFkZXJSb3dIZWlnaHQgPSBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0LFxuICAgICAgICBoZWFkZXJTdGF0c0NvbnRyb2xIZWlnaHQgPSBkZWZhdWx0SGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0LFxuICAgICAgICBoZWFkZXJSb3dXU3RhdHNIZWlnaHQgPSBkZWZhdWx0SGVhZGVyUm93SGVpZ2h0LFxuICAgICAgICByb3dIZWlnaHQgPSBkZWZhdWx0Um93SGVpZ2h0XG4gICAgICB9ID0gdGhlbWU7XG5cbiAgICAgIGNvbnN0IGhlYWRlckdyaWRQcm9wcyA9IHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgY2xhc3NOYW1lOiAnaGVhZGVyLWdyaWQnLFxuICAgICAgICBoZWlnaHQ6ICFoYXNTdGF0c1xuICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0XG4gICAgICAgICAgOiBzaG93U3RhdHNcbiAgICAgICAgICA/IGhlYWRlclJvd1dTdGF0c0hlaWdodFxuICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0ICsgaGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0LFxuICAgICAgICByb3dDb3VudDogMSxcbiAgICAgICAgcm93SGVpZ2h0OiAhaGFzU3RhdHNcbiAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodFxuICAgICAgICAgIDogc2hvd1N0YXRzXG4gICAgICAgICAgPyBoZWFkZXJSb3dXU3RhdHNIZWlnaHRcbiAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCArIGhlYWRlclN0YXRzQ29udHJvbEhlaWdodFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZGF0YUdyaWRQcm9wcyA9IHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgb3ZlcnNjYW5Db2x1bW5Db3VudCxcbiAgICAgICAgb3ZlcnNjYW5Sb3dDb3VudCxcbiAgICAgICAgcm93Q291bnQ6IGRhdGFDb250YWluZXIgPyBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA6IDAsXG4gICAgICAgIHJvd0hlaWdodFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbnRhaW5lclxuICAgICAgICAgIGNsYXNzTmFtZT1cImRhdGEtdGFibGUtY29udGFpbmVyXCJcbiAgICAgICAgICByZWY9e3RoaXMucm9vdH1cbiAgICAgICAgICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZT17aGFzQ3VzdG9tU2Nyb2xsQmFyU3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoY2VsbFNpemVDYWNoZSkubGVuZ3RoID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPFNjcm9sbFN5bmM+XG4gICAgICAgICAgICAgICAgeyh7b25TY3JvbGwsIHNjcm9sbExlZnQsIHNjcm9sbFRvcH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVzdWx0cy10YWJsZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2hhc1Bpbm5lZENvbHVtbnMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9XCJwaW5uZWQtY29sdW1uc1wiIGNsYXNzTmFtZT1cInBpbm5lZC1jb2x1bW5zIGdyaWQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0xpc3Q9e3Bpbm5lZENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Bpbm5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3Bpbm5lZENvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyR3JpZFByb3BzPXtoZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRXaWR0aD17cGlubmVkQ29sdW1uc1dpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2Nyb2xsPXthcmdzID0+IG9uU2Nyb2xsKHsuLi5hcmdzLCBzY3JvbGxMZWZ0fSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wPXtzY3JvbGxUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhR3JpZFByb3BzPXtkYXRhR3JpZFByb3BzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEdyaWRSZWY9e3Bpbm5lZEdyaWQgPT4gKHRoaXMucGlubmVkR3JpZCA9IHBpbm5lZEdyaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoPXtjb2x1bW5XaWR0aEZ1bmN0aW9uKHBpbm5lZENvbHVtbnMsIGNlbGxTaXplQ2FjaGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGxSZW5kZXI9e3RoaXMucmVuZGVySGVhZGVyQ2VsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZENvbHVtbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTW9yZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUNlbGxSZW5kZXI9e3RoaXMucmVuZGVyRGF0YUNlbGwocGlubmVkQ29sdW1ucywgdHJ1ZSwgdGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cInVucGlubmVkLWNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogYCR7aGFzUGlubmVkQ29sdW1ucyA/IGAke3Bpbm5lZENvbHVtbnNXaWR0aH1weGAgOiAnMCd9YFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInVucGlubmVkLWNvbHVtbnMgZ3JpZC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NMaXN0PXt1bnBpbm5lZENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQaW5uZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXt1bnBpbm5lZENvbHVtbnNHaG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyR3JpZFByb3BzPXtoZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkV2lkdGg9e2ZpeGVkV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkSGVpZ2h0PXtmaXhlZEhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25TY3JvbGw9e29uU2Nyb2xsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A9e3Njcm9sbFRvcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWRQcm9wcz17ZGF0YUdyaWRQcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0R3JpZFJlZj17dW5waW5uZWRHcmlkID0+ICh0aGlzLnVucGlubmVkR3JpZCA9IHVucGlubmVkR3JpZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoPXtjb2x1bW5XaWR0aEZ1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGlubmVkQ29sdW1uc0dob3N0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxTaXplQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2hvc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbFJlbmRlcj17dGhpcy5yZW5kZXJIZWFkZXJDZWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGlubmVkQ29sdW1uc0dob3N0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVNb3JlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhQ2VsbFJlbmRlcj17dGhpcy5yZW5kZXJEYXRhQ2VsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBpbm5lZENvbHVtbnNHaG9zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9TY3JvbGxTeW5jPlxuICAgICAgICAgICAgICB7aGFzU3RhdHMgPyAoXG4gICAgICAgICAgICAgICAgPFN0YXRzQ29udHJvbFxuICAgICAgICAgICAgICAgICAgdG9wPXtoZWFkZXJSb3dIZWlnaHR9XG4gICAgICAgICAgICAgICAgICBzaG93U3RhdHM9e3Nob3dTdGF0c31cbiAgICAgICAgICAgICAgICAgIHRvZ2dsZVNob3dTdGF0cz17dGhpcy50b2dnbGVTaG93U3RhdHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9Db250YWluZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3aXRoVGhlbWUoRGF0YVRhYmxlIGFzIFJlYWN0LkNvbXBvbmVudFR5cGU8RGF0YVRhYmxlUHJvcHM+KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0YVRhYmxlRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUgsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLElBQUEsR0FBQUYsc0JBQUEs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
@@ -26,7 +26,7 @@ var _mapControlPanel = _interopRequireDefault(require("./map-control-panel"));
26
26
  var _mapControlTooltip = _interopRequireDefault(require("./map-control-tooltip"));
27
27
  var _mapLegend = _interopRequireDefault(require("./map-legend"));
28
28
  var _modifiers = require("@dnd-kit/modifiers");
29
- var _templateObject, _templateObject2, _templateObject3; // SPDX-License-Identifier: MIT
29
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT
30
30
  // Copyright contributors to the kepler.gl project
31
31
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
32
32
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -43,6 +43,9 @@ var StyledMoveHandle = _styledComponents["default"].div(_templateObject2 || (_te
43
43
  return props.theme.activeColor;
44
44
  });
45
45
  var StyledResizeHandle = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n position: absolute;\n display: flex;\n flex-direction: column;\n align-items: center;\n color: #f7f8fa;\n z-index: 2;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 48px;\n height: 16px;\n border-radius: 4px;\n cursor: ns-resize;\n"])));
46
+ var StyledFixedLegendContent = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n .map-control__panel-content {\n max-height: calc(100vh - 100px);\n ", ";\n }\n\n /* Hide scrollbars in export to avoid OS default styling differences */\n .styled-color-legend {\n -ms-overflow-style: none; /* IE and old Edge */\n scrollbar-width: none; /* Firefox */\n }\n .styled-color-legend::-webkit-scrollbar {\n width: 0 !important; /* Chrome, Safari, new Edge */\n height: 0 !important;\n }\n"])), function (props) {
47
+ return props.contentHeight ? "height: ".concat(props.contentHeight, "px;") : '';
48
+ });
46
49
  var DraggableLegendContent = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
47
50
  var positionStyles = props.positionStyles,
48
51
  children = props.children;
@@ -145,7 +148,8 @@ var ImageExportLegend = (0, _styledComponents.withTheme)(function (_ref2) {
145
148
  // do nothing by default
146
149
  }
147
150
  }),
148
- positionStyles = _useLegendPosition2.positionStyles;
151
+ positionStyles = _useLegendPosition2.positionStyles,
152
+ contentHeight = _useLegendPosition2.contentHeight;
149
153
  var portalRoot = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 || (_containerRef$current = _containerRef$current.closest('.export-map-instance')) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.querySelector('#default-deckgl-overlay-wrapper');
150
154
  return /*#__PURE__*/_react["default"].createElement("div", {
151
155
  ref: containerRef
@@ -155,7 +159,9 @@ var ImageExportLegend = (0, _styledComponents.withTheme)(function (_ref2) {
155
159
  style: _objectSpread(_objectSpread({}, positionStyles), {}, {
156
160
  position: 'absolute'
157
161
  })
158
- }, children), portalRoot) : null);
162
+ }, /*#__PURE__*/_react["default"].createElement(StyledFixedLegendContent, {
163
+ contentHeight: contentHeight
164
+ }, children)), portalRoot) : null);
159
165
  });
160
166
  MapLegendPanelFactory.deps = [_mapControlTooltip["default"], _mapControlPanel["default"], _mapLegend["default"]];
161
167
  var defaultActionIcons = {
@@ -255,4 +261,4 @@ function MapLegendPanelFactory(MapControlTooltip, MapControlPanel, MapLegend) {
255
261
  };
256
262
  }
257
263
  var _default = exports["default"] = MapLegendPanelFactory;
258
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0RG9tIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb3JlIiwiX3V0aWxpdGllcyIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX3V0aWxzIiwiX2ljb25zIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX2NvbnRleHQiLCJfdXNlTGVnZW5kUG9zaXRpb24zIiwiX21hcENvbnRyb2xQYW5lbCIsIl9tYXBDb250cm9sVG9vbHRpcCIsIl9tYXBMZWdlbmQiLCJfbW9kaWZpZXJzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJEUkFHX1JFU0laRV9JRCIsIkRSQUdfTU9WRV9JRCIsIlN0eWxlZERyYWdnYWJsZUxlZ2VuZENvbnRlbnQiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJhY3RpdmVDb2xvciIsImNvbnRlbnRIZWlnaHQiLCJjb25jYXQiLCJTdHlsZWRNb3ZlSGFuZGxlIiwiU3R5bGVkUmVzaXplSGFuZGxlIiwiRHJhZ2dhYmxlTGVnZW5kQ29udGVudCIsImZvcndhcmRSZWYiLCJyZWYiLCJwb3NpdGlvblN0eWxlcyIsImNoaWxkcmVuIiwiZHJhZ2dhYmxlTW92ZSIsInVzZURyYWdnYWJsZSIsImlkIiwiZHJhZ2dhYmxlUmVzaXplIiwicmVmcyIsInVzZU1lcmdlUmVmcyIsInNldE5vZGVSZWYiLCJpc0RyYWdnaW5nIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsImNsYXNzTmFtZSIsImNsYXNzbmFtZXMiLCJzdHlsZSIsInRyYW5zZm9ybSIsIkNTUyIsIlRyYW5zbGF0ZSIsInRvU3RyaW5nIiwiYXR0cmlidXRlcyIsImxpc3RlbmVycyIsIkRyYWdnYWJsZURvdHMiLCJoZWlnaHQiLCJIb3Jpem9udGFsUmVzaXplSGFuZGxlIiwiRHJhZ2dhYmxlTGVnZW5kIiwid2l0aFRoZW1lIiwiX3JlZiIsIl9tYXBDb250cm9scyRtYXBMZWdlbiIsImlzU2lkZVBhbmVsU2hvd24iLCJtYXBDb250cm9scyIsInNldE1hcENvbnRyb2xTZXR0aW5ncyIsInNldHRpbmdzIiwibWFwTGVnZW5kIiwibGVnZW5kQ29udGVudFJlZiIsInVzZVJlZiIsIm9uQ2hhbmdlU2V0dGluZ3MiLCJ1c2VDYWxsYmFjayIsIm5ld1NldHRpbmdzIiwiX3VzZUxlZ2VuZFBvc2l0aW9uIiwidXNlTGVnZW5kUG9zaXRpb24iLCJ1cGRhdGVQb3NpdGlvbiIsInN0YXJ0UmVzaXplIiwicmVzaXplIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiZXZlbnQiLCJhY3RpdmUiLCJoYW5kbGVEcmFnRW5kIiwiaGFuZGxlRHJhZ01vdmUiLCJkZWx0YSIsInkiLCJEbmRDb250ZXh0Iiwib25EcmFnU3RhcnQiLCJvbkRyYWdNb3ZlIiwib25EcmFnRW5kIiwibW9kaWZpZXJzIiwicmVzdHJpY3RUb1dpbmRvd0VkZ2VzIiwiSW1hZ2VFeHBvcnRMZWdlbmQiLCJfcmVmMiIsIl9jb250YWluZXJSZWYkY3VycmVudCIsImNvbnRhaW5lclJlZiIsIl91c2VMZWdlbmRQb3NpdGlvbjIiLCJwb3J0YWxSb290IiwiY3VycmVudCIsImNsb3Nlc3QiLCJxdWVyeVNlbGVjdG9yIiwiY3JlYXRlUG9ydGFsIiwicG9zaXRpb24iLCJNYXBMZWdlbmRQYW5lbEZhY3RvcnkiLCJkZXBzIiwiTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5IiwiTWFwQ29udHJvbFBhbmVsRmFjdG9yeSIsIk1hcExlZ2VuZEZhY3RvcnkiLCJkZWZhdWx0QWN0aW9uSWNvbnMiLCJsZWdlbmQiLCJMZWdlbmQiLCJNYXBMZWdlbmRQYW5lbENvbXBvbmVudCIsIl9yZWYzIiwiX21hcENvbnRyb2xzJG1hcExlZ2VuMiIsIl9yb290Q29udGV4dCRjdXJyZW50IiwibGF5ZXJzIiwic2NhbGUiLCJvblRvZ2dsZU1hcENvbnRyb2wiLCJpc0V4cG9ydCIsImxvZ29Db21wb25lbnQiLCJfcmVmMyRhY3Rpb25JY29ucyIsImFjdGlvbkljb25zIiwibWFwU3RhdGUiLCJvbkxheWVyVmlzQ29uZmlnQ2hhbmdlIiwib25Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0Iiwib25DbGlja0NvbnRyb2xCdG4iLCJhY3RpdmVTaWRlUGFuZWwiLCJfcmVmMyRpc1ZpZXdwb3J0VW5zeW4iLCJpc1ZpZXdwb3J0VW5zeW5jQWxsb3dlZCIsIk1hcENvbnRyb2xUb29sdGlwIiwiTWFwQ29udHJvbFBhbmVsIiwiTWFwTGVnZW5kIiwiQm9vbGVhbiIsIl9yZWY0IiwiZGlzYWJsZUVkaXQiLCJyb290Q29udGV4dCIsInVzZUNvbnRleHQiLCJSb290Q29udGV4dCIsIm9uQ2xpY2siLCJfbWFwQ29udHJvbHMkbWFwRHJhdyIsIm1hcERyYXciLCJvbkNsb3NlQ2xpY2siLCJwcmV2ZW50RGVmYXVsdCIsInNob3ciLCJsZWdlbmRQYW5lbCIsImhlYWRlciIsInBpbm5hYmxlIiwiZGlzYWJsZUNsb3NlIiwiRnJhZ21lbnQiLCJoYXNQb3J0YWJsZVdpZHRoIiwiYnJlYWtQb2ludFZhbHVlcyIsImRvY3VtZW50IiwiYm9keSIsIm1lc3NhZ2UiLCJNYXBDb250cm9sQnV0dG9uIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC9tYXAtbGVnZW5kLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7Y3JlYXRlUG9ydGFsfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFJlYWN0LCB7XG4gIENvbXBvbmVudFR5cGUsXG4gIEZDLFxuICBmb3J3YXJkUmVmLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlQ29udGV4dCxcbiAgdXNlUmVmLFxuICBQcm9wc1dpdGhDaGlsZHJlblxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7d2l0aFRoZW1lfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7RG5kQ29udGV4dCwgdXNlRHJhZ2dhYmxlfSBmcm9tICdAZG5kLWtpdC9jb3JlJztcbmltcG9ydCB7Q1NTfSBmcm9tICdAZG5kLWtpdC91dGlsaXRpZXMnO1xuaW1wb3J0IHt1c2VNZXJnZVJlZnN9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5cbmltcG9ydCB7QWN0aW9uSGFuZGxlciwgc2V0TWFwQ29udHJvbFNldHRpbmdzLCB0b2dnbGVTcGxpdE1hcFZpZXdwb3J0fSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHticmVha1BvaW50VmFsdWVzfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge0xheWVyVmlzQ29uZmlnLCBNYXBDb250cm9sTWFwTGVnZW5kLCBNYXBDb250cm9scywgTWFwU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtoYXNQb3J0YWJsZVdpZHRofSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7TWFwTGVnZW5kQ29udHJvbFNldHRpbmdzfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtMZWdlbmQsIERyYWdnYWJsZURvdHMsIEhvcml6b250YWxSZXNpemVIYW5kbGV9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge01hcENvbnRyb2xCdXR0b259IGZyb20gJy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge1Jvb3RDb250ZXh0fSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB1c2VMZWdlbmRQb3NpdGlvbiBmcm9tICcuLi9ob29rcy91c2UtbGVnZW5kLXBvc2l0aW9uJztcbmltcG9ydCBNYXBDb250cm9sUGFuZWxGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRyb2wtcGFuZWwnO1xuaW1wb3J0IE1hcENvbnRyb2xUb29sdGlwRmFjdG9yeSBmcm9tICcuL21hcC1jb250cm9sLXRvb2x0aXAnO1xuaW1wb3J0IE1hcExlZ2VuZEZhY3RvcnkgZnJvbSAnLi9tYXAtbGVnZW5kJztcbmltcG9ydCB7cmVzdHJpY3RUb1dpbmRvd0VkZ2VzfSBmcm9tICdAZG5kLWtpdC9tb2RpZmllcnMnO1xuXG5jb25zdCBEUkFHX1JFU0laRV9JRCA9ICdtYXAtbGVnZW5kLXJlc2l6ZSc7XG5jb25zdCBEUkFHX01PVkVfSUQgPSAnbWFwLWxlZ2VuZC1tb3ZlJztcblxuY29uc3QgU3R5bGVkRHJhZ2dhYmxlTGVnZW5kQ29udGVudCA9IHN0eWxlZC5kaXY8e2NvbnRlbnRIZWlnaHQ/OiBudW1iZXJ9PmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycyBlYXNlLWluLW91dDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIC5sZWdlbmQtaW5wdXQtYmxvY2sge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgJi5pcy1kcmFnZ2luZyAubGVnZW5kLWlucHV0LWJsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG4gICY6aG92ZXIsXG4gICYuaXMtZHJhZ2dpbmcge1xuICAgIC5sZWdlbmQtbW92ZS1oYW5kbGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIH1cbiAgICAubGVnZW5kLXJlc2l6ZS1oYW5kbGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIH1cbiAgICBib3JkZXItY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYWN0aXZlQ29sb3J9O1xuICB9XG4gIC5tYXAtY29udHJvbF9fcGFuZWwtY29udGVudCB7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDEwMHB4KTtcbiAgICAke3Byb3BzID0+IChwcm9wcy5jb250ZW50SGVpZ2h0ID8gYGhlaWdodDogJHtwcm9wcy5jb250ZW50SGVpZ2h0fXB4O2AgOiAnJyl9O1xuICB9XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgei1pbmRleDogMjtcbiAgLm1hcC1jb250cm9sLXBhbmVsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZE1vdmVIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW4tb3V0O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAwO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB3aWR0aDogNDhweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGN1cnNvcjogbW92ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5hY3RpdmVDb2xvcn07XG5gO1xuXG5jb25zdCBTdHlsZWRSZXNpemVIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW4tb3V0O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAjZjdmOGZhO1xuICB6LWluZGV4OiAyO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIHdpZHRoOiA0OHB4O1xuICBoZWlnaHQ6IDE2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY3Vyc29yOiBucy1yZXNpemU7XG5gO1xuXG5leHBvcnQgdHlwZSBNYXBMZWdlbmRQYW5lbEZhY3RvcnlEZXBzID0gW1xuICB0eXBlb2YgTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5LFxuICB0eXBlb2YgTWFwQ29udHJvbFBhbmVsRmFjdG9yeSxcbiAgdHlwZW9mIE1hcExlZ2VuZEZhY3Rvcnlcbl07XG5cbnR5cGUgRHJhZ2dhYmxlTGVnZW5kQ29udGVudFByb3BzID0ge1xuICBjb250ZW50SGVpZ2h0PzogbnVtYmVyO1xuICBwb3NpdGlvblN0eWxlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBEcmFnZ2FibGVMZWdlbmRDb250ZW50ID0gZm9yd2FyZFJlZigocHJvcHM6IERyYWdnYWJsZUxlZ2VuZENvbnRlbnRQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtwb3NpdGlvblN0eWxlcywgY2hpbGRyZW59ID0gcHJvcHM7XG4gIGNvbnN0IGRyYWdnYWJsZU1vdmUgPSB1c2VEcmFnZ2FibGUoe2lkOiBEUkFHX01PVkVfSUR9KTtcbiAgY29uc3QgZHJhZ2dhYmxlUmVzaXplID0gdXNlRHJhZ2dhYmxlKHtpZDogRFJBR19SRVNJWkVfSUR9KTtcbiAgY29uc3QgcmVmcyA9IHVzZU1lcmdlUmVmcyhbZHJhZ2dhYmxlTW92ZS5zZXROb2RlUmVmLCByZWZdKTtcbiAgY29uc3QgaXNEcmFnZ2luZyA9IGRyYWdnYWJsZU1vdmUuaXNEcmFnZ2luZyB8fCBkcmFnZ2FibGVSZXNpemUuaXNEcmFnZ2luZztcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRHJhZ2dhYmxlTGVnZW5kQ29udGVudFxuICAgICAgcmVmPXtyZWZzfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdkcmFnZ2FibGUtbGVnZW5kJywgeydpcy1kcmFnZ2luZyc6IGlzRHJhZ2dpbmd9KX1cbiAgICAgIHN0eWxlPXt7Li4ucG9zaXRpb25TdHlsZXMsIHRyYW5zZm9ybTogQ1NTLlRyYW5zbGF0ZS50b1N0cmluZyhkcmFnZ2FibGVNb3ZlLnRyYW5zZm9ybSl9fVxuICAgICAgY29udGVudEhlaWdodD17cHJvcHMuY29udGVudEhlaWdodH1cbiAgICAgIHsuLi5kcmFnZ2FibGVNb3ZlLmF0dHJpYnV0ZXN9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgICAge2lzRHJhZ2dpbmcgPyA8ZGl2IGNsYXNzTmFtZT1cImxlZ2VuZC1pbnB1dC1ibG9ja1wiIC8+IDogbnVsbH1cbiAgICAgIDxTdHlsZWRNb3ZlSGFuZGxlIGNsYXNzTmFtZT1cImxlZ2VuZC1tb3ZlLWhhbmRsZVwiIHsuLi5kcmFnZ2FibGVNb3ZlLmxpc3RlbmVyc30+XG4gICAgICAgIDxEcmFnZ2FibGVEb3RzIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgPC9TdHlsZWRNb3ZlSGFuZGxlPlxuICAgICAgPFN0eWxlZFJlc2l6ZUhhbmRsZVxuICAgICAgICBjbGFzc05hbWU9XCJsZWdlbmQtcmVzaXplLWhhbmRsZVwiXG4gICAgICAgIHJlZj17ZHJhZ2dhYmxlUmVzaXplLnNldE5vZGVSZWZ9XG4gICAgICAgIHsuLi5kcmFnZ2FibGVSZXNpemUubGlzdGVuZXJzfVxuICAgICAgPlxuICAgICAgICA8SG9yaXpvbnRhbFJlc2l6ZUhhbmRsZSBoZWlnaHQ9XCIxNnB4XCIgLz5cbiAgICAgIDwvU3R5bGVkUmVzaXplSGFuZGxlPlxuICAgIDwvU3R5bGVkRHJhZ2dhYmxlTGVnZW5kQ29udGVudD5cbiAgKTtcbn0pO1xuXG50eXBlIERyYWdnYWJsZUxlZ2VuZFByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBpc1NpZGVQYW5lbFNob3duOiBib29sZWFuO1xuICBtYXBDb250cm9sczogTWFwQ29udHJvbHM7XG4gIHNldE1hcENvbnRyb2xTZXR0aW5nczogdHlwZW9mIHNldE1hcENvbnRyb2xTZXR0aW5ncztcbn0+O1xuXG5jb25zdCBEcmFnZ2FibGVMZWdlbmQgPSB3aXRoVGhlbWUoXG4gICh7XG4gICAgaXNTaWRlUGFuZWxTaG93bixcbiAgICBjaGlsZHJlbixcbiAgICBtYXBDb250cm9scyxcbiAgICBzZXRNYXBDb250cm9sU2V0dGluZ3MsXG4gICAgdGhlbWVcbiAgfTogRHJhZ2dhYmxlTGVnZW5kUHJvcHMgJiB7dGhlbWU6IGFueX0pID0+IHtcbiAgICBjb25zdCBzZXR0aW5ncyA9IG1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LnNldHRpbmdzO1xuXG4gICAgY29uc3QgbGVnZW5kQ29udGVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4obnVsbCk7XG4gICAgY29uc3Qgb25DaGFuZ2VTZXR0aW5ncyA9IHVzZUNhbGxiYWNrKFxuICAgICAgbmV3U2V0dGluZ3MgPT4gc2V0TWFwQ29udHJvbFNldHRpbmdzKCdtYXBMZWdlbmQnLCBuZXdTZXR0aW5ncyksXG4gICAgICBbc2V0TWFwQ29udHJvbFNldHRpbmdzXVxuICAgICk7XG4gICAgY29uc3Qge3Bvc2l0aW9uU3R5bGVzLCB1cGRhdGVQb3NpdGlvbiwgc3RhcnRSZXNpemUsIHJlc2l6ZSwgY29udGVudEhlaWdodH0gPSB1c2VMZWdlbmRQb3NpdGlvbih7XG4gICAgICBsZWdlbmRDb250ZW50UmVmLFxuICAgICAgaXNTaWRlUGFuZWxTaG93bixcbiAgICAgIHRoZW1lLFxuICAgICAgc2V0dGluZ3MsXG4gICAgICBvbkNoYW5nZVNldHRpbmdzXG4gICAgfSk7XG5cbiAgICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAgIGV2ZW50ID0+IHtcbiAgICAgICAgc3dpdGNoIChldmVudC5hY3RpdmUuaWQpIHtcbiAgICAgICAgICBjYXNlIERSQUdfUkVTSVpFX0lEOlxuICAgICAgICAgICAgc3RhcnRSZXNpemUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB1cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW3VwZGF0ZVBvc2l0aW9uLCBzdGFydFJlc2l6ZV1cbiAgICApO1xuICAgIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayh1cGRhdGVQb3NpdGlvbiwgW3VwZGF0ZVBvc2l0aW9uXSk7XG4gICAgY29uc3QgaGFuZGxlRHJhZ01vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAgIGV2ZW50ID0+IHtcbiAgICAgICAgc3dpdGNoIChldmVudC5hY3RpdmUuaWQpIHtcbiAgICAgICAgICBjYXNlIERSQUdfUkVTSVpFX0lEOlxuICAgICAgICAgICAgcmVzaXplKGV2ZW50LmRlbHRhLnkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbcmVzaXplXVxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERuZENvbnRleHRcbiAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgb25EcmFnTW92ZT17aGFuZGxlRHJhZ01vdmV9XG4gICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgbW9kaWZpZXJzPXtbcmVzdHJpY3RUb1dpbmRvd0VkZ2VzXX1cbiAgICAgID5cbiAgICAgICAgPERyYWdnYWJsZUxlZ2VuZENvbnRlbnRcbiAgICAgICAgICByZWY9e2xlZ2VuZENvbnRlbnRSZWZ9XG4gICAgICAgICAgcG9zaXRpb25TdHlsZXM9e3Bvc2l0aW9uU3R5bGVzfVxuICAgICAgICAgIGNvbnRlbnRIZWlnaHQ9e2NvbnRlbnRIZWlnaHR9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvRHJhZ2dhYmxlTGVnZW5kQ29udGVudD5cbiAgICAgIDwvRG5kQ29udGV4dD5cbiAgICApO1xuICB9XG4pIGFzIEZDPERyYWdnYWJsZUxlZ2VuZFByb3BzPjtcblxudHlwZSBJbWFnZUV4cG9ydExlZ2VuZFByb3BzID0ge1xuICBzZXR0aW5ncz86IE1hcExlZ2VuZENvbnRyb2xTZXR0aW5ncztcbiAgaXNTaWRlUGFuZWxTaG93bjogYm9vbGVhbjtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IEltYWdlRXhwb3J0TGVnZW5kID0gd2l0aFRoZW1lKCh7c2V0dGluZ3MsIGlzU2lkZVBhbmVsU2hvd24sIHRoZW1lLCBjaGlsZHJlbn0pID0+IHtcbiAgY29uc3QgY29udGFpbmVyUmVmOiBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD4gPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGxlZ2VuZENvbnRlbnRSZWY6IFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPiA9IHVzZVJlZihudWxsKTtcblxuICBjb25zdCB7cG9zaXRpb25TdHlsZXN9ID0gdXNlTGVnZW5kUG9zaXRpb24oe1xuICAgIGxlZ2VuZENvbnRlbnRSZWYsXG4gICAgaXNTaWRlUGFuZWxTaG93bixcbiAgICB0aGVtZSxcbiAgICBzZXR0aW5ncyxcbiAgICBvbkNoYW5nZVNldHRpbmdzOiAoKSA9PiB7XG4gICAgICAvLyBkbyBub3RoaW5nIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHBvcnRhbFJvb3QgPSBjb250YWluZXJSZWYuY3VycmVudFxuICAgID8uY2xvc2VzdCgnLmV4cG9ydC1tYXAtaW5zdGFuY2UnKVxuICAgID8ucXVlcnlTZWxlY3RvcignI2RlZmF1bHQtZGVja2dsLW92ZXJsYXktd3JhcHBlcicpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICB7cG9ydGFsUm9vdFxuICAgICAgICA/IGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZml4ZWQtbGVnZW5kXCJcbiAgICAgICAgICAgICAgcmVmPXtsZWdlbmRDb250ZW50UmVmfVxuICAgICAgICAgICAgICBzdHlsZT17ey4uLnBvc2l0aW9uU3R5bGVzLCBwb3NpdGlvbjogJ2Fic29sdXRlJ319XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgIDwvZGl2PixcbiAgICAgICAgICAgIHBvcnRhbFJvb3RcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbH1cbiAgICA8L2Rpdj5cbiAgKTtcbn0pIGFzIFJlYWN0LkZDPEltYWdlRXhwb3J0TGVnZW5kUHJvcHM+O1xuXG5NYXBMZWdlbmRQYW5lbEZhY3RvcnkuZGVwcyA9IFtNYXBDb250cm9sVG9vbHRpcEZhY3RvcnksIE1hcENvbnRyb2xQYW5lbEZhY3RvcnksIE1hcExlZ2VuZEZhY3RvcnldO1xuXG5pbnRlcmZhY2UgTWFwTGVnZW5kUGFuZWxJY29ucyB7XG4gIGxlZ2VuZDogQ29tcG9uZW50VHlwZTxhbnk+O1xufVxuXG5leHBvcnQgdHlwZSBNYXBMZWdlbmRQYW5lbFByb3BzID0ge1xuICB0aGVtZTogYW55O1xuICBsYXllcnM6IFJlYWRvbmx5QXJyYXk8TGF5ZXI+O1xuICBzY2FsZTogbnVtYmVyO1xuICBvblRvZ2dsZU1hcENvbnRyb2w6IChjb250cm9sOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGlzRXhwb3J0OiBib29sZWFuO1xuICBsb2dvQ29tcG9uZW50OiBFbGVtZW50O1xuICBhY3Rpb25JY29uczogTWFwTGVnZW5kUGFuZWxJY29ucztcbiAgbWFwQ29udHJvbHM6IE1hcENvbnRyb2xzO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xuICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPzogKG9sZExheWVyOiBMYXllciwgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPikgPT4gdm9pZDtcbiAgb25Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0PzogQWN0aW9uSGFuZGxlcjx0eXBlb2YgdG9nZ2xlU3BsaXRNYXBWaWV3cG9ydD47XG4gIGlzVmlld3BvcnRVbnN5bmNBbGxvd2VkPzogYm9vbGVhbjtcbiAgb25DbGlja0NvbnRyb2xCdG4/OiAoZT86IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBzZXR0aW5nczogTWFwTGVnZW5kQ29udHJvbFNldHRpbmdzO1xuICBpc1NpZGVQYW5lbFNob3duOiBib29sZWFuO1xuICBhY3RpdmVTaWRlUGFuZWw6IHN0cmluZyB8IG51bGw7XG4gIHNldE1hcENvbnRyb2xTZXR0aW5nczogYW55O1xufTtcblxudHlwZSBNYXBMZWdlbmRQYW5lbENvbXBvbmVudHMgPSB7XG4gIE1hcENvbnRyb2xUb29sdGlwOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250cm9sVG9vbHRpcEZhY3Rvcnk+O1xuICBNYXBDb250cm9sUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xQYW5lbEZhY3Rvcnk+O1xuICBNYXBMZWdlbmQ6IFJldHVyblR5cGU8dHlwZW9mIE1hcExlZ2VuZEZhY3Rvcnk+O1xufTtcblxudHlwZSBNYXBMZWdlbmRQYW5lbENvbXBvbmVudFR5cGUgPSBSZWFjdC5GQzxNYXBMZWdlbmRQYW5lbFByb3BzPjtcblxuY29uc3QgZGVmYXVsdEFjdGlvbkljb25zID0ge1xuICBsZWdlbmQ6IHByb3BzID0+IDxMZWdlbmQgey4uLnByb3BzfSBoZWlnaHQ9XCIxOHB4XCIgLz5cbn07XG5cbmNvbnN0IE1hcExlZ2VuZFBhbmVsQ29tcG9uZW50ID0gKHtcbiAgbGF5ZXJzLFxuICBtYXBDb250cm9scyxcbiAgc2NhbGUsXG4gIG9uVG9nZ2xlTWFwQ29udHJvbCxcbiAgaXNFeHBvcnQsXG4gIGxvZ29Db21wb25lbnQsXG4gIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zLFxuICBtYXBTdGF0ZSxcbiAgb25MYXllclZpc0NvbmZpZ0NoYW5nZSxcbiAgb25Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0LFxuICBvbkNsaWNrQ29udHJvbEJ0bixcbiAgYWN0aXZlU2lkZVBhbmVsLFxuICBzZXRNYXBDb250cm9sU2V0dGluZ3MsXG4gIGlzVmlld3BvcnRVbnN5bmNBbGxvd2VkID0gdHJ1ZSxcbiAgY2xhc3NOYW1lLFxuICBNYXBDb250cm9sVG9vbHRpcCxcbiAgTWFwQ29udHJvbFBhbmVsLFxuICBNYXBMZWdlbmRcbn06IE1hcExlZ2VuZFBhbmVsUHJvcHMgJiBNYXBMZWdlbmRQYW5lbENvbXBvbmVudHMpID0+IHtcbiAgY29uc3QgaXNTaWRlUGFuZWxTaG93biA9IEJvb2xlYW4oYWN0aXZlU2lkZVBhbmVsKTtcbiAgY29uc3Qgc2V0dGluZ3MgPSBtYXBDb250cm9scz8ubWFwTGVnZW5kPy5zZXR0aW5ncztcblxuICBjb25zdCBtYXBMZWdlbmQgPSBtYXBDb250cm9scz8ubWFwTGVnZW5kIHx8ICh7fSBhcyBNYXBDb250cm9sTWFwTGVnZW5kKTtcbiAgY29uc3Qge2FjdGl2ZSwgZGlzYWJsZUVkaXR9ID0gbWFwTGVnZW5kIHx8IHt9O1xuICBjb25zdCByb290Q29udGV4dCA9IHVzZUNvbnRleHQoUm9vdENvbnRleHQpO1xuXG4gIGNvbnN0IG9uQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgb25DbGlja0NvbnRyb2xCdG4/LigpO1xuICAgIGlmIChtYXBDb250cm9scz8ubWFwRHJhdz8uYWN0aXZlKSB7XG4gICAgICBvblRvZ2dsZU1hcENvbnRyb2woJ21hcERyYXcnKTtcbiAgICB9XG4gICAgb25Ub2dnbGVNYXBDb250cm9sKCdtYXBMZWdlbmQnKTtcbiAgfSwgW29uQ2xpY2tDb250cm9sQnRuLCBvblRvZ2dsZU1hcENvbnRyb2wsIG1hcENvbnRyb2xzXSk7XG4gIGNvbnN0IG9uQ2xvc2VDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIGUgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgb25Ub2dnbGVNYXBDb250cm9sKCdtYXBMZWdlbmQnKTtcbiAgICB9LFxuICAgIFtvblRvZ2dsZU1hcENvbnRyb2xdXG4gICk7XG5cbiAgaWYgKCFtYXBMZWdlbmQuc2hvdykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbGVnZW5kUGFuZWwgPSBhY3RpdmUgPyAoXG4gICAgPE1hcENvbnRyb2xQYW5lbFxuICAgICAgc2NhbGU9e3NjYWxlfVxuICAgICAgaGVhZGVyPVwiaGVhZGVyLmxheWVyTGVnZW5kXCJcbiAgICAgIHsuLi57b25DbGljazogb25DbG9zZUNsaWNrLCBwaW5uYWJsZTogZmFsc2UsIGRpc2FibGVDbG9zZTogZmFsc2V9fVxuICAgICAgaXNFeHBvcnQ9e2lzRXhwb3J0fVxuICAgICAgbG9nb0NvbXBvbmVudD17bG9nb0NvbXBvbmVudH1cbiAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgIG9uVG9nZ2xlU3BsaXRNYXBWaWV3cG9ydD17b25Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0fVxuICAgICAgaXNWaWV3cG9ydFVuc3luY0FsbG93ZWQ9e2lzVmlld3BvcnRVbnN5bmNBbGxvd2VkfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgPlxuICAgICAgPE1hcExlZ2VuZFxuICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgbWFwU3RhdGU9e21hcFN0YXRlfVxuICAgICAgICBkaXNhYmxlRWRpdD17ZGlzYWJsZUVkaXR9XG4gICAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgICAgb25MYXllclZpc0NvbmZpZ0NoYW5nZT17b25MYXllclZpc0NvbmZpZ0NoYW5nZX1cbiAgICAgIC8+XG4gICAgPC9NYXBDb250cm9sUGFuZWw+XG4gICkgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHthY3RpdmUgPyAoXG4gICAgICAgIGhhc1BvcnRhYmxlV2lkdGgoYnJlYWtQb2ludFZhbHVlcykgPyAoXG4gICAgICAgICAgbGVnZW5kUGFuZWxcbiAgICAgICAgKSA6IGlzRXhwb3J0ID8gKFxuICAgICAgICAgIDxJbWFnZUV4cG9ydExlZ2VuZCBpc1NpZGVQYW5lbFNob3duPXtpc1NpZGVQYW5lbFNob3dufSBzZXR0aW5ncz17c2V0dGluZ3N9PlxuICAgICAgICAgICAge2xlZ2VuZFBhbmVsfVxuICAgICAgICAgIDwvSW1hZ2VFeHBvcnRMZWdlbmQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgICAgPERyYWdnYWJsZUxlZ2VuZFxuICAgICAgICAgICAgICBpc1NpZGVQYW5lbFNob3duPXtpc1NpZGVQYW5lbFNob3dufVxuICAgICAgICAgICAgICBtYXBDb250cm9scz17bWFwQ29udHJvbHN9XG4gICAgICAgICAgICAgIHNldE1hcENvbnRyb2xTZXR0aW5ncz17c2V0TWFwQ29udHJvbFNldHRpbmdzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGVnZW5kUGFuZWx9XG4gICAgICAgICAgICA8L0RyYWdnYWJsZUxlZ2VuZD4sXG4gICAgICAgICAgICByb290Q29udGV4dD8uY3VycmVudCA/PyBkb2N1bWVudC5ib2R5XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApIDogbnVsbH1cbiAgICAgIHshaXNFeHBvcnQgPyAoXG4gICAgICAgIDxNYXBDb250cm9sVG9vbHRpcCBpZD1cInNob3ctbGVnZW5kXCIgbWVzc2FnZT1cInRvb2x0aXAuc2hvd0xlZ2VuZFwiPlxuICAgICAgICAgIDxNYXBDb250cm9sQnV0dG9uIGNsYXNzTmFtZT1cIm1hcC1jb250cm9sLWJ1dHRvbiBzaG93LWxlZ2VuZFwiIG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgICAgICAgPGFjdGlvbkljb25zLmxlZ2VuZCBoZWlnaHQ9XCIyMnB4XCIgLz5cbiAgICAgICAgICA8L01hcENvbnRyb2xCdXR0b24+XG4gICAgICAgIDwvTWFwQ29udHJvbFRvb2x0aXA+XG4gICAgICApIDogbnVsbH1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmZ1bmN0aW9uIE1hcExlZ2VuZFBhbmVsRmFjdG9yeShcbiAgTWFwQ29udHJvbFRvb2x0aXA6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xUb29sdGlwRmFjdG9yeT4sXG4gIE1hcENvbnRyb2xQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbFBhbmVsRmFjdG9yeT4sXG4gIE1hcExlZ2VuZDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwTGVnZW5kRmFjdG9yeT5cbik6IE1hcExlZ2VuZFBhbmVsQ29tcG9uZW50VHlwZSB7XG4gIHJldHVybiAocHJvcHM6IE1hcExlZ2VuZFBhbmVsUHJvcHMpID0+IChcbiAgICA8TWFwTGVnZW5kUGFuZWxDb21wb25lbnRcbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIE1hcENvbnRyb2xUb29sdGlwPXtNYXBDb250cm9sVG9vbHRpcH1cbiAgICAgIE1hcENvbnRyb2xQYW5lbD17TWFwQ29udHJvbFBhbmVsfVxuICAgICAgTWFwTGVnZW5kPXtNYXBMZWdlbmR9XG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFwTGVnZW5kUGFuZWxGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUdBLElBQUFBLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUgsT0FBQTtBQVNBLElBQUFJLGlCQUFBLEdBQUFELHVCQUFBLENBQUFILE9BQUE7QUFFQSxJQUFBSyxLQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFJQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFHQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxrQkFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksUUFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsbUJBQUEsR0FBQWQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFjLGdCQUFBLEdBQUFmLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBZSxrQkFBQSxHQUFBaEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFnQixVQUFBLEdBQUFqQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWlCLFVBQUEsR0FBQWpCLE9BQUE7QUFBeUQsSUFBQWtCLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFsQ3pEO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FB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
264
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0RG9tIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb3JlIiwiX3V0aWxpdGllcyIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX3V0aWxzIiwiX2ljb25zIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX2NvbnRleHQiLCJfdXNlTGVnZW5kUG9zaXRpb24zIiwiX21hcENvbnRyb2xQYW5lbCIsIl9tYXBDb250cm9sVG9vbHRpcCIsIl9tYXBMZWdlbmQiLCJfbW9kaWZpZXJzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiRFJBR19SRVNJWkVfSUQiLCJEUkFHX01PVkVfSUQiLCJTdHlsZWREcmFnZ2FibGVMZWdlbmRDb250ZW50Iiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiYWN0aXZlQ29sb3IiLCJjb250ZW50SGVpZ2h0IiwiY29uY2F0IiwiU3R5bGVkTW92ZUhhbmRsZSIsIlN0eWxlZFJlc2l6ZUhhbmRsZSIsIlN0eWxlZEZpeGVkTGVnZW5kQ29udGVudCIsIkRyYWdnYWJsZUxlZ2VuZENvbnRlbnQiLCJmb3J3YXJkUmVmIiwicmVmIiwicG9zaXRpb25TdHlsZXMiLCJjaGlsZHJlbiIsImRyYWdnYWJsZU1vdmUiLCJ1c2VEcmFnZ2FibGUiLCJpZCIsImRyYWdnYWJsZVJlc2l6ZSIsInJlZnMiLCJ1c2VNZXJnZVJlZnMiLCJzZXROb2RlUmVmIiwiaXNEcmFnZ2luZyIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJjbGFzc05hbWUiLCJjbGFzc25hbWVzIiwic3R5bGUiLCJ0cmFuc2Zvcm0iLCJDU1MiLCJUcmFuc2xhdGUiLCJ0b1N0cmluZyIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJEcmFnZ2FibGVEb3RzIiwiaGVpZ2h0IiwiSG9yaXpvbnRhbFJlc2l6ZUhhbmRsZSIsIkRyYWdnYWJsZUxlZ2VuZCIsIndpdGhUaGVtZSIsIl9yZWYiLCJfbWFwQ29udHJvbHMkbWFwTGVnZW4iLCJpc1NpZGVQYW5lbFNob3duIiwibWFwQ29udHJvbHMiLCJzZXRNYXBDb250cm9sU2V0dGluZ3MiLCJzZXR0aW5ncyIsIm1hcExlZ2VuZCIsImxlZ2VuZENvbnRlbnRSZWYiLCJ1c2VSZWYiLCJvbkNoYW5nZVNldHRpbmdzIiwidXNlQ2FsbGJhY2siLCJuZXdTZXR0aW5ncyIsIl91c2VMZWdlbmRQb3NpdGlvbiIsInVzZUxlZ2VuZFBvc2l0aW9uIiwidXBkYXRlUG9zaXRpb24iLCJzdGFydFJlc2l6ZSIsInJlc2l6ZSIsImhhbmRsZURyYWdTdGFydCIsImV2ZW50IiwiYWN0aXZlIiwiaGFuZGxlRHJhZ0VuZCIsImhhbmRsZURyYWdNb3ZlIiwiZGVsdGEiLCJ5IiwiRG5kQ29udGV4dCIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsIm1vZGlmaWVycyIsInJlc3RyaWN0VG9XaW5kb3dFZGdlcyIsIkltYWdlRXhwb3J0TGVnZW5kIiwiX3JlZjIiLCJfY29udGFpbmVyUmVmJGN1cnJlbnQiLCJjb250YWluZXJSZWYiLCJfdXNlTGVnZW5kUG9zaXRpb24yIiwicG9ydGFsUm9vdCIsImN1cnJlbnQiLCJjbG9zZXN0IiwicXVlcnlTZWxlY3RvciIsImNyZWF0ZVBvcnRhbCIsInBvc2l0aW9uIiwiTWFwTGVnZW5kUGFuZWxGYWN0b3J5IiwiZGVwcyIsIk1hcENvbnRyb2xUb29sdGlwRmFjdG9yeSIsIk1hcENvbnRyb2xQYW5lbEZhY3RvcnkiLCJNYXBMZWdlbmRGYWN0b3J5IiwiZGVmYXVsdEFjdGlvbkljb25zIiwibGVnZW5kIiwiTGVnZW5kIiwiTWFwTGVnZW5kUGFuZWxDb21wb25lbnQiLCJfcmVmMyIsIl9tYXBDb250cm9scyRtYXBMZWdlbjIiLCJfcm9vdENvbnRleHQkY3VycmVudCIsImxheWVycyIsInNjYWxlIiwib25Ub2dnbGVNYXBDb250cm9sIiwiaXNFeHBvcnQiLCJsb2dvQ29tcG9uZW50IiwiX3JlZjMkYWN0aW9uSWNvbnMiLCJhY3Rpb25JY29ucyIsIm1hcFN0YXRlIiwib25MYXllclZpc0NvbmZpZ0NoYW5nZSIsIm9uVG9nZ2xlU3BsaXRNYXBWaWV3cG9ydCIsIm9uQ2xpY2tDb250cm9sQnRuIiwiYWN0aXZlU2lkZVBhbmVsIiwiX3JlZjMkaXNWaWV3cG9ydFVuc3luIiwiaXNWaWV3cG9ydFVuc3luY0FsbG93ZWQiLCJNYXBDb250cm9sVG9vbHRpcCIsIk1hcENvbnRyb2xQYW5lbCIsIk1hcExlZ2VuZCIsIkJvb2xlYW4iLCJfcmVmNCIsImRpc2FibGVFZGl0Iiwicm9vdENvbnRleHQiLCJ1c2VDb250ZXh0IiwiUm9vdENvbnRleHQiLCJvbkNsaWNrIiwiX21hcENvbnRyb2xzJG1hcERyYXciLCJtYXBEcmF3Iiwib25DbG9zZUNsaWNrIiwicHJldmVudERlZmF1bHQiLCJzaG93IiwibGVnZW5kUGFuZWwiLCJoZWFkZXIiLCJwaW5uYWJsZSIsImRpc2FibGVDbG9zZSIsIkZyYWdtZW50IiwiaGFzUG9ydGFibGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJkb2N1bWVudCIsImJvZHkiLCJtZXNzYWdlIiwiTWFwQ29udHJvbEJ1dHRvbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAvbWFwLWxlZ2VuZC1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge2NyZWF0ZVBvcnRhbH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBSZWFjdCwge1xuICBDb21wb25lbnRUeXBlLFxuICBGQyxcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUNvbnRleHQsXG4gIHVzZVJlZixcbiAgUHJvcHNXaXRoQ2hpbGRyZW5cbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZX0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0RuZENvbnRleHQsIHVzZURyYWdnYWJsZX0gZnJvbSAnQGRuZC1raXQvY29yZSc7XG5pbXBvcnQge0NTU30gZnJvbSAnQGRuZC1raXQvdXRpbGl0aWVzJztcbmltcG9ydCB7dXNlTWVyZ2VSZWZzfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuXG5pbXBvcnQge0FjdGlvbkhhbmRsZXIsIHNldE1hcENvbnRyb2xTZXR0aW5ncywgdG9nZ2xlU3BsaXRNYXBWaWV3cG9ydH0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7YnJlYWtQb2ludFZhbHVlc30gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtMYXllclZpc0NvbmZpZywgTWFwQ29udHJvbE1hcExlZ2VuZCwgTWFwQ29udHJvbHMsIE1hcFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7aGFzUG9ydGFibGVXaWR0aH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge01hcExlZ2VuZENvbnRyb2xTZXR0aW5nc30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7TGVnZW5kLCBEcmFnZ2FibGVEb3RzLCBIb3Jpem9udGFsUmVzaXplSGFuZGxlfSBmcm9tICcuLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtNYXBDb250cm9sQnV0dG9ufSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtSb290Q29udGV4dH0gZnJvbSAnLi4vY29udGV4dCc7XG5pbXBvcnQgdXNlTGVnZW5kUG9zaXRpb24gZnJvbSAnLi4vaG9va3MvdXNlLWxlZ2VuZC1wb3NpdGlvbic7XG5pbXBvcnQgTWFwQ29udHJvbFBhbmVsRmFjdG9yeSBmcm9tICcuL21hcC1jb250cm9sLXBhbmVsJztcbmltcG9ydCBNYXBDb250cm9sVG9vbHRpcEZhY3RvcnkgZnJvbSAnLi9tYXAtY29udHJvbC10b29sdGlwJztcbmltcG9ydCBNYXBMZWdlbmRGYWN0b3J5IGZyb20gJy4vbWFwLWxlZ2VuZCc7XG5pbXBvcnQge3Jlc3RyaWN0VG9XaW5kb3dFZGdlc30gZnJvbSAnQGRuZC1raXQvbW9kaWZpZXJzJztcblxuY29uc3QgRFJBR19SRVNJWkVfSUQgPSAnbWFwLWxlZ2VuZC1yZXNpemUnO1xuY29uc3QgRFJBR19NT1ZFX0lEID0gJ21hcC1sZWdlbmQtbW92ZSc7XG5cbmNvbnN0IFN0eWxlZERyYWdnYWJsZUxlZ2VuZENvbnRlbnQgPSBzdHlsZWQuZGl2PHtjb250ZW50SGVpZ2h0PzogbnVtYmVyfT5gXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMgZWFzZS1pbi1vdXQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAubGVnZW5kLWlucHV0LWJsb2NrIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICYuaXMtZHJhZ2dpbmcgLmxlZ2VuZC1pbnB1dC1ibG9jayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuICAmOmhvdmVyLFxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICAubGVnZW5kLW1vdmUtaGFuZGxlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICB9XG4gICAgLmxlZ2VuZC1yZXNpemUtaGFuZGxlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICB9XG4gICAgYm9yZGVyLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmFjdGl2ZUNvbG9yfTtcbiAgfVxuICAubWFwLWNvbnRyb2xfX3BhbmVsLWNvbnRlbnQge1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMDBweCk7XG4gICAgJHtwcm9wcyA9PiAocHJvcHMuY29udGVudEhlaWdodCA/IGBoZWlnaHQ6ICR7cHJvcHMuY29udGVudEhlaWdodH1weDtgIDogJycpfTtcbiAgfVxuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHotaW5kZXg6IDI7XG4gIC5tYXAtY29udHJvbC1wYW5lbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRNb3ZlSGFuZGxlID0gc3R5bGVkLmRpdmBcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLWluLW91dDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogd2hpdGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogMDtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgd2lkdGg6IDQ4cHg7XG4gIGhlaWdodDogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBjdXJzb3I6IG1vdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYWN0aXZlQ29sb3J9O1xuYDtcblxuY29uc3QgU3R5bGVkUmVzaXplSGFuZGxlID0gc3R5bGVkLmRpdmBcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLWluLW91dDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogI2Y3ZjhmYTtcbiAgei1pbmRleDogMjtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB3aWR0aDogNDhweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGN1cnNvcjogbnMtcmVzaXplO1xuYDtcblxuY29uc3QgU3R5bGVkRml4ZWRMZWdlbmRDb250ZW50ID0gc3R5bGVkLmRpdjx7Y29udGVudEhlaWdodD86IG51bWJlcn0+YFxuICAubWFwLWNvbnRyb2xfX3BhbmVsLWNvbnRlbnQge1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMDBweCk7XG4gICAgJHtwcm9wcyA9PiAocHJvcHMuY29udGVudEhlaWdodCA/IGBoZWlnaHQ6ICR7cHJvcHMuY29udGVudEhlaWdodH1weDtgIDogJycpfTtcbiAgfVxuXG4gIC8qIEhpZGUgc2Nyb2xsYmFycyBpbiBleHBvcnQgdG8gYXZvaWQgT1MgZGVmYXVsdCBzdHlsaW5nIGRpZmZlcmVuY2VzICovXG4gIC5zdHlsZWQtY29sb3ItbGVnZW5kIHtcbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7IC8qIElFIGFuZCBvbGQgRWRnZSAqL1xuICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTsgLyogRmlyZWZveCAqL1xuICB9XG4gIC5zdHlsZWQtY29sb3ItbGVnZW5kOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6IDAgIWltcG9ydGFudDsgLyogQ2hyb21lLCBTYWZhcmksIG5ldyBFZGdlICovXG4gICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbmA7XG5cbmV4cG9ydCB0eXBlIE1hcExlZ2VuZFBhbmVsRmFjdG9yeURlcHMgPSBbXG4gIHR5cGVvZiBNYXBDb250cm9sVG9vbHRpcEZhY3RvcnksXG4gIHR5cGVvZiBNYXBDb250cm9sUGFuZWxGYWN0b3J5LFxuICB0eXBlb2YgTWFwTGVnZW5kRmFjdG9yeVxuXTtcblxudHlwZSBEcmFnZ2FibGVMZWdlbmRDb250ZW50UHJvcHMgPSB7XG4gIGNvbnRlbnRIZWlnaHQ/OiBudW1iZXI7XG4gIHBvc2l0aW9uU3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IERyYWdnYWJsZUxlZ2VuZENvbnRlbnQgPSBmb3J3YXJkUmVmKChwcm9wczogRHJhZ2dhYmxlTGVnZW5kQ29udGVudFByb3BzLCByZWYpID0+IHtcbiAgY29uc3Qge3Bvc2l0aW9uU3R5bGVzLCBjaGlsZHJlbn0gPSBwcm9wcztcbiAgY29uc3QgZHJhZ2dhYmxlTW92ZSA9IHVzZURyYWdnYWJsZSh7aWQ6IERSQUdfTU9WRV9JRH0pO1xuICBjb25zdCBkcmFnZ2FibGVSZXNpemUgPSB1c2VEcmFnZ2FibGUoe2lkOiBEUkFHX1JFU0laRV9JRH0pO1xuICBjb25zdCByZWZzID0gdXNlTWVyZ2VSZWZzKFtkcmFnZ2FibGVNb3ZlLnNldE5vZGVSZWYsIHJlZl0pO1xuICBjb25zdCBpc0RyYWdnaW5nID0gZHJhZ2dhYmxlTW92ZS5pc0RyYWdnaW5nIHx8IGRyYWdnYWJsZVJlc2l6ZS5pc0RyYWdnaW5nO1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWREcmFnZ2FibGVMZWdlbmRDb250ZW50XG4gICAgICByZWY9e3JlZnN9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2RyYWdnYWJsZS1sZWdlbmQnLCB7J2lzLWRyYWdnaW5nJzogaXNEcmFnZ2luZ30pfVxuICAgICAgc3R5bGU9e3suLi5wb3NpdGlvblN0eWxlcywgdHJhbnNmb3JtOiBDU1MuVHJhbnNsYXRlLnRvU3RyaW5nKGRyYWdnYWJsZU1vdmUudHJhbnNmb3JtKX19XG4gICAgICBjb250ZW50SGVpZ2h0PXtwcm9wcy5jb250ZW50SGVpZ2h0fVxuICAgICAgey4uLmRyYWdnYWJsZU1vdmUuYXR0cmlidXRlc31cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICB7aXNEcmFnZ2luZyA/IDxkaXYgY2xhc3NOYW1lPVwibGVnZW5kLWlucHV0LWJsb2NrXCIgLz4gOiBudWxsfVxuICAgICAgPFN0eWxlZE1vdmVIYW5kbGUgY2xhc3NOYW1lPVwibGVnZW5kLW1vdmUtaGFuZGxlXCIgey4uLmRyYWdnYWJsZU1vdmUubGlzdGVuZXJzfT5cbiAgICAgICAgPERyYWdnYWJsZURvdHMgaGVpZ2h0PVwiMTZweFwiIC8+XG4gICAgICA8L1N0eWxlZE1vdmVIYW5kbGU+XG4gICAgICA8U3R5bGVkUmVzaXplSGFuZGxlXG4gICAgICAgIGNsYXNzTmFtZT1cImxlZ2VuZC1yZXNpemUtaGFuZGxlXCJcbiAgICAgICAgcmVmPXtkcmFnZ2FibGVSZXNpemUuc2V0Tm9kZVJlZn1cbiAgICAgICAgey4uLmRyYWdnYWJsZVJlc2l6ZS5saXN0ZW5lcnN9XG4gICAgICA+XG4gICAgICAgIDxIb3Jpem9udGFsUmVzaXplSGFuZGxlIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgPC9TdHlsZWRSZXNpemVIYW5kbGU+XG4gICAgPC9TdHlsZWREcmFnZ2FibGVMZWdlbmRDb250ZW50PlxuICApO1xufSk7XG5cbnR5cGUgRHJhZ2dhYmxlTGVnZW5kUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGlzU2lkZVBhbmVsU2hvd246IGJvb2xlYW47XG4gIG1hcENvbnRyb2xzOiBNYXBDb250cm9scztcbiAgc2V0TWFwQ29udHJvbFNldHRpbmdzOiB0eXBlb2Ygc2V0TWFwQ29udHJvbFNldHRpbmdzO1xufT47XG5cbmNvbnN0IERyYWdnYWJsZUxlZ2VuZCA9IHdpdGhUaGVtZShcbiAgKHtcbiAgICBpc1NpZGVQYW5lbFNob3duLFxuICAgIGNoaWxkcmVuLFxuICAgIG1hcENvbnRyb2xzLFxuICAgIHNldE1hcENvbnRyb2xTZXR0aW5ncyxcbiAgICB0aGVtZVxuICB9OiBEcmFnZ2FibGVMZWdlbmRQcm9wcyAmIHt0aGVtZTogYW55fSkgPT4ge1xuICAgIGNvbnN0IHNldHRpbmdzID0gbWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uc2V0dGluZ3M7XG5cbiAgICBjb25zdCBsZWdlbmRDb250ZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBvbkNoYW5nZVNldHRpbmdzID0gdXNlQ2FsbGJhY2soXG4gICAgICBuZXdTZXR0aW5ncyA9PiBzZXRNYXBDb250cm9sU2V0dGluZ3MoJ21hcExlZ2VuZCcsIG5ld1NldHRpbmdzKSxcbiAgICAgIFtzZXRNYXBDb250cm9sU2V0dGluZ3NdXG4gICAgKTtcbiAgICBjb25zdCB7cG9zaXRpb25TdHlsZXMsIHVwZGF0ZVBvc2l0aW9uLCBzdGFydFJlc2l6ZSwgcmVzaXplLCBjb250ZW50SGVpZ2h0fSA9IHVzZUxlZ2VuZFBvc2l0aW9uKHtcbiAgICAgIGxlZ2VuZENvbnRlbnRSZWYsXG4gICAgICBpc1NpZGVQYW5lbFNob3duLFxuICAgICAgdGhlbWUsXG4gICAgICBzZXR0aW5ncyxcbiAgICAgIG9uQ2hhbmdlU2V0dGluZ3NcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmFjdGl2ZS5pZCkge1xuICAgICAgICAgIGNhc2UgRFJBR19SRVNJWkVfSUQ6XG4gICAgICAgICAgICBzdGFydFJlc2l6ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbdXBkYXRlUG9zaXRpb24sIHN0YXJ0UmVzaXplXVxuICAgICk7XG4gICAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKHVwZGF0ZVBvc2l0aW9uLCBbdXBkYXRlUG9zaXRpb25dKTtcbiAgICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgZXZlbnQgPT4ge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmFjdGl2ZS5pZCkge1xuICAgICAgICAgIGNhc2UgRFJBR19SRVNJWkVfSUQ6XG4gICAgICAgICAgICByZXNpemUoZXZlbnQuZGVsdGEueSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtyZXNpemVdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8RG5kQ29udGV4dFxuICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICBtb2RpZmllcnM9e1tyZXN0cmljdFRvV2luZG93RWRnZXNdfVxuICAgICAgPlxuICAgICAgICA8RHJhZ2dhYmxlTGVnZW5kQ29udGVudFxuICAgICAgICAgIHJlZj17bGVnZW5kQ29udGVudFJlZn1cbiAgICAgICAgICBwb3NpdGlvblN0eWxlcz17cG9zaXRpb25TdHlsZXN9XG4gICAgICAgICAgY29udGVudEhlaWdodD17Y29udGVudEhlaWdodH1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9EcmFnZ2FibGVMZWdlbmRDb250ZW50PlxuICAgICAgPC9EbmRDb250ZXh0PlxuICAgICk7XG4gIH1cbikgYXMgRkM8RHJhZ2dhYmxlTGVnZW5kUHJvcHM+O1xuXG50eXBlIEltYWdlRXhwb3J0TGVnZW5kUHJvcHMgPSB7XG4gIHNldHRpbmdzPzogTWFwTGVnZW5kQ29udHJvbFNldHRpbmdzO1xuICBpc1NpZGVQYW5lbFNob3duOiBib29sZWFuO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgSW1hZ2VFeHBvcnRMZWdlbmQgPSB3aXRoVGhlbWUoKHtzZXR0aW5ncywgaXNTaWRlUGFuZWxTaG93biwgdGhlbWUsIGNoaWxkcmVufSkgPT4ge1xuICBjb25zdCBjb250YWluZXJSZWY6IFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgbGVnZW5kQ29udGVudFJlZjogUmVhY3QuTXV0YWJsZVJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+ID0gdXNlUmVmKG51bGwpO1xuXG4gIGNvbnN0IHtwb3NpdGlvblN0eWxlcywgY29udGVudEhlaWdodH0gPSB1c2VMZWdlbmRQb3NpdGlvbih7XG4gICAgbGVnZW5kQ29udGVudFJlZixcbiAgICBpc1NpZGVQYW5lbFNob3duLFxuICAgIHRoZW1lLFxuICAgIHNldHRpbmdzLFxuICAgIG9uQ2hhbmdlU2V0dGluZ3M6ICgpID0+IHtcbiAgICAgIC8vIGRvIG5vdGhpbmcgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgcG9ydGFsUm9vdCA9IGNvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgPy5jbG9zZXN0KCcuZXhwb3J0LW1hcC1pbnN0YW5jZScpXG4gICAgPy5xdWVyeVNlbGVjdG9yKCcjZGVmYXVsdC1kZWNrZ2wtb3ZlcmxheS13cmFwcGVyJyk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17Y29udGFpbmVyUmVmfT5cbiAgICAgIHtwb3J0YWxSb290XG4gICAgICAgID8gY3JlYXRlUG9ydGFsKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaXhlZC1sZWdlbmRcIlxuICAgICAgICAgICAgICByZWY9e2xlZ2VuZENvbnRlbnRSZWZ9XG4gICAgICAgICAgICAgIHN0eWxlPXt7Li4ucG9zaXRpb25TdHlsZXMsIHBvc2l0aW9uOiAnYWJzb2x1dGUnfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFN0eWxlZEZpeGVkTGVnZW5kQ29udGVudCBjb250ZW50SGVpZ2h0PXtjb250ZW50SGVpZ2h0fT5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgIDwvU3R5bGVkRml4ZWRMZWdlbmRDb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+LFxuICAgICAgICAgICAgcG9ydGFsUm9vdFxuICAgICAgICAgIClcbiAgICAgICAgOiBudWxsfVxuICAgIDwvZGl2PlxuICApO1xufSkgYXMgUmVhY3QuRkM8SW1hZ2VFeHBvcnRMZWdlbmRQcm9wcz47XG5cbk1hcExlZ2VuZFBhbmVsRmFjdG9yeS5kZXBzID0gW01hcENvbnRyb2xUb29sdGlwRmFjdG9yeSwgTWFwQ29udHJvbFBhbmVsRmFjdG9yeSwgTWFwTGVnZW5kRmFjdG9yeV07XG5cbmludGVyZmFjZSBNYXBMZWdlbmRQYW5lbEljb25zIHtcbiAgbGVnZW5kOiBDb21wb25lbnRUeXBlPGFueT47XG59XG5cbmV4cG9ydCB0eXBlIE1hcExlZ2VuZFBhbmVsUHJvcHMgPSB7XG4gIHRoZW1lOiBhbnk7XG4gIGxheWVyczogUmVhZG9ubHlBcnJheTxMYXllcj47XG4gIHNjYWxlOiBudW1iZXI7XG4gIG9uVG9nZ2xlTWFwQ29udHJvbDogKGNvbnRyb2w6IHN0cmluZykgPT4gdm9pZDtcbiAgaXNFeHBvcnQ6IGJvb2xlYW47XG4gIGxvZ29Db21wb25lbnQ6IEVsZW1lbnQ7XG4gIGFjdGlvbkljb25zOiBNYXBMZWdlbmRQYW5lbEljb25zO1xuICBtYXBDb250cm9sczogTWFwQ29udHJvbHM7XG4gIG1hcFN0YXRlPzogTWFwU3RhdGU7XG4gIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U/OiAob2xkTGF5ZXI6IExheWVyLCBuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+KSA9PiB2b2lkO1xuICBvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnQ/OiBBY3Rpb25IYW5kbGVyPHR5cGVvZiB0b2dnbGVTcGxpdE1hcFZpZXdwb3J0PjtcbiAgaXNWaWV3cG9ydFVuc3luY0FsbG93ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrQ29udHJvbEJ0bj86IChlPzogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIHNldHRpbmdzOiBNYXBMZWdlbmRDb250cm9sU2V0dGluZ3M7XG4gIGlzU2lkZVBhbmVsU2hvd246IGJvb2xlYW47XG4gIGFjdGl2ZVNpZGVQYW5lbDogc3RyaW5nIHwgbnVsbDtcbiAgc2V0TWFwQ29udHJvbFNldHRpbmdzOiBhbnk7XG59O1xuXG50eXBlIE1hcExlZ2VuZFBhbmVsQ29tcG9uZW50cyA9IHtcbiAgTWFwQ29udHJvbFRvb2x0aXA6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xUb29sdGlwRmFjdG9yeT47XG4gIE1hcENvbnRyb2xQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbFBhbmVsRmFjdG9yeT47XG4gIE1hcExlZ2VuZDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwTGVnZW5kRmFjdG9yeT47XG59O1xuXG50eXBlIE1hcExlZ2VuZFBhbmVsQ29tcG9uZW50VHlwZSA9IFJlYWN0LkZDPE1hcExlZ2VuZFBhbmVsUHJvcHM+O1xuXG5jb25zdCBkZWZhdWx0QWN0aW9uSWNvbnMgPSB7XG4gIGxlZ2VuZDogcHJvcHMgPT4gPExlZ2VuZCB7Li4ucHJvcHN9IGhlaWdodD1cIjE4cHhcIiAvPlxufTtcblxuY29uc3QgTWFwTGVnZW5kUGFuZWxDb21wb25lbnQgPSAoe1xuICBsYXllcnMsXG4gIG1hcENvbnRyb2xzLFxuICBzY2FsZSxcbiAgb25Ub2dnbGVNYXBDb250cm9sLFxuICBpc0V4cG9ydCxcbiAgbG9nb0NvbXBvbmVudCxcbiAgYWN0aW9uSWNvbnMgPSBkZWZhdWx0QWN0aW9uSWNvbnMsXG4gIG1hcFN0YXRlLFxuICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlLFxuICBvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnQsXG4gIG9uQ2xpY2tDb250cm9sQnRuLFxuICBhY3RpdmVTaWRlUGFuZWwsXG4gIHNldE1hcENvbnRyb2xTZXR0aW5ncyxcbiAgaXNWaWV3cG9ydFVuc3luY0FsbG93ZWQgPSB0cnVlLFxuICBjbGFzc05hbWUsXG4gIE1hcENvbnRyb2xUb29sdGlwLFxuICBNYXBDb250cm9sUGFuZWwsXG4gIE1hcExlZ2VuZFxufTogTWFwTGVnZW5kUGFuZWxQcm9wcyAmIE1hcExlZ2VuZFBhbmVsQ29tcG9uZW50cykgPT4ge1xuICBjb25zdCBpc1NpZGVQYW5lbFNob3duID0gQm9vbGVhbihhY3RpdmVTaWRlUGFuZWwpO1xuICBjb25zdCBzZXR0aW5ncyA9IG1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LnNldHRpbmdzO1xuXG4gIGNvbnN0IG1hcExlZ2VuZCA9IG1hcENvbnRyb2xzPy5tYXBMZWdlbmQgfHwgKHt9IGFzIE1hcENvbnRyb2xNYXBMZWdlbmQpO1xuICBjb25zdCB7YWN0aXZlLCBkaXNhYmxlRWRpdH0gPSBtYXBMZWdlbmQgfHwge307XG4gIGNvbnN0IHJvb3RDb250ZXh0ID0gdXNlQ29udGV4dChSb290Q29udGV4dCk7XG5cbiAgY29uc3Qgb25DbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBvbkNsaWNrQ29udHJvbEJ0bj8uKCk7XG4gICAgaWYgKG1hcENvbnRyb2xzPy5tYXBEcmF3Py5hY3RpdmUpIHtcbiAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbCgnbWFwRHJhdycpO1xuICAgIH1cbiAgICBvblRvZ2dsZU1hcENvbnRyb2woJ21hcExlZ2VuZCcpO1xuICB9LCBbb25DbGlja0NvbnRyb2xCdG4sIG9uVG9nZ2xlTWFwQ29udHJvbCwgbWFwQ29udHJvbHNdKTtcbiAgY29uc3Qgb25DbG9zZUNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgZSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBvblRvZ2dsZU1hcENvbnRyb2woJ21hcExlZ2VuZCcpO1xuICAgIH0sXG4gICAgW29uVG9nZ2xlTWFwQ29udHJvbF1cbiAgKTtcblxuICBpZiAoIW1hcExlZ2VuZC5zaG93KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBsZWdlbmRQYW5lbCA9IGFjdGl2ZSA/IChcbiAgICA8TWFwQ29udHJvbFBhbmVsXG4gICAgICBzY2FsZT17c2NhbGV9XG4gICAgICBoZWFkZXI9XCJoZWFkZXIubGF5ZXJMZWdlbmRcIlxuICAgICAgey4uLntvbkNsaWNrOiBvbkNsb3NlQ2xpY2ssIHBpbm5hYmxlOiBmYWxzZSwgZGlzYWJsZUNsb3NlOiBmYWxzZX19XG4gICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICBsb2dvQ29tcG9uZW50PXtsb2dvQ29tcG9uZW50fVxuICAgICAgbWFwU3RhdGU9e21hcFN0YXRlfVxuICAgICAgb25Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0PXtvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnR9XG4gICAgICBpc1ZpZXdwb3J0VW5zeW5jQWxsb3dlZD17aXNWaWV3cG9ydFVuc3luY0FsbG93ZWR9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8TWFwTGVnZW5kXG4gICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgIGRpc2FibGVFZGl0PXtkaXNhYmxlRWRpdH1cbiAgICAgICAgaXNFeHBvcnQ9e2lzRXhwb3J0fVxuICAgICAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPXtvbkxheWVyVmlzQ29uZmlnQ2hhbmdlfVxuICAgICAgLz5cbiAgICA8L01hcENvbnRyb2xQYW5lbD5cbiAgKSA6IG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2FjdGl2ZSA/IChcbiAgICAgICAgaGFzUG9ydGFibGVXaWR0aChicmVha1BvaW50VmFsdWVzKSA/IChcbiAgICAgICAgICBsZWdlbmRQYW5lbFxuICAgICAgICApIDogaXNFeHBvcnQgPyAoXG4gICAgICAgICAgPEltYWdlRXhwb3J0TGVnZW5kIGlzU2lkZVBhbmVsU2hvd249e2lzU2lkZVBhbmVsU2hvd259IHNldHRpbmdzPXtzZXR0aW5nc30+XG4gICAgICAgICAgICB7bGVnZW5kUGFuZWx9XG4gICAgICAgICAgPC9JbWFnZUV4cG9ydExlZ2VuZD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8RHJhZ2dhYmxlTGVnZW5kXG4gICAgICAgICAgICAgIGlzU2lkZVBhbmVsU2hvd249e2lzU2lkZVBhbmVsU2hvd259XG4gICAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgICAgc2V0TWFwQ29udHJvbFNldHRpbmdzPXtzZXRNYXBDb250cm9sU2V0dGluZ3N9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsZWdlbmRQYW5lbH1cbiAgICAgICAgICAgIDwvRHJhZ2dhYmxlTGVnZW5kPixcbiAgICAgICAgICAgIHJvb3RDb250ZXh0Py5jdXJyZW50ID8/IGRvY3VtZW50LmJvZHlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICkgOiBudWxsfVxuICAgICAgeyFpc0V4cG9ydCA/IChcbiAgICAgICAgPE1hcENvbnRyb2xUb29sdGlwIGlkPVwic2hvdy1sZWdlbmRcIiBtZXNzYWdlPVwidG9vbHRpcC5zaG93TGVnZW5kXCI+XG4gICAgICAgICAgPE1hcENvbnRyb2xCdXR0b24gY2xhc3NOYW1lPVwibWFwLWNvbnRyb2wtYnV0dG9uIHNob3ctbGVnZW5kXCIgb25DbGljaz17b25DbGlja30+XG4gICAgICAgICAgICA8YWN0aW9uSWNvbnMubGVnZW5kIGhlaWdodD1cIjIycHhcIiAvPlxuICAgICAgICAgIDwvTWFwQ29udHJvbEJ1dHRvbj5cbiAgICAgICAgPC9NYXBDb250cm9sVG9vbHRpcD5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvPlxuICApO1xufTtcblxuZnVuY3Rpb24gTWFwTGVnZW5kUGFuZWxGYWN0b3J5KFxuICBNYXBDb250cm9sVG9vbHRpcDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5PixcbiAgTWFwQ29udHJvbFBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250cm9sUGFuZWxGYWN0b3J5PixcbiAgTWFwTGVnZW5kOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBMZWdlbmRGYWN0b3J5PlxuKTogTWFwTGVnZW5kUGFuZWxDb21wb25lbnRUeXBlIHtcbiAgcmV0dXJuIChwcm9wczogTWFwTGVnZW5kUGFuZWxQcm9wcykgPT4gKFxuICAgIDxNYXBMZWdlbmRQYW5lbENvbXBvbmVudFxuICAgICAgey4uLnByb3BzfVxuICAgICAgTWFwQ29udHJvbFRvb2x0aXA9e01hcENvbnRyb2xUb29sdGlwfVxuICAgICAgTWFwQ29udHJvbFBhbmVsPXtNYXBDb250cm9sUGFuZWx9XG4gICAgICBNYXBMZWdlbmQ9e01hcExlZ2VuZH1cbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNYXBMZWdlbmRQYW5l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LE1BQUEsWUFBQWtGLGFBQUEsQ0FBQWxGLE1BQUEsWUFBQXdMLFFBQUEsUUFDR25FLE1BQU0sR0FDTCxJQUFBb0UsdUJBQWdCLEVBQUNDLHdCQUFnQixDQUFDLEdBQ2hDTixXQUFXLEdBQ1QxQixRQUFRLGdCQUNWMUosTUFBQSxZQUFBa0YsYUFBQSxDQUFDOEMsaUJBQWlCO0lBQUM1QixnQkFBZ0IsRUFBRUEsZ0JBQWlCO0lBQUNHLFFBQVEsRUFBRUE7RUFBUyxHQUN2RTZFLFdBQ2dCLENBQUMsa0JBRXBCLElBQUEzQyxzQkFBWSxnQkFDVnpJLE1BQUEsWUFBQWtGLGFBQUEsQ0FBQ2MsZUFBZTtJQUNkSSxnQkFBZ0IsRUFBRUEsZ0JBQWlCO0lBQ25DQyxXQUFXLEVBQUVBLFdBQVk7SUFDekJDLHFCQUFxQixFQUFFQTtFQUFzQixHQUU1QzhFLFdBQ2MsQ0FBQyxHQUFBOUIsb0JBQUEsR0FDbEJxQixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRXJDLE9BQU8sY0FBQWdCLG9CQUFBLGNBQUFBLG9CQUFBLEdBQUlxQyxRQUFRLENBQUNDLElBQ25DLENBQUMsQ0FDRixHQUNDLElBQUksRUFDUCxDQUFDbEMsUUFBUSxnQkFDUjFKLE1BQUEsWUFBQWtGLGFBQUEsQ0FBQ21GLGlCQUFpQjtJQUFDekYsRUFBRSxFQUFDLGFBQWE7SUFBQ2lILE9BQU8sRUFBQztFQUFvQixnQkFDOUQ3TCxNQUFBLFlBQUFrRixhQUFBLENBQUN6RSxrQkFBQSxDQUFBcUwsZ0JBQWdCO0lBQUMxRyxTQUFTLEVBQUMsZ0NBQWdDO0lBQUMwRixPQUFPLEVBQUVBO0VBQVEsZ0JBQzVFOUssTUFBQSxZQUFBa0YsYUFBQSxDQUFDMkUsV0FBVyxDQUFDWixNQUFNO0lBQUNuRCxNQUFNLEVBQUM7RUFBTSxDQUFFLENBQ25CLENBQ0QsQ0FBQyxHQUNsQixJQUNKLENBQUM7QUFFUCxDQUFDO0FBRUQsU0FBUzZDLHFCQUFxQkEsQ0FDNUIwQixpQkFBOEQsRUFDOURDLGVBQTBELEVBQzFEQyxTQUE4QyxFQUNqQjtFQUM3QixPQUFPLFVBQUMxRyxLQUEwQjtJQUFBLG9CQUNoQzdELE1BQUEsWUFBQWtGLGFBQUEsQ0FBQ2lFLHVCQUF1QixNQUFBaEUsU0FBQSxpQkFDbEJ0QixLQUFLO01BQ1R3RyxpQkFBaUIsRUFBRUEsaUJBQWtCO01BQ3JDQyxlQUFlLEVBQUVBLGVBQWdCO01BQ2pDQyxTQUFTLEVBQUVBO0lBQVUsRUFDdEIsQ0FBQztFQUFBLENBQ0g7QUFDSDtBQUFDLElBQUF3QixRQUFBLEdBQUFDLE9BQUEsY0FFY3JELHFCQUFxQiIsImlnbm9yZUxpc3QiOltdfQ==