@kepler.gl/utils 3.0.0-alpha.0 → 3.0.0-alpha.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 (60) hide show
  1. package/dist/aggregate-utils.js +1 -21
  2. package/dist/arrow-data-container.d.ts +54 -0
  3. package/dist/arrow-data-container.js +360 -0
  4. package/dist/color-utils.d.ts +8 -0
  5. package/dist/color-utils.js +38 -22
  6. package/dist/data-container-interface.d.ts +18 -0
  7. package/dist/data-container-interface.js +0 -20
  8. package/dist/data-container-utils.d.ts +1 -0
  9. package/dist/data-container-utils.js +10 -22
  10. package/dist/data-row.js +7 -22
  11. package/dist/data-scale-utils.js +7 -22
  12. package/dist/data-utils.d.ts +10 -12
  13. package/dist/data-utils.js +121 -63
  14. package/dist/dataset-utils.d.ts +13 -2
  15. package/dist/dataset-utils.js +85 -33
  16. package/dist/dom-to-image.d.ts +14 -14
  17. package/dist/dom-to-image.js +28 -89
  18. package/dist/dom-utils.d.ts +3 -0
  19. package/dist/dom-utils.js +33 -23
  20. package/dist/effect-utils.d.ts +23 -0
  21. package/dist/effect-utils.js +196 -0
  22. package/dist/export-map-html.js +7 -23
  23. package/dist/export-utils.js +12 -23
  24. package/dist/filter-utils.d.ts +11 -9
  25. package/dist/filter-utils.js +70 -55
  26. package/dist/format.d.ts +1 -0
  27. package/dist/format.js +17 -0
  28. package/dist/gl-utils.js +1 -21
  29. package/dist/h3-utils.d.ts +2 -1
  30. package/dist/h3-utils.js +9 -24
  31. package/dist/index.d.ts +16 -10
  32. package/dist/index.js +250 -558
  33. package/dist/indexed-data-container.js +1 -21
  34. package/dist/locale-utils.js +1 -21
  35. package/dist/map-info-utils.js +6 -22
  36. package/dist/map-style-utils/mapbox-gl-style-editor.d.ts +2 -1
  37. package/dist/map-style-utils/mapbox-gl-style-editor.js +8 -22
  38. package/dist/map-style-utils/mapbox-utils.js +7 -22
  39. package/dist/map-utils.d.ts +8 -2
  40. package/dist/map-utils.js +23 -26
  41. package/dist/mapbox-utils.js +7 -22
  42. package/dist/noop.d.ts +1 -0
  43. package/dist/noop.js +11 -0
  44. package/dist/notifications-utils.d.ts +14 -26
  45. package/dist/notifications-utils.js +8 -30
  46. package/dist/observe-dimensions.d.ts +1 -1
  47. package/dist/observe-dimensions.js +13 -29
  48. package/dist/plot.d.ts +6 -0
  49. package/dist/plot.js +31 -0
  50. package/dist/projection-utils.d.ts +9 -0
  51. package/dist/projection-utils.js +40 -22
  52. package/dist/row-data-container.js +1 -21
  53. package/dist/searcher-utils.js +7 -22
  54. package/dist/split-map-utils.d.ts +4 -1
  55. package/dist/split-map-utils.js +9 -23
  56. package/dist/time.d.ts +16 -0
  57. package/dist/time.js +89 -0
  58. package/dist/utils.d.ts +42 -10
  59. package/dist/utils.js +64 -26
  60. package/package.json +14 -13
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.computeDeckEffects = computeDeckEffects;
9
+ exports.reorderEffectOrder = reorderEffectOrder;
10
+ exports.validateEffectParameters = validateEffectParameters;
11
+ exports.fixEffectOrder = void 0;
12
+
13
+ var _sortable = require("@dnd-kit/sortable");
14
+
15
+ var _suncalc = _interopRequireDefault(require("suncalc"));
16
+
17
+ var _lodash = _interopRequireDefault(require("lodash.clonedeep"));
18
+
19
+ var _constants = require("@kepler.gl/constants");
20
+
21
+ var _utils = require("./utils");
22
+
23
+ var _dataUtils = require("./data-utils");
24
+
25
+ // SPDX-License-Identifier: MIT
26
+ // Copyright contributors to the kepler.gl project
27
+ function computeDeckEffects(_ref) {
28
+ var visState = _ref.visState,
29
+ mapState = _ref.mapState;
30
+ // TODO: 1) deck effects per deck context 2) preserved between draws
31
+ return visState.effectOrder.map(function (effectId) {
32
+ var effect = (0, _utils.findById)(effectId)(visState.effects);
33
+
34
+ if (effect !== null && effect !== void 0 && effect.isEnabled && effect.deckEffect) {
35
+ updateEffect({
36
+ visState: visState,
37
+ mapState: mapState,
38
+ effect: effect
39
+ });
40
+ return effect.deckEffect;
41
+ }
42
+
43
+ return null;
44
+ }).filter(function (effect) {
45
+ return effect;
46
+ });
47
+ }
48
+ /**
49
+ * Always keep light & shadow effect at the top
50
+ */
51
+
52
+
53
+ var fixEffectOrder = function fixEffectOrder(effects, effectOrder) {
54
+ var lightShadowEffect = effects.find(function (effect) {
55
+ return effect.type === _constants.LIGHT_AND_SHADOW_EFFECT.type;
56
+ });
57
+
58
+ if (lightShadowEffect) {
59
+ var ind = effectOrder.indexOf(lightShadowEffect.id);
60
+
61
+ if (ind > 0) {
62
+ effectOrder.splice(ind, 1);
63
+ effectOrder.unshift(lightShadowEffect.id);
64
+ }
65
+ }
66
+
67
+ return effectOrder;
68
+ };
69
+
70
+ exports.fixEffectOrder = fixEffectOrder;
71
+
72
+ function reorderEffectOrder(effectOrder, originEffectId, destinationEffectId) {
73
+ var activeIndex = effectOrder.indexOf(originEffectId);
74
+ var overIndex = effectOrder.indexOf(destinationEffectId);
75
+ return (0, _sortable.arrayMove)(effectOrder, activeIndex, overIndex);
76
+ }
77
+ /**
78
+ * Check if the current time is daytime at the given location
79
+ * @param {number} lat Latitude
80
+ * @param {number} lon Longitude
81
+ * @param {number} timestamp Milliseconds since the Unix Epoch
82
+ * @returns boolean
83
+ */
84
+
85
+
86
+ function isDaytime(lat, lon, timestamp) {
87
+ var date = new Date(timestamp);
88
+
89
+ var _SunCalc$getTimes = _suncalc["default"].getTimes(date, lat, lon),
90
+ sunrise = _SunCalc$getTimes.sunrise,
91
+ sunset = _SunCalc$getTimes.sunset;
92
+
93
+ return date >= sunrise && date <= sunset;
94
+ }
95
+ /**
96
+ * Update effect to match latest vis and map states
97
+ */
98
+
99
+
100
+ function updateEffect(_ref2) {
101
+ var visState = _ref2.visState,
102
+ mapState = _ref2.mapState,
103
+ effect = _ref2.effect;
104
+
105
+ if (effect.type === _constants.LIGHT_AND_SHADOW_EFFECT.type) {
106
+ var _effect$parameters = effect.parameters,
107
+ timestamp = _effect$parameters.timestamp,
108
+ timeMode = _effect$parameters.timeMode;
109
+ var sunLight = effect.deckEffect.directionalLights[0]; // set timestamp for shadow
110
+
111
+ if (timeMode === _constants.LIGHT_AND_SHADOW_EFFECT_TIME_MODES.current) {
112
+ timestamp = Date.now();
113
+ sunLight.timestamp = timestamp;
114
+ } else if (timeMode === _constants.LIGHT_AND_SHADOW_EFFECT_TIME_MODES.animation) {
115
+ var _visState$animationCo;
116
+
117
+ timestamp = (_visState$animationCo = visState.animationConfig.currentTime) !== null && _visState$animationCo !== void 0 ? _visState$animationCo : 0;
118
+
119
+ if (!timestamp) {
120
+ var filter = visState.filters.find(function (filter) {
121
+ return filter.type === _constants.FILTER_TYPES.timeRange && (filter.view === _constants.FILTER_VIEW_TYPES.enlarged || filter.syncedWithLayerTimeline);
122
+ });
123
+
124
+ if (filter) {
125
+ var _filter$value$, _filter$value;
126
+
127
+ timestamp = (_filter$value$ = (_filter$value = filter.value) === null || _filter$value === void 0 ? void 0 : _filter$value[0]) !== null && _filter$value$ !== void 0 ? _filter$value$ : 0;
128
+ }
129
+ }
130
+
131
+ sunLight.timestamp = timestamp;
132
+ } // output uniform shadow during nighttime
133
+
134
+
135
+ if (isDaytime(mapState.latitude, mapState.longitude, timestamp)) {
136
+ effect.deckEffect.outputUniformShadow = false;
137
+ sunLight.intensity = effect.parameters.sunLightIntensity;
138
+ } else {
139
+ effect.deckEffect.outputUniformShadow = true;
140
+ sunLight.intensity = 0;
141
+ }
142
+ }
143
+ }
144
+ /**
145
+ * Validates parameters for an effect, clamps numbers to allowed ranges
146
+ * or applies default values in case of wrong non-numeric values.
147
+ * All unknown properties aren't modified.
148
+ * @param parameters Parameters candidate for an effect.
149
+ * @param effectDescription Description of an effect.
150
+ * @returns
151
+ */
152
+
153
+
154
+ function validateEffectParameters() {
155
+ var parameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
156
+ var effectDescription = arguments.length > 1 ? arguments[1] : undefined;
157
+ var result = (0, _lodash["default"])(parameters);
158
+ effectDescription.forEach(function (description) {
159
+ var defaultValue = description.defaultValue,
160
+ name = description.name,
161
+ type = description.type,
162
+ min = description.min,
163
+ max = description.max;
164
+ if (!result.hasOwnProperty(name)) return;
165
+ var property = result[name];
166
+
167
+ if (type === 'color' || type === 'array') {
168
+ if (!Array.isArray(defaultValue)) return;
169
+
170
+ if (property.length !== (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.length)) {
171
+ result[name] = defaultValue;
172
+ return;
173
+ }
174
+
175
+ defaultValue.forEach(function (v, i) {
176
+ var _defaultValue$i;
177
+
178
+ var value = property[i];
179
+ value = Number.isFinite(value) ? (0, _dataUtils.clamp)([min, max], value) : (_defaultValue$i = defaultValue[i]) !== null && _defaultValue$i !== void 0 ? _defaultValue$i : min;
180
+
181
+ if (value !== undefined) {
182
+ property[i] = value;
183
+ }
184
+ });
185
+ return;
186
+ }
187
+
188
+ var value = Number.isFinite(property) ? (0, _dataUtils.clamp)([min, max], property) : defaultValue !== null && defaultValue !== void 0 ? defaultValue : min;
189
+
190
+ if (value !== undefined) {
191
+ result[name] = value;
192
+ }
193
+ });
194
+ return result;
195
+ }
196
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZmZlY3QtdXRpbHMudHMiXSwibmFtZXMiOlsiY29tcHV0ZURlY2tFZmZlY3RzIiwidmlzU3RhdGUiLCJtYXBTdGF0ZSIsImVmZmVjdE9yZGVyIiwibWFwIiwiZWZmZWN0SWQiLCJlZmZlY3QiLCJlZmZlY3RzIiwiaXNFbmFibGVkIiwiZGVja0VmZmVjdCIsInVwZGF0ZUVmZmVjdCIsImZpbHRlciIsImZpeEVmZmVjdE9yZGVyIiwibGlnaHRTaGFkb3dFZmZlY3QiLCJmaW5kIiwidHlwZSIsIkxJR0hUX0FORF9TSEFET1dfRUZGRUNUIiwiaW5kIiwiaW5kZXhPZiIsImlkIiwic3BsaWNlIiwidW5zaGlmdCIsInJlb3JkZXJFZmZlY3RPcmRlciIsIm9yaWdpbkVmZmVjdElkIiwiZGVzdGluYXRpb25FZmZlY3RJZCIsImFjdGl2ZUluZGV4Iiwib3ZlckluZGV4IiwiaXNEYXl0aW1lIiwibGF0IiwibG9uIiwidGltZXN0YW1wIiwiZGF0ZSIsIkRhdGUiLCJTdW5DYWxjIiwiZ2V0VGltZXMiLCJzdW5yaXNlIiwic3Vuc2V0IiwicGFyYW1ldGVycyIsInRpbWVNb2RlIiwic3VuTGlnaHQiLCJkaXJlY3Rpb25hbExpZ2h0cyIsIkxJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMiLCJjdXJyZW50Iiwibm93IiwiYW5pbWF0aW9uIiwiYW5pbWF0aW9uQ29uZmlnIiwiY3VycmVudFRpbWUiLCJmaWx0ZXJzIiwiRklMVEVSX1RZUEVTIiwidGltZVJhbmdlIiwidmlldyIsIkZJTFRFUl9WSUVXX1RZUEVTIiwiZW5sYXJnZWQiLCJzeW5jZWRXaXRoTGF5ZXJUaW1lbGluZSIsInZhbHVlIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJvdXRwdXRVbmlmb3JtU2hhZG93IiwiaW50ZW5zaXR5Iiwic3VuTGlnaHRJbnRlbnNpdHkiLCJ2YWxpZGF0ZUVmZmVjdFBhcmFtZXRlcnMiLCJlZmZlY3REZXNjcmlwdGlvbiIsInJlc3VsdCIsImZvckVhY2giLCJkZXNjcmlwdGlvbiIsImRlZmF1bHRWYWx1ZSIsIm5hbWUiLCJtaW4iLCJtYXgiLCJoYXNPd25Qcm9wZXJ0eSIsInByb3BlcnR5IiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwidiIsImkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBUUE7O0FBQ0E7O0FBbEJBO0FBQ0E7QUFtQk8sU0FBU0Esa0JBQVQsT0FNaUI7QUFBQSxNQUx0QkMsUUFLc0IsUUFMdEJBLFFBS3NCO0FBQUEsTUFKdEJDLFFBSXNCLFFBSnRCQSxRQUlzQjtBQUN0QjtBQUNBLFNBQU9ELFFBQVEsQ0FBQ0UsV0FBVCxDQUNKQyxHQURJLENBQ0EsVUFBQUMsUUFBUSxFQUFJO0FBQ2YsUUFBTUMsTUFBTSxHQUFHLHFCQUFTRCxRQUFULEVBQW1CSixRQUFRLENBQUNNLE9BQTVCLENBQWY7O0FBQ0EsUUFBSUQsTUFBTSxTQUFOLElBQUFBLE1BQU0sV0FBTixJQUFBQSxNQUFNLENBQUVFLFNBQVIsSUFBcUJGLE1BQU0sQ0FBQ0csVUFBaEMsRUFBNEM7QUFDMUNDLE1BQUFBLFlBQVksQ0FBQztBQUFDVCxRQUFBQSxRQUFRLEVBQVJBLFFBQUQ7QUFBV0MsUUFBQUEsUUFBUSxFQUFSQSxRQUFYO0FBQXFCSSxRQUFBQSxNQUFNLEVBQU5BO0FBQXJCLE9BQUQsQ0FBWjtBQUNBLGFBQU9BLE1BQU0sQ0FBQ0csVUFBZDtBQUNEOztBQUNELFdBQU8sSUFBUDtBQUNELEdBUkksRUFTSkUsTUFUSSxDQVNHLFVBQUFMLE1BQU07QUFBQSxXQUFJQSxNQUFKO0FBQUEsR0FUVCxDQUFQO0FBVUQ7QUFFRDtBQUNBO0FBQ0E7OztBQUNPLElBQU1NLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQ0wsT0FBRCxFQUFvQkosV0FBcEIsRUFBd0Q7QUFDcEYsTUFBTVUsaUJBQWlCLEdBQUdOLE9BQU8sQ0FBQ08sSUFBUixDQUFhLFVBQUFSLE1BQU07QUFBQSxX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RSxHQUF4Rjs7QUFFQSxRQUFJYixLQUFLLEtBQUt3QixTQUFkLEVBQXlCO0FBQ3ZCaEIsTUFBQUEsTUFBTSxDQUFDSSxJQUFELENBQU4sR0FBZVosS0FBZjtBQUNEO0FBQ0YsR0EzQkQ7QUE0QkEsU0FBT1EsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHthcnJheU1vdmV9IGZyb20gJ0BkbmQta2l0L3NvcnRhYmxlJztcbmltcG9ydCBTdW5DYWxjIGZyb20gJ3N1bmNhbGMnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2guY2xvbmVkZWVwJztcblxuaW1wb3J0IHtQb3N0UHJvY2Vzc0VmZmVjdH0gZnJvbSAnQGRlY2suZ2wvY29yZS90eXBlZCc7XG5cbmltcG9ydCB7XG4gIExJR0hUX0FORF9TSEFET1dfRUZGRUNULFxuICBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVF9USU1FX01PREVTLFxuICBGSUxURVJfVFlQRVMsXG4gIEZJTFRFUl9WSUVXX1RZUEVTXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge01hcFN0YXRlLCBFZmZlY3QsIEVmZmVjdFByb3BzLCBFZmZlY3REZXNjcmlwdGlvbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2ZpbmRCeUlkfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7Y2xhbXB9IGZyb20gJy4vZGF0YS11dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlRGVja0VmZmVjdHMoe1xuICB2aXNTdGF0ZSxcbiAgbWFwU3RhdGVcbn06IHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG59KTogUG9zdFByb2Nlc3NFZmZlY3RbXSB7XG4gIC8vIFRPRE86IDEpIGRlY2sgZWZmZWN0cyBwZXIgZGVjayBjb250ZXh0IDIpIHByZXNlcnZlZCBiZXR3ZWVuIGRyYXdzXG4gIHJldHVybiB2aXNTdGF0ZS5lZmZlY3RPcmRlclxuICAgIC5tYXAoZWZmZWN0SWQgPT4ge1xuICAgICAgY29uc3QgZWZmZWN0ID0gZmluZEJ5SWQoZWZmZWN0SWQpKHZpc1N0YXRlLmVmZmVjdHMpIGFzIEVmZmVjdCB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChlZmZlY3Q/LmlzRW5hYmxlZCAmJiBlZmZlY3QuZGVja0VmZmVjdCkge1xuICAgICAgICB1cGRhdGVFZmZlY3Qoe3Zpc1N0YXRlLCBtYXBTdGF0ZSwgZWZmZWN0fSk7XG4gICAgICAgIHJldHVybiBlZmZlY3QuZGVja0VmZmVjdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pXG4gICAgLmZpbHRlcihlZmZlY3QgPT4gZWZmZWN0KTtcbn1cblxuLyoqXG4gKiBBbHdheXMga2VlcCBsaWdodCAmIHNoYWRvdyBlZmZlY3QgYXQgdGhlIHRvcFxuICovXG5leHBvcnQgY29uc3QgZml4RWZmZWN0T3JkZXIgPSAoZWZmZWN0czogRWZmZWN0W10sIGVmZmVjdE9yZGVyOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3QgbGlnaHRTaGFkb3dFZmZlY3QgPSBlZmZlY3RzLmZpbmQoZWZmZWN0ID0+IGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlKTtcbiAgaWYgKGxpZ2h0U2hhZG93RWZmZWN0KSB7XG4gICAgY29uc3QgaW5kID0gZWZmZWN0T3JkZXIuaW5kZXhPZihsaWdodFNoYWRvd0VmZmVjdC5pZCk7XG4gICAgaWYgKGluZCA+IDApIHtcbiAgICAgIGVmZmVjdE9yZGVyLnNwbGljZShpbmQsIDEpO1xuICAgICAgZWZmZWN0T3JkZXIudW5zaGlmdChsaWdodFNoYWRvd0VmZmVjdC5pZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBlZmZlY3RPcmRlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyRWZmZWN0T3JkZXIoXG4gIGVmZmVjdE9yZGVyOiBzdHJpbmdbXSxcbiAgb3JpZ2luRWZmZWN0SWQ6IHN0cmluZyxcbiAgZGVzdGluYXRpb25FZmZlY3RJZDogc3RyaW5nXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gZWZmZWN0T3JkZXIuaW5kZXhPZihvcmlnaW5FZmZlY3RJZCk7XG4gIGNvbnN0IG92ZXJJbmRleCA9IGVmZmVjdE9yZGVyLmluZGV4T2YoZGVzdGluYXRpb25FZmZlY3RJZCk7XG4gIHJldHVybiBhcnJheU1vdmUoZWZmZWN0T3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBjdXJyZW50IHRpbWUgaXMgZGF5dGltZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsYXQgTGF0aXR1ZGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsb24gTG9uZ2l0dWRlXG4gKiBAcGFyYW0ge251bWJlcn0gdGltZXN0YW1wIE1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVW5peCBFcG9jaFxuICogQHJldHVybnMgYm9vbGVhblxuICovXG5mdW5jdGlvbiBpc0RheXRpbWUobGF0LCBsb24sIHRpbWVzdGFtcCkge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUodGltZXN0YW1wKTtcbiAgY29uc3Qge3N1bnJpc2UsIHN1bnNldH0gPSBTdW5DYWxjLmdldFRpbWVzKGRhdGUsIGxhdCwgbG9uKTtcbiAgcmV0dXJuIGRhdGUgPj0gc3VucmlzZSAmJiBkYXRlIDw9IHN1bnNldDtcbn1cblxuLyoqXG4gKiBVcGRhdGUgZWZmZWN0IHRvIG1hdGNoIGxhdGVzdCB2aXMgYW5kIG1hcCBzdGF0ZXNcbiAqL1xuZnVuY3Rpb24gdXBkYXRlRWZmZWN0KHt2aXNTdGF0ZSwgbWFwU3RhdGUsIGVmZmVjdH0pIHtcbiAgaWYgKGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlKSB7XG4gICAgbGV0IHt0aW1lc3RhbXAsIHRpbWVNb2RlfSA9IGVmZmVjdC5wYXJhbWV0ZXJzO1xuICAgIGNvbnN0IHN1bkxpZ2h0ID0gZWZmZWN0LmRlY2tFZmZlY3QuZGlyZWN0aW9uYWxMaWdodHNbMF07XG5cbiAgICAvLyBzZXQgdGltZXN0YW1wIGZvciBzaGFkb3dcbiAgICBpZiAodGltZU1vZGUgPT09IExJR0hUX0FORF9TSEFET1dfRUZGRUNUX1RJTUVfTU9ERVMuY3VycmVudCkge1xuICAgICAgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgIHN1bkxpZ2h0LnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcbiAgICB9IGVsc2UgaWYgKHRpbWVNb2RlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVF9USU1FX01PREVTLmFuaW1hdGlvbikge1xuICAgICAgdGltZXN0YW1wID0gdmlzU3RhdGUuYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lID8/IDA7XG4gICAgICBpZiAoIXRpbWVzdGFtcCkge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSB2aXNTdGF0ZS5maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgZmlsdGVyID0+XG4gICAgICAgICAgICBmaWx0ZXIudHlwZSA9PT0gRklMVEVSX1RZUEVTLnRpbWVSYW5nZSAmJlxuICAgICAgICAgICAgKGZpbHRlci52aWV3ID09PSBGSUxURVJfVklFV19UWVBFUy5lbmxhcmdlZCB8fCBmaWx0ZXIuc3luY2VkV2l0aExheWVyVGltZWxpbmUpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgICB0aW1lc3RhbXAgPSBmaWx0ZXIudmFsdWU/LlswXSA/PyAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdW5MaWdodC50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XG4gICAgfVxuXG4gICAgLy8gb3V0cHV0IHVuaWZvcm0gc2hhZG93IGR1cmluZyBuaWdodHRpbWVcbiAgICBpZiAoaXNEYXl0aW1lKG1hcFN0YXRlLmxhdGl0dWRlLCBtYXBTdGF0ZS5sb25naXR1ZGUsIHRpbWVzdGFtcCkpIHtcbiAgICAgIGVmZmVjdC5kZWNrRWZmZWN0Lm91dHB1dFVuaWZvcm1TaGFkb3cgPSBmYWxzZTtcbiAgICAgIHN1bkxpZ2h0LmludGVuc2l0eSA9IGVmZmVjdC5wYXJhbWV0ZXJzLnN1bkxpZ2h0SW50ZW5zaXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICBlZmZlY3QuZGVja0VmZmVjdC5vdXRwdXRVbmlmb3JtU2hhZG93ID0gdHJ1ZTtcbiAgICAgIHN1bkxpZ2h0LmludGVuc2l0eSA9IDA7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHBhcmFtZXRlcnMgZm9yIGFuIGVmZmVjdCwgY2xhbXBzIG51bWJlcnMgdG8gYWxsb3dlZCByYW5nZXNcbiAqIG9yIGFwcGxpZXMgZGVmYXVsdCB2YWx1ZXMgaW4gY2FzZSBvZiB3cm9uZyBub24tbnVtZXJpYyB2YWx1ZXMuXG4gKiBBbGwgdW5rbm93biBwcm9wZXJ0aWVzIGFyZW4ndCBtb2RpZmllZC5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzIFBhcmFtZXRlcnMgY2FuZGlkYXRlIGZvciBhbiBlZmZlY3QuXG4gKiBAcGFyYW0gZWZmZWN0RGVzY3JpcHRpb24gRGVzY3JpcHRpb24gb2YgYW4gZWZmZWN0LlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRWZmZWN0UGFyYW1ldGVycyhcbiAgcGFyYW1ldGVyczogRWZmZWN0UHJvcHNbJ3BhcmFtZXRlcnMnXSA9IHt9LFxuICBlZmZlY3REZXNjcmlwdGlvbjogRWZmZWN0RGVzY3JpcHRpb25bJ3BhcmFtZXRlcnMnXVxuKTogRWZmZWN0UHJvcHNbJ3BhcmFtZXRlcnMnXSB7XG4gIGNvbnN0IHJlc3VsdCA9IGNsb25lRGVlcChwYXJhbWV0ZXJzKTtcbiAgZWZmZWN0RGVzY3JpcHRpb24uZm9yRWFjaChkZXNjcmlwdGlvbiA9PiB7XG4gICAgY29uc3Qge2RlZmF1bHRWYWx1ZSwgbmFtZSwgdHlwZSwgbWluLCBtYXh9ID0gZGVzY3JpcHRpb247XG5cbiAgICBpZiAoIXJlc3VsdC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgcmV0dXJuO1xuICAgIGNvbnN0IHByb3BlcnR5ID0gcmVzdWx0W25hbWVdO1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb2xvcicgfHwgdHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRlZmF1bHRWYWx1ZSkpIHJldHVybjtcbiAgICAgIGlmIChwcm9wZXJ0eS5sZW5ndGggIT09IGRlZmF1bHRWYWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtuYW1lXSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGVmYXVsdFZhbHVlLmZvckVhY2goKHYsIGkpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gcHJvcGVydHlbaV07XG4gICAgICAgIHZhbHVlID0gTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IGNsYW1wKFttaW4sIG1heF0sIHZhbHVlKSA6IGRlZmF1bHRWYWx1ZVtpXSA/PyBtaW47XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcHJvcGVydHlbaV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBOdW1iZXIuaXNGaW5pdGUocHJvcGVydHkpID8gY2xhbXAoW21pbiwgbWF4XSwgcHJvcGVydHkpIDogZGVmYXVsdFZhbHVlID8/IG1pbjtcblxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2022 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  Object.defineProperty(exports, "__esModule", {
@@ -25,7 +5,11 @@ Object.defineProperty(exports, "__esModule", {
25
5
  });
26
6
  exports.exportMapToHTML = void 0;
27
7
 
28
- var _constants = require("@kepler.gl/constants");// @ts-nocheck
8
+ var _constants = require("@kepler.gl/constants");
9
+
10
+ // SPDX-License-Identifier: MIT
11
+ // Copyright contributors to the kepler.gl project
12
+ // @ts-nocheck
29
13
 
30
14
  /**
31
15
  * This method is used to create an html file which will inlcude kepler and map data
@@ -37,8 +21,8 @@ var _constants = require("@kepler.gl/constants");// @ts-nocheck
37
21
  */
38
22
  var exportMapToHTML = function exportMapToHTML(options) {
39
23
  var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.KEPLER_GL_VERSION;
40
- return "\n <!DOCTYPE html>\n <html>\n <head>\n <meta charset=\"UTF-8\"/>\n <title>Kepler.gl embedded map</title>\n\n <!--Uber Font-->\n <link rel=\"stylesheet\" href=\"https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/uber-fonts/4.0.0/superfine.css\">\n\n <!--MapBox css-->\n <link href=\"https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.1/mapbox-gl.css\" rel=\"stylesheet\">\n\n <!-\u2014 facebook open graph tags -->\n <meta property=\"og:url\" content=\"http://kepler.gl/\" />\n <meta property=\"og:title\" content=\"Large-scale WebGL-powered Geospatial Data Visualization Tool\" />\n <meta property=\"og:description\" content=\"Kepler.gl is a powerful web-based geospatial data analysis tool. Built on a high performance rendering engine and designed for large-scale data sets.\" />\n <meta property=\"og:site_name\" content=\"kepler.gl\" />\n <meta property=\"og:image\" content=\"https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/kepler.gl-meta-tag.png\" />\n <meta property=\"og:image:type\" content=\"image/png\" />\n <meta property=\"og:image:width\" content=\"800\" />\n <meta property=\"og:image:height\" content=\"800\" />\n\n <!-\u2014 twitter card tags -->\n <meta name=\"twitter:card\" content=\"summary_large_image\">\n <meta name=\"twitter:site\" content=\"@uber\">\n <meta name=\"twitter:creator\" content=\"@uber\">\n <meta name=\"twitter:title\" content=\"Large-scale WebGL-powered Geospatial Data Visualization Tool\">\n <meta name=\"twitter:description\" content=\"Kepler.gl is a powerful web-based geospatial data analysis tool. Built on a high performance rendering engine and designed for large-scale data sets.\">\n <meta name=\"twitter:image\" content=\"https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/kepler.gl-meta-tag.png\" />\n\n <!-- Load React/Redux -->\n <script src=\"https://unpkg.com/react@16.8.4/umd/react.production.min.js\" crossorigin></script>\n <script src=\"https://unpkg.com/react-dom@16.8.4/umd/react-dom.production.min.js\" crossorigin></script>\n <script src=\"https://unpkg.com/redux@3.7.2/dist/redux.js\" crossorigin></script>\n <script src=\"https://unpkg.com/react-redux@7.1.3/dist/react-redux.min.js\" crossorigin></script>\n <script src=\"https://unpkg.com/styled-components@4.1.3/dist/styled-components.min.js\" crossorigin></script>\n\n <!-- Load Kepler.gl -->\n <script src=\"https://unpkg.com/kepler.gl@".concat(version, "/umd/keplergl.min.js\" crossorigin></script>\n\n <style type=\"text/css\">\n body {margin: 0; padding: 0; overflow: hidden;}\n </style>\n\n <!--MapBox token-->\n <script>\n /**\n * Provide your MapBox Token\n **/\n const MAPBOX_TOKEN = '").concat(options.mapboxApiAccessToken || 'PROVIDE_MAPBOX_TOKEN', "';\n const WARNING_MESSAGE = 'Please Provide a Mapbox Token in order to use Kepler.gl. Edit this file and fill out MAPBOX_TOKEN with your access key';\n </script>\n\n <!-- GA: Delete this as you wish, However to pat ourselves on the back, we only track anonymous pageview to understand how many people are using kepler.gl. -->\n <script>\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n ga('create', 'UA-64694404-19', {\n 'storage': 'none',\n 'clientId': localStorage.getItem('ga:clientId')\n });\n ga(function(tracker) {\n localStorage.setItem('ga:clientId', tracker.get('clientId'));\n });\n ga('set', 'checkProtocolTask', null); // Disable file protocol checking.\n ga('set', 'checkStorageTask', null); // Disable cookie storage checking.\n ga('set', 'historyImportTask', null); // Disable history checking (requires reading from cookies).\n ga('set', 'page', 'keplergl-html');\n ga('send', 'pageview');\n </script>\n </head>\n <body>\n <!-- We will put our React component inside this div. -->\n <div id=\"app\">\n <!-- Kepler.gl map will be placed here-->\n </div>\n\n <!-- Load our React component. -->\n <script>\n /* Validate Mapbox Token */\n if ((MAPBOX_TOKEN || '') === '' || MAPBOX_TOKEN === 'PROVIDE_MAPBOX_TOKEN') {\n alert(WARNING_MESSAGE);\n }\n\n /** STORE **/\n const reducers = (function createReducers(redux, keplerGl) {\n return redux.combineReducers({\n // mount keplerGl reducer\n keplerGl: keplerGl.keplerGlReducer.initialState({\n uiState: {\n readOnly: ").concat(options.mode === _constants.EXPORT_HTML_MAP_MODES.READ, ",\n currentModal: null\n }\n })\n });\n }(Redux, KeplerGl));\n\n const middleWares = (function createMiddlewares(keplerGl) {\n return keplerGl.enhanceReduxMiddleware([\n // Add other middlewares here\n ]);\n }(KeplerGl));\n\n const enhancers = (function craeteEnhancers(redux, middles) {\n return redux.applyMiddleware(...middles);\n }(Redux, middleWares));\n\n const store = (function createStore(redux, enhancers) {\n const initialState = {};\n\n return redux.createStore(\n reducers,\n initialState,\n redux.compose(enhancers)\n );\n }(Redux, enhancers));\n /** END STORE **/\n\n /** COMPONENTS **/\n var KeplerElement = (function makeKeplerElement(react, keplerGl, mapboxToken) {\n var LogoSvg = function LogoSvg() {\n return react.createElement(\n \"div\",\n { className: \"logo-container\", style: {position: 'fixed', zIndex: 10000, padding: '4px'} },\n react.createElement(\n \"svg\",\n {\n className: \"kepler_gl__logo\",\n width: \"107px\",\n height: \"21px\",\n viewBox: \"0 0 124 24\"\n },\n react.createElement(\n \"g\",\n { transform: \"translate(13.500000, 13.500000) rotate(45.000000) translate(-13.500000, -13.500000) translate(4.000000, 4.000000)\" },\n react.createElement(\"rect\", { x: \"0\", y: \"6\", transform: \"matrix(2.535181e-06 1 -1 2.535181e-06 18.1107 6.0369)\", fill: \"#535C6C\", width: \"12.1\", height: \"12.1\" }),\n react.createElement(\"rect\", { x: \"6\", y: \"0\", transform: \"matrix(2.535182e-06 1 -1 2.535182e-06 18.1107 -6.0369)\", fill:\"#1FBAD6\", width: \"12.1\", height: \"12.1\" })\n ),\n react.createElement(\n \"g\",\n {},\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M39,8.7h2.2l-2.8,4.2l2.9,5.1H39l-2.4-4.2h-1.3V18h-2V5l2-0.1v7.3h1.3L39,8.7z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M42.4,13.3c0-1.5,0.4-2.7,1.1-3.5s1.8-1.2,3.1-1.2c1.3,0,2.2,0.4,2.8,1.1c0.6,0.7,0.9,1.8,0.9,3.3 c0,0.4,0,0.8,0,1.1h-5.8c0,1.6,0.8,2.4,2.4,2.4c1,0,2-0.2,2.9-0.6l0.2,1.7c-0.4,0.2-0.9,0.4-1.4,0.5s-1.1,0.2-1.7,0.2 c-1.5,0-2.6-0.4-3.3-1.2C42.8,16.1,42.4,14.9,42.4,13.3z M46.6,10.1c-0.7,0-1.2,0.2-1.5,0.5c-0.4,0.4-0.6,0.9-0.6,1.7h4 c0-0.8-0.2-1.4-0.5-1.7S47.2,10.1,46.6,10.1z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M57.1,18.2c-1,0-1.8-0.3-2.3-0.9l0,0l0,1.3v2.5h-2V8.7h1.5l0.3,0.9h0c0.3-0.3,0.7-0.6,1.2-0.7 c0.4-0.2,0.9-0.3,1.4-0.3c1.2,0,2.1,0.4,2.7,1.1c0.6,0.7,0.9,2,0.9,3.7c0,1.6-0.3,2.8-1,3.7C59.2,17.8,58.3,18.2,57.1,18.2z M56.7,10.3c-0.4,0-0.8,0.1-1.1,0.2c-0.3,0.2-0.6,0.4-0.8,0.7v4.3c0.2,0.3,0.4,0.5,0.7,0.7c0.3,0.2,0.7,0.3,1.1,0.3 c0.7,0,1.2-0.2,1.6-0.7c0.4-0.5,0.5-1.3,0.5-2.5c0-0.8-0.1-1.4-0.2-1.8s-0.4-0.7-0.7-0.9C57.6,10.4,57.2,10.3,56.7,10.3z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M63.2,16V5l2-0.1v10.8c0,0.3,0.1,0.5,0.2,0.6c0.1,0.1,0.3,0.2,0.6,0.2c0.3,0,0.6,0,0.9-0.1V18 c-0.4,0.1-1,0.2-1.6,0.2c-0.8,0-1.3-0.2-1.7-0.5S63.2,16.8,63.2,16z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M68.2,13.3c0-1.5,0.4-2.7,1.1-3.5c0.7-0.8,1.8-1.2,3.1-1.2c1.3,0,2.2,0.4,2.8,1.1c0.6,0.7,0.9,1.8,0.9,3.3 c0,0.4,0,0.8,0,1.1h-5.8c0,1.6,0.8,2.4,2.4,2.4c1,0,2-0.2,2.9-0.6l0.2,1.7c-0.4,0.2-0.9,0.4-1.4,0.5s-1.1,0.2-1.7,0.2 c-1.5,0-2.6-0.4-3.3-1.2C68.6,16.1,68.2,14.9,68.2,13.3z M72.4,10.1c-0.7,0-1.2,0.2-1.5,0.5c-0.4,0.4-0.6,0.9-0.6,1.7h4 c0-0.8-0.2-1.4-0.5-1.7S73,10.1,72.4,10.1z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M80.2,8.7l0.1,1.7h0c0.3-0.6,0.7-1.1,1.1-1.4c0.4-0.3,1-0.5,1.6-0.5c0.4,0,0.7,0,1,0.1l-0.1,2 c-0.3-0.1-0.7-0.2-1-0.2c-0.7,0-1.3,0.3-1.7,0.8c-0.4,0.5-0.7,1.2-0.7,2.1V18h-2V8.7H80.2z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M83.8,17c0-0.8,0.4-1.2,1.2-1.2c0.8,0,1.2,0.4,1.2,1.2c0,0.8-0.4,1.1-1.2,1.1C84.2,18.2,83.8,17.8,83.8,17z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M88.5,18.7c0-0.8,0.4-1.4,1.2-1.8c-0.6-0.3-0.9-0.8-0.9-1.5c0-0.7,0.4-1.2,1.1-1.6c-0.3-0.3-0.6-0.6-0.7-0.9 c-0.2-0.4-0.2-0.8-0.2-1.3c0-1,0.3-1.8,0.9-2.3c0.6-0.5,1.6-0.8,2.8-0.8c0.5,0,1,0,1.4,0.1c0.4,0.1,0.8,0.2,1.1,0.4l2.4-0.2v1.5 h-1.5c0.2,0.4,0.2,0.8,0.2,1.3c0,1-0.3,1.7-0.9,2.2s-1.5,0.8-2.7,0.8c-0.7,0-1.2-0.1-1.6-0.2c-0.1,0.1-0.2,0.2-0.3,0.3 c-0.1,0.1-0.1,0.2-0.1,0.4c0,0.2,0.1,0.3,0.2,0.4c0.1,0.1,0.3,0.2,0.6,0.2l2.7,0.2c1,0.1,1.7,0.3,2.2,0.6c0.5,0.3,0.8,0.9,0.8,1.7 c0,0.6-0.2,1.1-0.5,1.5c-0.4,0.4-0.9,0.8-1.5,1c-0.7,0.2-1.5,0.4-2.4,0.4c-1.3,0-2.3-0.2-3-0.6C88.8,20.1,88.5,19.5,88.5,18.7z M95.1,18.4c0-0.3-0.1-0.5-0.3-0.7s-0.6-0.2-1.1-0.3l-2.7-0.3c-0.2,0.1-0.4,0.3-0.5,0.5c-0.1,0.2-0.2,0.4-0.2,0.6 c0,0.4,0.2,0.8,0.5,1c0.4,0.2,1,0.3,1.8,0.3C94.2,19.5,95.1,19.2,95.1,18.4z M94.3,11.5c0-0.6-0.1-1-0.4-1.2 c-0.3-0.2-0.7-0.3-1.3-0.3c-0.7,0-1.1,0.1-1.4,0.3c-0.3,0.2-0.4,0.6-0.4,1.2s0.1,1,0.4,1.2c0.3,0.2,0.7,0.3,1.4,0.3 c0.6,0,1.1-0.1,1.3-0.4S94.3,12,94.3,11.5z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M99.4,16V5l2-0.1v10.8c0,0.3,0.1,0.5,0.2,0.6c0.1,0.1,0.3,0.2,0.6,0.2c0.3,0,0.6,0,0.9-0.1V18 c-0.4,0.1-1,0.2-1.6,0.2c-0.8,0-1.3-0.2-1.7-0.5S99.4,16.8,99.4,16z\" })\n )\n )\n );\n };\n\n return function App() {\n var rootElm = react.useRef(null);\n var _useState = react.useState({\n width: window.innerWidth,\n height: window.innerHeight\n });\n var windowDimension = _useState[0];\n var setDimension = _useState[1];\n react.useEffect(function sideEffect(){\n function handleResize() {\n setDimension({width: window.innerWidth, height: window.innerHeight});\n };\n window.addEventListener('resize', handleResize);\n return function() {window.removeEventListener('resize', handleResize);};\n }, []);\n return react.createElement(\n 'div',\n {style: {position: 'absolute', left: 0, width: '100vw', height: '100vh'}},\n ").concat(options.mode === _constants.EXPORT_HTML_MAP_MODES.READ ? 'LogoSvg(),' : '', "\n react.createElement(keplerGl.KeplerGl, {\n mapboxApiAccessToken: mapboxToken,\n id: \"map\",\n width: windowDimension.width,\n height: windowDimension.height\n })\n )\n }\n }(React, KeplerGl, MAPBOX_TOKEN));\n\n const app = (function createReactReduxProvider(react, reactRedux, KeplerElement) {\n return react.createElement(\n reactRedux.Provider,\n {store},\n react.createElement(KeplerElement, null)\n )\n }(React, ReactRedux, KeplerElement));\n /** END COMPONENTS **/\n\n /** Render **/\n (function render(react, reactDOM, app) {\n reactDOM.render(app, document.getElementById('app'));\n }(React, ReactDOM, app));\n </script>\n <!-- The next script will show how to interact directly with Kepler map store -->\n <script>\n /**\n * Customize map.\n * In the following section you can use the store object to dispatch Kepler.gl actions\n * to add new data and customize behavior\n */\n (function customize(keplerGl, store) {\n const datasets = ").concat(JSON.stringify(options.datasets), ";\n const config = ").concat(JSON.stringify(options.config), ";\n\n const loadedData = keplerGl.KeplerGlSchema.load(\n datasets,\n config\n );\n\n store.dispatch(keplerGl.addDataToMap({\n datasets: loadedData.datasets,\n config: loadedData.config,\n options: {\n centerMap: false\n }\n }));\n }(KeplerGl, store))\n </script>\n </body>\n </html>\n ");
24
+ return "\n <!DOCTYPE html>\n <html>\n <head>\n <meta charset=\"UTF-8\"/>\n <title>Kepler.gl embedded map</title>\n\n <!--Uber Font-->\n <link rel=\"stylesheet\" href=\"https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/uber-fonts/4.0.0/superfine.css\">\n\n <!--MapBox css-->\n <link href=\"https:https://unpkg.com/maplibre-gl@^3/dist/maplibre-gl.css\" rel=\"stylesheet\">\n\n <!-\u2014 facebook open graph tags -->\n <meta property=\"og:url\" content=\"http://kepler.gl/\" />\n <meta property=\"og:title\" content=\"Large-scale WebGL-powered Geospatial Data Visualization Tool\" />\n <meta property=\"og:description\" content=\"Kepler.gl is a powerful web-based geospatial data analysis tool. Built on a high performance rendering engine and designed for large-scale data sets.\" />\n <meta property=\"og:site_name\" content=\"kepler.gl\" />\n <meta property=\"og:image\" content=\"https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/kepler.gl-meta-tag.png\" />\n <meta property=\"og:image:type\" content=\"image/png\" />\n <meta property=\"og:image:width\" content=\"800\" />\n <meta property=\"og:image:height\" content=\"800\" />\n\n <!-\u2014 twitter card tags -->\n <meta name=\"twitter:card\" content=\"summary_large_image\">\n <meta name=\"twitter:site\" content=\"@uber\">\n <meta name=\"twitter:creator\" content=\"@uber\">\n <meta name=\"twitter:title\" content=\"Large-scale WebGL-powered Geospatial Data Visualization Tool\">\n <meta name=\"twitter:description\" content=\"Kepler.gl is a powerful web-based geospatial data analysis tool. Built on a high performance rendering engine and designed for large-scale data sets.\">\n <meta name=\"twitter:image\" content=\"https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/kepler.gl-meta-tag.png\" />\n\n <!-- Load React/Redux -->\n <script src=\"https://unpkg.com/react@16.8.4/umd/react.production.min.js\" crossorigin></script>\n <script src=\"https://unpkg.com/react-dom@16.8.4/umd/react-dom.production.min.js\" crossorigin></script>\n <script src=\"https://unpkg.com/redux@3.7.2/dist/redux.js\" crossorigin></script>\n <script src=\"https://unpkg.com/react-redux@7.1.3/dist/react-redux.min.js\" crossorigin></script>\n <script src=\"https://unpkg.com/styled-components@4.1.3/dist/styled-components.min.js\" crossorigin></script>\n\n <!-- Load Kepler.gl -->\n <script src=\"https://unpkg.com/kepler.gl@".concat(version, "/umd/keplergl.min.js\" crossorigin></script>\n\n <style type=\"text/css\">\n body {margin: 0; padding: 0; overflow: hidden;}\n </style>\n\n <!--MapBox token-->\n <script>\n /**\n * Provide your MapBox Token\n **/\n const MAPBOX_TOKEN = '").concat(options.mapboxApiAccessToken || 'PROVIDE_MAPBOX_TOKEN', "';\n const WARNING_MESSAGE = 'Please Provide a Mapbox Token in order to use Kepler.gl. Edit this file and fill out MAPBOX_TOKEN with your access key';\n </script>\n\n <!-- GA: Delete this as you wish, However to pat ourselves on the back, we only track anonymous pageview to understand how many people are using kepler.gl. -->\n <script>\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n ga('create', 'UA-64694404-19', {\n 'storage': 'none',\n 'clientId': localStorage.getItem('ga:clientId')\n });\n ga(function(tracker) {\n localStorage.setItem('ga:clientId', tracker.get('clientId'));\n });\n ga('set', 'checkProtocolTask', null); // Disable file protocol checking.\n ga('set', 'checkStorageTask', null); // Disable cookie storage checking.\n ga('set', 'historyImportTask', null); // Disable history checking (requires reading from cookies).\n ga('set', 'page', 'keplergl-html');\n ga('send', 'pageview');\n </script>\n </head>\n <body>\n <!-- We will put our React component inside this div. -->\n <div id=\"app\">\n <!-- Kepler.gl map will be placed here-->\n </div>\n\n <!-- Load our React component. -->\n <script>\n /* Validate Mapbox Token */\n if ((MAPBOX_TOKEN || '') === '' || MAPBOX_TOKEN === 'PROVIDE_MAPBOX_TOKEN') {\n alert(WARNING_MESSAGE);\n }\n\n /** STORE **/\n const reducers = (function createReducers(redux, keplerGl) {\n return redux.combineReducers({\n // mount keplerGl reducer\n keplerGl: keplerGl.keplerGlReducer.initialState({\n uiState: {\n readOnly: ").concat(options.mode === _constants.EXPORT_HTML_MAP_MODES.READ, ",\n currentModal: null\n }\n })\n });\n }(Redux, KeplerGl));\n\n const middleWares = (function createMiddlewares(keplerGl) {\n return keplerGl.enhanceReduxMiddleware([\n // Add other middlewares here\n ]);\n }(KeplerGl));\n\n const enhancers = (function craeteEnhancers(redux, middles) {\n return redux.applyMiddleware(...middles);\n }(Redux, middleWares));\n\n const store = (function createStore(redux, enhancers) {\n const initialState = {};\n\n return redux.createStore(\n reducers,\n initialState,\n redux.compose(enhancers)\n );\n }(Redux, enhancers));\n /** END STORE **/\n\n /** COMPONENTS **/\n var KeplerElement = (function makeKeplerElement(react, keplerGl, mapboxToken) {\n var LogoSvg = function LogoSvg() {\n return react.createElement(\n \"div\",\n { className: \"logo-container\", style: {position: 'fixed', zIndex: 10000, padding: '4px'} },\n react.createElement(\n \"svg\",\n {\n className: \"kepler_gl__logo\",\n width: \"107px\",\n height: \"21px\",\n viewBox: \"0 0 124 24\"\n },\n react.createElement(\n \"g\",\n { transform: \"translate(13.500000, 13.500000) rotate(45.000000) translate(-13.500000, -13.500000) translate(4.000000, 4.000000)\" },\n react.createElement(\"rect\", { x: \"0\", y: \"6\", transform: \"matrix(2.535181e-06 1 -1 2.535181e-06 18.1107 6.0369)\", fill: \"#535C6C\", width: \"12.1\", height: \"12.1\" }),\n react.createElement(\"rect\", { x: \"6\", y: \"0\", transform: \"matrix(2.535182e-06 1 -1 2.535182e-06 18.1107 -6.0369)\", fill:\"#1FBAD6\", width: \"12.1\", height: \"12.1\" })\n ),\n react.createElement(\n \"g\",\n {},\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M39,8.7h2.2l-2.8,4.2l2.9,5.1H39l-2.4-4.2h-1.3V18h-2V5l2-0.1v7.3h1.3L39,8.7z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M42.4,13.3c0-1.5,0.4-2.7,1.1-3.5s1.8-1.2,3.1-1.2c1.3,0,2.2,0.4,2.8,1.1c0.6,0.7,0.9,1.8,0.9,3.3 c0,0.4,0,0.8,0,1.1h-5.8c0,1.6,0.8,2.4,2.4,2.4c1,0,2-0.2,2.9-0.6l0.2,1.7c-0.4,0.2-0.9,0.4-1.4,0.5s-1.1,0.2-1.7,0.2 c-1.5,0-2.6-0.4-3.3-1.2C42.8,16.1,42.4,14.9,42.4,13.3z M46.6,10.1c-0.7,0-1.2,0.2-1.5,0.5c-0.4,0.4-0.6,0.9-0.6,1.7h4 c0-0.8-0.2-1.4-0.5-1.7S47.2,10.1,46.6,10.1z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M57.1,18.2c-1,0-1.8-0.3-2.3-0.9l0,0l0,1.3v2.5h-2V8.7h1.5l0.3,0.9h0c0.3-0.3,0.7-0.6,1.2-0.7 c0.4-0.2,0.9-0.3,1.4-0.3c1.2,0,2.1,0.4,2.7,1.1c0.6,0.7,0.9,2,0.9,3.7c0,1.6-0.3,2.8-1,3.7C59.2,17.8,58.3,18.2,57.1,18.2z M56.7,10.3c-0.4,0-0.8,0.1-1.1,0.2c-0.3,0.2-0.6,0.4-0.8,0.7v4.3c0.2,0.3,0.4,0.5,0.7,0.7c0.3,0.2,0.7,0.3,1.1,0.3 c0.7,0,1.2-0.2,1.6-0.7c0.4-0.5,0.5-1.3,0.5-2.5c0-0.8-0.1-1.4-0.2-1.8s-0.4-0.7-0.7-0.9C57.6,10.4,57.2,10.3,56.7,10.3z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M63.2,16V5l2-0.1v10.8c0,0.3,0.1,0.5,0.2,0.6c0.1,0.1,0.3,0.2,0.6,0.2c0.3,0,0.6,0,0.9-0.1V18 c-0.4,0.1-1,0.2-1.6,0.2c-0.8,0-1.3-0.2-1.7-0.5S63.2,16.8,63.2,16z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M68.2,13.3c0-1.5,0.4-2.7,1.1-3.5c0.7-0.8,1.8-1.2,3.1-1.2c1.3,0,2.2,0.4,2.8,1.1c0.6,0.7,0.9,1.8,0.9,3.3 c0,0.4,0,0.8,0,1.1h-5.8c0,1.6,0.8,2.4,2.4,2.4c1,0,2-0.2,2.9-0.6l0.2,1.7c-0.4,0.2-0.9,0.4-1.4,0.5s-1.1,0.2-1.7,0.2 c-1.5,0-2.6-0.4-3.3-1.2C68.6,16.1,68.2,14.9,68.2,13.3z M72.4,10.1c-0.7,0-1.2,0.2-1.5,0.5c-0.4,0.4-0.6,0.9-0.6,1.7h4 c0-0.8-0.2-1.4-0.5-1.7S73,10.1,72.4,10.1z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M80.2,8.7l0.1,1.7h0c0.3-0.6,0.7-1.1,1.1-1.4c0.4-0.3,1-0.5,1.6-0.5c0.4,0,0.7,0,1,0.1l-0.1,2 c-0.3-0.1-0.7-0.2-1-0.2c-0.7,0-1.3,0.3-1.7,0.8c-0.4,0.5-0.7,1.2-0.7,2.1V18h-2V8.7H80.2z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M83.8,17c0-0.8,0.4-1.2,1.2-1.2c0.8,0,1.2,0.4,1.2,1.2c0,0.8-0.4,1.1-1.2,1.1C84.2,18.2,83.8,17.8,83.8,17z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M88.5,18.7c0-0.8,0.4-1.4,1.2-1.8c-0.6-0.3-0.9-0.8-0.9-1.5c0-0.7,0.4-1.2,1.1-1.6c-0.3-0.3-0.6-0.6-0.7-0.9 c-0.2-0.4-0.2-0.8-0.2-1.3c0-1,0.3-1.8,0.9-2.3c0.6-0.5,1.6-0.8,2.8-0.8c0.5,0,1,0,1.4,0.1c0.4,0.1,0.8,0.2,1.1,0.4l2.4-0.2v1.5 h-1.5c0.2,0.4,0.2,0.8,0.2,1.3c0,1-0.3,1.7-0.9,2.2s-1.5,0.8-2.7,0.8c-0.7,0-1.2-0.1-1.6-0.2c-0.1,0.1-0.2,0.2-0.3,0.3 c-0.1,0.1-0.1,0.2-0.1,0.4c0,0.2,0.1,0.3,0.2,0.4c0.1,0.1,0.3,0.2,0.6,0.2l2.7,0.2c1,0.1,1.7,0.3,2.2,0.6c0.5,0.3,0.8,0.9,0.8,1.7 c0,0.6-0.2,1.1-0.5,1.5c-0.4,0.4-0.9,0.8-1.5,1c-0.7,0.2-1.5,0.4-2.4,0.4c-1.3,0-2.3-0.2-3-0.6C88.8,20.1,88.5,19.5,88.5,18.7z M95.1,18.4c0-0.3-0.1-0.5-0.3-0.7s-0.6-0.2-1.1-0.3l-2.7-0.3c-0.2,0.1-0.4,0.3-0.5,0.5c-0.1,0.2-0.2,0.4-0.2,0.6 c0,0.4,0.2,0.8,0.5,1c0.4,0.2,1,0.3,1.8,0.3C94.2,19.5,95.1,19.2,95.1,18.4z M94.3,11.5c0-0.6-0.1-1-0.4-1.2 c-0.3-0.2-0.7-0.3-1.3-0.3c-0.7,0-1.1,0.1-1.4,0.3c-0.3,0.2-0.4,0.6-0.4,1.2s0.1,1,0.4,1.2c0.3,0.2,0.7,0.3,1.4,0.3 c0.6,0,1.1-0.1,1.3-0.4S94.3,12,94.3,11.5z\" }),\n react.createElement(\"path\", { fill:\"#1FBAD6\", d: \"M99.4,16V5l2-0.1v10.8c0,0.3,0.1,0.5,0.2,0.6c0.1,0.1,0.3,0.2,0.6,0.2c0.3,0,0.6,0,0.9-0.1V18 c-0.4,0.1-1,0.2-1.6,0.2c-0.8,0-1.3-0.2-1.7-0.5S99.4,16.8,99.4,16z\" })\n )\n )\n );\n };\n\n return function App() {\n var rootElm = react.useRef(null);\n var _useState = react.useState({\n width: window.innerWidth,\n height: window.innerHeight\n });\n var windowDimension = _useState[0];\n var setDimension = _useState[1];\n react.useEffect(function sideEffect(){\n function handleResize() {\n setDimension({width: window.innerWidth, height: window.innerHeight});\n };\n window.addEventListener('resize', handleResize);\n return function() {window.removeEventListener('resize', handleResize);};\n }, []);\n return react.createElement(\n 'div',\n {style: {position: 'absolute', left: 0, width: '100vw', height: '100vh'}},\n ").concat(options.mode === _constants.EXPORT_HTML_MAP_MODES.READ ? 'LogoSvg(),' : '', "\n react.createElement(keplerGl.KeplerGl, {\n mapboxApiAccessToken: mapboxToken,\n id: \"map\",\n width: windowDimension.width,\n height: windowDimension.height\n })\n )\n }\n }(React, KeplerGl, MAPBOX_TOKEN));\n\n const app = (function createReactReduxProvider(react, reactRedux, KeplerElement) {\n return react.createElement(\n reactRedux.Provider,\n {store},\n react.createElement(KeplerElement, null)\n )\n }(React, ReactRedux, KeplerElement));\n /** END COMPONENTS **/\n\n /** Render **/\n (function render(react, reactDOM, app) {\n reactDOM.render(app, document.getElementById('app'));\n }(React, ReactDOM, app));\n </script>\n <!-- The next script will show how to interact directly with Kepler map store -->\n <script>\n /**\n * Customize map.\n * In the following section you can use the store object to dispatch Kepler.gl actions\n * to add new data and customize behavior\n */\n (function customize(keplerGl, store) {\n const datasets = ").concat(JSON.stringify(options.datasets), ";\n const config = ").concat(JSON.stringify(options.config), ";\n\n const loadedData = keplerGl.KeplerGlSchema.load(\n datasets,\n config\n );\n\n store.dispatch(keplerGl.addDataToMap({\n datasets: loadedData.datasets,\n config: loadedData.config,\n options: {\n centerMap: false\n }\n }));\n }(KeplerGl, store))\n </script>\n </body>\n </html>\n ");
41
25
  };
42
26
 
43
27
  exports.exportMapToHTML = exportMapToHTML;
44
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtbWFwLWh0bWwudHMiXSwibmFtZXMiOlsiZXhwb3J0TWFwVG9IVE1MIiwib3B0aW9ucyIsInZlcnNpb24iLCJLRVBMRVJfR0xfVkVSU0lPTiIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibW9kZSIsIkVYUE9SVF9IVE1MX01BUF9NT0RFUyIsIlJFQUQiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YXNldHMiLCJjb25maWciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFxQkE7O0FBckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1BLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBQ0MsT0FBRCxFQUEwQztBQUFBLE1BQWhDQyxPQUFnQyx1RUFBdEJDLDRCQUFzQjtBQUN2RSwyaEZBdUNpREQsT0F2Q2pELHFVQWtEZ0NELE9BQU8sQ0FBQ0csb0JBQVIsSUFBZ0Msc0JBbERoRSw0bEVBNkY0QkgsT0FBTyxDQUFDSSxJQUFSLEtBQWlCQyxpQ0FBc0JDLElBN0ZuRSxpcE5BZ0xnQk4sT0FBTyxDQUFDSSxJQUFSLEtBQWlCQyxpQ0FBc0JDLElBQXZDLEdBQThDLFlBQTlDLEdBQTZELEVBaEw3RSw0eENBaU42QkMsSUFBSSxDQUFDQyxTQUFMLENBQWVSLE9BQU8sQ0FBQ1MsUUFBdkIsQ0FqTjdCLDJDQWtOMkJGLElBQUksQ0FBQ0MsU0FBTCxDQUFlUixPQUFPLENBQUNVLE1BQXZCLENBbE4zQjtBQXFPRCxDQXRPTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQge0tFUExFUl9HTF9WRVJTSU9OLCBFWFBPUlRfSFRNTF9NQVBfTU9ERVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNyZWF0ZSBhbiBodG1sIGZpbGUgd2hpY2ggd2lsbCBpbmxjdWRlIGtlcGxlciBhbmQgbWFwIGRhdGFcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIE9iamVjdCB0aGF0IGNvbGxlY3RzIGFsbCBuZWNlc3NhcnkgZGF0YSB0byAgY3JlYXRlIHRoZSBodG1sIGZpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm1hcGJveEFwaUFjY2Vzc1Rva2VuIE1hcGJveCB0b2tlbiB1c2VkIHRvIGZldGNoIG1hcGJveCB0aWxlc1xuICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBvcHRpb25zLmRhdGFzZXRzIERhdGEgdG8gaW5jbHVkZSBpbiB0aGUgbWFwXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5jb25maWcgdGhpcyBvYmplY3Qgd2lsbCBjb250YWluIHRoZSBmdWxsIGtlcGxlci5nbCBpbnN0YW5jZSBjb25maWd1cmF0aW9uIHttYXBTdGF0ZSwgbWFwU3R5bGUsIHZpc1N0YXRlfVxuICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gd2hpY2ggdmVyc2lvbiBvZiBLZXBsZXIuZ2wgdG8gbG9hZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGV4cG9ydE1hcFRvSFRNTCA9IChvcHRpb25zLCB2ZXJzaW9uID0gS0VQTEVSX0dMX1ZFUlNJT04pID0+IHtcbiAgcmV0dXJuIGBcbiAgICA8IURPQ1RZUEUgaHRtbD5cbiAgICA8aHRtbD5cbiAgICAgIDxoZWFkPlxuICAgICAgICA8bWV0YSBjaGFyc2V0PVwiVVRGLThcIi8+XG4gICAgICAgIDx0aXRsZT5LZXBsZXIuZ2wgZW1iZWRkZWQgbWFwPC90aXRsZT5cblxuICAgICAgICA8IS0tVWJlciBGb250LS0+XG4gICAgICAgIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiaHR0cHM6Ly9kMWEzZjRzcGF6enJwNC5jbG91ZGZyb250Lm5ldC9rZXBsZXIuZ2wvdWJlci1mb250cy80LjAuMC9zdXBlcmZpbmUuY3NzXCI+XG5cbiAgICAgICAgPCEtLU1hcEJveCBjc3MtLT5cbiAgICAgICAgPGxpbmsgaHJlZj1cImh0dHBzOi8vYXBpLnRpbGVzLm1hcGJveC5jb20vbWFwYm94LWdsLWpzL3YxLjEuMS9tYXBib3gtZ2wuY3NzXCIgcmVsPVwic3R5bGVzaGVldFwiPlxuXG4gICAgICAgIDwhLeKAlCBmYWNlYm9vayBvcGVuIGdyYXBoIHRhZ3MgLS0+XG4gICAgICAgIDxtZXRhIHByb3BlcnR5PVwib2c6dXJsXCIgY29udGVudD1cImh0dHA6Ly9rZXBsZXIuZ2wvXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzp0aXRsZVwiIGNvbnRlbnQ9XCJMYXJnZS1zY2FsZSBXZWJHTC1wb3dlcmVkIEdlb3NwYXRpYWwgRGF0YSBWaXN1YWxpemF0aW9uIFRvb2xcIiAvPlxuICAgICAgICA8bWV0YSBwcm9wZXJ0eT1cIm9nOmRlc2NyaXB0aW9uXCIgY29udGVudD1cIktlcGxlci5nbCBpcyBhIHBvd2VyZnVsIHdlYi1iYXNlZCBnZW9zcGF0aWFsIGRhdGEgYW5hbHlzaXMgdG9vbC4gQnVpbHQgb24gYSBoaWdoIHBlcmZvcm1hbmNlIHJlbmRlcmluZyBlbmdpbmUgYW5kIGRlc2lnbmVkIGZvciBsYXJnZS1zY2FsZSBkYXRhIHNldHMuXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzpzaXRlX25hbWVcIiBjb250ZW50PVwia2VwbGVyLmdsXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzppbWFnZVwiIGNvbnRlbnQ9XCJodHRwczovL2QxYTNmNHNwYXp6cnA0LmNsb3VkZnJvbnQubmV0L2tlcGxlci5nbC9rZXBsZXIuZ2wtbWV0YS10YWcucG5nXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzppbWFnZTp0eXBlXCIgY29udGVudD1cImltYWdlL3BuZ1wiIC8+XG4gICAgICAgIDxtZXRhIHByb3BlcnR5PVwib2c6aW1hZ2U6d2lkdGhcIiBjb250ZW50PVwiODAwXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzppbWFnZTpoZWlnaHRcIiBjb250ZW50PVwiODAwXCIgLz5cblxuICAgICAgICA8IS3igJQgdHdpdHRlciBjYXJkIHRhZ3MgLS0+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ0d2l0dGVyOmNhcmRcIiBjb250ZW50PVwic3VtbWFyeV9sYXJnZV9pbWFnZVwiPlxuICAgICAgICA8bWV0YSBuYW1lPVwidHdpdHRlcjpzaXRlXCIgY29udGVudD1cIkB1YmVyXCI+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ0d2l0dGVyOmNyZWF0b3JcIiBjb250ZW50PVwiQHViZXJcIj5cbiAgICAgICAgPG1ldGEgbmFtZT1cInR3aXR0ZXI6dGl0bGVcIiBjb250ZW50PVwiTGFyZ2Utc2NhbGUgV2ViR0wtcG93ZXJlZCBHZW9zcGF0aWFsIERhdGEgVmlzdWFsaXphdGlvbiBUb29sXCI+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ0d2l0dGVyOmRlc2NyaXB0aW9uXCIgY29udGVudD1cIktlcGxlci5nbCBpcyBhIHBvd2VyZnVsIHdlYi1iYXNlZCBnZW9zcGF0aWFsIGRhdGEgYW5hbHlzaXMgdG9vbC4gQnVpbHQgb24gYSBoaWdoIHBlcmZvcm1hbmNlIHJlbmRlcmluZyBlbmdpbmUgYW5kIGRlc2lnbmVkIGZvciBsYXJnZS1zY2FsZSBkYXRhIHNldHMuXCI+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ0d2l0dGVyOmltYWdlXCIgY29udGVudD1cImh0dHBzOi8vZDFhM2Y0c3BhenpycDQuY2xvdWRmcm9udC5uZXQva2VwbGVyLmdsL2tlcGxlci5nbC1tZXRhLXRhZy5wbmdcIiAvPlxuXG4gICAgICAgIDwhLS0gTG9hZCBSZWFjdC9SZWR1eCAtLT5cbiAgICAgICAgPHNjcmlwdCBzcmM9XCJodHRwczovL3VucGtnLmNvbS9yZWFjdEAxNi44LjQvdW1kL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzXCIgY3Jvc3NvcmlnaW4+PC9zY3JpcHQ+XG4gICAgICAgIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vcmVhY3QtZG9tQDE2LjguNC91bWQvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXCIgY3Jvc3NvcmlnaW4+PC9zY3JpcHQ+XG4gICAgICAgIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vcmVkdXhAMy43LjIvZGlzdC9yZWR1eC5qc1wiIGNyb3Nzb3JpZ2luPjwvc2NyaXB0PlxuICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vdW5wa2cuY29tL3JlYWN0LXJlZHV4QDcuMS4zL2Rpc3QvcmVhY3QtcmVkdXgubWluLmpzXCIgY3Jvc3NvcmlnaW4+PC9zY3JpcHQ+XG4gICAgICAgIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vc3R5bGVkLWNvbXBvbmVudHNANC4xLjMvZGlzdC9zdHlsZWQtY29tcG9uZW50cy5taW4uanNcIiBjcm9zc29yaWdpbj48L3NjcmlwdD5cblxuICAgICAgICA8IS0tIExvYWQgS2VwbGVyLmdsIC0tPlxuICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vdW5wa2cuY29tL2tlcGxlci5nbEAke3ZlcnNpb259L3VtZC9rZXBsZXJnbC5taW4uanNcIiBjcm9zc29yaWdpbj48L3NjcmlwdD5cblxuICAgICAgICA8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+XG4gICAgICAgICAgYm9keSB7bWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBvdmVyZmxvdzogaGlkZGVuO31cbiAgICAgICAgPC9zdHlsZT5cblxuICAgICAgICA8IS0tTWFwQm94IHRva2VuLS0+XG4gICAgICAgIDxzY3JpcHQ+XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogUHJvdmlkZSB5b3VyIE1hcEJveCBUb2tlblxuICAgICAgICAgICAqKi9cbiAgICAgICAgICBjb25zdCBNQVBCT1hfVE9LRU4gPSAnJHtvcHRpb25zLm1hcGJveEFwaUFjY2Vzc1Rva2VuIHx8ICdQUk9WSURFX01BUEJPWF9UT0tFTid9JztcbiAgICAgICAgICBjb25zdCBXQVJOSU5HX01FU1NBR0UgPSAnUGxlYXNlIFByb3ZpZGUgYSBNYXBib3ggVG9rZW4gaW4gb3JkZXIgdG8gdXNlIEtlcGxlci5nbC4gRWRpdCB0aGlzIGZpbGUgYW5kIGZpbGwgb3V0IE1BUEJPWF9UT0tFTiB3aXRoIHlvdXIgYWNjZXNzIGtleSc7XG4gICAgICAgIDwvc2NyaXB0PlxuXG4gICAgICAgIDwhLS0gR0E6IERlbGV0ZSB0aGlzIGFzIHlvdSB3aXNoLCBIb3dldmVyIHRvIHBhdCBvdXJzZWx2ZXMgb24gdGhlIGJhY2ssIHdlIG9ubHkgdHJhY2sgYW5vbnltb3VzIHBhZ2V2aWV3IHRvIHVuZGVyc3RhbmQgaG93IG1hbnkgcGVvcGxlIGFyZSB1c2luZyBrZXBsZXIuZ2wuIC0tPlxuICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgIChmdW5jdGlvbihpLHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lbcl09aVtyXXx8ZnVuY3Rpb24oKXtcbiAgICAgICAgICAoaVtyXS5xPWlbcl0ucXx8W10pLnB1c2goYXJndW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxlbWVudChvKSxcbiAgICAgICAgICBtPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0pXG4gICAgICAgICAgfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdodHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdnYScpO1xuICAgICAgICAgIGdhKCdjcmVhdGUnLCAnVUEtNjQ2OTQ0MDQtMTknLCB7XG4gICAgICAgICAgICAnc3RvcmFnZSc6ICdub25lJyxcbiAgICAgICAgICAgICdjbGllbnRJZCc6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdnYTpjbGllbnRJZCcpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZ2EoZnVuY3Rpb24odHJhY2tlcikge1xuICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZ2E6Y2xpZW50SWQnLCB0cmFja2VyLmdldCgnY2xpZW50SWQnKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZ2EoJ3NldCcsICdjaGVja1Byb3RvY29sVGFzaycsIG51bGwpOyAvLyBEaXNhYmxlIGZpbGUgcHJvdG9jb2wgY2hlY2tpbmcuXG4gICAgICAgICAgZ2EoJ3NldCcsICdjaGVja1N0b3JhZ2VUYXNrJywgbnVsbCk7IC8vIERpc2FibGUgY29va2llIHN0b3JhZ2UgY2hlY2tpbmcuXG4gICAgICAgICAgZ2EoJ3NldCcsICdoaXN0b3J5SW1wb3J0VGFzaycsIG51bGwpOyAvLyBEaXNhYmxlIGhpc3RvcnkgY2hlY2tpbmcgKHJlcXVpcmVzIHJlYWRpbmcgZnJvbSBjb29raWVzKS5cbiAgICAgICAgICBnYSgnc2V0JywgJ3BhZ2UnLCAna2VwbGVyZ2wtaHRtbCcpO1xuICAgICAgICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDwhLS0gV2Ugd2lsbCBwdXQgb3VyIFJlYWN0IGNvbXBvbmVudCBpbnNpZGUgdGhpcyBkaXYuIC0tPlxuICAgICAgICA8ZGl2IGlkPVwiYXBwXCI+XG4gICAgICAgICAgPCEtLSBLZXBsZXIuZ2wgbWFwIHdpbGwgYmUgcGxhY2VkIGhlcmUtLT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBMb2FkIG91ciBSZWFjdCBjb21wb25lbnQuIC0tPlxuICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgIC8qIFZhbGlkYXRlIE1hcGJveCBUb2tlbiAqL1xuICAgICAgICAgIGlmICgoTUFQQk9YX1RPS0VOIHx8ICcnKSA9PT0gJycgfHwgTUFQQk9YX1RPS0VOID09PSAnUFJPVklERV9NQVBCT1hfVE9LRU4nKSB7XG4gICAgICAgICAgICBhbGVydChXQVJOSU5HX01FU1NBR0UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8qKiBTVE9SRSAqKi9cbiAgICAgICAgICBjb25zdCByZWR1Y2VycyA9IChmdW5jdGlvbiBjcmVhdGVSZWR1Y2VycyhyZWR1eCwga2VwbGVyR2wpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1eC5jb21iaW5lUmVkdWNlcnMoe1xuICAgICAgICAgICAgICAvLyBtb3VudCBrZXBsZXJHbCByZWR1Y2VyXG4gICAgICAgICAgICAgIGtlcGxlckdsOiBrZXBsZXJHbC5rZXBsZXJHbFJlZHVjZXIuaW5pdGlhbFN0YXRlKHtcbiAgICAgICAgICAgICAgICB1aVN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICByZWFkT25seTogJHtvcHRpb25zLm1vZGUgPT09IEVYUE9SVF9IVE1MX01BUF9NT0RFUy5SRUFEfSxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RhbDogbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0oUmVkdXgsIEtlcGxlckdsKSk7XG5cbiAgICAgICAgICBjb25zdCBtaWRkbGVXYXJlcyA9IChmdW5jdGlvbiBjcmVhdGVNaWRkbGV3YXJlcyhrZXBsZXJHbCkge1xuICAgICAgICAgICAgcmV0dXJuIGtlcGxlckdsLmVuaGFuY2VSZWR1eE1pZGRsZXdhcmUoW1xuICAgICAgICAgICAgICAvLyBBZGQgb3RoZXIgbWlkZGxld2FyZXMgaGVyZVxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfShLZXBsZXJHbCkpO1xuXG4gICAgICAgICAgY29uc3QgZW5oYW5jZXJzID0gKGZ1bmN0aW9uIGNyYWV0ZUVuaGFuY2VycyhyZWR1eCwgbWlkZGxlcykge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHV4LmFwcGx5TWlkZGxld2FyZSguLi5taWRkbGVzKTtcbiAgICAgICAgICB9KFJlZHV4LCBtaWRkbGVXYXJlcykpO1xuXG4gICAgICAgICAgY29uc3Qgc3RvcmUgPSAoZnVuY3Rpb24gY3JlYXRlU3RvcmUocmVkdXgsIGVuaGFuY2Vycykge1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge307XG5cbiAgICAgICAgICAgIHJldHVybiByZWR1eC5jcmVhdGVTdG9yZShcbiAgICAgICAgICAgICAgcmVkdWNlcnMsXG4gICAgICAgICAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgICAgICAgICAgcmVkdXguY29tcG9zZShlbmhhbmNlcnMpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0oUmVkdXgsIGVuaGFuY2VycykpO1xuICAgICAgICAgIC8qKiBFTkQgU1RPUkUgKiovXG5cbiAgICAgICAgICAvKiogQ09NUE9ORU5UUyAqKi9cbiAgICAgICAgICB2YXIgS2VwbGVyRWxlbWVudCA9IChmdW5jdGlvbiBtYWtlS2VwbGVyRWxlbWVudChyZWFjdCwga2VwbGVyR2wsIG1hcGJveFRva2VuKSB7XG4gICAgICAgICAgICB2YXIgTG9nb1N2ZyA9IGZ1bmN0aW9uIExvZ29TdmcoKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6IFwibG9nby1jb250YWluZXJcIiwgc3R5bGU6IHtwb3NpdGlvbjogJ2ZpeGVkJywgekluZGV4OiAxMDAwMCwgcGFkZGluZzogJzRweCd9IH0sXG4gICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICBcInN2Z1wiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcImtlcGxlcl9nbF9fbG9nb1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwN3B4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjIxcHhcIixcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94OiBcIjAgMCAxMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgIFwiZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgxMy41MDAwMDAsIDEzLjUwMDAwMCkgcm90YXRlKDQ1LjAwMDAwMCkgdHJhbnNsYXRlKC0xMy41MDAwMDAsIC0xMy41MDAwMDApIHRyYW5zbGF0ZSg0LjAwMDAwMCwgNC4wMDAwMDApXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7IHg6IFwiMFwiLCB5OiBcIjZcIiwgdHJhbnNmb3JtOiBcIm1hdHJpeCgyLjUzNTE4MWUtMDYgMSAtMSAyLjUzNTE4MWUtMDYgMTguMTEwNyA2LjAzNjkpXCIsIGZpbGw6IFwiIzUzNUM2Q1wiLCB3aWR0aDogXCIxMi4xXCIsIGhlaWdodDogXCIxMi4xXCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwgeyB4OiBcIjZcIiwgeTogXCIwXCIsIHRyYW5zZm9ybTogXCJtYXRyaXgoMi41MzUxODJlLTA2IDEgLTEgMi41MzUxODJlLTA2IDE4LjExMDcgLTYuMDM2OSlcIiwgZmlsbDpcIiMxRkJBRDZcIiwgd2lkdGg6IFwiMTIuMVwiLCBoZWlnaHQ6IFwiMTIuMVwiIH0pXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgXCJnXCIsXG4gICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk0zOSw4LjdoMi4ybC0yLjgsNC4ybDIuOSw1LjFIMzlsLTIuNC00LjJoLTEuM1YxOGgtMlY1bDItMC4xdjcuM2gxLjNMMzksOC43elwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNNDIuNCwxMy4zYzAtMS41LDAuNC0yLjcsMS4xLTMuNXMxLjgtMS4yLDMuMS0xLjJjMS4zLDAsMi4yLDAuNCwyLjgsMS4xYzAuNiwwLjcsMC45LDEuOCwwLjksMy4zIGMwLDAuNCwwLDAuOCwwLDEuMWgtNS44YzAsMS42LDAuOCwyLjQsMi40LDIuNGMxLDAsMi0wLjIsMi45LTAuNmwwLjIsMS43Yy0wLjQsMC4yLTAuOSwwLjQtMS40LDAuNXMtMS4xLDAuMi0xLjcsMC4yIGMtMS41LDAtMi42LTAuNC0zLjMtMS4yQzQyLjgsMTYuMSw0Mi40LDE0LjksNDIuNCwxMy4zeiBNNDYuNiwxMC4xYy0wLjcsMC0xLjIsMC4yLTEuNSwwLjVjLTAuNCwwLjQtMC42LDAuOS0wLjYsMS43aDQgYzAtMC44LTAuMi0xLjQtMC41LTEuN1M0Ny4yLDEwLjEsNDYuNiwxMC4xelwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNNTcuMSwxOC4yYy0xLDAtMS44LTAuMy0yLjMtMC45bDAsMGwwLDEuM3YyLjVoLTJWOC43aDEuNWwwLjMsMC45aDBjMC4zLTAuMywwLjctMC42LDEuMi0wLjcgYzAuNC0wLjIsMC45LTAuMywxLjQtMC4zYzEuMiwwLDIuMSwwLjQsMi43LDEuMWMwLjYsMC43LDAuOSwyLDAuOSwzLjdjMCwxLjYtMC4zLDIuOC0xLDMuN0M1OS4yLDE3LjgsNTguMywxOC4yLDU3LjEsMTguMnogTTU2LjcsMTAuM2MtMC40LDAtMC44LDAuMS0xLjEsMC4yYy0wLjMsMC4yLTAuNiwwLjQtMC44LDAuN3Y0LjNjMC4yLDAuMywwLjQsMC41LDAuNywwLjdjMC4zLDAuMiwwLjcsMC4zLDEuMSwwLjMgYzAuNywwLDEuMi0wLjIsMS42LTAuN2MwLjQtMC41LDAuNS0xLjMsMC41LTIuNWMwLTAuOC0wLjEtMS40LTAuMi0xLjhzLTAuNC0wLjctMC43LTAuOUM1Ny42LDEwLjQsNTcuMiwxMC4zLDU2LjcsMTAuM3pcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTYzLjIsMTZWNWwyLTAuMXYxMC44YzAsMC4zLDAuMSwwLjUsMC4yLDAuNmMwLjEsMC4xLDAuMywwLjIsMC42LDAuMmMwLjMsMCwwLjYsMCwwLjktMC4xVjE4IGMtMC40LDAuMS0xLDAuMi0xLjYsMC4yYy0wLjgsMC0xLjMtMC4yLTEuNy0wLjVTNjMuMiwxNi44LDYzLjIsMTZ6XCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk02OC4yLDEzLjNjMC0xLjUsMC40LTIuNywxLjEtMy41YzAuNy0wLjgsMS44LTEuMiwzLjEtMS4yYzEuMywwLDIuMiwwLjQsMi44LDEuMWMwLjYsMC43LDAuOSwxLjgsMC45LDMuMyBjMCwwLjQsMCwwLjgsMCwxLjFoLTUuOGMwLDEuNiwwLjgsMi40LDIuNCwyLjRjMSwwLDItMC4yLDIuOS0wLjZsMC4yLDEuN2MtMC40LDAuMi0wLjksMC40LTEuNCwwLjVzLTEuMSwwLjItMS43LDAuMiBjLTEuNSwwLTIuNi0wLjQtMy4zLTEuMkM2OC42LDE2LjEsNjguMiwxNC45LDY4LjIsMTMuM3ogTTcyLjQsMTAuMWMtMC43LDAtMS4yLDAuMi0xLjUsMC41Yy0wLjQsMC40LTAuNiwwLjktMC42LDEuN2g0IGMwLTAuOC0wLjItMS40LTAuNS0xLjdTNzMsMTAuMSw3Mi40LDEwLjF6XCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk04MC4yLDguN2wwLjEsMS43aDBjMC4zLTAuNiwwLjctMS4xLDEuMS0xLjRjMC40LTAuMywxLTAuNSwxLjYtMC41YzAuNCwwLDAuNywwLDEsMC4xbC0wLjEsMiBjLTAuMy0wLjEtMC43LTAuMi0xLTAuMmMtMC43LDAtMS4zLDAuMy0xLjcsMC44Yy0wLjQsMC41LTAuNywxLjItMC43LDIuMVYxOGgtMlY4LjdIODAuMnpcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTgzLjgsMTdjMC0wLjgsMC40LTEuMiwxLjItMS4yYzAuOCwwLDEuMiwwLjQsMS4yLDEuMmMwLDAuOC0wLjQsMS4xLTEuMiwxLjFDODQuMiwxOC4yLDgzLjgsMTcuOCw4My44LDE3elwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNODguNSwxOC43YzAtMC44LDAuNC0xLjQsMS4yLTEuOGMtMC42LTAuMy0wLjktMC44LTAuOS0xLjVjMC0wLjcsMC40LTEuMiwxLjEtMS42Yy0wLjMtMC4zLTAuNi0wLjYtMC43LTAuOSBjLTAuMi0wLjQtMC4yLTAuOC0wLjItMS4zYzAtMSwwLjMtMS44LDAuOS0yLjNjMC42LTAuNSwxLjYtMC44LDIuOC0wLjhjMC41LDAsMSwwLDEuNCwwLjFjMC40LDAuMSwwLjgsMC4yLDEuMSwwLjRsMi40LTAuMnYxLjUgaC0xLjVjMC4yLDAuNCwwLjIsMC44LDAuMiwxLjNjMCwxLTAuMywxLjctMC45LDIuMnMtMS41LDAuOC0yLjcsMC44Yy0wLjcsMC0xLjItMC4xLTEuNi0wLjJjLTAuMSwwLjEtMC4yLDAuMi0wLjMsMC4zIGMtMC4xLDAuMS0wLjEsMC4yLTAuMSwwLjRjMCwwLjIsMC4xLDAuMywwLjIsMC40YzAuMSwwLjEsMC4zLDAuMiwwLjYsMC4ybDIuNywwLjJjMSwwLjEsMS43LDAuMywyLjIsMC42YzAuNSwwLjMsMC44LDAuOSwwLjgsMS43IGMwLDAuNi0wLjIsMS4xLTAuNSwxLjVjLTAuNCwwLjQtMC45LDAuOC0xLjUsMWMtMC43LDAuMi0xLjUsMC40LTIuNCwwLjRjLTEuMywwLTIuMy0wLjItMy0wLjZDODguOCwyMC4xLDg4LjUsMTkuNSw4OC41LDE4Ljd6IE05NS4xLDE4LjRjMC0wLjMtMC4xLTAuNS0wLjMtMC43cy0wLjYtMC4yLTEuMS0wLjNsLTIuNy0wLjNjLTAuMiwwLjEtMC40LDAuMy0wLjUsMC41Yy0wLjEsMC4yLTAuMiwwLjQtMC4yLDAuNiBjMCwwLjQsMC4yLDAuOCwwLjUsMWMwLjQsMC4yLDEsMC4zLDEuOCwwLjNDOTQuMiwxOS41LDk1LjEsMTkuMiw5NS4xLDE4LjR6IE05NC4zLDExLjVjMC0wLjYtMC4xLTEtMC40LTEuMiBjLTAuMy0wLjItMC43LTAuMy0xLjMtMC4zYy0wLjcsMC0xLjEsMC4xLTEuNCwwLjNjLTAuMywwLjItMC40LDAuNi0wLjQsMS4yczAuMSwxLDAuNCwxLjJjMC4zLDAuMiwwLjcsMC4zLDEuNCwwLjMgYzAuNiwwLDEuMS0wLjEsMS4zLTAuNFM5NC4zLDEyLDk0LjMsMTEuNXpcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTk5LjQsMTZWNWwyLTAuMXYxMC44YzAsMC4zLDAuMSwwLjUsMC4yLDAuNmMwLjEsMC4xLDAuMywwLjIsMC42LDAuMmMwLjMsMCwwLjYsMCwwLjktMC4xVjE4IGMtMC40LDAuMS0xLDAuMi0xLjYsMC4yYy0wLjgsMC0xLjMtMC4yLTEuNy0wLjVTOTkuNCwxNi44LDk5LjQsMTZ6XCIgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBBcHAoKSB7XG4gICAgICAgICAgICAgIHZhciByb290RWxtID0gcmVhY3QudXNlUmVmKG51bGwpO1xuICAgICAgICAgICAgICB2YXIgX3VzZVN0YXRlID0gcmVhY3QudXNlU3RhdGUoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgdmFyIHdpbmRvd0RpbWVuc2lvbiA9IF91c2VTdGF0ZVswXTtcbiAgICAgICAgICAgICAgdmFyIHNldERpbWVuc2lvbiA9IF91c2VTdGF0ZVsxXTtcbiAgICAgICAgICAgICAgcmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uIHNpZGVFZmZlY3QoKXtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVSZXNpemUoKSB7XG4gICAgICAgICAgICAgICAgICBzZXREaW1lbnNpb24oe3dpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCwgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHR9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVzaXplKTt9O1xuICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgIHJldHVybiByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHtzdHlsZToge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiAwLCB3aWR0aDogJzEwMHZ3JywgaGVpZ2h0OiAnMTAwdmgnfX0sXG4gICAgICAgICAgICAgICAgJHtvcHRpb25zLm1vZGUgPT09IEVYUE9SVF9IVE1MX01BUF9NT0RFUy5SRUFEID8gJ0xvZ29TdmcoKSwnIDogJyd9XG4gICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChrZXBsZXJHbC5LZXBsZXJHbCwge1xuICAgICAgICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IG1hcGJveFRva2VuLFxuICAgICAgICAgICAgICAgICAgaWQ6IFwibWFwXCIsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogd2luZG93RGltZW5zaW9uLndpZHRoLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB3aW5kb3dEaW1lbnNpb24uaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0oUmVhY3QsIEtlcGxlckdsLCBNQVBCT1hfVE9LRU4pKTtcblxuICAgICAgICAgIGNvbnN0IGFwcCA9IChmdW5jdGlvbiBjcmVhdGVSZWFjdFJlZHV4UHJvdmlkZXIocmVhY3QsIHJlYWN0UmVkdXgsIEtlcGxlckVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICByZWFjdFJlZHV4LlByb3ZpZGVyLFxuICAgICAgICAgICAgICB7c3RvcmV9LFxuICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KEtlcGxlckVsZW1lbnQsIG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfShSZWFjdCwgUmVhY3RSZWR1eCwgS2VwbGVyRWxlbWVudCkpO1xuICAgICAgICAgIC8qKiBFTkQgQ09NUE9ORU5UUyAqKi9cblxuICAgICAgICAgIC8qKiBSZW5kZXIgKiovXG4gICAgICAgICAgKGZ1bmN0aW9uIHJlbmRlcihyZWFjdCwgcmVhY3RET00sIGFwcCkge1xuICAgICAgICAgICAgcmVhY3RET00ucmVuZGVyKGFwcCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcCcpKTtcbiAgICAgICAgICB9KFJlYWN0LCBSZWFjdERPTSwgYXBwKSk7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgICA8IS0tIFRoZSBuZXh0IHNjcmlwdCB3aWxsIHNob3cgaG93IHRvIGludGVyYWN0IGRpcmVjdGx5IHdpdGggS2VwbGVyIG1hcCBzdG9yZSAtLT5cbiAgICAgICAgPHNjcmlwdD5cbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBDdXN0b21pemUgbWFwLlxuICAgICAgICAgICAqIEluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbiB5b3UgY2FuIHVzZSB0aGUgc3RvcmUgb2JqZWN0IHRvIGRpc3BhdGNoIEtlcGxlci5nbCBhY3Rpb25zXG4gICAgICAgICAgICogdG8gYWRkIG5ldyBkYXRhIGFuZCBjdXN0b21pemUgYmVoYXZpb3JcbiAgICAgICAgICAgKi9cbiAgICAgICAgICAoZnVuY3Rpb24gY3VzdG9taXplKGtlcGxlckdsLCBzdG9yZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0YXNldHMgPSAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMuZGF0YXNldHMpfTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucy5jb25maWcpfTtcblxuICAgICAgICAgICAgY29uc3QgbG9hZGVkRGF0YSA9IGtlcGxlckdsLktlcGxlckdsU2NoZW1hLmxvYWQoXG4gICAgICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgICAgICBjb25maWdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGtlcGxlckdsLmFkZERhdGFUb01hcCh7XG4gICAgICAgICAgICAgIGRhdGFzZXRzOiBsb2FkZWREYXRhLmRhdGFzZXRzLFxuICAgICAgICAgICAgICBjb25maWc6IGxvYWRlZERhdGEuY29uZmlnLFxuICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgY2VudGVyTWFwOiBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfShLZXBsZXJHbCwgc3RvcmUpKVxuICAgICAgICA8L3NjcmlwdD5cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gIGA7XG59O1xuIl19
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtbWFwLWh0bWwudHMiXSwibmFtZXMiOlsiZXhwb3J0TWFwVG9IVE1MIiwib3B0aW9ucyIsInZlcnNpb24iLCJLRVBMRVJfR0xfVkVSU0lPTiIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibW9kZSIsIkVYUE9SVF9IVE1MX01BUF9NT0RFUyIsIlJFQUQiLCJKU09OIiwic3RyaW5naWZ5IiwiZGF0YXNldHMiLCJjb25maWciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQTs7QUFKQTtBQUNBO0FBRUE7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1BLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBQ0MsT0FBRCxFQUEwQztBQUFBLE1BQWhDQyxPQUFnQyx1RUFBdEJDLDRCQUFzQjtBQUN2RSx3aEZBdUNpREQsT0F2Q2pELHFVQWtEZ0NELE9BQU8sQ0FBQ0csb0JBQVIsSUFBZ0Msc0JBbERoRSw0bEVBNkY0QkgsT0FBTyxDQUFDSSxJQUFSLEtBQWlCQyxpQ0FBc0JDLElBN0ZuRSxpcE5BZ0xnQk4sT0FBTyxDQUFDSSxJQUFSLEtBQWlCQyxpQ0FBc0JDLElBQXZDLEdBQThDLFlBQTlDLEdBQTZELEVBaEw3RSw0eENBaU42QkMsSUFBSSxDQUFDQyxTQUFMLENBQWVSLE9BQU8sQ0FBQ1MsUUFBdkIsQ0FqTjdCLDJDQWtOMkJGLElBQUksQ0FBQ0MsU0FBTCxDQUFlUixPQUFPLENBQUNVLE1BQXZCLENBbE4zQjtBQXFPRCxDQXRPTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQge0tFUExFUl9HTF9WRVJTSU9OLCBFWFBPUlRfSFRNTF9NQVBfTU9ERVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNyZWF0ZSBhbiBodG1sIGZpbGUgd2hpY2ggd2lsbCBpbmxjdWRlIGtlcGxlciBhbmQgbWFwIGRhdGFcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIE9iamVjdCB0aGF0IGNvbGxlY3RzIGFsbCBuZWNlc3NhcnkgZGF0YSB0byAgY3JlYXRlIHRoZSBodG1sIGZpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm1hcGJveEFwaUFjY2Vzc1Rva2VuIE1hcGJveCB0b2tlbiB1c2VkIHRvIGZldGNoIG1hcGJveCB0aWxlc1xuICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBvcHRpb25zLmRhdGFzZXRzIERhdGEgdG8gaW5jbHVkZSBpbiB0aGUgbWFwXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5jb25maWcgdGhpcyBvYmplY3Qgd2lsbCBjb250YWluIHRoZSBmdWxsIGtlcGxlci5nbCBpbnN0YW5jZSBjb25maWd1cmF0aW9uIHttYXBTdGF0ZSwgbWFwU3R5bGUsIHZpc1N0YXRlfVxuICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gd2hpY2ggdmVyc2lvbiBvZiBLZXBsZXIuZ2wgdG8gbG9hZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGV4cG9ydE1hcFRvSFRNTCA9IChvcHRpb25zLCB2ZXJzaW9uID0gS0VQTEVSX0dMX1ZFUlNJT04pID0+IHtcbiAgcmV0dXJuIGBcbiAgICA8IURPQ1RZUEUgaHRtbD5cbiAgICA8aHRtbD5cbiAgICAgIDxoZWFkPlxuICAgICAgICA8bWV0YSBjaGFyc2V0PVwiVVRGLThcIi8+XG4gICAgICAgIDx0aXRsZT5LZXBsZXIuZ2wgZW1iZWRkZWQgbWFwPC90aXRsZT5cblxuICAgICAgICA8IS0tVWJlciBGb250LS0+XG4gICAgICAgIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiaHR0cHM6Ly9kMWEzZjRzcGF6enJwNC5jbG91ZGZyb250Lm5ldC9rZXBsZXIuZ2wvdWJlci1mb250cy80LjAuMC9zdXBlcmZpbmUuY3NzXCI+XG5cbiAgICAgICAgPCEtLU1hcEJveCBjc3MtLT5cbiAgICAgICAgPGxpbmsgaHJlZj1cImh0dHBzOmh0dHBzOi8vdW5wa2cuY29tL21hcGxpYnJlLWdsQF4zL2Rpc3QvbWFwbGlicmUtZ2wuY3NzXCIgcmVsPVwic3R5bGVzaGVldFwiPlxuXG4gICAgICAgIDwhLeKAlCBmYWNlYm9vayBvcGVuIGdyYXBoIHRhZ3MgLS0+XG4gICAgICAgIDxtZXRhIHByb3BlcnR5PVwib2c6dXJsXCIgY29udGVudD1cImh0dHA6Ly9rZXBsZXIuZ2wvXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzp0aXRsZVwiIGNvbnRlbnQ9XCJMYXJnZS1zY2FsZSBXZWJHTC1wb3dlcmVkIEdlb3NwYXRpYWwgRGF0YSBWaXN1YWxpemF0aW9uIFRvb2xcIiAvPlxuICAgICAgICA8bWV0YSBwcm9wZXJ0eT1cIm9nOmRlc2NyaXB0aW9uXCIgY29udGVudD1cIktlcGxlci5nbCBpcyBhIHBvd2VyZnVsIHdlYi1iYXNlZCBnZW9zcGF0aWFsIGRhdGEgYW5hbHlzaXMgdG9vbC4gQnVpbHQgb24gYSBoaWdoIHBlcmZvcm1hbmNlIHJlbmRlcmluZyBlbmdpbmUgYW5kIGRlc2lnbmVkIGZvciBsYXJnZS1zY2FsZSBkYXRhIHNldHMuXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzpzaXRlX25hbWVcIiBjb250ZW50PVwia2VwbGVyLmdsXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzppbWFnZVwiIGNvbnRlbnQ9XCJodHRwczovL2QxYTNmNHNwYXp6cnA0LmNsb3VkZnJvbnQubmV0L2tlcGxlci5nbC9rZXBsZXIuZ2wtbWV0YS10YWcucG5nXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzppbWFnZTp0eXBlXCIgY29udGVudD1cImltYWdlL3BuZ1wiIC8+XG4gICAgICAgIDxtZXRhIHByb3BlcnR5PVwib2c6aW1hZ2U6d2lkdGhcIiBjb250ZW50PVwiODAwXCIgLz5cbiAgICAgICAgPG1ldGEgcHJvcGVydHk9XCJvZzppbWFnZTpoZWlnaHRcIiBjb250ZW50PVwiODAwXCIgLz5cblxuICAgICAgICA8IS3igJQgdHdpdHRlciBjYXJkIHRhZ3MgLS0+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ0d2l0dGVyOmNhcmRcIiBjb250ZW50PVwic3VtbWFyeV9sYXJnZV9pbWFnZVwiPlxuICAgICAgICA8bWV0YSBuYW1lPVwidHdpdHRlcjpzaXRlXCIgY29udGVudD1cIkB1YmVyXCI+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ0d2l0dGVyOmNyZWF0b3JcIiBjb250ZW50PVwiQHViZXJcIj5cbiAgICAgICAgPG1ldGEgbmFtZT1cInR3aXR0ZXI6dGl0bGVcIiBjb250ZW50PVwiTGFyZ2Utc2NhbGUgV2ViR0wtcG93ZXJlZCBHZW9zcGF0aWFsIERhdGEgVmlzdWFsaXphdGlvbiBUb29sXCI+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ0d2l0dGVyOmRlc2NyaXB0aW9uXCIgY29udGVudD1cIktlcGxlci5nbCBpcyBhIHBvd2VyZnVsIHdlYi1iYXNlZCBnZW9zcGF0aWFsIGRhdGEgYW5hbHlzaXMgdG9vbC4gQnVpbHQgb24gYSBoaWdoIHBlcmZvcm1hbmNlIHJlbmRlcmluZyBlbmdpbmUgYW5kIGRlc2lnbmVkIGZvciBsYXJnZS1zY2FsZSBkYXRhIHNldHMuXCI+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ0d2l0dGVyOmltYWdlXCIgY29udGVudD1cImh0dHBzOi8vZDFhM2Y0c3BhenpycDQuY2xvdWRmcm9udC5uZXQva2VwbGVyLmdsL2tlcGxlci5nbC1tZXRhLXRhZy5wbmdcIiAvPlxuXG4gICAgICAgIDwhLS0gTG9hZCBSZWFjdC9SZWR1eCAtLT5cbiAgICAgICAgPHNjcmlwdCBzcmM9XCJodHRwczovL3VucGtnLmNvbS9yZWFjdEAxNi44LjQvdW1kL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzXCIgY3Jvc3NvcmlnaW4+PC9zY3JpcHQ+XG4gICAgICAgIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vcmVhY3QtZG9tQDE2LjguNC91bWQvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXCIgY3Jvc3NvcmlnaW4+PC9zY3JpcHQ+XG4gICAgICAgIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vcmVkdXhAMy43LjIvZGlzdC9yZWR1eC5qc1wiIGNyb3Nzb3JpZ2luPjwvc2NyaXB0PlxuICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vdW5wa2cuY29tL3JlYWN0LXJlZHV4QDcuMS4zL2Rpc3QvcmVhY3QtcmVkdXgubWluLmpzXCIgY3Jvc3NvcmlnaW4+PC9zY3JpcHQ+XG4gICAgICAgIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vc3R5bGVkLWNvbXBvbmVudHNANC4xLjMvZGlzdC9zdHlsZWQtY29tcG9uZW50cy5taW4uanNcIiBjcm9zc29yaWdpbj48L3NjcmlwdD5cblxuICAgICAgICA8IS0tIExvYWQgS2VwbGVyLmdsIC0tPlxuICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vdW5wa2cuY29tL2tlcGxlci5nbEAke3ZlcnNpb259L3VtZC9rZXBsZXJnbC5taW4uanNcIiBjcm9zc29yaWdpbj48L3NjcmlwdD5cblxuICAgICAgICA8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+XG4gICAgICAgICAgYm9keSB7bWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBvdmVyZmxvdzogaGlkZGVuO31cbiAgICAgICAgPC9zdHlsZT5cblxuICAgICAgICA8IS0tTWFwQm94IHRva2VuLS0+XG4gICAgICAgIDxzY3JpcHQ+XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogUHJvdmlkZSB5b3VyIE1hcEJveCBUb2tlblxuICAgICAgICAgICAqKi9cbiAgICAgICAgICBjb25zdCBNQVBCT1hfVE9LRU4gPSAnJHtvcHRpb25zLm1hcGJveEFwaUFjY2Vzc1Rva2VuIHx8ICdQUk9WSURFX01BUEJPWF9UT0tFTid9JztcbiAgICAgICAgICBjb25zdCBXQVJOSU5HX01FU1NBR0UgPSAnUGxlYXNlIFByb3ZpZGUgYSBNYXBib3ggVG9rZW4gaW4gb3JkZXIgdG8gdXNlIEtlcGxlci5nbC4gRWRpdCB0aGlzIGZpbGUgYW5kIGZpbGwgb3V0IE1BUEJPWF9UT0tFTiB3aXRoIHlvdXIgYWNjZXNzIGtleSc7XG4gICAgICAgIDwvc2NyaXB0PlxuXG4gICAgICAgIDwhLS0gR0E6IERlbGV0ZSB0aGlzIGFzIHlvdSB3aXNoLCBIb3dldmVyIHRvIHBhdCBvdXJzZWx2ZXMgb24gdGhlIGJhY2ssIHdlIG9ubHkgdHJhY2sgYW5vbnltb3VzIHBhZ2V2aWV3IHRvIHVuZGVyc3RhbmQgaG93IG1hbnkgcGVvcGxlIGFyZSB1c2luZyBrZXBsZXIuZ2wuIC0tPlxuICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgIChmdW5jdGlvbihpLHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lbcl09aVtyXXx8ZnVuY3Rpb24oKXtcbiAgICAgICAgICAoaVtyXS5xPWlbcl0ucXx8W10pLnB1c2goYXJndW1lbnRzKX0saVtyXS5sPTEqbmV3IERhdGUoKTthPXMuY3JlYXRlRWxlbWVudChvKSxcbiAgICAgICAgICBtPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0pXG4gICAgICAgICAgfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCdodHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdnYScpO1xuICAgICAgICAgIGdhKCdjcmVhdGUnLCAnVUEtNjQ2OTQ0MDQtMTknLCB7XG4gICAgICAgICAgICAnc3RvcmFnZSc6ICdub25lJyxcbiAgICAgICAgICAgICdjbGllbnRJZCc6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdnYTpjbGllbnRJZCcpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZ2EoZnVuY3Rpb24odHJhY2tlcikge1xuICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZ2E6Y2xpZW50SWQnLCB0cmFja2VyLmdldCgnY2xpZW50SWQnKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZ2EoJ3NldCcsICdjaGVja1Byb3RvY29sVGFzaycsIG51bGwpOyAvLyBEaXNhYmxlIGZpbGUgcHJvdG9jb2wgY2hlY2tpbmcuXG4gICAgICAgICAgZ2EoJ3NldCcsICdjaGVja1N0b3JhZ2VUYXNrJywgbnVsbCk7IC8vIERpc2FibGUgY29va2llIHN0b3JhZ2UgY2hlY2tpbmcuXG4gICAgICAgICAgZ2EoJ3NldCcsICdoaXN0b3J5SW1wb3J0VGFzaycsIG51bGwpOyAvLyBEaXNhYmxlIGhpc3RvcnkgY2hlY2tpbmcgKHJlcXVpcmVzIHJlYWRpbmcgZnJvbSBjb29raWVzKS5cbiAgICAgICAgICBnYSgnc2V0JywgJ3BhZ2UnLCAna2VwbGVyZ2wtaHRtbCcpO1xuICAgICAgICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDwhLS0gV2Ugd2lsbCBwdXQgb3VyIFJlYWN0IGNvbXBvbmVudCBpbnNpZGUgdGhpcyBkaXYuIC0tPlxuICAgICAgICA8ZGl2IGlkPVwiYXBwXCI+XG4gICAgICAgICAgPCEtLSBLZXBsZXIuZ2wgbWFwIHdpbGwgYmUgcGxhY2VkIGhlcmUtLT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBMb2FkIG91ciBSZWFjdCBjb21wb25lbnQuIC0tPlxuICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgIC8qIFZhbGlkYXRlIE1hcGJveCBUb2tlbiAqL1xuICAgICAgICAgIGlmICgoTUFQQk9YX1RPS0VOIHx8ICcnKSA9PT0gJycgfHwgTUFQQk9YX1RPS0VOID09PSAnUFJPVklERV9NQVBCT1hfVE9LRU4nKSB7XG4gICAgICAgICAgICBhbGVydChXQVJOSU5HX01FU1NBR0UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8qKiBTVE9SRSAqKi9cbiAgICAgICAgICBjb25zdCByZWR1Y2VycyA9IChmdW5jdGlvbiBjcmVhdGVSZWR1Y2VycyhyZWR1eCwga2VwbGVyR2wpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1eC5jb21iaW5lUmVkdWNlcnMoe1xuICAgICAgICAgICAgICAvLyBtb3VudCBrZXBsZXJHbCByZWR1Y2VyXG4gICAgICAgICAgICAgIGtlcGxlckdsOiBrZXBsZXJHbC5rZXBsZXJHbFJlZHVjZXIuaW5pdGlhbFN0YXRlKHtcbiAgICAgICAgICAgICAgICB1aVN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICByZWFkT25seTogJHtvcHRpb25zLm1vZGUgPT09IEVYUE9SVF9IVE1MX01BUF9NT0RFUy5SRUFEfSxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RhbDogbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0oUmVkdXgsIEtlcGxlckdsKSk7XG5cbiAgICAgICAgICBjb25zdCBtaWRkbGVXYXJlcyA9IChmdW5jdGlvbiBjcmVhdGVNaWRkbGV3YXJlcyhrZXBsZXJHbCkge1xuICAgICAgICAgICAgcmV0dXJuIGtlcGxlckdsLmVuaGFuY2VSZWR1eE1pZGRsZXdhcmUoW1xuICAgICAgICAgICAgICAvLyBBZGQgb3RoZXIgbWlkZGxld2FyZXMgaGVyZVxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfShLZXBsZXJHbCkpO1xuXG4gICAgICAgICAgY29uc3QgZW5oYW5jZXJzID0gKGZ1bmN0aW9uIGNyYWV0ZUVuaGFuY2VycyhyZWR1eCwgbWlkZGxlcykge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHV4LmFwcGx5TWlkZGxld2FyZSguLi5taWRkbGVzKTtcbiAgICAgICAgICB9KFJlZHV4LCBtaWRkbGVXYXJlcykpO1xuXG4gICAgICAgICAgY29uc3Qgc3RvcmUgPSAoZnVuY3Rpb24gY3JlYXRlU3RvcmUocmVkdXgsIGVuaGFuY2Vycykge1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge307XG5cbiAgICAgICAgICAgIHJldHVybiByZWR1eC5jcmVhdGVTdG9yZShcbiAgICAgICAgICAgICAgcmVkdWNlcnMsXG4gICAgICAgICAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgICAgICAgICAgcmVkdXguY29tcG9zZShlbmhhbmNlcnMpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0oUmVkdXgsIGVuaGFuY2VycykpO1xuICAgICAgICAgIC8qKiBFTkQgU1RPUkUgKiovXG5cbiAgICAgICAgICAvKiogQ09NUE9ORU5UUyAqKi9cbiAgICAgICAgICB2YXIgS2VwbGVyRWxlbWVudCA9IChmdW5jdGlvbiBtYWtlS2VwbGVyRWxlbWVudChyZWFjdCwga2VwbGVyR2wsIG1hcGJveFRva2VuKSB7XG4gICAgICAgICAgICB2YXIgTG9nb1N2ZyA9IGZ1bmN0aW9uIExvZ29TdmcoKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6IFwibG9nby1jb250YWluZXJcIiwgc3R5bGU6IHtwb3NpdGlvbjogJ2ZpeGVkJywgekluZGV4OiAxMDAwMCwgcGFkZGluZzogJzRweCd9IH0sXG4gICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICBcInN2Z1wiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcImtlcGxlcl9nbF9fbG9nb1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwN3B4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjIxcHhcIixcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94OiBcIjAgMCAxMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgICAgIFwiZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgxMy41MDAwMDAsIDEzLjUwMDAwMCkgcm90YXRlKDQ1LjAwMDAwMCkgdHJhbnNsYXRlKC0xMy41MDAwMDAsIC0xMy41MDAwMDApIHRyYW5zbGF0ZSg0LjAwMDAwMCwgNC4wMDAwMDApXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7IHg6IFwiMFwiLCB5OiBcIjZcIiwgdHJhbnNmb3JtOiBcIm1hdHJpeCgyLjUzNTE4MWUtMDYgMSAtMSAyLjUzNTE4MWUtMDYgMTguMTEwNyA2LjAzNjkpXCIsIGZpbGw6IFwiIzUzNUM2Q1wiLCB3aWR0aDogXCIxMi4xXCIsIGhlaWdodDogXCIxMi4xXCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwgeyB4OiBcIjZcIiwgeTogXCIwXCIsIHRyYW5zZm9ybTogXCJtYXRyaXgoMi41MzUxODJlLTA2IDEgLTEgMi41MzUxODJlLTA2IDE4LjExMDcgLTYuMDM2OSlcIiwgZmlsbDpcIiMxRkJBRDZcIiwgd2lkdGg6IFwiMTIuMVwiLCBoZWlnaHQ6IFwiMTIuMVwiIH0pXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgXCJnXCIsXG4gICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk0zOSw4LjdoMi4ybC0yLjgsNC4ybDIuOSw1LjFIMzlsLTIuNC00LjJoLTEuM1YxOGgtMlY1bDItMC4xdjcuM2gxLjNMMzksOC43elwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNNDIuNCwxMy4zYzAtMS41LDAuNC0yLjcsMS4xLTMuNXMxLjgtMS4yLDMuMS0xLjJjMS4zLDAsMi4yLDAuNCwyLjgsMS4xYzAuNiwwLjcsMC45LDEuOCwwLjksMy4zIGMwLDAuNCwwLDAuOCwwLDEuMWgtNS44YzAsMS42LDAuOCwyLjQsMi40LDIuNGMxLDAsMi0wLjIsMi45LTAuNmwwLjIsMS43Yy0wLjQsMC4yLTAuOSwwLjQtMS40LDAuNXMtMS4xLDAuMi0xLjcsMC4yIGMtMS41LDAtMi42LTAuNC0zLjMtMS4yQzQyLjgsMTYuMSw0Mi40LDE0LjksNDIuNCwxMy4zeiBNNDYuNiwxMC4xYy0wLjcsMC0xLjIsMC4yLTEuNSwwLjVjLTAuNCwwLjQtMC42LDAuOS0wLjYsMS43aDQgYzAtMC44LTAuMi0xLjQtMC41LTEuN1M0Ny4yLDEwLjEsNDYuNiwxMC4xelwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNNTcuMSwxOC4yYy0xLDAtMS44LTAuMy0yLjMtMC45bDAsMGwwLDEuM3YyLjVoLTJWOC43aDEuNWwwLjMsMC45aDBjMC4zLTAuMywwLjctMC42LDEuMi0wLjcgYzAuNC0wLjIsMC45LTAuMywxLjQtMC4zYzEuMiwwLDIuMSwwLjQsMi43LDEuMWMwLjYsMC43LDAuOSwyLDAuOSwzLjdjMCwxLjYtMC4zLDIuOC0xLDMuN0M1OS4yLDE3LjgsNTguMywxOC4yLDU3LjEsMTguMnogTTU2LjcsMTAuM2MtMC40LDAtMC44LDAuMS0xLjEsMC4yYy0wLjMsMC4yLTAuNiwwLjQtMC44LDAuN3Y0LjNjMC4yLDAuMywwLjQsMC41LDAuNywwLjdjMC4zLDAuMiwwLjcsMC4zLDEuMSwwLjMgYzAuNywwLDEuMi0wLjIsMS42LTAuN2MwLjQtMC41LDAuNS0xLjMsMC41LTIuNWMwLTAuOC0wLjEtMS40LTAuMi0xLjhzLTAuNC0wLjctMC43LTAuOUM1Ny42LDEwLjQsNTcuMiwxMC4zLDU2LjcsMTAuM3pcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTYzLjIsMTZWNWwyLTAuMXYxMC44YzAsMC4zLDAuMSwwLjUsMC4yLDAuNmMwLjEsMC4xLDAuMywwLjIsMC42LDAuMmMwLjMsMCwwLjYsMCwwLjktMC4xVjE4IGMtMC40LDAuMS0xLDAuMi0xLjYsMC4yYy0wLjgsMC0xLjMtMC4yLTEuNy0wLjVTNjMuMiwxNi44LDYzLjIsMTZ6XCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk02OC4yLDEzLjNjMC0xLjUsMC40LTIuNywxLjEtMy41YzAuNy0wLjgsMS44LTEuMiwzLjEtMS4yYzEuMywwLDIuMiwwLjQsMi44LDEuMWMwLjYsMC43LDAuOSwxLjgsMC45LDMuMyBjMCwwLjQsMCwwLjgsMCwxLjFoLTUuOGMwLDEuNiwwLjgsMi40LDIuNCwyLjRjMSwwLDItMC4yLDIuOS0wLjZsMC4yLDEuN2MtMC40LDAuMi0wLjksMC40LTEuNCwwLjVzLTEuMSwwLjItMS43LDAuMiBjLTEuNSwwLTIuNi0wLjQtMy4zLTEuMkM2OC42LDE2LjEsNjguMiwxNC45LDY4LjIsMTMuM3ogTTcyLjQsMTAuMWMtMC43LDAtMS4yLDAuMi0xLjUsMC41Yy0wLjQsMC40LTAuNiwwLjktMC42LDEuN2g0IGMwLTAuOC0wLjItMS40LTAuNS0xLjdTNzMsMTAuMSw3Mi40LDEwLjF6XCIgfSksXG4gICAgICAgICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBmaWxsOlwiIzFGQkFENlwiLCBkOiBcIk04MC4yLDguN2wwLjEsMS43aDBjMC4zLTAuNiwwLjctMS4xLDEuMS0xLjRjMC40LTAuMywxLTAuNSwxLjYtMC41YzAuNCwwLDAuNywwLDEsMC4xbC0wLjEsMiBjLTAuMy0wLjEtMC43LTAuMi0xLTAuMmMtMC43LDAtMS4zLDAuMy0xLjcsMC44Yy0wLjQsMC41LTAuNywxLjItMC43LDIuMVYxOGgtMlY4LjdIODAuMnpcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTgzLjgsMTdjMC0wLjgsMC40LTEuMiwxLjItMS4yYzAuOCwwLDEuMiwwLjQsMS4yLDEuMmMwLDAuOC0wLjQsMS4xLTEuMiwxLjFDODQuMiwxOC4yLDgzLjgsMTcuOCw4My44LDE3elwiIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDpcIiMxRkJBRDZcIiwgZDogXCJNODguNSwxOC43YzAtMC44LDAuNC0xLjQsMS4yLTEuOGMtMC42LTAuMy0wLjktMC44LTAuOS0xLjVjMC0wLjcsMC40LTEuMiwxLjEtMS42Yy0wLjMtMC4zLTAuNi0wLjYtMC43LTAuOSBjLTAuMi0wLjQtMC4yLTAuOC0wLjItMS4zYzAtMSwwLjMtMS44LDAuOS0yLjNjMC42LTAuNSwxLjYtMC44LDIuOC0wLjhjMC41LDAsMSwwLDEuNCwwLjFjMC40LDAuMSwwLjgsMC4yLDEuMSwwLjRsMi40LTAuMnYxLjUgaC0xLjVjMC4yLDAuNCwwLjIsMC44LDAuMiwxLjNjMCwxLTAuMywxLjctMC45LDIuMnMtMS41LDAuOC0yLjcsMC44Yy0wLjcsMC0xLjItMC4xLTEuNi0wLjJjLTAuMSwwLjEtMC4yLDAuMi0wLjMsMC4zIGMtMC4xLDAuMS0wLjEsMC4yLTAuMSwwLjRjMCwwLjIsMC4xLDAuMywwLjIsMC40YzAuMSwwLjEsMC4zLDAuMiwwLjYsMC4ybDIuNywwLjJjMSwwLjEsMS43LDAuMywyLjIsMC42YzAuNSwwLjMsMC44LDAuOSwwLjgsMS43IGMwLDAuNi0wLjIsMS4xLTAuNSwxLjVjLTAuNCwwLjQtMC45LDAuOC0xLjUsMWMtMC43LDAuMi0xLjUsMC40LTIuNCwwLjRjLTEuMywwLTIuMy0wLjItMy0wLjZDODguOCwyMC4xLDg4LjUsMTkuNSw4OC41LDE4Ljd6IE05NS4xLDE4LjRjMC0wLjMtMC4xLTAuNS0wLjMtMC43cy0wLjYtMC4yLTEuMS0wLjNsLTIuNy0wLjNjLTAuMiwwLjEtMC40LDAuMy0wLjUsMC41Yy0wLjEsMC4yLTAuMiwwLjQtMC4yLDAuNiBjMCwwLjQsMC4yLDAuOCwwLjUsMWMwLjQsMC4yLDEsMC4zLDEuOCwwLjNDOTQuMiwxOS41LDk1LjEsMTkuMiw5NS4xLDE4LjR6IE05NC4zLDExLjVjMC0wLjYtMC4xLTEtMC40LTEuMiBjLTAuMy0wLjItMC43LTAuMy0xLjMtMC4zYy0wLjcsMC0xLjEsMC4xLTEuNCwwLjNjLTAuMywwLjItMC40LDAuNi0wLjQsMS4yczAuMSwxLDAuNCwxLjJjMC4zLDAuMiwwLjcsMC4zLDEuNCwwLjMgYzAuNiwwLDEuMS0wLjEsMS4zLTAuNFM5NC4zLDEyLDk0LjMsMTEuNXpcIiB9KSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7IGZpbGw6XCIjMUZCQUQ2XCIsIGQ6IFwiTTk5LjQsMTZWNWwyLTAuMXYxMC44YzAsMC4zLDAuMSwwLjUsMC4yLDAuNmMwLjEsMC4xLDAuMywwLjIsMC42LDAuMmMwLjMsMCwwLjYsMCwwLjktMC4xVjE4IGMtMC40LDAuMS0xLDAuMi0xLjYsMC4yYy0wLjgsMC0xLjMtMC4yLTEuNy0wLjVTOTkuNCwxNi44LDk5LjQsMTZ6XCIgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBBcHAoKSB7XG4gICAgICAgICAgICAgIHZhciByb290RWxtID0gcmVhY3QudXNlUmVmKG51bGwpO1xuICAgICAgICAgICAgICB2YXIgX3VzZVN0YXRlID0gcmVhY3QudXNlU3RhdGUoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgdmFyIHdpbmRvd0RpbWVuc2lvbiA9IF91c2VTdGF0ZVswXTtcbiAgICAgICAgICAgICAgdmFyIHNldERpbWVuc2lvbiA9IF91c2VTdGF0ZVsxXTtcbiAgICAgICAgICAgICAgcmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uIHNpZGVFZmZlY3QoKXtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVSZXNpemUoKSB7XG4gICAgICAgICAgICAgICAgICBzZXREaW1lbnNpb24oe3dpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCwgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHR9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVzaXplKTt9O1xuICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgIHJldHVybiByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHtzdHlsZToge3Bvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiAwLCB3aWR0aDogJzEwMHZ3JywgaGVpZ2h0OiAnMTAwdmgnfX0sXG4gICAgICAgICAgICAgICAgJHtvcHRpb25zLm1vZGUgPT09IEVYUE9SVF9IVE1MX01BUF9NT0RFUy5SRUFEID8gJ0xvZ29TdmcoKSwnIDogJyd9XG4gICAgICAgICAgICAgICAgcmVhY3QuY3JlYXRlRWxlbWVudChrZXBsZXJHbC5LZXBsZXJHbCwge1xuICAgICAgICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IG1hcGJveFRva2VuLFxuICAgICAgICAgICAgICAgICAgaWQ6IFwibWFwXCIsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogd2luZG93RGltZW5zaW9uLndpZHRoLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB3aW5kb3dEaW1lbnNpb24uaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0oUmVhY3QsIEtlcGxlckdsLCBNQVBCT1hfVE9LRU4pKTtcblxuICAgICAgICAgIGNvbnN0IGFwcCA9IChmdW5jdGlvbiBjcmVhdGVSZWFjdFJlZHV4UHJvdmlkZXIocmVhY3QsIHJlYWN0UmVkdXgsIEtlcGxlckVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiByZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICByZWFjdFJlZHV4LlByb3ZpZGVyLFxuICAgICAgICAgICAgICB7c3RvcmV9LFxuICAgICAgICAgICAgICByZWFjdC5jcmVhdGVFbGVtZW50KEtlcGxlckVsZW1lbnQsIG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfShSZWFjdCwgUmVhY3RSZWR1eCwgS2VwbGVyRWxlbWVudCkpO1xuICAgICAgICAgIC8qKiBFTkQgQ09NUE9ORU5UUyAqKi9cblxuICAgICAgICAgIC8qKiBSZW5kZXIgKiovXG4gICAgICAgICAgKGZ1bmN0aW9uIHJlbmRlcihyZWFjdCwgcmVhY3RET00sIGFwcCkge1xuICAgICAgICAgICAgcmVhY3RET00ucmVuZGVyKGFwcCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcCcpKTtcbiAgICAgICAgICB9KFJlYWN0LCBSZWFjdERPTSwgYXBwKSk7XG4gICAgICAgIDwvc2NyaXB0PlxuICAgICAgICA8IS0tIFRoZSBuZXh0IHNjcmlwdCB3aWxsIHNob3cgaG93IHRvIGludGVyYWN0IGRpcmVjdGx5IHdpdGggS2VwbGVyIG1hcCBzdG9yZSAtLT5cbiAgICAgICAgPHNjcmlwdD5cbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBDdXN0b21pemUgbWFwLlxuICAgICAgICAgICAqIEluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbiB5b3UgY2FuIHVzZSB0aGUgc3RvcmUgb2JqZWN0IHRvIGRpc3BhdGNoIEtlcGxlci5nbCBhY3Rpb25zXG4gICAgICAgICAgICogdG8gYWRkIG5ldyBkYXRhIGFuZCBjdXN0b21pemUgYmVoYXZpb3JcbiAgICAgICAgICAgKi9cbiAgICAgICAgICAoZnVuY3Rpb24gY3VzdG9taXplKGtlcGxlckdsLCBzdG9yZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0YXNldHMgPSAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMuZGF0YXNldHMpfTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucy5jb25maWcpfTtcblxuICAgICAgICAgICAgY29uc3QgbG9hZGVkRGF0YSA9IGtlcGxlckdsLktlcGxlckdsU2NoZW1hLmxvYWQoXG4gICAgICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgICAgICBjb25maWdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGtlcGxlckdsLmFkZERhdGFUb01hcCh7XG4gICAgICAgICAgICAgIGRhdGFzZXRzOiBsb2FkZWREYXRhLmRhdGFzZXRzLFxuICAgICAgICAgICAgICBjb25maWc6IGxvYWRlZERhdGEuY29uZmlnLFxuICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgY2VudGVyTWFwOiBmYWxzZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfShLZXBsZXJHbCwgc3RvcmUpKVxuICAgICAgICA8L3NjcmlwdD5cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gIGA7XG59O1xuIl19
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2022 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -171,9 +151,17 @@ function downloadFile(fileBlob, fileName) {
171
151
  link.setAttribute('href', url);
172
152
  link.setAttribute('download', fileName);
173
153
 
174
- _window.document.body.appendChild(link);
154
+ _window.document.body.appendChild(link); // in some cases where maps are embedded, e.g. need to
155
+ // create and dispatch an event so that the browser downloads
156
+ // the file instead of navigating to the url
157
+
175
158
 
176
- link.click();
159
+ var evt = new MouseEvent('click', {
160
+ view: window,
161
+ bubbles: false,
162
+ cancelable: true
163
+ });
164
+ link.dispatchEvent(evt);
177
165
 
178
166
  _window.document.body.removeChild(link);
179
167
 
@@ -229,6 +217,7 @@ function getMapJSON(state) {
229
217
  function exportJson(state) {
230
218
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
231
219
  var map = getMapJSON(state, options);
220
+ map.info.source = 'kepler.gl';
232
221
  var fileBlob = new _window.Blob([exportToJsonString(map)], {
233
222
  type: 'application/json'
234
223
  });
@@ -270,4 +259,4 @@ var exporters = {
270
259
  };
271
260
  var _default = exporters;
272
261
  exports["default"] = _default;
273
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtdXRpbHMudHMiXSwibmFtZXMiOlsiREVGQVVMVF9JTUFHRV9OQU1FIiwiREVGQVVMVF9IVE1MX05BTUUiLCJERUZBVUxUX0pTT05fTkFNRSIsIkRFRkFVTFRfREFUQV9OQU1FIiwiREVGQVVMVF9FWFBPUlRfSlNPTl9TRVRUSU5HUyIsImhhc0RhdGEiLCJkZWZhdWx0UmVzb2x1dGlvbiIsIk9uZVhSZXNvbHV0aW9uT3B0aW9uIiwiZGVmYXVsdFJhdGlvIiwiRm91ckJ5VGhyZWVSYXRpb09wdGlvbiIsImlzTVNFZGdlIiwid2luZG93IiwiQm9vbGVhbiIsIm5hdmlnYXRvciIsIm1zU2F2ZU9yT3BlbkJsb2IiLCJnZXRTY2FsZUZyb21JbWFnZVNpemUiLCJpbWFnZVciLCJpbWFnZUgiLCJtYXBXIiwibWFwSCIsInNvbWUiLCJkIiwiYmFzZSIsIm1hcEJhc2UiLCJjYWxjdWxhdGVFeHBvcnRJbWFnZVNpemUiLCJyYXRpbyIsInJlc29sdXRpb24iLCJyYXRpb0l0ZW0iLCJFWFBPUlRfSU1HX1JBVElPX09QVElPTlMiLCJmaW5kIiwib3AiLCJpZCIsInJlc29sdXRpb25JdGVtIiwiRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMiLCJnZXRTaXplIiwic2NhbGVkV2lkdGgiLCJ3aWR0aCIsInNjYWxlZEhlaWdodCIsImhlaWdodCIsIkVYUE9SVF9JTUdfUkFUSU9TIiwiQ1VTVE9NIiwic2NhbGUiLCJ1bmRlZmluZWQiLCJjb252ZXJ0VG9QbmciLCJzb3VyY2VFbGVtIiwib3B0aW9ucyIsImRvbXRvaW1hZ2UiLCJ0b1BuZyIsImRhdGFVUkl0b0Jsb2IiLCJkYXRhVVJJIiwiYmluYXJ5Iiwic3BsaXQiLCJtaW1lU3RyaW5nIiwiYWIiLCJBcnJheUJ1ZmZlciIsImxlbmd0aCIsImlhIiwiVWludDhBcnJheSIsImkiLCJjaGFyQ29kZUF0IiwiQmxvYiIsInR5cGUiLCJkb3dubG9hZEZpbGUiLCJmaWxlQmxvYiIsImZpbGVOYW1lIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJleHBvcnRJbWFnZSIsInVpU3RhdGVFeHBvcnRJbWFnZSIsImZpbGVuYW1lIiwiaW1hZ2VEYXRhVXJpIiwiZmlsZSIsImV4cG9ydFRvSnNvblN0cmluZyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiZSIsIlR5cGVFcnJvciIsIm1lc3NhZ2UiLCJkZXNjcmlwdGlvbiIsImdldE1hcEpTT04iLCJzdGF0ZSIsInNjaGVtYSIsInZpc1N0YXRlIiwiZ2V0Q29uZmlnVG9TYXZlIiwibWFwVG9TYXZlIiwic2F2ZSIsInRpdGxlIiwiZXhwb3J0SnNvbiIsIm1hcCIsImFwcE5hbWUiLCJleHBvcnRIdG1sIiwidXNlck1hcGJveFRva2VuIiwiZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4iLCJtb2RlIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJleHBvcnRNYXAiLCJ1aVN0YXRlIiwidGh1bWJuYWlsIiwiZXhwb3J0ZXJzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFFQTs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ08sSUFBTUEsa0JBQWtCLEdBQUcsZUFBM0I7O0FBQ0EsSUFBTUMsaUJBQWlCLEdBQUcsZ0JBQTFCOztBQUNBLElBQU1DLGlCQUFpQixHQUFHLGdCQUExQjs7QUFDQSxJQUFNQyxpQkFBaUIsR0FBRyxXQUExQjtBQUVQO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsNEJBQTRCLEdBQUc7QUFDMUNDLEVBQUFBLE9BQU8sRUFBRTtBQURpQyxDQUFyQzs7QUFJUCxJQUFNQyxpQkFBaUIsR0FBR0MsK0JBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHQyxpQ0FBckI7O0FBRU8sU0FBU0Ms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Q0FETDtBQUVSYyxJQUFBQSxvQkFBb0IsRUFDbEIsQ0FBQ0gsZUFBZSxJQUFJLEVBQXBCLE1BQTRCLEVBQTVCLEdBQWlDQSxlQUFqQyxHQUFtREMsdUJBSDdDO0FBSVJDLElBQUFBLElBQUksRUFBSkE7QUFKUSxJQUFWOztBQU9BLE1BQU16QyxRQUFRLEdBQUcsSUFBSUgsWUFBSixDQUFTLENBQUMsb0NBQWdCdUIsSUFBaEIsQ0FBRCxDQUFULEVBQWtDO0FBQUN0QixJQUFBQSxJQUFJLEVBQUU7QUFBUCxHQUFsQyxDQUFqQjtBQUNBQyxFQUFBQSxZQUFZLENBQUNDLFFBQUQsRUFBVzRCLEtBQUssQ0FBQ1MsT0FBTixhQUFtQlQsS0FBSyxDQUFDUyxPQUF6QixhQUEwQ25HLGlCQUFyRCxDQUFaO0FBQ0Q7O0FBRU0sU0FBU3lHLFNBQVQsQ0FBbUJmLEtBQW5CLEVBQWtFO0FBQUEsTUFBeEM5QyxPQUF3Qyx1RUFBOUJ6Qyw0QkFBOEI7QUFBQSxNQUNoRTRFLFlBRGdFLEdBQ2hEVyxLQUFLLENBQUNnQixPQUFOLENBQWM5QixXQURrQyxDQUNoRUcsWUFEZ0U7QUFFdkUsTUFBTTRCLFNBQXNCLEdBQUc1QixZQUFZLEdBQUdoQyxhQUFhLENBQUNnQyxZQUFELENBQWhCLEdBQWlDLElBQTVFO0FBQ0EsTUFBTWUsU0FBUyxHQUFHTCxVQUFVLENBQUNDLEtBQUQsRUFBUTlDLE9BQVIsQ0FBNUI7QUFFQSxTQUFPO0FBQ0xzRCxJQUFBQSxHQUFHLEVBQUVKLFNBREE7QUFFTGEsSUFBQUEsU0FBUyxFQUFUQTtBQUZLLEdBQVA7QUFJRDs7QUFFRCxJQUFNQyxTQUFTLEdBQUc7QUFDaEJoQyxFQUFBQSxXQUFXLEVBQVhBLFdBRGdCO0FBRWhCcUIsRUFBQUEsVUFBVSxFQUFWQSxVQUZnQjtBQUdoQkcsRUFBQUEsVUFBVSxFQUFWQTtBQUhnQixDQUFsQjtlQU1lUSxTIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtCbG9iLCBVUkwsIGF0b2IsIFVpbnQ4QXJyYXksIEFycmF5QnVmZmVyLCBkb2N1bWVudH0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuXG5pbXBvcnQge1xuICBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyxcbiAgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TLFxuICBSRVNPTFVUSU9OUyxcbiAgRVhQT1JUX0lNR19SQVRJT1MsXG4gIEZvdXJCeVRocmVlUmF0aW9PcHRpb24sXG4gIE9uZVhSZXNvbHV0aW9uT3B0aW9uLFxuICBFeHBvcnRJbWFnZVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgZG9tdG9pbWFnZSBmcm9tICcuL2RvbS10by1pbWFnZSc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkLCBzZXR9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtleHBvcnRNYXBUb0hUTUx9IGZyb20gJy4vZXhwb3J0LW1hcC1odG1sJztcblxuLyoqXG4gKiBEZWZhdWx0IGZpbGUgbmFtZXNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU1BR0VfTkFNRSA9ICdrZXBsZXIuZ2wucG5nJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0hUTUxfTkFNRSA9ICdrZXBsZXIuZ2wuaHRtbCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9KU09OX05BTUUgPSAna2VwbGVyLmdsLmpzb24nO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfREFUQV9OQU1FID0gJ2tlcGxlci5nbCc7XG5cbi8qKlxuICogRGVmYXVsdCBqc29uIGV4cG9ydCBzZXR0aW5nc1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTl9TRVRUSU5HUyA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuY29uc3QgZGVmYXVsdFJlc29sdXRpb24gPSBPbmVYUmVzb2x1dGlvbk9wdGlvbjtcblxuY29uc3QgZGVmYXVsdFJhdGlvID0gRm91ckJ5VGhyZWVSYXRpb09wdGlvbjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTVNFZGdlKHdpbmRvdzogV2luZG93KTogYm9vbGVhbiB7XG4gIC8vIEB0cy1pZ25vcmUgbXNTYXZlT3JPcGVuQmxvYiB3YXMgYSBwcm9wcmlldGFyeSBhZGRpdGlvbiB0byB0aGUgTmF2aWdhdG9yIG9iamVjdCwgYWRkZWQgYnkgTWljcm9zb2Z0IGZvciBJbnRlcm5ldCBFeHBsb3Jlci5cbiAgcmV0dXJuIEJvb2xlYW4od2luZG93Lm5hdmlnYXRvciAmJiB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVGcm9tSW1hZ2VTaXplKGltYWdlVyA9IDAsIGltYWdlSCA9IDAsIG1hcFcgPSAwLCBtYXBIID0gMCkge1xuICBpZiAoW2ltYWdlVywgaW1hZ2VILCBtYXBXLCBtYXBIXS5zb21lKGQgPT4gZCA8PSAwKSkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgY29uc3QgYmFzZSA9IGltYWdlVyAvIGltYWdlSCA+IDEgPyBpbWFnZVcgOiBpbWFnZUg7XG4gIGNvbnN0IG1hcEJhc2UgPSBpbWFnZVcgLyBpbWFnZUggPiAxID8gbWFwVyA6IG1hcEg7XG4gIHJldHVybiBiYXNlIC8gbWFwQmFzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh7XG4gIG1hcFcsXG4gIG1hcEgsXG4gIHJhdGlvLFxuICByZXNvbHV0aW9uXG59OiB7XG4gIG1hcFc6IG51bWJlcjtcbiAgbWFwSDogbnVtYmVyO1xuICByYXRpbzoga2V5b2YgdHlwZW9mIEVYUE9SVF9JTUdfUkFUSU9TO1xuICByZXNvbHV0aW9uOiBrZXlvZiB0eXBlb2YgUkVTT0xVVElPTlM7XG59KSB7XG4gIGlmIChtYXBXIDw9IDAgfHwgbWFwSCA8PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCByYXRpb0l0ZW0gPSBFWFBPUlRfSU1HX1JBVElPX09QVElPTlMuZmluZChvcCA9PiBvcC5pZCA9PT0gcmF0aW8pIHx8IGRlZmF1bHRSYXRpbztcblxuICBjb25zdCByZXNvbHV0aW9uSXRlbSA9XG4gICAgRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMuZmluZChvcCA9PiBvcC5pZCA9PT0gcmVzb2x1dGlvbikgfHwgZGVmYXVsdFJlc29sdXRpb247XG5cbiAgY29uc3Qge3dpZHRoOiBzY2FsZWRXaWR0aCwgaGVpZ2h0OiBzY2FsZWRIZWlnaHR9ID0gcmVzb2x1dGlvbkl0ZW0uZ2V0U2l6ZShtYXBXLCBtYXBIKTtcblxuICBjb25zdCB7d2lkdGg6IGltYWdlVywgaGVpZ2h0OiBpbWFnZUh9ID0gcmF0aW9JdGVtLmdldFNpemUoc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCk7XG5cbiAgY29uc3Qge3NjYWxlfSA9IHJhdGlvSXRlbS5pZCA9PT0gRVhQT1JUX0lNR19SQVRJT1MuQ1VTVE9NID8ge3NjYWxlOiB1bmRlZmluZWR9IDogcmVzb2x1dGlvbkl0ZW07XG5cbiAgcmV0dXJuIHtcbiAgICBzY2FsZSxcbiAgICBpbWFnZVcsXG4gICAgaW1hZ2VIXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Qbmcoc291cmNlRWxlbTogSFRNTEVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGRvbXRvaW1hZ2UudG9Qbmcoc291cmNlRWxlbSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhVVJJdG9CbG9iKGRhdGFVUkk6IHN0cmluZyk6IEJsb2Ige1xuICBjb25zdCBiaW5hcnkgPSBhdG9iKGRhdGFVUkkuc3BsaXQoJywnKVsxXSk7XG5cbiAgLy8gc2VwYXJhdGUgb3V0IHRoZSBtaW1lIGNvbXBvbmVudFxuICBjb25zdCBtaW1lU3RyaW5nID0gZGF0YVVSSVxuICAgIC5zcGxpdCgnLCcpWzBdXG4gICAgLnNwbGl0KCc6JylbMV1cbiAgICAuc3BsaXQoJzsnKVswXTtcblxuICAvLyB3cml0ZSB0aGUgYnl0ZXMgb2YgdGhlIHN0cmluZyB0byBhbiBBcnJheUJ1ZmZlclxuICBjb25zdCBhYiA9IG5ldyBBcnJheUJ1ZmZlcihiaW5hcnkubGVuZ3RoKTtcblxuICAvLyBjcmVhdGUgYSB2aWV3IGludG8gdGhlIGJ1ZmZlclxuICBjb25zdCBpYSA9IG5ldyBVaW50OEFycmF5KGFiKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeS5sZW5ndGg7IGkrKykge1xuICAgIGlhW2ldID0gYmluYXJ5LmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gbmV3IEJsb2IoW2FiXSwge3R5cGU6IG1pbWVTdHJpbmd9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkRmlsZShmaWxlQmxvYjogQmxvYiwgZmlsZU5hbWU6IHN0cmluZykge1xuICBpZiAoaXNNU0VkZ2Uod2luZG93KSkge1xuICAgICh3aW5kb3cubmF2aWdhdG9yIGFzIGFueSkubXNTYXZlT3JPcGVuQmxvYihmaWxlQmxvYiwgZmlsZU5hbWUpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZUJsb2IpO1xuXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZU5hbWUpO1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICBsaW5rLmNsaWNrKCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIGNvbG9yIGlzIHJnYlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydEltYWdlKHVpU3RhdGVFeHBvcnRJbWFnZTogRXhwb3J0SW1hZ2UsIGZpbGVuYW1lID0gREVGQVVMVF9JTUFHRV9OQU1FKSB7XG4gIGNvbnN0IHtpbWFnZURhdGFVcml9ID0gdWlTdGF0ZUV4cG9ydEltYWdlO1xuICBpZiAoaW1hZ2VEYXRhVXJpKSB7XG4gICAgY29uc3QgZmlsZSA9IGRhdGFVUkl0b0Jsb2IoaW1hZ2VEYXRhVXJpKTtcbiAgICBkb3dubG9hZEZpbGUoZmlsZSwgZmlsZW5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRUb0pzb25TdHJpbmcoZGF0YSkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgVHlwZUVycm9yKSByZXR1cm4gZS5tZXNzYWdlO1xuICAgIC8vIE5vbi1TdGFuZGFyZCBFcnJvciBPYmplY3QgUHJvcGVydHlcbiAgICByZXR1cm4gKGUgYXMgYW55KS5kZXNjcmlwdGlvbjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwSlNPTihzdGF0ZSwgb3B0aW9ucyA9IERFRkFVTFRfRVhQT1JUX0pTT05fU0VUVElOR1MpIHtcbiAgY29uc3Qge2hhc0RhdGF9ID0gb3B0aW9ucztcbiAgY29uc3Qgc2NoZW1hID0gc3RhdGUudmlzU3RhdGUuc2NoZW1hO1xuXG4gIGlmICghaGFzRGF0YSkge1xuICAgIHJldHVybiBzY2hlbWEuZ2V0Q29uZmlnVG9TYXZlKHN0YXRlKTtcbiAgfVxuXG4gIGxldCBtYXBUb1NhdmUgPSBzY2hlbWEuc2F2ZShzdGF0ZSk7XG4gIC8vIGFkZCBmaWxlIG5hbWUgaWYgdGl0bGUgaXMgbm90IHByb3ZpZGVkXG4gIGNvbnN0IHRpdGxlID0gZ2V0KG1hcFRvU2F2ZSwgWydpbmZvJywgJ3RpdGxlJ10pO1xuICBpZiAoIXRpdGxlIHx8ICF0aXRsZS5sZW5ndGgpIHtcbiAgICBtYXBUb1NhdmUgPSBzZXQoWydpbmZvJywgJ3RpdGxlJ10sIGBrZXBsZXJnbF8ke2dlbmVyYXRlSGFzaElkKDYpfWAsIG1hcFRvU2F2ZSk7XG4gIH1cbiAgcmV0dXJuIG1hcFRvU2F2ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydEpzb24oc3RhdGUsIG9wdGlvbnM6IGFueSA9IHt9KSB7XG4gIGNvbnN0IG1hcCA9IGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IGZpbGVCbG9iID0gbmV3IEJsb2IoW2V4cG9ydFRvSnNvblN0cmluZyhtYXApXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ30pO1xuICBjb25zdCBmaWxlTmFtZSA9IHN0YXRlLmFwcE5hbWUgPyBgJHtzdGF0ZS5hcHBOYW1lfS5qc29uYCA6IERFRkFVTFRfSlNPTl9OQU1FO1xuICBkb3dubG9hZEZpbGUoZmlsZUJsb2IsIGZpbGVOYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydEh0bWwoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge3VzZXJNYXBib3hUb2tlbiwgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4sIG1vZGV9ID0gb3B0aW9ucztcblxuICBjb25zdCBkYXRhID0ge1xuICAgIC4uLmdldE1hcEpTT04oc3RhdGUpLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOlxuICAgICAgKHVzZXJNYXBib3hUb2tlbiB8fCAnJykgIT09ICcnID8gdXNlck1hcGJveFRva2VuIDogZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4sXG4gICAgbW9kZVxuICB9O1xuXG4gIGNvbnN0IGZpbGVCbG9iID0gbmV3IEJsb2IoW2V4cG9ydE1hcFRvSFRNTChkYXRhKV0sIHt0eXBlOiAndGV4dC9odG1sJ30pO1xuICBkb3dubG9hZEZpbGUoZmlsZUJsb2IsIHN0YXRlLmFwcE5hbWUgPyBgJHtzdGF0ZS5hcHBOYW1lfS5odG1sYCA6IERFRkFVTFRfSFRNTF9OQU1FKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydE1hcChzdGF0ZSwgb3B0aW9ucyA9IERFRkFVTFRfRVhQT1JUX0pTT05fU0VUVElOR1MpIHtcbiAgY29uc3Qge2ltYWdlRGF0YVVyaX0gPSBzdGF0ZS51aVN0YXRlLmV4cG9ydEltYWdlO1xuICBjb25zdCB0aHVtYm5haWw6IEJsb2IgfCBudWxsID0gaW1hZ2VEYXRhVXJpID8gZGF0YVVSSXRvQmxvYihpbWFnZURhdGFVcmkpIDogbnVsbDtcbiAgY29uc3QgbWFwVG9TYXZlID0gZ2V0TWFwSlNPTihzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXA6IG1hcFRvU2F2ZSxcbiAgICB0aHVtYm5haWxcbiAgfTtcbn1cblxuY29uc3QgZXhwb3J0ZXJzID0ge1xuICBleHBvcnRJbWFnZSxcbiAgZXhwb3J0SnNvbixcbiAgZXhwb3J0SHRtbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZXhwb3J0ZXJzO1xuIl19
262
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtdXRpbHMudHMiXSwibmFtZXMiOlsiREVGQVVMVF9JTUFHRV9OQU1FIiwiREVGQVVMVF9IVE1MX05BTUUiLCJERUZBVUxUX0pTT05fTkFNRSIsIkRFRkFVTFRfREFUQV9OQU1FIiwiREVGQVVMVF9FWFBPUlRfSlNPTl9TRVRUSU5HUyIsImhhc0RhdGEiLCJkZWZhdWx0UmVzb2x1dGlvbiIsIk9uZVhSZXNvbHV0aW9uT3B0aW9uIiwiZGVmYXVsdFJhdGlvIiwiRm91ckJ5VGhyZWVSYXRpb09wdGlvbiIsImlzTVNFZGdlIiwid2luZG93IiwiQm9vbGVhbiIsIm5hdmlnYXRvciIsIm1zU2F2ZU9yT3BlbkJsb2IiLCJnZXRTY2FsZUZyb21JbWFnZVNpemUiLCJpbWFnZVciLCJpbWFnZUgiLCJtYXBXIiwibWFwSCIsInNvbWUiLCJkIiwiYmFzZSIsIm1hcEJhc2UiLCJjYWxjdWxhdGVFeHBvcnRJbWFnZVNpemUiLCJyYXRpbyIsInJlc29sdXRpb24iLCJyYXRpb0l0ZW0iLCJFWFBPUlRfSU1HX1JBVElPX09QVElPTlMiLCJmaW5kIiwib3AiLCJpZCIsInJlc29sdXRpb25JdGVtIiwiRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMiLCJnZXRTaXplIiwic2NhbGVkV2lkdGgiLCJ3aWR0aCIsInNjYWxlZEhlaWdodCIsImhlaWdodCIsIkVYUE9SVF9JTUdfUkFUSU9TIiwiQ1VTVE9NIiwic2NhbGUiLCJ1bmRlZmluZWQiLCJjb252ZXJ0VG9QbmciLCJzb3VyY2VFbGVtIiwib3B0aW9ucyIsImRvbXRvaW1hZ2UiLCJ0b1BuZyIsImRhdGFVUkl0b0Jsb2IiLCJkYXRhVVJJIiwiYmluYXJ5Iiwic3BsaXQiLCJtaW1lU3RyaW5nIiwiYWIiLCJBcnJheUJ1ZmZlciIsImxlbmd0aCIsImlhIiwiVWludDhBcnJheSIsImkiLCJjaGFyQ29kZUF0IiwiQmxvYiIsInR5cGUiLCJkb3dubG9hZEZpbGUiLCJmaWxlQmxvYiIsImZpbGVOYW1lIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImV2dCIsIk1vdXNlRXZlbnQiLCJ2aWV3IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkaXNwYXRjaEV2ZW50IiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJleHBvcnRJbWFnZSIsInVpU3RhdGVFeHBvcnRJbWFnZSIsImZpbGVuYW1lIiwiaW1hZ2VEYXRhVXJpIiwiZmlsZSIsImV4cG9ydFRvSnNvblN0cmluZyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiZSIsIlR5cGVFcnJvciIsIm1lc3NhZ2UiLCJkZXNjcmlwdGlvbiIsImdldE1hcEpTT04iLCJzdGF0ZSIsInNjaGVtYSIsInZpc1N0YXRlIiwiZ2V0Q29uZmlnVG9TYXZlIiwibWFwVG9TYXZlIiwic2F2ZSIsInRpdGxlIiwiZXhwb3J0SnNvbiIsIm1hcCIsImluZm8iLCJzb3VyY2UiLCJhcHBOYW1lIiwiZXhwb3J0SHRtbCIsInVzZXJNYXBib3hUb2tlbiIsImV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuIiwibW9kZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiZXhwb3J0TWFwIiwidWlTdGF0ZSIsInRodW1ibmFpbCIsImV4cG9ydGVycyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7QUFDQTs7QUFFQTs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ08sSUFBTUEsa0JBQWtCLEdBQUcsZUFBM0I7O0FBQ0EsSUFBTUMsaUJBQWlCLEdBQUcsZ0JBQTFCOztBQUNBLElBQU1DLGlCQUFpQixHQUFHLGdCQUExQjs7QUFDQSxJQUFNQyxpQkFBaUIsR0FBRyxXQUExQjtBQUVQO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsNEJBQTRCLEdBQUc7QUFDMUNDLEVBQUFBLE9BQU8sRUFBRTtBQURpQyxDQUFyQzs7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RCxFQUFRbkQsT0FBUixDQUE1QjtBQUVBLFNBQU87QUFDTDJELElBQUFBLEdBQUcsRUFBRUosU0FEQTtBQUVMZSxJQUFBQSxTQUFTLEVBQVRBO0FBRkssR0FBUDtBQUlEOztBQUVELElBQU1DLFNBQVMsR0FBRztBQUNoQmxDLEVBQUFBLFdBQVcsRUFBWEEsV0FEZ0I7QUFFaEJxQixFQUFBQSxVQUFVLEVBQVZBLFVBRmdCO0FBR2hCSyxFQUFBQSxVQUFVLEVBQVZBO0FBSGdCLENBQWxCO2VBTWVRLFMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0Jsb2IsIFVSTCwgYXRvYiwgVWludDhBcnJheSwgQXJyYXlCdWZmZXIsIGRvY3VtZW50fSBmcm9tICdnbG9iYWwvd2luZG93JztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5cbmltcG9ydCB7XG4gIEVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TLFxuICBFWFBPUlRfSU1HX1JBVElPX09QVElPTlMsXG4gIFJFU09MVVRJT05TLFxuICBFWFBPUlRfSU1HX1JBVElPUyxcbiAgRm91ckJ5VGhyZWVSYXRpb09wdGlvbixcbiAgT25lWFJlc29sdXRpb25PcHRpb24sXG4gIEV4cG9ydEltYWdlXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBkb210b2ltYWdlIGZyb20gJy4vZG9tLXRvLWltYWdlJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWQsIHNldH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge2V4cG9ydE1hcFRvSFRNTH0gZnJvbSAnLi9leHBvcnQtbWFwLWh0bWwnO1xuXG4vKipcbiAqIERlZmF1bHQgZmlsZSBuYW1lc1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTUFHRV9OQU1FID0gJ2tlcGxlci5nbC5wbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSFRNTF9OQU1FID0gJ2tlcGxlci5nbC5odG1sJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0pTT05fTkFNRSA9ICdrZXBsZXIuZ2wuanNvbic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9EQVRBX05BTUUgPSAna2VwbGVyLmdsJztcblxuLyoqXG4gKiBEZWZhdWx0IGpzb24gZXhwb3J0IHNldHRpbmdzXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9KU09OX1NFVFRJTkdTID0ge1xuICBoYXNEYXRhOiB0cnVlXG59O1xuXG5jb25zdCBkZWZhdWx0UmVzb2x1dGlvbiA9IE9uZVhSZXNvbHV0aW9uT3B0aW9uO1xuXG5jb25zdCBkZWZhdWx0UmF0aW8gPSBGb3VyQnlUaHJlZVJhdGlvT3B0aW9uO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNNU0VkZ2Uod2luZG93OiBXaW5kb3cpOiBib29sZWFuIHtcbiAgLy8gQHRzLWlnbm9yZSBtc1NhdmVPck9wZW5CbG9iIHdhcyBhIHByb3ByaWV0YXJ5IGFkZGl0aW9uIHRvIHRoZSBOYXZpZ2F0b3Igb2JqZWN0LCBhZGRlZCBieSBNaWNyb3NvZnQgZm9yIEludGVybmV0IEV4cGxvcmVyLlxuICByZXR1cm4gQm9vbGVhbih3aW5kb3cubmF2aWdhdG9yICYmIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUZyb21JbWFnZVNpemUoaW1hZ2VXID0gMCwgaW1hZ2VIID0gMCwgbWFwVyA9IDAsIG1hcEggPSAwKSB7XG4gIGlmIChbaW1hZ2VXLCBpbWFnZUgsIG1hcFcsIG1hcEhdLnNvbWUoZCA9PiBkIDw9IDApKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBjb25zdCBiYXNlID0gaW1hZ2VXIC8gaW1hZ2VIID4gMSA/IGltYWdlVyA6IGltYWdlSDtcbiAgY29uc3QgbWFwQmFzZSA9IGltYWdlVyAvIGltYWdlSCA+IDEgPyBtYXBXIDogbWFwSDtcbiAgcmV0dXJuIGJhc2UgLyBtYXBCYXNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplKHtcbiAgbWFwVyxcbiAgbWFwSCxcbiAgcmF0aW8sXG4gIHJlc29sdXRpb25cbn06IHtcbiAgbWFwVzogbnVtYmVyO1xuICBtYXBIOiBudW1iZXI7XG4gIHJhdGlvOiBrZXlvZiB0eXBlb2YgRVhQT1JUX0lNR19SQVRJT1M7XG4gIHJlc29sdXRpb246IGtleW9mIHR5cGVvZiBSRVNPTFVUSU9OUztcbn0pIHtcbiAgaWYgKG1hcFcgPD0gMCB8fCBtYXBIIDw9IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHJhdGlvSXRlbSA9IEVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUy5maW5kKG9wID0+IG9wLmlkID09PSByYXRpbykgfHwgZGVmYXVsdFJhdGlvO1xuXG4gIGNvbnN0IHJlc29sdXRpb25JdGVtID1cbiAgICBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUy5maW5kKG9wID0+IG9wLmlkID09PSByZXNvbHV0aW9uKSB8fCBkZWZhdWx0UmVzb2x1dGlvbjtcblxuICBjb25zdCB7d2lkdGg6IHNjYWxlZFdpZHRoLCBoZWlnaHQ6IHNjYWxlZEhlaWdodH0gPSByZXNvbHV0aW9uSXRlbS5nZXRTaXplKG1hcFcsIG1hcEgpO1xuXG4gIGNvbnN0IHt3aWR0aDogaW1hZ2VXLCBoZWlnaHQ6IGltYWdlSH0gPSByYXRpb0l0ZW0uZ2V0U2l6ZShzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTtcblxuICBjb25zdCB7c2NhbGV9ID0gcmF0aW9JdGVtLmlkID09PSBFWFBPUlRfSU1HX1JBVElPUy5DVVNUT00gPyB7c2NhbGU6IHVuZGVmaW5lZH0gOiByZXNvbHV0aW9uSXRlbTtcblxuICByZXR1cm4ge1xuICAgIHNjYWxlLFxuICAgIGltYWdlVyxcbiAgICBpbWFnZUhcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb1BuZyhzb3VyY2VFbGVtOiBIVE1MRWxlbWVudCwgb3B0aW9ucykge1xuICByZXR1cm4gZG9tdG9pbWFnZS50b1BuZyhzb3VyY2VFbGVtLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSTogc3RyaW5nKTogQmxvYiB7XG4gIGNvbnN0IGJpbmFyeSA9IGF0b2IoZGF0YVVSSS5zcGxpdCgnLCcpWzFdKTtcblxuICAvLyBzZXBhcmF0ZSBvdXQgdGhlIG1pbWUgY29tcG9uZW50XG4gIGNvbnN0IG1pbWVTdHJpbmcgPSBkYXRhVVJJXG4gICAgLnNwbGl0KCcsJylbMF1cbiAgICAuc3BsaXQoJzonKVsxXVxuICAgIC5zcGxpdCgnOycpWzBdO1xuXG4gIC8vIHdyaXRlIHRoZSBieXRlcyBvZiB0aGUgc3RyaW5nIHRvIGFuIEFycmF5QnVmZmVyXG4gIGNvbnN0IGFiID0gbmV3IEFycmF5QnVmZmVyKGJpbmFyeS5sZW5ndGgpO1xuXG4gIC8vIGNyZWF0ZSBhIHZpZXcgaW50byB0aGUgYnVmZmVyXG4gIGNvbnN0IGlhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYmluYXJ5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWFbaV0gPSBiaW5hcnkuY2hhckNvZGVBdChpKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgQmxvYihbYWJdLCB7dHlwZTogbWltZVN0cmluZ30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRGaWxlKGZpbGVCbG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc01TRWRnZSh3aW5kb3cpKSB7XG4gICAgKHdpbmRvdy5uYXZpZ2F0b3IgYXMgYW55KS5tc1NhdmVPck9wZW5CbG9iKGZpbGVCbG9iLCBmaWxlTmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlQmxvYik7XG5cbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIC8vIGluIHNvbWUgY2FzZXMgd2hlcmUgbWFwcyBhcmUgZW1iZWRkZWQsIGUuZy4gbmVlZCB0b1xuICAgIC8vIGNyZWF0ZSBhbmQgZGlzcGF0Y2ggYW4gZXZlbnQgc28gdGhhdCB0aGUgYnJvd3NlciBkb3dubG9hZHNcbiAgICAvLyB0aGUgZmlsZSBpbnN0ZWFkIG9mIG5hdmlnYXRpbmcgdG8gdGhlIHVybFxuICAgIGNvbnN0IGV2dCA9IG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHtcbiAgICAgIHZpZXc6IHdpbmRvdyxcbiAgICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGxpbmsuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciBjb2xvciBpcyByZ2JcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRJbWFnZSh1aVN0YXRlRXhwb3J0SW1hZ2U6IEV4cG9ydEltYWdlLCBmaWxlbmFtZSA9IERFRkFVTFRfSU1BR0VfTkFNRSkge1xuICBjb25zdCB7aW1hZ2VEYXRhVXJpfSA9IHVpU3RhdGVFeHBvcnRJbWFnZTtcbiAgaWYgKGltYWdlRGF0YVVyaSkge1xuICAgIGNvbnN0IGZpbGUgPSBkYXRhVVJJdG9CbG9iKGltYWdlRGF0YVVyaSk7XG4gICAgZG93bmxvYWRGaWxlKGZpbGUsIGZpbGVuYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0VG9Kc29uU3RyaW5nKGRhdGEpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvcikgcmV0dXJuIGUubWVzc2FnZTtcbiAgICAvLyBOb24tU3RhbmRhcmQgRXJyb3IgT2JqZWN0IFByb3BlcnR5XG4gICAgcmV0dXJuIChlIGFzIGFueSkuZGVzY3JpcHRpb247XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcEpTT04oc3RhdGUsIG9wdGlvbnMgPSBERUZBVUxUX0VYUE9SVF9KU09OX1NFVFRJTkdTKSB7XG4gIGNvbnN0IHtoYXNEYXRhfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHNjaGVtYSA9IHN0YXRlLnZpc1N0YXRlLnNjaGVtYTtcblxuICBpZiAoIWhhc0RhdGEpIHtcbiAgICByZXR1cm4gc2NoZW1hLmdldENvbmZpZ1RvU2F2ZShzdGF0ZSk7XG4gIH1cblxuICBsZXQgbWFwVG9TYXZlID0gc2NoZW1hLnNhdmUoc3RhdGUpO1xuICAvLyBhZGQgZmlsZSBuYW1lIGlmIHRpdGxlIGlzIG5vdCBwcm92aWRlZFxuICBjb25zdCB0aXRsZSA9IGdldChtYXBUb1NhdmUsIFsnaW5mbycsICd0aXRsZSddKTtcbiAgaWYgKCF0aXRsZSB8fCAhdGl0bGUubGVuZ3RoKSB7XG4gICAgbWFwVG9TYXZlID0gc2V0KFsnaW5mbycsICd0aXRsZSddLCBga2VwbGVyZ2xfJHtnZW5lcmF0ZUhhc2hJZCg2KX1gLCBtYXBUb1NhdmUpO1xuICB9XG4gIHJldHVybiBtYXBUb1NhdmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRKc29uKHN0YXRlLCBvcHRpb25zOiBhbnkgPSB7fSkge1xuICBjb25zdCBtYXAgPSBnZXRNYXBKU09OKHN0YXRlLCBvcHRpb25zKTtcbiAgbWFwLmluZm8uc291cmNlID0gJ2tlcGxlci5nbCc7XG4gIGNvbnN0IGZpbGVCbG9iID0gbmV3IEJsb2IoW2V4cG9ydFRvSnNvblN0cmluZyhtYXApXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ30pO1xuICBjb25zdCBmaWxlTmFtZSA9IHN0YXRlLmFwcE5hbWUgPyBgJHtzdGF0ZS5hcHBOYW1lfS5qc29uYCA6IERFRkFVTFRfSlNPTl9OQU1FO1xuICBkb3dubG9hZEZpbGUoZmlsZUJsb2IsIGZpbGVOYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydEh0bWwoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge3VzZXJNYXBib3hUb2tlbiwgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4sIG1vZGV9ID0gb3B0aW9ucztcblxuICBjb25zdCBkYXRhID0ge1xuICAgIC4uLmdldE1hcEpTT04oc3RhdGUpLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOlxuICAgICAgKHVzZXJNYXBib3hUb2tlbiB8fCAnJykgIT09ICcnID8gdXNlck1hcGJveFRva2VuIDogZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4sXG4gICAgbW9kZVxuICB9O1xuXG4gIGNvbnN0IGZpbGVCbG9iID0gbmV3IEJsb2IoW2V4cG9ydE1hcFRvSFRNTChkYXRhKV0sIHt0eXBlOiAndGV4dC9odG1sJ30pO1xuICBkb3dubG9hZEZpbGUoZmlsZUJsb2IsIHN0YXRlLmFwcE5hbWUgPyBgJHtzdGF0ZS5hcHBOYW1lfS5odG1sYCA6IERFRkFVTFRfSFRNTF9OQU1FKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydE1hcChzdGF0ZSwgb3B0aW9ucyA9IERFRkFVTFRfRVhQT1JUX0pTT05fU0VUVElOR1MpIHtcbiAgY29uc3Qge2ltYWdlRGF0YVVyaX0gPSBzdGF0ZS51aVN0YXRlLmV4cG9ydEltYWdlO1xuICBjb25zdCB0aHVtYm5haWw6IEJsb2IgfCBudWxsID0gaW1hZ2VEYXRhVXJpID8gZGF0YVVSSXRvQmxvYihpbWFnZURhdGFVcmkpIDogbnVsbDtcbiAgY29uc3QgbWFwVG9TYXZlID0gZ2V0TWFwSlNPTihzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXA6IG1hcFRvU2F2ZSxcbiAgICB0aHVtYm5haWxcbiAgfTtcbn1cblxuY29uc3QgZXhwb3J0ZXJzID0ge1xuICBleHBvcnRJbWFnZSxcbiAgZXhwb3J0SnNvbixcbiAgZXhwb3J0SHRtbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZXhwb3J0ZXJzO1xuIl19
@@ -1,3 +1,4 @@
1
+ import { VisState } from '@kepler.gl/schemas';
1
2
  import { Millisecond, Field, ParsedFilter, Filter, FilterBase, PolygonFilter, FieldDomain, TimeRangeFieldDomain, HistogramBin, Feature, FeatureValue, LineChart, TimeRangeFilter, RangeFieldDomain, FilterDatasetOpt, FilterRecord } from '@kepler.gl/types';
2
3
  import { DataContainerInterface } from './data-container-interface';
3
4
  export declare const durationSecond = 1000;
@@ -43,8 +44,9 @@ export declare const DEFAULT_FILTER_STRUCTURE: {
43
44
  dataId: never[];
44
45
  freeze: boolean;
45
46
  id: null;
47
+ enabled: boolean;
46
48
  fixedDomain: boolean;
47
- enlarged: boolean;
49
+ view: "side";
48
50
  isAnimating: boolean;
49
51
  animationWindow: "free";
50
52
  speed: number;
@@ -63,7 +65,10 @@ export declare const LAYER_FILTERS: "polygon"[];
63
65
  /**
64
66
  * Generates a filter with a dataset id as dataId
65
67
  */
66
- export declare function getDefaultFilter(dataId: string | null | string[]): FilterBase<LineChart>;
68
+ export declare function getDefaultFilter({ dataId, id }?: {
69
+ dataId?: string | null | string[];
70
+ id?: string;
71
+ }): FilterBase<LineChart>;
67
72
  /**
68
73
  * Check if a filter is valid based on the given dataId
69
74
  * @param filter to validate
@@ -148,7 +153,7 @@ export declare function getFilterFunction<L extends {
148
153
  };
149
154
  id: string;
150
155
  }>(field: Field | null, dataId: string, filter: Filter, layers: L[], dataContainer: DataContainerInterface): filterFunction;
151
- export declare function updateFilterDataId(dataId: string): FilterBase<LineChart>;
156
+ export declare function updateFilterDataId(dataId: string | string[]): FilterBase<LineChart>;
152
157
  export declare function filterDataByFilterTypes({ dynamicDomainFilters, cpuFilters, filterFuncs }: {
153
158
  dynamicDomainFilters: Filter[] | null;
154
159
  cpuFilters: Filter[] | null;
@@ -295,12 +300,8 @@ export declare function filterDatasetCPU<T extends StateType<K, L>, K extends Ke
295
300
  /**
296
301
  * Validate parsed filters with datasets and add filterProps to field
297
302
  */
298
- export declare function validateFiltersUpdateDatasets<S extends {
299
- datasets: {
300
- [id: string]: K;
301
- };
302
- layers: L[];
303
- }, K extends KeplerTableModel<K, L>, L extends {
303
+ declare type MinVisStateForFilter = Pick<VisState, 'layers' | 'datasets' | 'isMergingDatasets'>;
304
+ export declare function validateFiltersUpdateDatasets<S extends MinVisStateForFilter, K extends KeplerTableModel<K, L>, L extends {
304
305
  config: {
305
306
  dataId: string | null;
306
307
  label: string;
@@ -321,4 +322,5 @@ export declare function getFilterPlot<K extends KeplerTableModel<K, L>, L>(filte
321
322
  export declare function getIntervalBins(filter: TimeRangeFilter): any;
322
323
  export declare function isValidTimeDomain(domain: any): boolean;
323
324
  export declare function getTimeWidgetHintFormatter(domain: [number, number]): string | undefined;
325
+ export declare function isSideFilter(filter: Filter): boolean;
324
326
  export {};