kepler.gl 3.1.10 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/ai-assistant/src/config/models.d.ts +8 -0
- package/dist/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
- package/dist/src/localization/src/translations/en.d.ts +1 -0
- package/package.json +2 -2
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/dist/components/ai-assistant-config.js +40 -24
- package/src/ai-assistant/dist/config/models.d.ts +8 -0
- package/src/ai-assistant/dist/config/models.js +16 -8
- package/src/ai-assistant/dist/localization.js +7 -7
- package/src/ai-assistant/dist/reducers/index.js +3 -2
- package/src/ai-assistant/package.json +16 -16
- package/src/ai-assistant/src/components/ai-assistant-config.tsx +39 -28
- package/src/ai-assistant/src/config/models.ts +37 -25
- package/src/ai-assistant/src/localization.ts +6 -6
- package/src/ai-assistant/src/reducers/index.ts +2 -1
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/common/color-legend.js +8 -8
- package/src/components/dist/common/data-table/index.js +13 -9
- package/src/components/dist/map/map-legend-panel.js +10 -4
- package/src/components/dist/map/map-legend.js +2 -2
- package/src/components/dist/modal-container.js +3 -3
- package/src/components/dist/modals/tilesets-modals/tileset-raster-form.js +38 -9
- package/src/components/dist/plot-container.js +4 -2
- package/src/components/dist/side-panel/interaction-panel/interaction-panel.js +2 -2
- package/src/components/dist/side-panel/layer-panel/color-breaks-panel.js +11 -2
- package/src/components/dist/side-panel/layer-panel/color-scale-selector.js +65 -12
- package/src/components/dist/side-panel/layer-panel/custom-palette.js +18 -7
- package/src/components/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +3 -3
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +18 -4
- package/src/components/package.json +15 -15
- package/src/components/src/common/color-legend.tsx +15 -2
- package/src/components/src/common/data-table/index.tsx +1 -1
- package/src/components/src/map/map-legend-panel.tsx +21 -2
- package/src/components/src/map/map-legend.tsx +1 -1
- package/src/components/src/modal-container.tsx +6 -2
- package/src/components/src/modals/tilesets-modals/tileset-raster-form.tsx +60 -4
- package/src/components/src/plot-container.tsx +2 -1
- package/src/components/src/side-panel/interaction-panel/interaction-panel.tsx +1 -0
- package/src/components/src/side-panel/layer-panel/color-breaks-panel.tsx +14 -3
- package/src/components/src/side-panel/layer-panel/color-scale-selector.tsx +62 -8
- package/src/components/src/side-panel/layer-panel/custom-palette.tsx +11 -5
- package/src/components/src/side-panel/layer-panel/raster-tile-layer-configurator.tsx +2 -1
- package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +19 -2
- package/src/constants/dist/default-settings.js +2 -2
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/56/48/71c2c5381c01c063c164e15fa04b4b1f3faae02e6727f2f2daf483e15205feca68334bad721af0c6f31abb20b56d60504623838127764aab6883912e7f71 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/b3/bd/e4f91c7af9e320b979e29ad3b9e3a4dfcd61e4a09d6e4579104c40dcace7651b443fdd6d7ff5d947ed6c9df2c0bbbcc76a2ea86d6398e4945257eeb80dd5 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/b4/c5/a43653dff3b380f7b0793080a57c980a9a136764933e79454de0fe43a5ca +2 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/bf/88/ea60c7619185516464a4ae21f51394966047bfdf190a5463de651c61931c +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +2 -2
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/dist/table/duckdb-table-utils.js +3 -2
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/table/duckdb-table-utils.ts +5 -1
- package/src/effects/package.json +5 -5
- package/src/layers/dist/icon-layer/icon-layer.js +12 -2
- package/src/layers/dist/raster-tile/gpu-utils.d.ts +11 -10
- package/src/layers/dist/raster-tile/gpu-utils.js +7 -6
- package/src/layers/dist/raster-tile/image.d.ts +4 -0
- package/src/layers/dist/raster-tile/image.js +30 -16
- package/src/layers/dist/raster-tile/raster-tile-layer.d.ts +4 -0
- package/src/layers/dist/raster-tile/raster-tile-layer.js +18 -6
- package/src/layers/dist/raster-tile/request-throttle.d.ts +1 -1
- package/src/layers/dist/raster-tile/request-throttle.js +17 -16
- package/src/layers/dist/raster-tile/types.d.ts +16 -0
- package/src/layers/dist/raster-tile/types.js +1 -1
- package/src/layers/dist/raster-tile/url.d.ts +1 -1
- package/src/layers/dist/raster-tile/url.js +5 -4
- package/src/layers/dist/vector-tile/common-tile/tile-dataset.d.ts +4 -0
- package/src/layers/dist/vector-tile/common-tile/tile-dataset.js +10 -1
- package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +11 -0
- package/src/layers/dist/vector-tile/vector-tile-layer.js +113 -7
- package/src/layers/package.json +9 -9
- package/src/layers/src/icon-layer/icon-layer.ts +49 -38
- package/src/layers/src/raster-tile/gpu-utils.ts +96 -78
- package/src/layers/src/raster-tile/image.ts +35 -9
- package/src/layers/src/raster-tile/raster-tile-layer.ts +23 -5
- package/src/layers/src/raster-tile/request-throttle.ts +10 -5
- package/src/layers/src/raster-tile/types.ts +19 -1
- package/src/layers/src/raster-tile/url.ts +10 -3
- package/src/layers/src/vector-tile/common-tile/tile-dataset.ts +7 -0
- package/src/layers/src/vector-tile/vector-tile-layer.ts +110 -6
- package/src/localization/dist/translations/en.d.ts +1 -0
- package/src/localization/dist/translations/en.js +2 -1
- package/src/localization/package.json +1 -1
- package/src/localization/src/translations/en.ts +1 -0
- package/src/processors/dist/data-processor.js +15 -5
- package/src/processors/package.json +7 -7
- package/src/processors/src/data-processor.ts +19 -4
- package/src/reducers/package.json +16 -16
- package/src/schemas/package.json +7 -7
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/21/4a/50f77069dbf70c6792dd82d4e149375a888e25ddddd3209e2db013be62091f79082291fa06eb518cccb111b09a778e2946c1fb7a27bb6e32f72da0ccf250 +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/52/82/28cacf6fd462b779c22675964b655bf3a9f3ce9ec3c9b141a401a5bf90cb7d904ac65ab8e484570130b12771af0a0d5bab20e6976cfa773666763e046a6a +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/56/db/b5a812c56b0d1dcdcd33da37e464062a19c8752cb2296603dc72d2c54d31 +2 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c5/b6/9c4bdb089acc30ac8a16a6b9b93898757537f7017b2f725ddb832b4614d6 +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/dist/tileset/vector-tile-utils.js +9 -5
- package/src/table/package.json +5 -5
- package/src/table/src/tileset/vector-tile-utils.ts +9 -6
- package/src/tasks/package.json +2 -2
- package/src/types/package.json +1 -1
- package/src/utils/dist/application-config.js +5 -5
- package/src/utils/package.json +4 -4
- package/src/utils/src/application-config.ts +4 -6
- package/umd/keplergl.min.js +1385 -1332
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
12
13
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
@@ -26,6 +27,8 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SP
|
|
|
26
27
|
// Copyright contributors to the kepler.gl project
|
|
27
28
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
28
29
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
30
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
31
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
29
32
|
// 'tippy-js'
|
|
30
33
|
|
|
31
34
|
var HISTOGRAM_BINS = 30;
|
|
@@ -65,7 +68,7 @@ function ColorScaleSelectorFactory(ColorBreaksPanel) {
|
|
|
65
68
|
}));
|
|
66
69
|
};
|
|
67
70
|
var ColorScaleSelector = function ColorScaleSelector(_ref) {
|
|
68
|
-
var _colorUIConfig$colorR, _field$filterProps;
|
|
71
|
+
var _colorUIConfig$colorR, _colorUIConfig$custom2, _field$filterProps;
|
|
69
72
|
var layer = _ref.layer,
|
|
70
73
|
field = _ref.field,
|
|
71
74
|
dataset = _ref.dataset,
|
|
@@ -87,6 +90,20 @@ function ColorScaleSelectorFactory(ColorBreaksPanel) {
|
|
|
87
90
|
tippyInstance = _useState2[0],
|
|
88
91
|
setTippyInstance = _useState2[1];
|
|
89
92
|
var isEditingColorBreaks = colorUIConfig === null || colorUIConfig === void 0 || (_colorUIConfig$colorR = colorUIConfig.colorRangeConfig) === null || _colorUIConfig$colorR === void 0 ? void 0 : _colorUIConfig$colorR.customBreaks;
|
|
93
|
+
|
|
94
|
+
// Stores the previous selection for live preview: when choosing Custom/Custom Ordinal, we apply a temporary palette.
|
|
95
|
+
// Cancel restores {scale, range} from this ref; Confirm keeps the change and clears the ref.
|
|
96
|
+
// If the user switches between different custom scale types (e.g., from "Custom" to "Custom Ordinal") or is already in a custom scale state,
|
|
97
|
+
// this ref is updated to always store the most recent non-custom selection. Only the latest non-custom selection is restorable on cancel.
|
|
98
|
+
var prevSelectionRef = _react["default"].useRef(null);
|
|
99
|
+
|
|
100
|
+
// when custom color scale - but Confirm is not clicked yet
|
|
101
|
+
var pendingOption = (0, _react.useMemo)(function () {
|
|
102
|
+
return isEditingColorBreaks ? (dropdownSelectProps.options || []).find(function (o) {
|
|
103
|
+
var _colorUIConfig$custom;
|
|
104
|
+
return getOptionValue(o) === (colorUIConfig === null || colorUIConfig === void 0 || (_colorUIConfig$custom = colorUIConfig.customPalette) === null || _colorUIConfig$custom === void 0 ? void 0 : _colorUIConfig$custom.type);
|
|
105
|
+
}) || null : null;
|
|
106
|
+
}, [isEditingColorBreaks, dropdownSelectProps.options, getOptionValue, colorUIConfig === null || colorUIConfig === void 0 || (_colorUIConfig$custom2 = colorUIConfig.customPalette) === null || _colorUIConfig$custom2 === void 0 ? void 0 : _colorUIConfig$custom2.type]);
|
|
90
107
|
var colorScale = (0, _react.useMemo)(function () {
|
|
91
108
|
return (0, _utils.getLayerColorScale)({
|
|
92
109
|
range: range,
|
|
@@ -157,15 +174,17 @@ function ColorScaleSelectorFactory(ColorBreaksPanel) {
|
|
|
157
174
|
}, [dataset, fieldValueAccessor, allBins, isFiltered, field === null || field === void 0 ? void 0 : field.type, ordinalDomain]);
|
|
158
175
|
var onSelectScale = (0, _react.useCallback)(function (val) {
|
|
159
176
|
// highlight selected option
|
|
160
|
-
if (!val
|
|
177
|
+
if (!val) return;
|
|
161
178
|
var selectedScale = getOptionValue(val);
|
|
162
|
-
if (selectedScale === _constants.SCALE_TYPES.custom) {
|
|
163
|
-
var customPalette = (0, _utils.initCustomPaletteByCustomScale)({
|
|
179
|
+
if (selectedScale === _constants.SCALE_TYPES.custom || selectedScale === _constants.SCALE_TYPES.customOrdinal) {
|
|
180
|
+
var customPalette = (0, _utils.initCustomPaletteByCustomScale)(_objectSpread({
|
|
164
181
|
scale: selectedScale,
|
|
165
182
|
field: field,
|
|
166
183
|
range: range,
|
|
167
184
|
colorBreaks: colorBreaks
|
|
168
|
-
}
|
|
185
|
+
}, selectedScale === _constants.SCALE_TYPES.customOrdinal ? {
|
|
186
|
+
ordinalDomain: ordinalDomain
|
|
187
|
+
} : {}));
|
|
169
188
|
setColorUI({
|
|
170
189
|
showColorChart: true,
|
|
171
190
|
colorRangeConfig: {
|
|
@@ -173,25 +192,58 @@ function ColorScaleSelectorFactory(ColorBreaksPanel) {
|
|
|
173
192
|
},
|
|
174
193
|
customPalette: customPalette
|
|
175
194
|
});
|
|
195
|
+
// store previous selection for cancel, then preview custom on the map
|
|
196
|
+
if (!prevSelectionRef.current) {
|
|
197
|
+
prevSelectionRef.current = {
|
|
198
|
+
scale: scaleType,
|
|
199
|
+
range: range
|
|
200
|
+
};
|
|
201
|
+
}
|
|
176
202
|
onSelect(selectedScale, customPalette);
|
|
177
|
-
} else if ((0, _utils.hasColorMap)(range)
|
|
203
|
+
} else if ((0, _utils.hasColorMap)(range)) {
|
|
178
204
|
// not custom
|
|
179
205
|
// remove colorMap
|
|
180
206
|
// eslint-disable-next-line no-unused-vars
|
|
181
207
|
var _ = range.colorMap,
|
|
182
208
|
newRange = (0, _objectWithoutProperties2["default"])(range, _excluded2);
|
|
209
|
+
// reset colorUI before changing the scale
|
|
210
|
+
setColorUI({
|
|
211
|
+
showColorChart: false,
|
|
212
|
+
colorRangeConfig: {
|
|
213
|
+
customBreaks: false
|
|
214
|
+
}
|
|
215
|
+
});
|
|
183
216
|
onSelect(selectedScale, newRange);
|
|
184
217
|
} else {
|
|
218
|
+
// reset colorUI before changing the scale
|
|
219
|
+
setColorUI({
|
|
220
|
+
showColorChart: false,
|
|
221
|
+
colorRangeConfig: {
|
|
222
|
+
customBreaks: false
|
|
223
|
+
}
|
|
224
|
+
});
|
|
185
225
|
onSelect(selectedScale);
|
|
186
226
|
}
|
|
187
|
-
}, [
|
|
227
|
+
}, [field, setColorUI, onSelect, range, getOptionValue, colorBreaks, ordinalDomain, scaleType]);
|
|
188
228
|
var onApply = (0, _react.useCallback)(function () {
|
|
189
|
-
|
|
229
|
+
var _colorUIConfig$custom3;
|
|
230
|
+
// change scale type only if confirmed
|
|
231
|
+
var nextScaleType = (colorUIConfig === null || colorUIConfig === void 0 || (_colorUIConfig$custom3 = colorUIConfig.customPalette) === null || _colorUIConfig$custom3 === void 0 ? void 0 : _colorUIConfig$custom3.type) || scaleType;
|
|
232
|
+
onSelect(nextScaleType, colorUIConfig.customPalette);
|
|
190
233
|
hideTippy(tippyInstance);
|
|
234
|
+
prevSelectionRef.current = null;
|
|
191
235
|
}, [onSelect, colorUIConfig.customPalette, tippyInstance, scaleType]);
|
|
192
236
|
var onCancel = (0, _react.useCallback)(function () {
|
|
237
|
+
// restore previous selection if any
|
|
238
|
+
if (prevSelectionRef.current) {
|
|
239
|
+
var _prevSelectionRef$cur = prevSelectionRef.current,
|
|
240
|
+
prevScale = _prevSelectionRef$cur.scale,
|
|
241
|
+
prevRange = _prevSelectionRef$cur.range;
|
|
242
|
+
onSelect(prevScale, prevRange);
|
|
243
|
+
}
|
|
193
244
|
hideTippy(tippyInstance);
|
|
194
|
-
|
|
245
|
+
prevSelectionRef.current = null;
|
|
246
|
+
}, [tippyInstance, onSelect]);
|
|
195
247
|
var isCustomBreaks = scaleType === _constants.SCALE_TYPES.custom || scaleType === _constants.SCALE_TYPES.customOrdinal;
|
|
196
248
|
return /*#__PURE__*/_react["default"].createElement(DropdownPropContext.Provider, {
|
|
197
249
|
value: {
|
|
@@ -227,17 +279,18 @@ function ColorScaleSelectorFactory(ColorBreaksPanel) {
|
|
|
227
279
|
onOptionSelected: onSelectScale,
|
|
228
280
|
customListComponent: ColorScaleSelectDropdown,
|
|
229
281
|
searchable: false,
|
|
230
|
-
showOptionsWhenEmpty: true
|
|
282
|
+
showOptionsWhenEmpty: true,
|
|
283
|
+
selectedItems: pendingOption ? [pendingOption] : dropdownSelectProps.selectedItems
|
|
231
284
|
})));
|
|
232
285
|
}
|
|
233
286
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
234
287
|
className: "dropdown-select"
|
|
235
288
|
}, /*#__PURE__*/_react["default"].createElement(_dropdownSelect["default"], (0, _extends2["default"])({}, dropdownSelectProps, {
|
|
236
289
|
displayOption: displayOption,
|
|
237
|
-
value: dropdownSelectProps.selectedItems[0]
|
|
290
|
+
value: pendingOption || dropdownSelectProps.selectedItems[0]
|
|
238
291
|
}))))));
|
|
239
292
|
};
|
|
240
293
|
return ColorScaleSelector;
|
|
241
294
|
}
|
|
242
295
|
var _default = exports["default"] = ColorScaleSelectorFactory;
|
|
243
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2NvbG9yQnJlYWtzUGFuZWwiLCJfZHJvcGRvd25TZWxlY3QiLCJfYWNjZXNzb3IiLCJfZHJvcGRvd25MaXN0IiwiX2xhenlUaXBweSIsIl90eXBlYWhlYWQiLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiSElTVE9HUkFNX0JJTlMiLCJEcm9wZG93blByb3BDb250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwiUE9QUEVSX09QVElPTlMiLCJtb2RpZmllcnMiLCJuYW1lIiwib3B0aW9ucyIsIm9mZnNldCIsIkRyb3Bkb3duQm90dG9tIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3BMVCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcCIsIlN0eWxlZFNjYWxlU2VsZWN0RHJvcGRvd24iLCJkcm9wZG93bkxpc3RTaGFkb3ciLCJEcm9wZG93bldyYXBwZXIiLCJkcm9wZG93bldyYXBwZXJaIiwiZHJvcGRvd25XYXBwZXJNYXJnaW4iLCJTdHlsZWRDb2xvclNjYWxlU2VsZWN0b3IiLCJoaWRlVGlwcHkiLCJ0aXBweUluc3RhbmNlIiwiaGlkZSIsIkNvbG9yU2NhbGVTZWxlY3RvckZhY3RvcnkiLCJkZXBzIiwiQ29sb3JCcmVha3NQYW5lbEZhY3RvcnkiLCJDb2xvckJyZWFrc1BhbmVsIiwiQ29sb3JTY2FsZVNlbGVjdERyb3Bkb3duIiwiY3JlYXRlRWxlbWVudCIsIkNvbnN1bWVyIiwiY29udGV4dCIsIkNvbG9yU2NhbGVTZWxlY3RvciIsIl9yZWYiLCJfY29sb3JVSUNvbmZpZyRjb2xvclIiLCJfZmllbGQkZmlsdGVyUHJvcHMiLCJsYXllciIsImZpZWxkIiwiZGF0YXNldCIsIm9uU2VsZWN0Iiwic2NhbGVUeXBlIiwiZG9tYWluIiwiYWdncmVnYXRlZEJpbnMiLCJyYW5nZSIsInNldENvbG9yVUkiLCJjb2xvclVJQ29uZmlnIiwiY2hhbm5lbEtleSIsImRyb3Bkb3duU2VsZWN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiZGlzcGxheU9wdGlvbiIsIkFjY2Vzc29yIiwiZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0ZvciIsImdldE9wdGlvblZhbHVlIiwidXNlTWVtbyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNldFRpcHB5SW5zdGFuY2UiLCJpc0VkaXRpbmdDb2xvckJyZWFrcyIsImNvbG9yUmFuZ2VDb25maWciLCJjdXN0b21CcmVha3MiLCJjb2xvclNjYWxlIiwiZ2V0TGF5ZXJDb2xvclNjYWxlIiwiY29sb3JCcmVha3MiLCJfZmllbGQkdHlwZSIsImdldExlZ2VuZE9mU2NhbGUiLCJzY2FsZSIsImJ5Wm9vbSIsImxlbmd0aCIsImZpZWxkVHlwZSIsInR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJyZWFsIiwiY29sdW1uU3RhdHMiLCJmaWx0ZXJQcm9wcyIsImZpZWxkVmFsdWVBY2Nlc3NvciIsImlkeCIsImdldFZhbHVlIiwiZGF0YUNvbnRhaW5lciIsInJvd0FzQXJyYXkiLCJvcmRpbmFsRG9tYWluIiwiY29uZmlnIiwidmlzdWFsQ2hhbm5lbHMiLCJhbGxCaW5zIiwic3RyaW5nIiwiaGlzdG9ncmFtRnJvbU9yZGluYWwiLCJhbGxJbmRleGVzIiwiaGlzdG9ncmFtRnJvbVZhbHVlcyIsInZhbHVlcyIsIm1hcCIsImJpbiIsInZhbHVlIiwiYmlucyIsImhpc3RvZ3JhbURvbWFpbiIsImdldEhpc3RvZ3JhbURvbWFpbiIsImlzRmlsdGVyZWQiLCJmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIiwiZmlsdGVyZWRCaW5zIiwiZmlsdGVyRW1wdHlCaW5zIiwidGhyZXNob2xkcyIsImIiLCJ4MCIsImhpc3RvZ3JhbUZyb21UaHJlc2hvbGQiLCJvblNlbGVjdFNjYWxlIiwidXNlQ2FsbGJhY2siLCJ2YWwiLCJzZWxlY3RlZFNjYWxlIiwiU0NBTEVfVFlQRVMiLCJjdXN0b20iLCJjdXN0b21QYWxldHRlIiwiaW5pdEN1c3RvbVBhbGV0dGVCeUN1c3RvbVNjYWxlIiwic2hvd0NvbG9yQ2hhcnQiLCJoYXNDb2xvck1hcCIsImN1c3RvbU9yZGluYWwiLCJfIiwiY29sb3JNYXAiLCJuZXdSYW5nZSIsIm9uQXBwbHkiLCJvbkNhbmNlbCIsImlzQ3VzdG9tQnJlYWtzIiwiUHJvdmlkZXIiLCJjb2xvckZpZWxkIiwib25TY2FsZUNoYW5nZSIsInRyaWdnZXIiLCJwbGFjZW1lbnQiLCJhcHBlbmRUbyIsImludGVyYWN0aXZlIiwiaGlkZU9uQ2xpY2siLCJvbkNyZWF0ZSIsInBvcHBlck9wdGlvbnMiLCJyZW5kZXIiLCJhdHRycyIsImRpc2FibGVkIiwiX2V4dGVuZHMyIiwib25PcHRpb25TZWxlY3RlZCIsImN1c3RvbUxpc3RDb21wb25lbnQiLCJzZWFyY2hhYmxlIiwic2hvd09wdGlvbnNXaGVuRW1wdHkiLCJjbGFzc05hbWUiLCJzZWxlY3RlZEl0ZW1zIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3Itc2NhbGUtc2VsZWN0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7QUxMX0ZJRUxEX1RZUEVTLCBTQ0FMRV9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtBZ2dyZWdhdGVkQmluLCBMYXllciwgVmlzdWFsQ2hhbm5lbERvbWFpbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge0NvbG9yUmFuZ2UsIENvbG9yVUksIEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldExheWVyQ29sb3JTY2FsZSxcbiAgZ2V0TGVnZW5kT2ZTY2FsZSxcbiAgaW5pdEN1c3RvbVBhbGV0dGVCeUN1c3RvbVNjYWxlLFxuICBoaXN0b2dyYW1Gcm9tVmFsdWVzLFxuICBoaXN0b2dyYW1Gcm9tT3JkaW5hbCxcbiAgaGlzdG9ncmFtRnJvbVRocmVzaG9sZCxcbiAgZ2V0SGlzdG9ncmFtRG9tYWluLFxuICBoYXNDb2xvck1hcFxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IENvbG9yQnJlYWtzUGFuZWxGYWN0b3J5LCB7Q29sb3JCcmVha3NQYW5lbFByb3BzfSBmcm9tICcuL2NvbG9yLWJyZWFrcy1wYW5lbCc7XG5pbXBvcnQge1NldENvbG9yVUlGdW5jfSBmcm9tICcuL2N1c3RvbS1wYWxldHRlJztcbmltcG9ydCBEcm9wZG93blNlbGVjdCBmcm9tICcuLi8uLi9jb21tb24vaXRlbS1zZWxlY3Rvci9kcm9wZG93bi1zZWxlY3QnO1xuaW1wb3J0IEFjY2Vzc29yIGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2FjY2Vzc29yJztcbmltcG9ydCBEcm9wZG93bkxpc3QgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvZHJvcGRvd24tbGlzdCc7XG5pbXBvcnQgTGF6eVRpcHB5IGZyb20gJy4uLy4uL21hcC9sYXp5LXRpcHB5JztcbmltcG9ydCBUeXBlYWhlYWQgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvdHlwZWFoZWFkJztcblxudHlwZSBUaXBweUluc3RhbmNlID0gYW55OyAvLyAndGlwcHktanMnXG5cbmNvbnN0IEhJU1RPR1JBTV9CSU5TID0gMzA7XG5cbmV4cG9ydCB0eXBlIFNjYWxlT3B0aW9uID0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIE9uU2VsZWN0RnVuYyA9ICh2OiBzdHJpbmcsIHZpc0NvbmZnPzogUmVjb3JkPHN0cmluZywgYW55PikgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgQ29udGV4dFByb3BzID0gQ29sb3JCcmVha3NQYW5lbFByb3BzO1xuXG5leHBvcnQgdHlwZSBDb2xvclNjYWxlU2VsZWN0b3JQcm9wcyA9IHtcbiAgbGF5ZXI6IExheWVyO1xuICBmaWVsZDogRmllbGQ7XG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlO1xuICBzY2FsZVR5cGU6IHN0cmluZztcbiAgZG9tYWluOiBWaXN1YWxDaGFubmVsRG9tYWluO1xuICByYW5nZTogQ29sb3JSYW5nZTtcbiAgb25TZWxlY3Q6IE9uU2VsZWN0RnVuYztcbiAgc2V0Q29sb3JVSTogU2V0Q29sb3JVSUZ1bmM7XG4gIGNvbG9yVUlDb25maWc6IENvbG9yVUk7XG4gIG9wdGlvbnM6IFNjYWxlT3B0aW9uW107XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgc2VsZWN0ZWRJdGVtczogU2NhbGVPcHRpb25bXTtcbiAgbXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gIHNlYXJjaGFibGU6IGJvb2xlYW47XG4gIGRpc3BsYXlPcHRpb246IHN0cmluZztcbiAgZ2V0T3B0aW9uVmFsdWU6IHN0cmluZztcbiAgYWdncmVnYXRlZEJpbnM/OiBBZ2dyZWdhdGVkQmluW107XG4gIGNoYW5uZWxLZXk6IHN0cmluZztcbn07XG5cbmNvbnN0IERyb3Bkb3duUHJvcENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmNvbnN0IFBPUFBFUl9PUFRJT05TID0ge1xuICBtb2RpZmllcnM6IFtcbiAgICAvLyB6ZXJvIG9mZnNldHMgc2luY2UgdGhleSBhcmUgYWxyZWFkeSBhZGRlZCBpbiBWZXJ0aWNhbFRvb2xiYXJcbiAgICB7bmFtZTogJ29mZnNldCcsIG9wdGlvbnM6IHtvZmZzZXQ6IFswLCAwXX19XG4gIF1cbn07XG5cbmNvbnN0IERyb3Bkb3duQm90dG9tID0gc3R5bGVkLmRpdjx7bGlnaHQ/OiBib29sZWFufT5gXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZFxuICAgICR7cHJvcHMgPT5cbiAgICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCb3JkZXJUb3B9O1xuYDtcblxuY29uc3QgU3R5bGVkU2NhbGVTZWxlY3REcm9wZG93biA9IHN0eWxlZC5kaXZgXG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0U2hhZG93fTtcbiAgLmxpc3Qtc2VsZWN0b3Ige1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxuICAubGlzdF9faXRlbSB7XG4gICAgcGFkZGluZzogNHB4IDlweDtcbiAgfVxuYDtcbmNvbnN0IERyb3Bkb3duV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGJvcmRlcjogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25XcmFwcGVyWn07XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLXRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldhcHBlck1hcmdpbn1weDtcbmA7XG5cbmNvbnN0IFN0eWxlZENvbG9yU2NhbGVTZWxlY3RvciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLnR5cGVhaGVhZCB7XG4gICAgLy8gYWRkcyBwYWRkaW5nIHRvIGJvdHRvbSBvZiBkcm9wZG93blxuICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gIH1cbiAgW2RhdGEtdGlwcHktcm9vdF0ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5gO1xuXG5mdW5jdGlvbiBoaWRlVGlwcHkodGlwcHlJbnN0YW5jZSkge1xuICBpZiAodGlwcHlJbnN0YW5jZSkge1xuICAgIHRpcHB5SW5zdGFuY2UuaGlkZSgpO1xuICB9XG59XG5Db2xvclNjYWxlU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbQ29sb3JCcmVha3NQYW5lbEZhY3RvcnldO1xuXG5mdW5jdGlvbiBDb2xvclNjYWxlU2VsZWN0b3JGYWN0b3J5KFxuICBDb2xvckJyZWFrc1BhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBDb2xvckJyZWFrc1BhbmVsRmFjdG9yeT5cbik6IFJlYWN0LkZDPENvbG9yU2NhbGVTZWxlY3RvclByb3BzPiB7XG4gIGNvbnN0IENvbG9yU2NhbGVTZWxlY3REcm9wZG93biA9IHByb3BzID0+IChcbiAgICA8U3R5bGVkU2NhbGVTZWxlY3REcm9wZG93bj5cbiAgICAgIDxEcm9wZG93bkxpc3Qgey4uLnByb3BzfSAvPlxuICAgICAgPERyb3Bkb3duUHJvcENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgIHsoY29udGV4dDogYW55KSA9PiAoXG4gICAgICAgICAgPERyb3Bkb3duQm90dG9tPlxuICAgICAgICAgICAgPENvbG9yQnJlYWtzUGFuZWwgey4uLmNvbnRleHR9IC8+XG4gICAgICAgICAgPC9Ecm9wZG93bkJvdHRvbT5cbiAgICAgICAgKX1cbiAgICAgIDwvRHJvcGRvd25Qcm9wQ29udGV4dC5Db25zdW1lcj5cbiAgICA8L1N0eWxlZFNjYWxlU2VsZWN0RHJvcGRvd24+XG4gICk7XG5cbiAgY29uc3QgQ29sb3JTY2FsZVNlbGVjdG9yOiBSZWFjdC5GQzxDb2xvclNjYWxlU2VsZWN0b3JQcm9wcz4gPSAoe1xuICAgIGxheWVyLFxuICAgIGZpZWxkLFxuICAgIGRhdGFzZXQsXG4gICAgb25TZWxlY3QsXG4gICAgc2NhbGVUeXBlLFxuICAgIGRvbWFpbixcbiAgICBhZ2dyZWdhdGVkQmlucyxcbiAgICByYW5nZSxcbiAgICBzZXRDb2xvclVJLFxuICAgIGNvbG9yVUlDb25maWcsXG4gICAgY2hhbm5lbEtleSxcbiAgICAuLi5kcm9wZG93blNlbGVjdFByb3BzXG4gIH0pID0+IHtcbiAgICBjb25zdCBkaXNwbGF5T3B0aW9uID0gQWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcihkcm9wZG93blNlbGVjdFByb3BzLmRpc3BsYXlPcHRpb24pO1xuICAgIGNvbnN0IGdldE9wdGlvblZhbHVlID0gdXNlTWVtbyhcbiAgICAgICgpID0+IEFjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IoZHJvcGRvd25TZWxlY3RQcm9wcy5nZXRPcHRpb25WYWx1ZSksXG4gICAgICBbZHJvcGRvd25TZWxlY3RQcm9wcy5nZXRPcHRpb25WYWx1ZV1cbiAgICApO1xuICAgIGNvbnN0IFt0aXBweUluc3RhbmNlLCBzZXRUaXBweUluc3RhbmNlXSA9IHVzZVN0YXRlPFRpcHB5SW5zdGFuY2U+KCk7XG4gICAgY29uc3QgaXNFZGl0aW5nQ29sb3JCcmVha3MgPSBjb2xvclVJQ29uZmlnPy5jb2xvclJhbmdlQ29uZmlnPy5jdXN0b21CcmVha3M7XG4gICAgY29uc3QgY29sb3JTY2FsZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PlxuICAgICAgICBnZXRMYXllckNvbG9yU2NhbGUoe1xuICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgIGRvbWFpbixcbiAgICAgICAgICBzY2FsZVR5cGUsXG4gICAgICAgICAgbGF5ZXJcbiAgICAgICAgfSksXG4gICAgICBbcmFuZ2UsIGRvbWFpbiwgc2NhbGVUeXBlLCBsYXllcl1cbiAgICApO1xuXG4gICAgY29uc3QgY29sb3JCcmVha3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHJldHVybiBjb2xvclNjYWxlXG4gICAgICAgID8gZ2V0TGVnZW5kT2ZTY2FsZSh7XG4gICAgICAgICAgICBzY2FsZTogY29sb3JTY2FsZS5ieVpvb20gJiYgZG9tYWluID8gY29sb3JTY2FsZShkb21haW4/Lmxlbmd0aCAtIDEpIDogY29sb3JTY2FsZSxcbiAgICAgICAgICAgIHNjYWxlVHlwZSxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogZmllbGQ/LnR5cGUgPz8gQUxMX0ZJRUxEX1RZUEVTLnJlYWxcbiAgICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgfSwgW2NvbG9yU2NhbGUsIHNjYWxlVHlwZSwgZmllbGQ/LnR5cGUsIGRvbWFpbl0pO1xuXG4gICAgY29uc3QgY29sdW1uU3RhdHMgPSBmaWVsZD8uZmlsdGVyUHJvcHM/LmNvbHVtblN0YXRzO1xuXG4gICAgY29uc3QgZmllbGRWYWx1ZUFjY2Vzc29yID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gZmllbGRcbiAgICAgICAgPyBpZHggPT4gZGF0YXNldC5nZXRWYWx1ZShmaWVsZC5uYW1lLCBpZHgpXG4gICAgICAgIDogaWR4ID0+IGRhdGFzZXQuZGF0YUNvbnRhaW5lci5yb3dBc0FycmF5KGlkeCk7XG4gICAgfSwgW2RhdGFzZXQsIGZpZWxkXSk7XG5cbiAgICBjb25zdCBvcmRpbmFsRG9tYWluID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gbGF5ZXIuY29uZmlnW2xheWVyLnZpc3VhbENoYW5uZWxzW2NoYW5uZWxLZXldLmRvbWFpbl0gfHwgW107XG4gICAgfSwgW2NoYW5uZWxLZXksIGxheWVyLmNvbmZpZywgbGF5ZXIudmlzdWFsQ2hhbm5lbHNdKTtcblxuICAgIC8vIGFnZ3JlZ2F0ZWRCaW5zIHNob3VsZCBiZSB0aGUgcmF3IGRhdGFcbiAgICBjb25zdCBhbGxCaW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoZmllbGQ/LnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpIHtcbiAgICAgICAgLy8gVXNlIG9yZGluYWwgYmlucyBmb3Igc3RyaW5nIGNvbHVtbnMsIGFzIGQzIGNvdWxkIHBvdGVudGlhbGx5IGdlbmVyYXRlIGludmFsaWQgbnVtZXJpYyBiaW5zLCBhbmQgY3Jhc2hcbiAgICAgICAgcmV0dXJuIGhpc3RvZ3JhbUZyb21PcmRpbmFsKG9yZGluYWxEb21haW4sIGRhdGFzZXQuYWxsSW5kZXhlcywgZmllbGRWYWx1ZUFjY2Vzc29yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFnZ3JlZ2F0ZWRCaW5zKSB7XG4gICAgICAgIHJldHVybiBoaXN0b2dyYW1Gcm9tVmFsdWVzKFxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoYWdncmVnYXRlZEJpbnMpLm1hcChiaW4gPT4gYmluLmkpLFxuICAgICAgICAgIEhJU1RPR1JBTV9CSU5TLFxuICAgICAgICAgIGlkeCA9PiBhZ2dyZWdhdGVkQmluc1tpZHhdLnZhbHVlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sdW1uU3RhdHM/LmJpbnNcbiAgICAgICAgPyBjb2x1bW5TdGF0cz8uYmluc1xuICAgICAgICA6IGhpc3RvZ3JhbUZyb21WYWx1ZXMoZGF0YXNldC5hbGxJbmRleGVzLCBISVNUT0dSQU1fQklOUywgZmllbGRWYWx1ZUFjY2Vzc29yKTtcbiAgICB9LCBbYWdncmVnYXRlZEJpbnMsIGNvbHVtblN0YXRzLCBkYXRhc2V0LCBmaWVsZFZhbHVlQWNjZXNzb3IsIGZpZWxkPy50eXBlLCBvcmRpbmFsRG9tYWluXSk7XG5cbiAgICBjb25zdCBoaXN0b2dyYW1Eb21haW4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHJldHVybiBnZXRIaXN0b2dyYW1Eb21haW4oe2FnZ3JlZ2F0ZWRCaW5zLCBjb2x1bW5TdGF0cywgZGF0YXNldCwgZmllbGRWYWx1ZUFjY2Vzc29yfSk7XG4gICAgfSwgW2RhdGFzZXQsIGZpZWxkVmFsdWVBY2Nlc3NvciwgYWdncmVnYXRlZEJpbnMsIGNvbHVtblN0YXRzXSk7XG5cbiAgICBjb25zdCBpc0ZpbHRlcmVkID0gYWdncmVnYXRlZEJpbnNcbiAgICAgID8gZmFsc2VcbiAgICAgIDogZGF0YXNldC5maWx0ZXJlZEluZGV4Rm9yRG9tYWluLmxlbmd0aCAhPT0gZGF0YXNldC5hbGxJbmRleGVzLmxlbmd0aDtcblxuICAgIC8vIGdldCBmaWx0ZXJlZEJpbnMgKG5vdCBhcHBseSB0byBhZ2dyZWdhdGUgbGF5ZXIpXG4gICAgY29uc3QgZmlsdGVyZWRCaW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoIWlzRmlsdGVyZWQpIHtcbiAgICAgICAgcmV0dXJuIGFsbEJpbnM7XG4gICAgICB9XG4gICAgICBpZiAoZmllbGQ/LnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGhpc3RvZ3JhbUZyb21PcmRpbmFsKFxuICAgICAgICAgIG9yZGluYWxEb21haW4gYXMgYW55LFxuICAgICAgICAgIGRhdGFzZXQuZmlsdGVyZWRJbmRleEZvckRvbWFpbixcbiAgICAgICAgICBmaWVsZFZhbHVlQWNjZXNzb3JcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIC8vIG51bWVyaWMgdGhyZXNob2xkc1xuICAgICAgY29uc3QgZmlsdGVyRW1wdHlCaW5zID0gZmFsc2U7XG4gICAgICBjb25zdCB0aHJlc2hvbGRzID0gYWxsQmlucy5tYXAoYiA9PiBiLngwKTtcbiAgICAgIHJldHVybiBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkKFxuICAgICAgICB0aHJlc2hvbGRzLFxuICAgICAgICBkYXRhc2V0LmZpbHRlcmVkSW5kZXhGb3JEb21haW4sXG4gICAgICAgIGZpZWxkVmFsdWVBY2Nlc3NvcixcbiAgICAgICAgZmlsdGVyRW1wdHlCaW5zXG4gICAgICApO1xuICAgIH0sIFtkYXRhc2V0LCBmaWVsZFZhbHVlQWNjZXNzb3IsIGFsbEJpbnMsIGlzRmlsdGVyZWQsIGZpZWxkPy50eXBlLCBvcmRpbmFsRG9tYWluXSk7XG5cbiAgICBjb25zdCBvblNlbGVjdFNjYWxlID0gdXNlQ2FsbGJhY2soXG4gICAgICB2YWwgPT4ge1xuICAgICAgICAvLyBoaWdobGlnaHQgc2VsZWN0ZWQgb3B0aW9uXG4gICAgICAgIGlmICghdmFsIHx8IGlzRWRpdGluZ0NvbG9yQnJlYWtzKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkU2NhbGUgPSBnZXRPcHRpb25WYWx1ZSh2YWwpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRTY2FsZSA9PT0gU0NBTEVfVFlQRVMuY3VzdG9tKSB7XG4gICAgICAgICAgY29uc3QgY3VzdG9tUGFsZXR0ZSA9IGluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSh7XG4gICAgICAgICAgICBzY2FsZTogc2VsZWN0ZWRTY2FsZSxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICBjb2xvckJyZWFrc1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHNldENvbG9yVUkoe1xuICAgICAgICAgICAgc2hvd0NvbG9yQ2hhcnQ6IHRydWUsXG4gICAgICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiB7XG4gICAgICAgICAgICAgIGN1c3RvbUJyZWFrczogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGN1c3RvbVBhbGV0dGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvblNlbGVjdChzZWxlY3RlZFNjYWxlLCBjdXN0b21QYWxldHRlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYXNDb2xvck1hcChyYW5nZSkgJiYgc2VsZWN0ZWRTY2FsZSAhPT0gU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbCkge1xuICAgICAgICAgIC8vIG5vdCBjdXN0b21cbiAgICAgICAgICAvLyByZW1vdmUgY29sb3JNYXBcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICBjb25zdCB7Y29sb3JNYXA6IF8sIC4uLm5ld1JhbmdlfSA9IHJhbmdlO1xuICAgICAgICAgIG9uU2VsZWN0KHNlbGVjdGVkU2NhbGUsIG5ld1JhbmdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvblNlbGVjdChzZWxlY3RlZFNjYWxlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtpc0VkaXRpbmdDb2xvckJyZWFrcywgZmllbGQsIHNldENvbG9yVUksIG9uU2VsZWN0LCByYW5nZSwgZ2V0T3B0aW9uVmFsdWUsIGNvbG9yQnJlYWtzXVxuICAgICk7XG5cbiAgICBjb25zdCBvbkFwcGx5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgb25TZWxlY3Qoc2NhbGVUeXBlLCBjb2xvclVJQ29uZmlnLmN1c3RvbVBhbGV0dGUpO1xuICAgICAgaGlkZVRpcHB5KHRpcHB5SW5zdGFuY2UpO1xuICAgIH0sIFtvblNlbGVjdCwgY29sb3JVSUNvbmZpZy5jdXN0b21QYWxldHRlLCB0aXBweUluc3RhbmNlLCBzY2FsZVR5cGVdKTtcblxuICAgIGNvbnN0IG9uQ2FuY2VsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaGlkZVRpcHB5KHRpcHB5SW5zdGFuY2UpO1xuICAgIH0sIFt0aXBweUluc3RhbmNlXSk7XG5cbiAgICBjb25zdCBpc0N1c3RvbUJyZWFrcyA9XG4gICAgICBzY2FsZVR5cGUgPT09IFNDQUxFX1RZUEVTLmN1c3RvbSB8fCBzY2FsZVR5cGUgPT09IFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duUHJvcENvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICBzZXRDb2xvclVJLFxuICAgICAgICAgIGNvbG9yRmllbGQ6IGZpZWxkLFxuICAgICAgICAgIGRhdGFzZXQsXG4gICAgICAgICAgY29sb3JVSUNvbmZpZyxcbiAgICAgICAgICBjb2xvckJyZWFrcyxcbiAgICAgICAgICBpc0N1c3RvbUJyZWFrcyxcbiAgICAgICAgICBhbGxCaW5zLFxuICAgICAgICAgIGZpbHRlcmVkQmlucyxcbiAgICAgICAgICBpc0ZpbHRlcmVkLFxuICAgICAgICAgIGhpc3RvZ3JhbURvbWFpbixcbiAgICAgICAgICBvcmRpbmFsRG9tYWluLFxuICAgICAgICAgIG9uU2NhbGVDaGFuZ2U6IG9uU2VsZWN0LFxuICAgICAgICAgIG9uQXBwbHksXG4gICAgICAgICAgb25DYW5jZWxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZENvbG9yU2NhbGVTZWxlY3Rvcj5cbiAgICAgICAgICA8TGF6eVRpcHB5XG4gICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXN0YXJ0XCJcbiAgICAgICAgICAgIGFwcGVuZFRvPVwicGFyZW50XCJcbiAgICAgICAgICAgIGludGVyYWN0aXZlPXt0cnVlfVxuICAgICAgICAgICAgaGlkZU9uQ2xpY2s9eyFpc0VkaXRpbmdDb2xvckJyZWFrc31cbiAgICAgICAgICAgIG9uQ3JlYXRlPXtzZXRUaXBweUluc3RhbmNlfVxuICAgICAgICAgICAgcG9wcGVyT3B0aW9ucz17UE9QUEVSX09QVElPTlN9XG4gICAgICAgICAgICByZW5kZXI9e2F0dHJzID0+IChcbiAgICAgICAgICAgICAgPERyb3Bkb3duV3JhcHBlciB7Li4uYXR0cnN9PlxuICAgICAgICAgICAgICAgIHsvKiBAdHMtaWdub3JlKi99XG4gICAgICAgICAgICAgICAgeyFkcm9wZG93blNlbGVjdFByb3BzLmRpc2FibGVkICYmIChcbiAgICAgICAgICAgICAgICAgIDxUeXBlYWhlYWRcbiAgICAgICAgICAgICAgICAgICAgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e2Rpc3BsYXlPcHRpb259XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9e2dldE9wdGlvblZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXtvblNlbGVjdFNjYWxlfVxuICAgICAgICAgICAgICAgICAgICBjdXN0b21MaXN0Q29tcG9uZW50PXtDb2xvclNjYWxlU2VsZWN0RHJvcGRvd259XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBzaG93T3B0aW9uc1doZW5FbXB0eVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duV3JhcHBlcj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkcm9wZG93bi1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgey8qIEB0cy1pZ25vcmUqL31cbiAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0XG4gICAgICAgICAgICAgICAgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9XG4gICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17ZGlzcGxheU9wdGlvbn1cbiAgICAgICAgICAgICAgICB2YWx1ZT17ZHJvcGRvd25TZWxlY3RQcm9wcy5zZWxlY3RlZEl0ZW1zWzBdfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9MYXp5VGlwcHk+XG4gICAgICAgIDwvU3R5bGVkQ29sb3JTY2FsZVNlbGVjdG9yPlxuICAgICAgPC9Ecm9wZG93blByb3BDb250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBDb2xvclNjYWxlU2VsZWN0b3I7XG59XG5leHBvcnQgZGVmYXVsdCBDb2xvclNjYWxlU2VsZWN0b3JGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBSUEsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBV0EsSUFBQUssaUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFNLGVBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLFVBQUEsR0FBQVIsc0JBQUEsQ0FBQUYsT0FBQTtBQUE2RCxJQUFBVyxTQUFBO0VBQUFDLFVBQUE7QUFBQSxJQUFBQyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBM0I3RDtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFuQix3QkFBQW1CLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFB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
|
|
296
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2NvbG9yQnJlYWtzUGFuZWwiLCJfZHJvcGRvd25TZWxlY3QiLCJfYWNjZXNzb3IiLCJfZHJvcGRvd25MaXN0IiwiX2xhenlUaXBweSIsIl90eXBlYWhlYWQiLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSElTVE9HUkFNX0JJTlMiLCJEcm9wZG93blByb3BDb250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwiUE9QUEVSX09QVElPTlMiLCJtb2RpZmllcnMiLCJuYW1lIiwib3B0aW9ucyIsIm9mZnNldCIsIkRyb3Bkb3duQm90dG9tIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCb3JkZXJUb3BMVCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcCIsIlN0eWxlZFNjYWxlU2VsZWN0RHJvcGRvd24iLCJkcm9wZG93bkxpc3RTaGFkb3ciLCJEcm9wZG93bldyYXBwZXIiLCJkcm9wZG93bldyYXBwZXJaIiwiZHJvcGRvd25XYXBwZXJNYXJnaW4iLCJTdHlsZWRDb2xvclNjYWxlU2VsZWN0b3IiLCJoaWRlVGlwcHkiLCJ0aXBweUluc3RhbmNlIiwiaGlkZSIsIkNvbG9yU2NhbGVTZWxlY3RvckZhY3RvcnkiLCJkZXBzIiwiQ29sb3JCcmVha3NQYW5lbEZhY3RvcnkiLCJDb2xvckJyZWFrc1BhbmVsIiwiQ29sb3JTY2FsZVNlbGVjdERyb3Bkb3duIiwiY3JlYXRlRWxlbWVudCIsIkNvbnN1bWVyIiwiY29udGV4dCIsIkNvbG9yU2NhbGVTZWxlY3RvciIsIl9yZWYiLCJfY29sb3JVSUNvbmZpZyRjb2xvclIiLCJfY29sb3JVSUNvbmZpZyRjdXN0b20yIiwiX2ZpZWxkJGZpbHRlclByb3BzIiwibGF5ZXIiLCJmaWVsZCIsImRhdGFzZXQiLCJvblNlbGVjdCIsInNjYWxlVHlwZSIsImRvbWFpbiIsImFnZ3JlZ2F0ZWRCaW5zIiwicmFuZ2UiLCJzZXRDb2xvclVJIiwiY29sb3JVSUNvbmZpZyIsImNoYW5uZWxLZXkiLCJkcm9wZG93blNlbGVjdFByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImRpc3BsYXlPcHRpb24iLCJBY2Nlc3NvciIsImdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IiLCJnZXRPcHRpb25WYWx1ZSIsInVzZU1lbW8iLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRUaXBweUluc3RhbmNlIiwiaXNFZGl0aW5nQ29sb3JCcmVha3MiLCJjb2xvclJhbmdlQ29uZmlnIiwiY3VzdG9tQnJlYWtzIiwicHJldlNlbGVjdGlvblJlZiIsInVzZVJlZiIsInBlbmRpbmdPcHRpb24iLCJmaW5kIiwiX2NvbG9yVUlDb25maWckY3VzdG9tIiwiY3VzdG9tUGFsZXR0ZSIsInR5cGUiLCJjb2xvclNjYWxlIiwiZ2V0TGF5ZXJDb2xvclNjYWxlIiwiY29sb3JCcmVha3MiLCJfZmllbGQkdHlwZSIsImdldExlZ2VuZE9mU2NhbGUiLCJzY2FsZSIsImJ5Wm9vbSIsImZpZWxkVHlwZSIsIkFMTF9GSUVMRF9UWVBFUyIsInJlYWwiLCJjb2x1bW5TdGF0cyIsImZpbHRlclByb3BzIiwiZmllbGRWYWx1ZUFjY2Vzc29yIiwiaWR4IiwiZ2V0VmFsdWUiLCJkYXRhQ29udGFpbmVyIiwicm93QXNBcnJheSIsIm9yZGluYWxEb21haW4iLCJjb25maWciLCJ2aXN1YWxDaGFubmVscyIsImFsbEJpbnMiLCJzdHJpbmciLCJoaXN0b2dyYW1Gcm9tT3JkaW5hbCIsImFsbEluZGV4ZXMiLCJoaXN0b2dyYW1Gcm9tVmFsdWVzIiwidmFsdWVzIiwibWFwIiwiYmluIiwidmFsdWUiLCJiaW5zIiwiaGlzdG9ncmFtRG9tYWluIiwiZ2V0SGlzdG9ncmFtRG9tYWluIiwiaXNGaWx0ZXJlZCIsImZpbHRlcmVkSW5kZXhGb3JEb21haW4iLCJmaWx0ZXJlZEJpbnMiLCJmaWx0ZXJFbXB0eUJpbnMiLCJ0aHJlc2hvbGRzIiwiYiIsIngwIiwiaGlzdG9ncmFtRnJvbVRocmVzaG9sZCIsIm9uU2VsZWN0U2NhbGUiLCJ1c2VDYWxsYmFjayIsInZhbCIsInNlbGVjdGVkU2NhbGUiLCJTQ0FMRV9UWVBFUyIsImN1c3RvbSIsImN1c3RvbU9yZGluYWwiLCJpbml0Q3VzdG9tUGFsZXR0ZUJ5Q3VzdG9tU2NhbGUiLCJzaG93Q29sb3JDaGFydCIsImN1cnJlbnQiLCJoYXNDb2xvck1hcCIsIl8iLCJjb2xvck1hcCIsIm5ld1JhbmdlIiwib25BcHBseSIsIl9jb2xvclVJQ29uZmlnJGN1c3RvbTMiLCJuZXh0U2NhbGVUeXBlIiwib25DYW5jZWwiLCJfcHJldlNlbGVjdGlvblJlZiRjdXIiLCJwcmV2U2NhbGUiLCJwcmV2UmFuZ2UiLCJpc0N1c3RvbUJyZWFrcyIsIlByb3ZpZGVyIiwiY29sb3JGaWVsZCIsIm9uU2NhbGVDaGFuZ2UiLCJ0cmlnZ2VyIiwicGxhY2VtZW50IiwiYXBwZW5kVG8iLCJpbnRlcmFjdGl2ZSIsImhpZGVPbkNsaWNrIiwib25DcmVhdGUiLCJwb3BwZXJPcHRpb25zIiwicmVuZGVyIiwiYXR0cnMiLCJkaXNhYmxlZCIsIl9leHRlbmRzMiIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJjdXN0b21MaXN0Q29tcG9uZW50Iiwic2VhcmNoYWJsZSIsInNob3dPcHRpb25zV2hlbkVtcHR5Iiwic2VsZWN0ZWRJdGVtcyIsImNsYXNzTmFtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2NvbG9yLXNjYWxlLXNlbGVjdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFUywgU0NBTEVfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7QWdncmVnYXRlZEJpbiwgTGF5ZXIsIFZpc3VhbENoYW5uZWxEb21haW59IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtDb2xvclJhbmdlLCBDb2xvclVJLCBGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBnZXRMYXllckNvbG9yU2NhbGUsXG4gIGdldExlZ2VuZE9mU2NhbGUsXG4gIGluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSxcbiAgaGlzdG9ncmFtRnJvbVZhbHVlcyxcbiAgaGlzdG9ncmFtRnJvbU9yZGluYWwsXG4gIGhpc3RvZ3JhbUZyb21UaHJlc2hvbGQsXG4gIGdldEhpc3RvZ3JhbURvbWFpbixcbiAgaGFzQ29sb3JNYXBcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCBDb2xvckJyZWFrc1BhbmVsRmFjdG9yeSwge0NvbG9yQnJlYWtzUGFuZWxQcm9wc30gZnJvbSAnLi9jb2xvci1icmVha3MtcGFuZWwnO1xuaW1wb3J0IHtTZXRDb2xvclVJRnVuY30gZnJvbSAnLi9jdXN0b20tcGFsZXR0ZSc7XG5pbXBvcnQgRHJvcGRvd25TZWxlY3QgZnJvbSAnLi4vLi4vY29tbW9uL2l0ZW0tc2VsZWN0b3IvZHJvcGRvd24tc2VsZWN0JztcbmltcG9ydCBBY2Nlc3NvciBmcm9tICcuLi8uLi9jb21tb24vaXRlbS1zZWxlY3Rvci9hY2Nlc3Nvcic7XG5pbXBvcnQgRHJvcGRvd25MaXN0IGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QnO1xuaW1wb3J0IExhenlUaXBweSBmcm9tICcuLi8uLi9tYXAvbGF6eS10aXBweSc7XG5pbXBvcnQgVHlwZWFoZWFkIGZyb20gJy4uLy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL3R5cGVhaGVhZCc7XG5cbnR5cGUgVGlwcHlJbnN0YW5jZSA9IGFueTsgLy8gJ3RpcHB5LWpzJ1xuXG5jb25zdCBISVNUT0dSQU1fQklOUyA9IDMwO1xuXG5leHBvcnQgdHlwZSBTY2FsZU9wdGlvbiA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBPblNlbGVjdEZ1bmMgPSAodjogc3RyaW5nLCB2aXNDb25mZz86IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIENvbnRleHRQcm9wcyA9IENvbG9yQnJlYWtzUGFuZWxQcm9wcztcblxuZXhwb3J0IHR5cGUgQ29sb3JTY2FsZVNlbGVjdG9yUHJvcHMgPSB7XG4gIGxheWVyOiBMYXllcjtcbiAgZmllbGQ6IEZpZWxkO1xuICBkYXRhc2V0OiBLZXBsZXJUYWJsZTtcbiAgc2NhbGVUeXBlOiBzdHJpbmc7XG4gIGRvbWFpbjogVmlzdWFsQ2hhbm5lbERvbWFpbjtcbiAgcmFuZ2U6IENvbG9yUmFuZ2U7XG4gIG9uU2VsZWN0OiBPblNlbGVjdEZ1bmM7XG4gIHNldENvbG9yVUk6IFNldENvbG9yVUlGdW5jO1xuICBjb2xvclVJQ29uZmlnOiBDb2xvclVJO1xuICBvcHRpb25zOiBTY2FsZU9wdGlvbltdO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHNlbGVjdGVkSXRlbXM6IFNjYWxlT3B0aW9uW107XG4gIG11bHRpU2VsZWN0OiBib29sZWFuO1xuICBzZWFyY2hhYmxlOiBib29sZWFuO1xuICBkaXNwbGF5T3B0aW9uOiBzdHJpbmc7XG4gIGdldE9wdGlvblZhbHVlOiBzdHJpbmc7XG4gIGFnZ3JlZ2F0ZWRCaW5zPzogQWdncmVnYXRlZEJpbltdO1xuICBjaGFubmVsS2V5OiBzdHJpbmc7XG59O1xuXG5jb25zdCBEcm9wZG93blByb3BDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG5jb25zdCBQT1BQRVJfT1BUSU9OUyA9IHtcbiAgbW9kaWZpZXJzOiBbXG4gICAgLy8gemVybyBvZmZzZXRzIHNpbmNlIHRoZXkgYXJlIGFscmVhZHkgYWRkZWQgaW4gVmVydGljYWxUb29sYmFyXG4gICAge25hbWU6ICdvZmZzZXQnLCBvcHRpb25zOiB7b2Zmc2V0OiBbMCwgMF19fVxuICBdXG59O1xuXG5jb25zdCBEcm9wZG93bkJvdHRvbSA9IHN0eWxlZC5kaXY8e2xpZ2h0PzogYm9vbGVhbn0+YFxuICBib3JkZXItdG9wOiAxcHggc29saWRcbiAgICAke3Byb3BzID0+XG4gICAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wfTtcbmA7XG5cbmNvbnN0IFN0eWxlZFNjYWxlU2VsZWN0RHJvcGRvd24gPSBzdHlsZWQuZGl2YFxuICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdFNoYWRvd307XG4gIC5saXN0LXNlbGVjdG9yIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJvcmRlci10b3A6IDA7XG4gIH1cbiAgLmxpc3RfX2l0ZW0ge1xuICAgIHBhZGRpbmc6IDRweCA5cHg7XG4gIH1cbmA7XG5jb25zdCBEcm9wZG93bldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBib3JkZXI6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duV3JhcHBlclp9O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbi10b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25XYXBwZXJNYXJnaW59cHg7XG5gO1xuXG5jb25zdCBTdHlsZWRDb2xvclNjYWxlU2VsZWN0b3IgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC50eXBlYWhlYWQge1xuICAgIC8vIGFkZHMgcGFkZGluZyB0byBib3R0b20gb2YgZHJvcGRvd25cbiAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICB9XG4gIFtkYXRhLXRpcHB5LXJvb3RdIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuYDtcblxuZnVuY3Rpb24gaGlkZVRpcHB5KHRpcHB5SW5zdGFuY2UpIHtcbiAgaWYgKHRpcHB5SW5zdGFuY2UpIHtcbiAgICB0aXBweUluc3RhbmNlLmhpZGUoKTtcbiAgfVxufVxuQ29sb3JTY2FsZVNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW0NvbG9yQnJlYWtzUGFuZWxGYWN0b3J5XTtcblxuZnVuY3Rpb24gQ29sb3JTY2FsZVNlbGVjdG9yRmFjdG9yeShcbiAgQ29sb3JCcmVha3NQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgQ29sb3JCcmVha3NQYW5lbEZhY3Rvcnk+XG4pOiBSZWFjdC5GQzxDb2xvclNjYWxlU2VsZWN0b3JQcm9wcz4ge1xuICBjb25zdCBDb2xvclNjYWxlU2VsZWN0RHJvcGRvd24gPSBwcm9wcyA9PiAoXG4gICAgPFN0eWxlZFNjYWxlU2VsZWN0RHJvcGRvd24+XG4gICAgICA8RHJvcGRvd25MaXN0IHsuLi5wcm9wc30gLz5cbiAgICAgIDxEcm9wZG93blByb3BDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KGNvbnRleHQ6IGFueSkgPT4gKFxuICAgICAgICAgIDxEcm9wZG93bkJvdHRvbT5cbiAgICAgICAgICAgIDxDb2xvckJyZWFrc1BhbmVsIHsuLi5jb250ZXh0fSAvPlxuICAgICAgICAgIDwvRHJvcGRvd25Cb3R0b20+XG4gICAgICAgICl9XG4gICAgICA8L0Ryb3Bkb3duUHJvcENvbnRleHQuQ29uc3VtZXI+XG4gICAgPC9TdHlsZWRTY2FsZVNlbGVjdERyb3Bkb3duPlxuICApO1xuXG4gIGNvbnN0IENvbG9yU2NhbGVTZWxlY3RvcjogUmVhY3QuRkM8Q29sb3JTY2FsZVNlbGVjdG9yUHJvcHM+ID0gKHtcbiAgICBsYXllcixcbiAgICBmaWVsZCxcbiAgICBkYXRhc2V0LFxuICAgIG9uU2VsZWN0LFxuICAgIHNjYWxlVHlwZSxcbiAgICBkb21haW4sXG4gICAgYWdncmVnYXRlZEJpbnMsXG4gICAgcmFuZ2UsXG4gICAgc2V0Q29sb3JVSSxcbiAgICBjb2xvclVJQ29uZmlnLFxuICAgIGNoYW5uZWxLZXksXG4gICAgLi4uZHJvcGRvd25TZWxlY3RQcm9wc1xuICB9KSA9PiB7XG4gICAgY29uc3QgZGlzcGxheU9wdGlvbiA9IEFjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IoZHJvcGRvd25TZWxlY3RQcm9wcy5kaXNwbGF5T3B0aW9uKTtcbiAgICBjb25zdCBnZXRPcHRpb25WYWx1ZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKGRyb3Bkb3duU2VsZWN0UHJvcHMuZ2V0T3B0aW9uVmFsdWUpLFxuICAgICAgW2Ryb3Bkb3duU2VsZWN0UHJvcHMuZ2V0T3B0aW9uVmFsdWVdXG4gICAgKTtcbiAgICBjb25zdCBbdGlwcHlJbnN0YW5jZSwgc2V0VGlwcHlJbnN0YW5jZV0gPSB1c2VTdGF0ZTxUaXBweUluc3RhbmNlPigpO1xuICAgIGNvbnN0IGlzRWRpdGluZ0NvbG9yQnJlYWtzID0gY29sb3JVSUNvbmZpZz8uY29sb3JSYW5nZUNvbmZpZz8uY3VzdG9tQnJlYWtzO1xuXG4gICAgLy8gU3RvcmVzIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24gZm9yIGxpdmUgcHJldmlldzogd2hlbiBjaG9vc2luZyBDdXN0b20vQ3VzdG9tIE9yZGluYWwsIHdlIGFwcGx5IGEgdGVtcG9yYXJ5IHBhbGV0dGUuXG4gICAgLy8gQ2FuY2VsIHJlc3RvcmVzIHtzY2FsZSwgcmFuZ2V9IGZyb20gdGhpcyByZWY7IENvbmZpcm0ga2VlcHMgdGhlIGNoYW5nZSBhbmQgY2xlYXJzIHRoZSByZWYuXG4gICAgLy8gSWYgdGhlIHVzZXIgc3dpdGNoZXMgYmV0d2VlbiBkaWZmZXJlbnQgY3VzdG9tIHNjYWxlIHR5cGVzIChlLmcuLCBmcm9tIFwiQ3VzdG9tXCIgdG8gXCJDdXN0b20gT3JkaW5hbFwiKSBvciBpcyBhbHJlYWR5IGluIGEgY3VzdG9tIHNjYWxlIHN0YXRlLFxuICAgIC8vIHRoaXMgcmVmIGlzIHVwZGF0ZWQgdG8gYWx3YXlzIHN0b3JlIHRoZSBtb3N0IHJlY2VudCBub24tY3VzdG9tIHNlbGVjdGlvbi4gT25seSB0aGUgbGF0ZXN0IG5vbi1jdXN0b20gc2VsZWN0aW9uIGlzIHJlc3RvcmFibGUgb24gY2FuY2VsLlxuICAgIGNvbnN0IHByZXZTZWxlY3Rpb25SZWYgPSBSZWFjdC51c2VSZWY8e3NjYWxlOiBzdHJpbmc7IHJhbmdlOiBDb2xvclJhbmdlfSB8IG51bGw+KG51bGwpO1xuXG4gICAgLy8gd2hlbiBjdXN0b20gY29sb3Igc2NhbGUgLSBidXQgQ29uZmlybSBpcyBub3QgY2xpY2tlZCB5ZXRcbiAgICBjb25zdCBwZW5kaW5nT3B0aW9uID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGlzRWRpdGluZ0NvbG9yQnJlYWtzXG4gICAgICAgICAgPyAoZHJvcGRvd25TZWxlY3RQcm9wcy5vcHRpb25zIHx8IFtdKS5maW5kKFxuICAgICAgICAgICAgICBvID0+IGdldE9wdGlvblZhbHVlKG8pID09PSBjb2xvclVJQ29uZmlnPy5jdXN0b21QYWxldHRlPy50eXBlXG4gICAgICAgICAgICApIHx8IG51bGxcbiAgICAgICAgICA6IG51bGwsXG4gICAgICBbXG4gICAgICAgIGlzRWRpdGluZ0NvbG9yQnJlYWtzLFxuICAgICAgICBkcm9wZG93blNlbGVjdFByb3BzLm9wdGlvbnMsXG4gICAgICAgIGdldE9wdGlvblZhbHVlLFxuICAgICAgICBjb2xvclVJQ29uZmlnPy5jdXN0b21QYWxldHRlPy50eXBlXG4gICAgICBdXG4gICAgKTtcbiAgICBjb25zdCBjb2xvclNjYWxlID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGdldExheWVyQ29sb3JTY2FsZSh7XG4gICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgZG9tYWluLFxuICAgICAgICAgIHNjYWxlVHlwZSxcbiAgICAgICAgICBsYXllclxuICAgICAgICB9KSxcbiAgICAgIFtyYW5nZSwgZG9tYWluLCBzY2FsZVR5cGUsIGxheWVyXVxuICAgICk7XG5cbiAgICBjb25zdCBjb2xvckJyZWFrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgcmV0dXJuIGNvbG9yU2NhbGVcbiAgICAgICAgPyBnZXRMZWdlbmRPZlNjYWxlKHtcbiAgICAgICAgICAgIHNjYWxlOiBjb2xvclNjYWxlLmJ5Wm9vbSAmJiBkb21haW4gPyBjb2xvclNjYWxlKGRvbWFpbj8ubGVuZ3RoIC0gMSkgOiBjb2xvclNjYWxlLFxuICAgICAgICAgICAgc2NhbGVUeXBlLFxuICAgICAgICAgICAgZmllbGRUeXBlOiBmaWVsZD8udHlwZSA/PyBBTExfRklFTERfVFlQRVMucmVhbFxuICAgICAgICAgIH0pXG4gICAgICAgIDogbnVsbDtcbiAgICB9LCBbY29sb3JTY2FsZSwgc2NhbGVUeXBlLCBmaWVsZD8udHlwZSwgZG9tYWluXSk7XG5cbiAgICBjb25zdCBjb2x1bW5TdGF0cyA9IGZpZWxkPy5maWx0ZXJQcm9wcz8uY29sdW1uU3RhdHM7XG5cbiAgICBjb25zdCBmaWVsZFZhbHVlQWNjZXNzb3IgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHJldHVybiBmaWVsZFxuICAgICAgICA/IGlkeCA9PiBkYXRhc2V0LmdldFZhbHVlKGZpZWxkLm5hbWUsIGlkeClcbiAgICAgICAgOiBpZHggPT4gZGF0YXNldC5kYXRhQ29udGFpbmVyLnJvd0FzQXJyYXkoaWR4KTtcbiAgICB9LCBbZGF0YXNldCwgZmllbGRdKTtcblxuICAgIGNvbnN0IG9yZGluYWxEb21haW4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHJldHVybiBsYXllci5jb25maWdbbGF5ZXIudmlzdWFsQ2hhbm5lbHNbY2hhbm5lbEtleV0uZG9tYWluXSB8fCBbXTtcbiAgICB9LCBbY2hhbm5lbEtleSwgbGF5ZXIuY29uZmlnLCBsYXllci52aXN1YWxDaGFubmVsc10pO1xuXG4gICAgLy8gYWdncmVnYXRlZEJpbnMgc2hvdWxkIGJlIHRoZSByYXcgZGF0YVxuICAgIGNvbnN0IGFsbEJpbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChmaWVsZD8udHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZykge1xuICAgICAgICAvLyBVc2Ugb3JkaW5hbCBiaW5zIGZvciBzdHJpbmcgY29sdW1ucywgYXMgZDMgY291bGQgcG90ZW50aWFsbHkgZ2VuZXJhdGUgaW52YWxpZCBudW1lcmljIGJpbnMsIGFuZCBjcmFzaFxuICAgICAgICByZXR1cm4gaGlzdG9ncmFtRnJvbU9yZGluYWwob3JkaW5hbERvbWFpbiwgZGF0YXNldC5hbGxJbmRleGVzLCBmaWVsZFZhbHVlQWNjZXNzb3IpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWdncmVnYXRlZEJpbnMpIHtcbiAgICAgICAgcmV0dXJuIGhpc3RvZ3JhbUZyb21WYWx1ZXMoXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhhZ2dyZWdhdGVkQmlucykubWFwKGJpbiA9PiBiaW4uaSksXG4gICAgICAgICAgSElTVE9HUkFNX0JJTlMsXG4gICAgICAgICAgaWR4ID0+IGFnZ3JlZ2F0ZWRCaW5zW2lkeF0udmFsdWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2x1bW5TdGF0cz8uYmluc1xuICAgICAgICA/IGNvbHVtblN0YXRzPy5iaW5zXG4gICAgICAgIDogaGlzdG9ncmFtRnJvbVZhbHVlcyhkYXRhc2V0LmFsbEluZGV4ZXMsIEhJU1RPR1JBTV9CSU5TLCBmaWVsZFZhbHVlQWNjZXNzb3IpO1xuICAgIH0sIFthZ2dyZWdhdGVkQmlucywgY29sdW1uU3RhdHMsIGRhdGFzZXQsIGZpZWxkVmFsdWVBY2Nlc3NvciwgZmllbGQ/LnR5cGUsIG9yZGluYWxEb21haW5dKTtcblxuICAgIGNvbnN0IGhpc3RvZ3JhbURvbWFpbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgcmV0dXJuIGdldEhpc3RvZ3JhbURvbWFpbih7YWdncmVnYXRlZEJpbnMsIGNvbHVtblN0YXRzLCBkYXRhc2V0LCBmaWVsZFZhbHVlQWNjZXNzb3J9KTtcbiAgICB9LCBbZGF0YXNldCwgZmllbGRWYWx1ZUFjY2Vzc29yLCBhZ2dyZWdhdGVkQmlucywgY29sdW1uU3RhdHNdKTtcblxuICAgIGNvbnN0IGlzRmlsdGVyZWQgPSBhZ2dyZWdhdGVkQmluc1xuICAgICAgPyBmYWxzZVxuICAgICAgOiBkYXRhc2V0LmZpbHRlcmVkSW5kZXhGb3JEb21haW4ubGVuZ3RoICE9PSBkYXRhc2V0LmFsbEluZGV4ZXMubGVuZ3RoO1xuXG4gICAgLy8gZ2V0IGZpbHRlcmVkQmlucyAobm90IGFwcGx5IHRvIGFnZ3JlZ2F0ZSBsYXllcilcbiAgICBjb25zdCBmaWx0ZXJlZEJpbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghaXNGaWx0ZXJlZCkge1xuICAgICAgICByZXR1cm4gYWxsQmlucztcbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZD8udHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZykge1xuICAgICAgICByZXR1cm4gaGlzdG9ncmFtRnJvbU9yZGluYWwoXG4gICAgICAgICAgb3JkaW5hbERvbWFpbiBhcyBhbnksXG4gICAgICAgICAgZGF0YXNldC5maWx0ZXJlZEluZGV4Rm9yRG9tYWluLFxuICAgICAgICAgIGZpZWxkVmFsdWVBY2Nlc3NvclxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgLy8gbnVtZXJpYyB0aHJlc2hvbGRzXG4gICAgICBjb25zdCBmaWx0ZXJFbXB0eUJpbnMgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHRocmVzaG9sZHMgPSBhbGxCaW5zLm1hcChiID0+IGIueDApO1xuICAgICAgcmV0dXJuIGhpc3RvZ3JhbUZyb21UaHJlc2hvbGQoXG4gICAgICAgIHRocmVzaG9sZHMsXG4gICAgICAgIGRhdGFzZXQuZmlsdGVyZWRJbmRleEZvckRvbWFpbixcbiAgICAgICAgZmllbGRWYWx1ZUFjY2Vzc29yLFxuICAgICAgICBmaWx0ZXJFbXB0eUJpbnNcbiAgICAgICk7XG4gICAgfSwgW2RhdGFzZXQsIGZpZWxkVmFsdWVBY2Nlc3NvciwgYWxsQmlucywgaXNGaWx0ZXJlZCwgZmllbGQ/LnR5cGUsIG9yZGluYWxEb21haW5dKTtcblxuICAgIGNvbnN0IG9uU2VsZWN0U2NhbGUgPSB1c2VDYWxsYmFjayhcbiAgICAgIHZhbCA9PiB7XG4gICAgICAgIC8vIGhpZ2hsaWdodCBzZWxlY3RlZCBvcHRpb25cbiAgICAgICAgaWYgKCF2YWwpIHJldHVybjtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZFNjYWxlID0gZ2V0T3B0aW9uVmFsdWUodmFsKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkU2NhbGUgPT09IFNDQUxFX1RZUEVTLmN1c3RvbSB8fCBzZWxlY3RlZFNjYWxlID09PSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsKSB7XG4gICAgICAgICAgY29uc3QgY3VzdG9tUGFsZXR0ZSA9IGluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSh7XG4gICAgICAgICAgICBzY2FsZTogc2VsZWN0ZWRTY2FsZSxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICBjb2xvckJyZWFrcyxcbiAgICAgICAgICAgIC4uLihzZWxlY3RlZFNjYWxlID09PSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsID8ge29yZGluYWxEb21haW59IDoge30pXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc2V0Q29sb3JVSSh7XG4gICAgICAgICAgICBzaG93Q29sb3JDaGFydDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbG9yUmFuZ2VDb25maWc6IHtcbiAgICAgICAgICAgICAgY3VzdG9tQnJlYWtzOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3VzdG9tUGFsZXR0ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHN0b3JlIHByZXZpb3VzIHNlbGVjdGlvbiBmb3IgY2FuY2VsLCB0aGVuIHByZXZpZXcgY3VzdG9tIG9uIHRoZSBtYXBcbiAgICAgICAgICBpZiAoIXByZXZTZWxlY3Rpb25SZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcHJldlNlbGVjdGlvblJlZi5jdXJyZW50ID0ge3NjYWxlOiBzY2FsZVR5cGUsIHJhbmdlfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb25TZWxlY3Qoc2VsZWN0ZWRTY2FsZSwgY3VzdG9tUGFsZXR0ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFzQ29sb3JNYXAocmFuZ2UpKSB7XG4gICAgICAgICAgLy8gbm90IGN1c3RvbVxuICAgICAgICAgIC8vIHJlbW92ZSBjb2xvck1hcFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgICAgIGNvbnN0IHtjb2xvck1hcDogXywgLi4ubmV3UmFuZ2V9ID0gcmFuZ2U7XG4gICAgICAgICAgLy8gcmVzZXQgY29sb3JVSSBiZWZvcmUgY2hhbmdpbmcgdGhlIHNjYWxlXG4gICAgICAgICAgc2V0Q29sb3JVSSh7XG4gICAgICAgICAgICBzaG93Q29sb3JDaGFydDogZmFsc2UsXG4gICAgICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiB7XG4gICAgICAgICAgICAgIGN1c3RvbUJyZWFrczogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvblNlbGVjdChzZWxlY3RlZFNjYWxlLCBuZXdSYW5nZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gcmVzZXQgY29sb3JVSSBiZWZvcmUgY2hhbmdpbmcgdGhlIHNjYWxlXG4gICAgICAgICAgc2V0Q29sb3JVSSh7XG4gICAgICAgICAgICBzaG93Q29sb3JDaGFydDogZmFsc2UsXG4gICAgICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiB7XG4gICAgICAgICAgICAgIGN1c3RvbUJyZWFrczogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBvblNlbGVjdChzZWxlY3RlZFNjYWxlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtmaWVsZCwgc2V0Q29sb3JVSSwgb25TZWxlY3QsIHJhbmdlLCBnZXRPcHRpb25WYWx1ZSwgY29sb3JCcmVha3MsIG9yZGluYWxEb21haW4sIHNjYWxlVHlwZV1cbiAgICApO1xuXG4gICAgY29uc3Qgb25BcHBseSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIC8vIGNoYW5nZSBzY2FsZSB0eXBlIG9ubHkgaWYgY29uZmlybWVkXG4gICAgICBjb25zdCBuZXh0U2NhbGVUeXBlID0gY29sb3JVSUNvbmZpZz8uY3VzdG9tUGFsZXR0ZT8udHlwZSB8fCBzY2FsZVR5cGU7XG4gICAgICBvblNlbGVjdChuZXh0U2NhbGVUeXBlLCBjb2xvclVJQ29uZmlnLmN1c3RvbVBhbGV0dGUpO1xuICAgICAgaGlkZVRpcHB5KHRpcHB5SW5zdGFuY2UpO1xuICAgICAgcHJldlNlbGVjdGlvblJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9LCBbb25TZWxlY3QsIGNvbG9yVUlDb25maWcuY3VzdG9tUGFsZXR0ZSwgdGlwcHlJbnN0YW5jZSwgc2NhbGVUeXBlXSk7XG5cbiAgICBjb25zdCBvbkNhbmNlbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIC8vIHJlc3RvcmUgcHJldmlvdXMgc2VsZWN0aW9uIGlmIGFueVxuICAgICAgaWYgKHByZXZTZWxlY3Rpb25SZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCB7c2NhbGU6IHByZXZTY2FsZSwgcmFuZ2U6IHByZXZSYW5nZX0gPSBwcmV2U2VsZWN0aW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIG9uU2VsZWN0KHByZXZTY2FsZSwgcHJldlJhbmdlKTtcbiAgICAgIH1cbiAgICAgIGhpZGVUaXBweSh0aXBweUluc3RhbmNlKTtcbiAgICAgIHByZXZTZWxlY3Rpb25SZWYuY3VycmVudCA9IG51bGw7XG4gICAgfSwgW3RpcHB5SW5zdGFuY2UsIG9uU2VsZWN0XSk7XG5cbiAgICBjb25zdCBpc0N1c3RvbUJyZWFrcyA9XG4gICAgICBzY2FsZVR5cGUgPT09IFNDQUxFX1RZUEVTLmN1c3RvbSB8fCBzY2FsZVR5cGUgPT09IFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWw7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duUHJvcENvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICBzZXRDb2xvclVJLFxuICAgICAgICAgIGNvbG9yRmllbGQ6IGZpZWxkLFxuICAgICAgICAgIGRhdGFzZXQsXG4gICAgICAgICAgY29sb3JVSUNvbmZpZyxcbiAgICAgICAgICBjb2xvckJyZWFrcyxcbiAgICAgICAgICBpc0N1c3RvbUJyZWFrcyxcbiAgICAgICAgICBhbGxCaW5zLFxuICAgICAgICAgIGZpbHRlcmVkQmlucyxcbiAgICAgICAgICBpc0ZpbHRlcmVkLFxuICAgICAgICAgIGhpc3RvZ3JhbURvbWFpbixcbiAgICAgICAgICBvcmRpbmFsRG9tYWluLFxuICAgICAgICAgIG9uU2NhbGVDaGFuZ2U6IG9uU2VsZWN0LFxuICAgICAgICAgIG9uQXBwbHksXG4gICAgICAgICAgb25DYW5jZWxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZENvbG9yU2NhbGVTZWxlY3Rvcj5cbiAgICAgICAgICA8TGF6eVRpcHB5XG4gICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXN0YXJ0XCJcbiAgICAgICAgICAgIGFwcGVuZFRvPVwicGFyZW50XCJcbiAgICAgICAgICAgIGludGVyYWN0aXZlPXt0cnVlfVxuICAgICAgICAgICAgaGlkZU9uQ2xpY2s9eyFpc0VkaXRpbmdDb2xvckJyZWFrc31cbiAgICAgICAgICAgIG9uQ3JlYXRlPXtzZXRUaXBweUluc3RhbmNlfVxuICAgICAgICAgICAgcG9wcGVyT3B0aW9ucz17UE9QUEVSX09QVElPTlN9XG4gICAgICAgICAgICByZW5kZXI9e2F0dHJzID0+IChcbiAgICAgICAgICAgICAgPERyb3Bkb3duV3JhcHBlciB7Li4uYXR0cnN9PlxuICAgICAgICAgICAgICAgIHsvKiBAdHMtaWdub3JlKi99XG4gICAgICAgICAgICAgICAgeyFkcm9wZG93blNlbGVjdFByb3BzLmRpc2FibGVkICYmIChcbiAgICAgICAgICAgICAgICAgIDxUeXBlYWhlYWRcbiAgICAgICAgICAgICAgICAgICAgey4uLmRyb3Bkb3duU2VsZWN0UHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e2Rpc3BsYXlPcHRpb259XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9e2dldE9wdGlvblZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXtvblNlbGVjdFNjYWxlfVxuICAgICAgICAgICAgICAgICAgICBjdXN0b21MaXN0Q29tcG9uZW50PXtDb2xvclNjYWxlU2VsZWN0RHJvcGRvd259XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBzaG93T3B0aW9uc1doZW5FbXB0eVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXtcbiAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nT3B0aW9uID8gW3BlbmRpbmdPcHRpb25dIDogZHJvcGRvd25TZWxlY3RQcm9wcy5zZWxlY3RlZEl0ZW1zXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bldyYXBwZXI+XG4gICAgICAgICAgICApfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZHJvcGRvd24tc2VsZWN0XCI+XG4gICAgICAgICAgICAgIHsvKiBAdHMtaWdub3JlKi99XG4gICAgICAgICAgICAgIDxEcm9wZG93blNlbGVjdFxuICAgICAgICAgICAgICAgIHsuLi5kcm9wZG93blNlbGVjdFByb3BzfVxuICAgICAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e2Rpc3BsYXlPcHRpb259XG4gICAgICAgICAgICAgICAgdmFsdWU9e3BlbmRpbmdPcHRpb24gfHwgZHJvcGRvd25TZWxlY3RQcm9wcy5zZWxlY3RlZEl0ZW1zWzBdfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9MYXp5VGlwcHk+XG4gICAgICAgIDwvU3R5bGVkQ29sb3JTY2FsZVNlbGVjdG9yPlxuICAgICAgPC9Ecm9wZG93blByb3BDb250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBDb2xvclNjYWxlU2VsZWN0b3I7XG59XG5leHBvcnQgZGVmYXVsdCBDb2xvclNjYWxlU2VsZWN0b3JGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUlBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQVdBLElBQUFLLGlCQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBTSxlQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxTQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFOLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFQLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVSxVQUFBLEdBQUFSLHNCQUFBLENBQUFGLE9BQUE7QUFBNkQsSUFBQVcsU0FBQTtFQUFBQyxVQUFBO0FBQUEsSUFBQUMsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQTNCN0Q7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBbkIsd0JBQUFtQixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEs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
|