@kepler.gl/components 3.3.0-alpha.6 → 3.3.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/common/data-table/cell-size.js +40 -23
- package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
- package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
- package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
- package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
- package/dist/cjs/common/data-table/header-cell.js +123 -44
- package/dist/cjs/common/data-table/index.js +102 -29
- package/dist/cjs/common/histogram-plot.js +1 -1
- package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
- package/dist/cjs/common/icons/index.js +15 -1
- package/dist/cjs/common/icons/line-string.js +60 -0
- package/dist/cjs/common/toolbar-item.js +24 -3
- package/dist/cjs/editor/editor.js +26 -8
- package/dist/cjs/editor/feature-action-panel.js +34 -12
- package/dist/cjs/editor/feature-properties-editor.js +215 -0
- package/dist/cjs/editor/filter-feature-badges.js +92 -0
- package/dist/cjs/index.js +33 -1
- package/dist/cjs/kepler-gl.js +20 -3
- package/dist/cjs/map/map-control-toolbar.js +2 -2
- package/dist/cjs/map/map-control.js +13 -7
- package/dist/cjs/map/map-draw-panel.js +65 -15
- package/dist/cjs/map/theme-toggle-button.js +64 -0
- package/dist/cjs/map-container.js +16 -5
- package/dist/cjs/modal-container.js +2 -1
- package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
- package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
- package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
- package/dist/cjs/modals/cloud-tile.js +52 -38
- package/dist/cjs/modals/data-table-modal.js +37 -25
- package/dist/cjs/modals/export-video-modal.js +28 -1
- package/dist/cjs/modals/export-video-modal.spec.js +56 -10
- package/dist/cjs/modals/globe-export-video-container.js +19 -3
- package/dist/cjs/modals/globe-export-video-preview.js +25 -7
- package/dist/cjs/modals/hubble-utils.js +8 -3
- package/dist/cjs/modals/swipe-composite-utils.js +9 -1
- package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
- package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
- package/dist/cjs/side-panel/layer-manager.js +11 -3
- package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
- package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
- package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
- package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
- package/dist/common/data-table/column-statistics-components.d.ts +31 -0
- package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
- package/dist/common/data-table/column-statistics-time.d.ts +19 -0
- package/dist/common/data-table/header-cell.d.ts +7 -5
- package/dist/common/data-table/index.d.ts +7 -24
- package/dist/common/histogram-plot.d.ts +24 -1
- package/dist/common/icons/{arrow-down-solid.d.ts → draw-point.d.ts} +2 -1
- package/dist/common/icons/index.d.ts +2 -0
- package/dist/common/icons/line-string.d.ts +10 -0
- package/dist/common/toolbar-item.d.ts +2 -0
- package/dist/editor/editor.d.ts +1 -0
- package/dist/editor/feature-action-panel.d.ts +1 -0
- package/dist/editor/feature-properties-editor.d.ts +8 -0
- package/dist/editor/filter-feature-badges.d.ts +12 -0
- package/dist/esm/common/data-table/cell-size.js +40 -23
- package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
- package/dist/esm/common/data-table/column-statistics-components.js +59 -0
- package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
- package/dist/esm/common/data-table/column-statistics-time.js +60 -0
- package/dist/esm/common/data-table/header-cell.js +125 -46
- package/dist/esm/common/data-table/index.js +102 -29
- package/dist/esm/common/histogram-plot.js +1 -1
- package/dist/esm/common/icons/draw-point.js +44 -0
- package/dist/esm/common/icons/index.js +3 -1
- package/dist/esm/common/icons/line-string.js +54 -0
- package/dist/esm/common/toolbar-item.js +24 -3
- package/dist/esm/editor/editor.js +26 -8
- package/dist/esm/editor/feature-action-panel.js +37 -15
- package/dist/esm/editor/feature-properties-editor.js +208 -0
- package/dist/esm/editor/filter-feature-badges.js +85 -0
- package/dist/esm/index.js +5 -1
- package/dist/esm/kepler-gl.js +20 -3
- package/dist/esm/map/map-control-toolbar.js +2 -2
- package/dist/esm/map/map-control.js +13 -7
- package/dist/esm/map/map-draw-panel.js +63 -11
- package/dist/esm/map/theme-toggle-button.js +55 -0
- package/dist/esm/map-container.js +16 -5
- package/dist/esm/modal-container.js +2 -1
- package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
- package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
- package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
- package/dist/esm/modals/cloud-tile.js +52 -38
- package/dist/esm/modals/data-table-modal.js +38 -26
- package/dist/esm/modals/export-video-modal.js +29 -2
- package/dist/esm/modals/export-video-modal.spec.js +56 -10
- package/dist/esm/modals/globe-export-video-container.js +20 -4
- package/dist/esm/modals/globe-export-video-preview.js +26 -8
- package/dist/esm/modals/hubble-utils.js +8 -3
- package/dist/esm/modals/swipe-composite-utils.js +9 -1
- package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
- package/dist/esm/modals/swipe-export-video-preview.js +8 -4
- package/dist/esm/side-panel/layer-manager.js +11 -3
- package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
- package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
- package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
- package/dist/index.d.ts +8 -0
- package/dist/kepler-gl.d.ts +3 -0
- package/dist/map/map-control.d.ts +6 -2
- package/dist/map/map-draw-panel.d.ts +1 -0
- package/dist/map/theme-toggle-button.d.ts +18 -0
- package/dist/map-container.d.ts +1 -0
- package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
- package/dist/modals/data-table-modal.d.ts +1 -0
- package/dist/modals/globe-export-video-container.d.ts +2 -0
- package/dist/modals/globe-export-video-preview.d.ts +3 -0
- package/dist/modals/hubble-utils.d.ts +2 -1
- package/dist/modals/swipe-composite-utils.d.ts +1 -1
- package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
- package/package.json +20 -20
- package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
- package/dist/cjs/modals/storage-map-viewer.js +0 -98
- package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
- package/dist/esm/common/icons/arrow-down-solid.js +0 -34
- package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
- package/dist/esm/modals/storage-map-viewer.js +0 -93
- package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
- package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
- package/dist/modals/storage-map-viewer.d.ts +0 -21
- package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
|
@@ -21,7 +21,7 @@ import { Button, Icons } from '../common';
|
|
|
21
21
|
import ItemSelector from '../common/item-selector/item-selector';
|
|
22
22
|
import Slider from '../common/slider/slider';
|
|
23
23
|
import LoadingSpinner from '../common/loading-spinner';
|
|
24
|
-
import { getStaticMapProps, getBeforeLayerId, getHubbleDeckGlProps, getTimeRangeFilterKeyframes, getAnimatableFilters } from './hubble-utils';
|
|
24
|
+
import { getStaticMapProps, getBeforeLayerId, getHubbleDeckGlProps, getTimeRangeFilterKeyframes, getAnimatableFilters, getResolutionSetting } from './hubble-utils';
|
|
25
25
|
import { useFogHeightAnimation } from './fog-height-animation';
|
|
26
26
|
var _hubbleModule = null;
|
|
27
27
|
var _hubblePromise = null;
|
|
@@ -300,6 +300,33 @@ var ExportVideoModalFactory = function ExportVideoModalFactory() {
|
|
|
300
300
|
// itself; the flat maplibre base map must be disabled so it doesn't render a
|
|
301
301
|
// 2D Mercator map behind/around the globe.
|
|
302
302
|
var isGlobeEnabled = Boolean(mapState === null || mapState === void 0 || (_mapState$globe = mapState.globe) === null || _mapState$globe === void 0 ? void 0 : _mapState$globe.enabled);
|
|
303
|
+
useEffect(function () {
|
|
304
|
+
// Same freeze as before: hubble.gl writes window.devicePixelRatio to scale
|
|
305
|
+
// the preview, then sets it to 1 during animated preview, which desyncs
|
|
306
|
+
// MapLibre from the Deck overlay. Pin to the *export* scale (not native DPR)
|
|
307
|
+
// so preview stays aligned and recording still uses the selected quality.
|
|
308
|
+
if (isSwipeMode || isGlobeEnabled) return undefined;
|
|
309
|
+
var _getResolutionSetting = getResolutionSetting(videoConfiguration.resolution || ''),
|
|
310
|
+
width = _getResolutionSetting.width;
|
|
311
|
+
var scaledDpr = exportVideoWidth ? Math.max(1, width / exportVideoWidth) : 1;
|
|
312
|
+
var descriptor = Object.getOwnPropertyDescriptor(window, 'devicePixelRatio');
|
|
313
|
+
Object.defineProperty(window, 'devicePixelRatio', {
|
|
314
|
+
configurable: true,
|
|
315
|
+
get: function get() {
|
|
316
|
+
return scaledDpr;
|
|
317
|
+
},
|
|
318
|
+
set: function set() {
|
|
319
|
+
// no-op: ignore hubble.gl dropping DPR to 1 during preview
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
return function () {
|
|
323
|
+
if (descriptor) {
|
|
324
|
+
Object.defineProperty(window, 'devicePixelRatio', descriptor);
|
|
325
|
+
} else {
|
|
326
|
+
delete window.devicePixelRatio;
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
}, [isSwipeMode, isGlobeEnabled, videoConfiguration.resolution, exportVideoWidth]);
|
|
303
330
|
var onFilterFrameUpdate = useCallback(function (filterIdx, name, value) {
|
|
304
331
|
visStateActions.setFilterAnimationTime(filterIdx, name, value);
|
|
305
332
|
}, [visStateActions]);
|
|
@@ -397,4 +424,4 @@ var ExportVideoModalFactory = function ExportVideoModalFactory() {
|
|
|
397
424
|
return ExportVideoModal;
|
|
398
425
|
};
|
|
399
426
|
export default ExportVideoModalFactory;
|
|
400
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwic3R5bGVkIiwiVGhlbWVQcm92aWRlciIsInVzZVRoZW1lIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIk5PX01BUF9JRCIsIkVNUFRZX01BUEJPWF9TVFlMRSIsIk1hcFNwbGl0TW9kZSIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJvblZpZXdQb3J0Q2hhbmdlIiwiY29tcHV0ZURlY2tFZmZlY3RzIiwicGF0Y2hEZWNrUmVuZGVyZXJGb3JQb3N0UHJvY2Vzc2luZyIsIkRlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCIsIlN0eWxlZE1vZGFsQ29udGVudCIsIklucHV0TGlnaHQiLCJCdXR0b24iLCJJY29ucyIsIkl0ZW1TZWxlY3RvciIsIlNsaWRlciIsIkxvYWRpbmdTcGlubmVyIiwiZ2V0U3RhdGljTWFwUHJvcHMiLCJnZXRCZWZvcmVMYXllcklkIiwiZ2V0SHViYmxlRGVja0dsUHJvcHMiLCJnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMiLCJnZXRBbmltYXRhYmxlRmlsdGVycyIsInVzZUZvZ0hlaWdodEFuaW1hdGlvbiIsIl9odWJibGVNb2R1bGUiLCJfaHViYmxlUHJvbWlzZSIsIl9zd2lwZUNvbnRhaW5lciIsIl9nbG9iZUNvbnRhaW5lciIsImxvYWRIdWJibGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJtb2QiLCJzd2lwZU1vZCIsImdsb2JlTW9kIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInNlbnQiLCJTd2lwZUV4cG9ydFZpZGVvUGFuZWxDb250YWluZXIiLCJ0MCIsIkdsb2JlRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lciIsInQxIiwiYWJydXB0Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJlcnIiLCJERUZBVUxUX0ZJTEVOQU1FIiwiRXhwb3J0VmlkZW9Nb2RhbFRhYnNGYWN0b3J5IiwiTW9kYWxUYWJzIiwiX3JlZjIiLCJjdXJyZW50TWV0aG9kIiwidG9nZ2xlTWV0aG9kIiwibG9hZGluZ01ldGhvZHMiLCJjcmVhdGVFbGVtZW50IiwiU3R5bGVkTW9kYWxUYWIiLCJtYXAiLCJtZXRob2QiLCJTdHlsZWRUYWJJdGVtIiwia2V5IiwiaWQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwibGFiZWwiLCJkaXYiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsIiwicHJvcHMiLCJ0aGVtZSIsImJvcmRlckNvbG9yTFQiLCJfdGVtcGxhdGVPYmplY3QyIiwic3VidGV4dENvbG9yTFQiLCJ0ZXh0Q29sb3JMVCIsIkxpZ2h0SXRlbVNlbGVjdG9yIiwiX2V4dGVuZHMiLCJpbnB1dFRoZW1lIiwiU0xJREVSX0xJR0hUX09WRVJSSURFUyIsInNsaWRlckJhckNvbG9yIiwic2xpZGVyQmFyQmdkIiwic2xpZGVyQmFySG92ZXJDb2xvciIsInNsaWRlckhhbmRsZUNvbG9yIiwic2xpZGVySGFuZGxlSG92ZXJDb2xvciIsInNsaWRlckluYWN0aXZlQm9yZGVyQ29sb3IiLCJzbGlkZXJIYW5kbGVUZXh0Q29sb3IiLCJzbGlkZXJIYW5kbGVTaGFkb3ciLCJMaWdodFNsaWRlciIsImxpZ2h0VGhlbWUiLCJfb2JqZWN0U3ByZWFkIiwiS0VQTEVSX1VJIiwiSW5wdXQiLCJNb2RhbFRhYnNGYWN0b3J5IiwiU3R5bGVkRXhwb3J0VmlkZW9Nb2RhbENvbnRlbnQiLCJfdGVtcGxhdGVPYmplY3QzIiwicHJpbWFyeUJ0bkFjdEJnZCIsIkhVQkJMRV9QQU5FTF9PVkVSSEVBRCIsIkVYUE9SVF9WSURFT19NT0RBTF9NQVhfV0lEVEgiLCJNT0RBTF9IT1JJWk9OVEFMX1BBRERJTkciLCJFeHBvcnRWaWRlb01vZGFsRmFjdG9yeSIsIkV4cG9ydFZpZGVvTW9kYWwiLCJfcmVmMyIsIl9tYXBTdGF0ZSRnbG9iZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX3JlZjMkbWFwYm94QXBpVXJsIiwibWFwYm94QXBpVXJsIiwibWFwU3RhdGUiLCJtYXBTdHlsZSIsInZpc1N0YXRlIiwiZXhwb3J0VmlkZW8iLCJjb250YWluZXJXIiwidmlzU3RhdGVBY3Rpb25zIiwidWlTdGF0ZUFjdGlvbnMiLCJvbkNsb3NlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaHViYmxlIiwic2V0SHViYmxlIiwic2hhZG93Q29tcG9zaXRpbmdSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImh1YmJsZUVycm9yIiwic2V0SHViYmxlRXJyb3IiLCJtZXNzYWdlIiwiY3VycmVudCIsImNsZWFudXAiLCJleHBvcnRWaWRlb1dpZHRoIiwibW9kYWxJbm5lclciLCJNYXRoIiwibWluIiwibWF4Iiwia2VwbGVyU3RhdGUiLCJzdHlsZVR5cGUiLCJfbWFwU3R5bGUkbWFwU3R5bGVzIiwibm9NYXBFbnRyeSIsIm1hcFN0eWxlcyIsInVybCIsImJnIiwiYmFja2dyb3VuZENvbG9yIiwiYmdTdHlsZSIsImxheWVycyIsInR5cGUiLCJwYWludCIsImNvbmNhdCIsImVtcHR5U3R5bGVVcmwiLCJlbmNvZGVVUklDb21wb25lbnQiLCJKU09OIiwic3RyaW5naWZ5IiwiX2RlZmluZVByb3BlcnR5Iiwib25VcGRhdGVNYXAiLCJ2aWV3UG9ydCIsInNldEV4cG9ydFZpZGVvU2V0dGluZyIsImh1YmJsZURlY2tHbFByb3BzIiwiX3VzZVN0YXRlNSIsImVmZmVjdHMiLCJlZmZlY3QiLCJjbG9uZSIsIl91c2VTdGF0ZTYiLCJ2aWRlb0VmZmVjdHMiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInZpZGVvQ29uZmlndXJhdGlvbiIsInNldFZpZGVvQ29uZmlndXJhdGlvbiIsIm9uVXBkYXRlVmlkZW9Db25maWd1cmF0aW9uIiwidmFsdWVzIiwic3dpcGVTdGFydFBjdCIsInVuZGVmaW5lZCIsInN3aXBlRW5kUGN0Iiwic3dpcGVFYXNpbmciLCJodWJibGVDb250YWluZXJSZWYiLCJkZWNrRWZmZWN0cyIsImxlbmd0aCIsImVmZmVjdE9yZGVyIiwiZSIsImlzRXhwb3J0IiwiaGFzU2hhZG93Iiwic29tZSIsInNoYWRvdyIsImhhc1Bvc3RQcm9jZXNzIiwicG9zdFJlbmRlciIsInB1c2giLCJkZWNrUHJvcHNXaXRoRWZmZWN0cyIsIl9pc0V4cG9ydCIsIm9uVmlld0NoYW5nZSIsInZpZXdTdGF0ZSIsInN0YXRpY01hcFByb3BzIiwiaXNTd2lwZU1vZGUiLCJtYXBTcGxpdE1vZGUiLCJTV0lQRV9DT01QQVJFIiwiaXNTcGxpdCIsImlzR2xvYmVFbmFibGVkIiwiQm9vbGVhbiIsImdsb2JlIiwiZW5hYmxlZCIsIm9uRmlsdGVyRnJhbWVVcGRhdGUiLCJmaWx0ZXJJZHgiLCJuYW1lIiwidmFsdWUiLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lIiwib25UcmlwRnJhbWVVcGRhdGUiLCJzZXRMYXllckFuaW1hdGlvblRpbWUiLCJ0b3BMYXllciIsInRvcE1hcFN0eWxlIiwiYm90dG9tTWFwU3R5bGUiLCJhbmltYXRhYmxlRmlsdGVycyIsInN0eWxlIiwicGFkZGluZyIsInRleHRBbGlnbiIsImNvbG9yIiwiRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lciIsIktlcGxlclVJQ29udGV4dCIsIlN3aXBlQ29udGFpbmVyIiwiR2xvYmVDb250YWluZXIiLCJQcm92aWRlciIsImluaXRpYWxTdGF0ZSIsIm1hcERhdGEiLCJvblNldHRpbmdzQ2hhbmdlIiwiaGVhZGVyIiwiaGFuZGxlQ2xvc2UiLCJkZWNrUHJvcHMiLCJtYXBQcm9wcyIsImRpc2FibGVCYXNlTWFwIiwibWFwYm94TGF5ZXJCZWZvcmVJZCIsImRlZmF1bHRGaWxlTmFtZSIsInJlZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvZXhwb3J0LXZpZGVvLW1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7VGhlbWVQcm92aWRlciwgdXNlVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgTk9fTUFQX0lELFxuICBFTVBUWV9NQVBCT1hfU1RZTEUsXG4gIE1hcFNwbGl0TW9kZVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Vmlld3BvcnQsIEV4cG9ydFZpZGVvLCBFZmZlY3R9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgb25WaWV3UG9ydENoYW5nZSxcbiAgY29tcHV0ZURlY2tFZmZlY3RzLFxuICBwYXRjaERlY2tSZW5kZXJlckZvclBvc3RQcm9jZXNzaW5nXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3R9IGZyb20gJ0BrZXBsZXIuZ2wvZWZmZWN0cyc7XG5pbXBvcnQge01hcFN0eWxlfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7VUlTdGF0ZUFjdGlvbnMsIFZpc1N0YXRlQWN0aW9uc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcblxuaW1wb3J0IHtTdHlsZWRNb2RhbENvbnRlbnQsIElucHV0TGlnaHR9IGZyb20gJy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0J1dHRvbiwgSWNvbnN9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgSXRlbVNlbGVjdG9yIGZyb20gJy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3InO1xuaW1wb3J0IFNsaWRlciBmcm9tICcuLi9jb21tb24vc2xpZGVyL3NsaWRlcic7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnLi4vY29tbW9uL2xvYWRpbmctc3Bpbm5lcic7XG5cbmltcG9ydCB7XG4gIGdldFN0YXRpY01hcFByb3BzLFxuICBnZXRCZWZvcmVMYXllcklkLFxuICBnZXRIdWJibGVEZWNrR2xQcm9wcyxcbiAgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzLFxuICBnZXRBbmltYXRhYmxlRmlsdGVyc1xufSBmcm9tICcuL2h1YmJsZS11dGlscyc7XG5pbXBvcnQge3VzZUZvZ0hlaWdodEFuaW1hdGlvbn0gZnJvbSAnLi9mb2ctaGVpZ2h0LWFuaW1hdGlvbic7XG5cbnR5cGUgU3dpcGVDb250YWluZXJUeXBlID0gUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+O1xuXG50eXBlIEh1YmJsZU1vZHVsZSA9IHtcbiAgRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcjogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+O1xuICBLZXBsZXJVSUNvbnRleHQ6IFJlYWN0LkNvbnRleHQ8YW55Pjtcbn07XG5cbmxldCBfaHViYmxlTW9kdWxlOiBIdWJibGVNb2R1bGUgfCBudWxsID0gbnVsbDtcbmxldCBfaHViYmxlUHJvbWlzZTogUHJvbWlzZTxIdWJibGVNb2R1bGU+IHwgbnVsbCA9IG51bGw7XG5sZXQgX3N3aXBlQ29udGFpbmVyOiBTd2lwZUNvbnRhaW5lclR5cGUgfCBudWxsID0gbnVsbDtcbmxldCBfZ2xvYmVDb250YWluZXI6IFN3aXBlQ29udGFpbmVyVHlwZSB8IG51bGwgPSBudWxsO1xuXG5mdW5jdGlvbiBsb2FkSHViYmxlKCk6IFByb21pc2U8SHViYmxlTW9kdWxlPiB7XG4gIGlmIChfaHViYmxlTW9kdWxlKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKF9odWJibGVNb2R1bGUpO1xuICBpZiAoX2h1YmJsZVByb21pc2UpIHJldHVybiBfaHViYmxlUHJvbWlzZTtcbiAgX2h1YmJsZVByb21pc2UgPSBpbXBvcnQoJ0BodWJibGUuZ2wvcmVhY3QnKS50aGVuKFxuICAgIGFzeW5jIG1vZCA9PiB7XG4gICAgICBfaHViYmxlTW9kdWxlID0gbW9kIGFzIHVua25vd24gYXMgSHViYmxlTW9kdWxlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc3dpcGVNb2QgPSBhd2FpdCBpbXBvcnQoJy4vc3dpcGUtZXhwb3J0LXZpZGVvLWNvbnRhaW5lcicpO1xuICAgICAgICBfc3dpcGVDb250YWluZXIgPSBzd2lwZU1vZC5Td2lwZUV4cG9ydFZpZGVvUGFuZWxDb250YWluZXI7XG4gICAgICB9IGNhdGNoIChfZXJyKSB7XG4gICAgICAgIC8vIHN3aXBlIGV4cG9ydCB1bmF2YWlsYWJsZTsgcmVndWxhciBleHBvcnQgc3RpbGwgd29ya3NcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGdsb2JlTW9kID0gYXdhaXQgaW1wb3J0KCcuL2dsb2JlLWV4cG9ydC12aWRlby1jb250YWluZXInKTtcbiAgICAgICAgX2dsb2JlQ29udGFpbmVyID0gZ2xvYmVNb2QuR2xvYmVFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyO1xuICAgICAgfSBjYXRjaCAoX2Vycikge1xuICAgICAgICAvLyBnbG9iZSBleHBvcnQgY29udGFpbmVyIHVuYXZhaWxhYmxlOyBmYWxscyBiYWNrIHRvIGh1YmJsZSdzIGNvbnRhaW5lclxuICAgICAgfVxuICAgICAgcmV0dXJuIF9odWJibGVNb2R1bGU7XG4gICAgfSxcbiAgICBlcnIgPT4ge1xuICAgICAgX2h1YmJsZVByb21pc2UgPSBudWxsO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgKTtcbiAgcmV0dXJuIF9odWJibGVQcm9taXNlO1xufVxuXG5jb25zdCBERUZBVUxUX0ZJTEVOQU1FID0gJ2tlcGxlci5nbCc7XG5cbmZ1bmN0aW9uIEV4cG9ydFZpZGVvTW9kYWxUYWJzRmFjdG9yeSgpIHtcbiAgY29uc3QgTW9kYWxUYWJzOiBSZWFjdC5GQzx7XG4gICAgY3VycmVudE1ldGhvZDogc3RyaW5nO1xuICAgIHRvZ2dsZU1ldGhvZDogKG1ldGhvZDoge2lkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmd9KSA9PiB2b2lkO1xuICAgIGxvYWRpbmdNZXRob2RzOiBBcnJheTx7aWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZ30+O1xuICB9PiA9ICh7Y3VycmVudE1ldGhvZCwgdG9nZ2xlTWV0aG9kLCBsb2FkaW5nTWV0aG9kc30pID0+IChcbiAgICA8U3R5bGVkTW9kYWxUYWI+XG4gICAgICB7bG9hZGluZ01ldGhvZHMubWFwKG1ldGhvZCA9PiAoXG4gICAgICAgIDxTdHlsZWRUYWJJdGVtXG4gICAgICAgICAga2V5PXttZXRob2QuaWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjdXJyZW50TWV0aG9kID09PSBtZXRob2QuaWQgPyAnYWN0aXZlJyA6ICcnfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRvZ2dsZU1ldGhvZChtZXRob2QpfVxuICAgICAgICA+XG4gICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e21ldGhvZC5sYWJlbH0gLz5cbiAgICAgICAgPC9TdHlsZWRUYWJJdGVtPlxuICAgICAgKSl9XG4gICAgPC9TdHlsZWRNb2RhbFRhYj5cbiAgKTtcblxuICByZXR1cm4gTW9kYWxUYWJzO1xufVxuXG5jb25zdCBTdHlsZWRNb2RhbFRhYiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJvcmRlckNvbG9yTFR9O1xuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuYDtcblxuY29uc3QgU3R5bGVkVGFiSXRlbSA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmc6IDhweCAxNnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yTFR9O1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgJi5hY3RpdmUge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckxUfTtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVH07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckxUfTtcbiAgfVxuYDtcblxuY29uc3QgTGlnaHRJdGVtU2VsZWN0b3I6IFJlYWN0LkZDPGFueT4gPSBwcm9wcyA9PiA8SXRlbVNlbGVjdG9yIHsuLi5wcm9wc30gaW5wdXRUaGVtZT1cImxpZ2h0XCIgLz47XG5cbmNvbnN0IFNMSURFUl9MSUdIVF9PVkVSUklERVMgPSB7XG4gIHNsaWRlckJhckNvbG9yOiAnI0EwQTdCNCcsXG4gIHNsaWRlckJhckJnZDogJyNEM0Q4RTAnLFxuICBzbGlkZXJCYXJIb3ZlckNvbG9yOiAnIzkzOUJBOCcsXG4gIHNsaWRlckhhbmRsZUNvbG9yOiAnI0Y3RjdGNycsXG4gIHNsaWRlckhhbmRsZUhvdmVyQ29sb3I6ICcjRjdGN0Y3JyxcbiAgc2xpZGVySW5hY3RpdmVCb3JkZXJDb2xvcjogJyNGN0Y3RjcnLFxuICBzbGlkZXJIYW5kbGVUZXh0Q29sb3I6ICcjRjdGN0Y3JyxcbiAgc2xpZGVySGFuZGxlU2hhZG93OiAnMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjIwKSdcbn07XG5cbmNvbnN0IExpZ2h0U2xpZGVyOiBSZWFjdC5GQzxhbnk+ID0gcHJvcHMgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGxpZ2h0VGhlbWUgPSB1c2VNZW1vKCgpID0+ICh7Li4udGhlbWUsIC4uLlNMSURFUl9MSUdIVF9PVkVSUklERVN9KSwgW3RoZW1lXSk7XG4gIHJldHVybiAoXG4gICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e2xpZ2h0VGhlbWV9PlxuICAgICAgPFNsaWRlciB7Li4ucHJvcHN9IC8+XG4gICAgPC9UaGVtZVByb3ZpZGVyPlxuICApO1xufTtcblxuY29uc3QgS0VQTEVSX1VJOiB7W2tleTogc3RyaW5nXTogYW55fSA9IHtcbiAgQnV0dG9uLFxuICBJY29ucyxcbiAgSW5wdXQ6IElucHV0TGlnaHQsXG4gIEl0ZW1TZWxlY3RvcjogTGlnaHRJdGVtU2VsZWN0b3IsXG4gIFNsaWRlcjogTGlnaHRTbGlkZXIsXG4gIExvYWRpbmdTcGlubmVyLFxuICBNb2RhbFRhYnNGYWN0b3J5OiBFeHBvcnRWaWRlb01vZGFsVGFic0ZhY3Rvcnlcbn07XG5cbmNvbnN0IFN0eWxlZEV4cG9ydFZpZGVvTW9kYWxDb250ZW50ID0gc3R5bGVkKFN0eWxlZE1vZGFsQ29udGVudClgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdyaWQtcm93LWdhcDogMzJweDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICAuZXhwb3J0LXZpZGVvLXBhbmVsIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAuZXhwb3J0LXZpZGVvLXBhbmVsX19ib2R5IHtcbiAgICBncmlkLWNvbHVtbi1nYXA6IDI0cHg7XG4gIH1cbiAgLmRhdGEtZXgtaWNvbnMtcGxheSA+IHBhdGg6bGFzdC1jaGlsZCxcbiAgLmRhdGEtZXgtaWNvbnMtc3RvcCA+IHBhdGg6bGFzdC1jaGlsZCB7XG4gICAgZmlsbDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAhaW1wb3J0YW50O1xuICAgIHN0cm9rZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuQWN0QmdkfTtcbiAgICBzdHJva2Utd2lkdGg6IDNweDtcbiAgfVxuICAuZGF0YS1leC1pY29ucy1wbGF5ID4gcGF0aDpsYXN0LWNoaWxkOmhvdmVyLFxuICAuZGF0YS1leC1pY29ucy1zdG9wID4gcGF0aDpsYXN0LWNoaWxkOmhvdmVyIHtcbiAgICBmaWxsOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5BY3RCZ2R9ICFpbXBvcnRhbnQ7XG4gIH1cbiAgI2RlY2stY2FudmFzOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpKVxuICAgICAgICBuby1yZXBlYXQgY2VudGVyIC8gMXB4IDEwMCUsXG4gICAgICBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSkgbm8tcmVwZWF0XG4gICAgICAgIGNlbnRlciAvIDEwMCUgMXB4O1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDJweCByZ2JhKDAsIDAsIDAsIDAuNikpO1xuICB9XG5gO1xuXG5leHBvcnQgdHlwZSBWaWRlb0NvbmZpZ3VyYXRpb24gPSB7XG4gIG1lZGlhVHlwZT86IHN0cmluZztcbiAgY2FtZXJhUHJlc2V0Pzogc3RyaW5nO1xuICBmaWxlTmFtZT86IHN0cmluZztcbiAgcmVzb2x1dGlvbj86IHN0cmluZztcbiAgZHVyYXRpb25Ncz86IG51bWJlcjtcbiAgc3dpcGVTdGFydFBjdD86IG51bWJlcjtcbiAgc3dpcGVFbmRQY3Q/OiBudW1iZXI7XG4gIHN3aXBlRWFzaW5nPzogJ2xpbmVhcicgfCAnZWFzZS1pbi1vdXQnO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBFeHBvcnRWaWRlb01vZGFsUHJvcHMge1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIG1hcFN0YXRlOiBhbnk7XG4gIG1hcFN0eWxlOiBNYXBTdHlsZTtcbiAgdmlzU3RhdGU6IGFueTtcbiAgZXhwb3J0VmlkZW86IEV4cG9ydFZpZGVvO1xuICBjb250YWluZXJXOiBudW1iZXI7XG4gIHZpc1N0YXRlQWN0aW9uczogdHlwZW9mIFZpc1N0YXRlQWN0aW9ucztcbiAgdWlTdGF0ZUFjdGlvbnM6IHR5cGVvZiBVSVN0YXRlQWN0aW9ucztcbiAgb25DbG9zZTogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgSFVCQkxFX1BBTkVMX09WRVJIRUFEID0gMiAqIDMyICsgMjQgKyAyODA7XG5jb25zdCBFWFBPUlRfVklERU9fTU9EQUxfTUFYX1dJRFRIID0gMTA4MDtcbmNvbnN0IE1PREFMX0hPUklaT05UQUxfUEFERElORyA9IDE0NDtcblxuY29uc3QgRXhwb3J0VmlkZW9Nb2RhbEZhY3RvcnkgPSAoKSA9PiB7XG4gIGNvbnN0IEV4cG9ydFZpZGVvTW9kYWw6IFJlYWN0LkZDPEV4cG9ydFZpZGVvTW9kYWxQcm9wcz4gPSAoe1xuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIG1hcGJveEFwaVVybCA9IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gICAgbWFwU3RhdGUsXG4gICAgbWFwU3R5bGUsXG4gICAgdmlzU3RhdGUsXG4gICAgZXhwb3J0VmlkZW8sXG4gICAgY29udGFpbmVyVyxcbiAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgdWlTdGF0ZUFjdGlvbnMsXG4gICAgb25DbG9zZVxuICB9KSA9PiB7XG4gICAgY29uc3QgW2h1YmJsZSwgc2V0SHViYmxlXSA9IHVzZVN0YXRlPEh1YmJsZU1vZHVsZSB8IG51bGw+KF9odWJibGVNb2R1bGUpO1xuICAgIGNvbnN0IHNoYWRvd0NvbXBvc2l0aW5nUmVmID0gdXNlUmVmPEluc3RhbmNlVHlwZTx0eXBlb2YgRGVja1NoYWRvd0NvbXBvc2l0aW5nRWZmZWN0PiB8IG51bGw+KFxuICAgICAgbnVsbFxuICAgICk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgcGF0Y2hEZWNrUmVuZGVyZXJGb3JQb3N0UHJvY2Vzc2luZygpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IFtodWJibGVFcnJvciwgc2V0SHViYmxlRXJyb3JdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCFodWJibGUgJiYgIWh1YmJsZUVycm9yKSB7XG4gICAgICAgIGxvYWRIdWJibGUoKVxuICAgICAgICAgIC50aGVuKHNldEh1YmJsZSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHNldEh1YmJsZUVycm9yKGVycj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGxvYWQgdmlkZW8gZXhwb3J0IG1vZHVsZScpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sIFtodWJibGUsIGh1YmJsZUVycm9yXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKHNoYWRvd0NvbXBvc2l0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBzaGFkb3dDb21wb3NpdGluZ1JlZi5jdXJyZW50LmNsZWFudXAoKTtcbiAgICAgICAgICBzaGFkb3dDb21wb3NpdGluZ1JlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBleHBvcnRWaWRlb1dpZHRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBjb25zdCBtb2RhbElubmVyVyA9XG4gICAgICAgIE1hdGgubWluKEVYUE9SVF9WSURFT19NT0RBTF9NQVhfV0lEVEgsIGNvbnRhaW5lclcgKiAwLjcsIGNvbnRhaW5lclcpIC1cbiAgICAgICAgTU9EQUxfSE9SSVpPTlRBTF9QQURESU5HO1xuICAgICAgcmV0dXJuIE1hdGgubWF4KDMyMCwgTWF0aC5taW4oNTQwLCBtb2RhbElubmVyVyAtIEhVQkJMRV9QQU5FTF9PVkVSSEVBRCkpO1xuICAgIH0sIFtjb250YWluZXJXXSk7XG5cbiAgICBjb25zdCBrZXBsZXJTdGF0ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKG1hcFN0eWxlPy5zdHlsZVR5cGUgPT09IE5PX01BUF9JRCkge1xuICAgICAgICBjb25zdCBub01hcEVudHJ5ID0gbWFwU3R5bGUubWFwU3R5bGVzPy5bTk9fTUFQX0lEXTtcbiAgICAgICAgaWYgKG5vTWFwRW50cnkgJiYgIW5vTWFwRW50cnkudXJsKSB7XG4gICAgICAgICAgY29uc3QgYmcgPSBtYXBTdHlsZS5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgICAgY29uc3QgYmdTdHlsZSA9IHtcbiAgICAgICAgICAgIC4uLkVNUFRZX01BUEJPWF9TVFlMRSxcbiAgICAgICAgICAgIGxheWVyczogYmdcbiAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnYmFja2dyb3VuZCcsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdiYWNrZ3JvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgcGFpbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IGByZ2IoJHtiZ1swXX0sJHtiZ1sxXX0sJHtiZ1syXX0pYFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICA6IFtdXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBlbXB0eVN0eWxlVXJsID0gYGRhdGE6YXBwbGljYXRpb24vanNvbiwke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGJnU3R5bGUpXG4gICAgICAgICAgKX1gO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2aXNTdGF0ZSxcbiAgICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgICAgbWFwU3R5bGU6IHtcbiAgICAgICAgICAgICAgLi4ubWFwU3R5bGUsXG4gICAgICAgICAgICAgIG1hcFN0eWxlczoge1xuICAgICAgICAgICAgICAgIC4uLm1hcFN0eWxlLm1hcFN0eWxlcyxcbiAgICAgICAgICAgICAgICBbTk9fTUFQX0lEXTogey4uLm5vTWFwRW50cnksIHVybDogZW1wdHlTdHlsZVVybH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7dmlzU3RhdGUsIG1hcFN0YXRlLCBtYXBTdHlsZX07XG4gICAgfSwgW3Zpc1N0YXRlLCBtYXBTdGF0ZSwgbWFwU3R5bGVdKTtcblxuICAgIGNvbnN0IG9uVXBkYXRlTWFwID0gdXNlQ2FsbGJhY2soXG4gICAgICAodmlld1BvcnQ6IFZpZXdwb3J0KSA9PiB7XG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydFZpZGVvU2V0dGluZyh2aWV3UG9ydCBhcyBhbnkpO1xuICAgICAgfSxcbiAgICAgIFt1aVN0YXRlQWN0aW9uc11cbiAgICApO1xuXG4gICAgY29uc3QgaHViYmxlRGVja0dsUHJvcHMgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gZ2V0SHViYmxlRGVja0dsUHJvcHMoa2VwbGVyU3RhdGUsIG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwpLFxuICAgICAgW2tlcGxlclN0YXRlLCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsXVxuICAgICk7XG5cbiAgICBjb25zdCBbdmlkZW9FZmZlY3RzXSA9IHVzZVN0YXRlPEVmZmVjdFtdPigoKSA9PlxuICAgICAgKHZpc1N0YXRlLmVmZmVjdHMgfHwgW10pLm1hcCgoZWZmZWN0OiBFZmZlY3QpID0+IGVmZmVjdC5jbG9uZSgpKVxuICAgICk7XG5cbiAgICBjb25zdCBbdmlkZW9Db25maWd1cmF0aW9uLCBzZXRWaWRlb0NvbmZpZ3VyYXRpb25dID0gdXNlU3RhdGU8VmlkZW9Db25maWd1cmF0aW9uPih7XG4gICAgICAuLi5leHBvcnRWaWRlb1xuICAgIH0pO1xuICAgIGNvbnN0IG9uVXBkYXRlVmlkZW9Db25maWd1cmF0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgICAodmFsdWVzOiBWaWRlb0NvbmZpZ3VyYXRpb24pID0+IHtcbiAgICAgICAgc2V0VmlkZW9Db25maWd1cmF0aW9uKHByZXYgPT4gKHsuLi5wcmV2LCAuLi52YWx1ZXN9KSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB2YWx1ZXMuc3dpcGVTdGFydFBjdCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgdmFsdWVzLnN3aXBlRW5kUGN0ICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICB2YWx1ZXMuc3dpcGVFYXNpbmcgIT09IHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICB1aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRWaWRlb1NldHRpbmcodmFsdWVzIGFzIGFueSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbdWlTdGF0ZUFjdGlvbnNdXG4gICAgKTtcblxuICAgIGNvbnN0IGh1YmJsZUNvbnRhaW5lclJlZiA9IHVzZVJlZjxhbnk+KG51bGwpO1xuXG4gICAgdXNlRm9nSGVpZ2h0QW5pbWF0aW9uKHZpZGVvRWZmZWN0cywgaHViYmxlQ29udGFpbmVyUmVmKTtcblxuICAgIGNvbnN0IGRlY2tFZmZlY3RzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAodmlkZW9FZmZlY3RzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgY29uc3QgZWZmZWN0T3JkZXIgPSB2aXNTdGF0ZS5lZmZlY3RPcmRlciB8fCB2aWRlb0VmZmVjdHMubWFwKChlOiBFZmZlY3QpID0+IGUuaWQpO1xuICAgICAgY29uc3QgZWZmZWN0cyA9IGNvbXB1dGVEZWNrRWZmZWN0cyh7XG4gICAgICAgIHZpc1N0YXRlOiB7Li4udmlzU3RhdGUsIGVmZmVjdHM6IHZpZGVvRWZmZWN0cywgZWZmZWN0T3JkZXJ9LFxuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgaXNFeHBvcnQ6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBoYXNTaGFkb3cgPSBlZmZlY3RzLnNvbWUoKGU6IGFueSkgPT4gZS5zaGFkb3cgPT09IHRydWUpO1xuICAgICAgY29uc3QgaGFzUG9zdFByb2Nlc3MgPSBlZmZlY3RzLnNvbWUoKGU6IGFueSkgPT4gdHlwZW9mIGUucG9zdFJlbmRlciA9PT0gJ2Z1bmN0aW9uJyk7XG4gICAgICBpZiAoaGFzU2hhZG93ICYmICFoYXNQb3N0UHJvY2Vzcykge1xuICAgICAgICBpZiAoIXNoYWRvd0NvbXBvc2l0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBzaGFkb3dDb21wb3NpdGluZ1JlZi5jdXJyZW50ID0gbmV3IERlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGVmZmVjdHMucHVzaChzaGFkb3dDb21wb3NpdGluZ1JlZi5jdXJyZW50IGFzIGFueSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlZmZlY3RzO1xuICAgIH0sIFt2aXNTdGF0ZSwgdmlkZW9FZmZlY3RzLCBtYXBTdGF0ZV0pO1xuXG4gICAgY29uc3QgZGVja1Byb3BzV2l0aEVmZmVjdHMgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgLi4uaHViYmxlRGVja0dsUHJvcHMsXG4gICAgICAgIF9pc0V4cG9ydDogdHJ1ZSxcbiAgICAgICAgZWZmZWN0czogZGVja0VmZmVjdHNcbiAgICAgIH0pLFxuICAgICAgW2h1YmJsZURlY2tHbFByb3BzLCBkZWNrRWZmZWN0c11cbiAgICApO1xuXG4gICAgY29uc3Qgb25WaWV3Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAodmlld1N0YXRlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PlxuICAgICAgICBvblZpZXdQb3J0Q2hhbmdlKHZpZXdTdGF0ZSBhcyBWaWV3cG9ydCwgb25VcGRhdGVNYXAgYXMgYW55KSxcbiAgICAgIFtvblVwZGF0ZU1hcF1cbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGljTWFwUHJvcHMgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gZ2V0U3RhdGljTWFwUHJvcHMoa2VwbGVyU3RhdGUsIG9uVmlld0NoYW5nZSwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCksXG4gICAgICBba2VwbGVyU3RhdGUsIG9uVmlld0NoYW5nZSwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybF1cbiAgICApO1xuXG4gICAgY29uc3QgaXNTd2lwZU1vZGUgPSBtYXBTdGF0ZS5tYXBTcGxpdE1vZGUgPT09IE1hcFNwbGl0TW9kZS5TV0lQRV9DT01QQVJFICYmIG1hcFN0YXRlLmlzU3BsaXQ7XG5cbiAgICAvLyBJbiBnbG9iZSBtb2RlIHRoZSBkZWNrLmdsIEdsb2JlVmlldyByZW5kZXJzIHRoZSBwbGFuZXQgKGFuZCBiYXNlbWFwIHRpbGVzKVxuICAgIC8vIGl0c2VsZjsgdGhlIGZsYXQgbWFwbGlicmUgYmFzZSBtYXAgbXVzdCBiZSBkaXNhYmxlZCBzbyBpdCBkb2Vzbid0IHJlbmRlciBhXG4gICAgLy8gMkQgTWVyY2F0b3IgbWFwIGJlaGluZC9hcm91bmQgdGhlIGdsb2JlLlxuICAgIGNvbnN0IGlzR2xvYmVFbmFibGVkID0gQm9vbGVhbihtYXBTdGF0ZT8uZ2xvYmU/LmVuYWJsZWQpO1xuXG4gICAgY29uc3Qgb25GaWx0ZXJGcmFtZVVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGZpbHRlcklkeDogbnVtYmVyLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlckFuaW1hdGlvblRpbWUoZmlsdGVySWR4LCBuYW1lLCB2YWx1ZSk7XG4gICAgICB9LFxuICAgICAgW3Zpc1N0YXRlQWN0aW9uc11cbiAgICApO1xuXG4gICAgY29uc3Qgb25UcmlwRnJhbWVVcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAgICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucy5zZXRMYXllckFuaW1hdGlvblRpbWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIFt2aXNTdGF0ZUFjdGlvbnNdXG4gICAgKTtcblxuICAgIGNvbnN0IHRvcExheWVyID0gdXNlTWVtbyhcbiAgICAgICgpID0+IGdldEJlZm9yZUxheWVySWQobWFwU3R5bGU/LnRvcE1hcFN0eWxlLCBtYXBTdHlsZT8uYm90dG9tTWFwU3R5bGUpLFxuICAgICAgW21hcFN0eWxlPy50b3BNYXBTdHlsZSwgbWFwU3R5bGU/LmJvdHRvbU1hcFN0eWxlXVxuICAgICk7XG5cbiAgICBjb25zdCBhbmltYXRhYmxlRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4gZ2V0QW5pbWF0YWJsZUZpbHRlcnMoa2VwbGVyU3RhdGUpLCBba2VwbGVyU3RhdGVdKTtcblxuICAgIGlmICghaHViYmxlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkRXhwb3J0VmlkZW9Nb2RhbENvbnRlbnQgY2xhc3NOYW1lPVwiZXhwb3J0LXZpZGVvLW1vZGFsXCI+XG4gICAgICAgICAge2h1YmJsZUVycm9yID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17e3BhZGRpbmc6ICcyMHB4JywgdGV4dEFsaWduOiAnY2VudGVyJywgY29sb3I6ICcjZDk1MzRmJ319PlxuICAgICAgICAgICAgICA8cD57aHViYmxlRXJyb3J9PC9wPlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc2V0SHViYmxlRXJyb3IobnVsbCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFJldHJ5XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU3R5bGVkRXhwb3J0VmlkZW9Nb2RhbENvbnRlbnQ+XG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHtFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLCBLZXBsZXJVSUNvbnRleHR9ID0gaHViYmxlO1xuXG4gICAgY29uc3QgU3dpcGVDb250YWluZXIgPSBfc3dpcGVDb250YWluZXI7XG4gICAgY29uc3QgR2xvYmVDb250YWluZXIgPSBfZ2xvYmVDb250YWluZXI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEtlcGxlclVJQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17S0VQTEVSX1VJfT5cbiAgICAgICAgPFN0eWxlZEV4cG9ydFZpZGVvTW9kYWxDb250ZW50IGNsYXNzTmFtZT1cImV4cG9ydC12aWRlby1tb2RhbFwiPlxuICAgICAgICAgIHtpc1N3aXBlTW9kZSAmJiBTd2lwZUNvbnRhaW5lciA/IChcbiAgICAgICAgICAgIDxTd2lwZUNvbnRhaW5lclxuICAgICAgICAgICAgICBpbml0aWFsU3RhdGU9e3ZpZGVvQ29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgICAgbWFwRGF0YT17a2VwbGVyU3RhdGV9XG4gICAgICAgICAgICAgIG9uU2V0dGluZ3NDaGFuZ2U9e29uVXBkYXRlVmlkZW9Db25maWd1cmF0aW9ufVxuICAgICAgICAgICAgICBoZWFkZXI9e2ZhbHNlfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgZXhwb3J0VmlkZW9XaWR0aD17ZXhwb3J0VmlkZW9XaWR0aH1cbiAgICAgICAgICAgICAgb25GaWx0ZXJGcmFtZVVwZGF0ZT17b25GaWx0ZXJGcmFtZVVwZGF0ZX1cbiAgICAgICAgICAgICAgb25UcmlwRnJhbWVVcGRhdGU9e29uVHJpcEZyYW1lVXBkYXRlfVxuICAgICAgICAgICAgICBkZWNrUHJvcHM9e2RlY2tQcm9wc1dpdGhFZmZlY3RzfVxuICAgICAgICAgICAgICBtYXBQcm9wcz17c3RhdGljTWFwUHJvcHN9XG4gICAgICAgICAgICAgIGRpc2FibGVCYXNlTWFwPXtpc0dsb2JlRW5hYmxlZH1cbiAgICAgICAgICAgICAgbWFwYm94TGF5ZXJCZWZvcmVJZD17dG9wTGF5ZXI/LmlkfVxuICAgICAgICAgICAgICBkZWZhdWx0RmlsZU5hbWU9e0RFRkFVTFRfRklMRU5BTUV9XG4gICAgICAgICAgICAgIGFuaW1hdGFibGVGaWx0ZXJzPXthbmltYXRhYmxlRmlsdGVyc31cbiAgICAgICAgICAgICAgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzPXtnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXN9XG4gICAgICAgICAgICAgIHN3aXBlU3RhcnRQY3Q9e2V4cG9ydFZpZGVvLnN3aXBlU3RhcnRQY3R9XG4gICAgICAgICAgICAgIHN3aXBlRW5kUGN0PXtleHBvcnRWaWRlby5zd2lwZUVuZFBjdH1cbiAgICAgICAgICAgICAgc3dpcGVFYXNpbmc9e2V4cG9ydFZpZGVvLnN3aXBlRWFzaW5nfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogaXNHbG9iZUVuYWJsZWQgJiYgR2xvYmVDb250YWluZXIgPyAoXG4gICAgICAgICAgICAvLyBHbG9iZSAobm9uLXN3aXBlKSBleHBvcnQgdXNlcyBhIGRlZGljYXRlZCBjb250YWluZXIgdGhhdCBkcml2ZXMgaXRzXG4gICAgICAgICAgICAvLyBvd24gY2FwdHVyZSBsb29wLiBodWJibGUncyBidWlsdC1pbiBjb250YWluZXIgb25seSBhZHZhbmNlcyBmcmFtZXNcbiAgICAgICAgICAgIC8vIGZyb20gdGhlIG1hcGJveCBiYXNlIG1hcCdzIHJlbmRlciBldmVudCwgd2hpY2ggZG9lc24ndCBmaXJlIGluXG4gICAgICAgICAgICAvLyBnbG9iZSBtb2RlIChiYXNlIG1hcCBkaXNhYmxlZCksIHNvIGl0cyBleHBvcnQgd291bGQgaGFuZy5cbiAgICAgICAgICAgIDxHbG9iZUNvbnRhaW5lclxuICAgICAgICAgICAgICByZWY9e2h1YmJsZUNvbnRhaW5lclJlZn1cbiAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlPXt2aWRlb0NvbmZpZ3VyYXRpb259XG4gICAgICAgICAgICAgIG1hcERhdGE9e2tlcGxlclN0YXRlfVxuICAgICAgICAgICAgICBvblNldHRpbmdzQ2hhbmdlPXtvblVwZGF0ZVZpZGVvQ29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgICAgaGVhZGVyPXtmYWxzZX1cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIGV4cG9ydFZpZGVvV2lkdGg9e2V4cG9ydFZpZGVvV2lkdGh9XG4gICAgICAgICAgICAgIG9uRmlsdGVyRnJhbWVVcGRhdGU9e29uRmlsdGVyRnJhbWVVcGRhdGV9XG4gICAgICAgICAgICAgIG9uVHJpcEZyYW1lVXBkYXRlPXtvblRyaXBGcmFtZVVwZGF0ZX1cbiAgICAgICAgICAgICAgZGVja1Byb3BzPXtkZWNrUHJvcHNXaXRoRWZmZWN0c31cbiAgICAgICAgICAgICAgbWFwUHJvcHM9e3N0YXRpY01hcFByb3BzfVxuICAgICAgICAgICAgICBkZWZhdWx0RmlsZU5hbWU9e0RFRkFVTFRfRklMRU5BTUV9XG4gICAgICAgICAgICAgIGFuaW1hdGFibGVGaWx0ZXJzPXthbmltYXRhYmxlRmlsdGVyc31cbiAgICAgICAgICAgICAgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzPXtnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8RXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lclxuICAgICAgICAgICAgICByZWY9e2h1YmJsZUNvbnRhaW5lclJlZn1cbiAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlPXt2aWRlb0NvbmZpZ3VyYXRpb259XG4gICAgICAgICAgICAgIG1hcERhdGE9e2tlcGxlclN0YXRlfVxuICAgICAgICAgICAgICBvblNldHRpbmdzQ2hhbmdlPXtvblVwZGF0ZVZpZGVvQ29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgICAgaGVhZGVyPXtmYWxzZX1cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIGV4cG9ydFZpZGVvV2lkdGg9e2V4cG9ydFZpZGVvV2lkdGh9XG4gICAgICAgICAgICAgIG9uRmlsdGVyRnJhbWVVcGRhdGU9e29uRmlsdGVyRnJhbWVVcGRhdGV9XG4gICAgICAgICAgICAgIG9uVHJpcEZyYW1lVXBkYXRlPXtvblRyaXBGcmFtZVVwZGF0ZX1cbiAgICAgICAgICAgICAgZGVja1Byb3BzPXtkZWNrUHJvcHNXaXRoRWZmZWN0c31cbiAgICAgICAgICAgICAgbWFwUHJvcHM9e3N0YXRpY01hcFByb3BzfVxuICAgICAgICAgICAgICBkaXNhYmxlQmFzZU1hcD17aXNHbG9iZUVuYWJsZWR9XG4gICAgICAgICAgICAgIG1hcGJveExheWVyQmVmb3JlSWQ9e3RvcExheWVyPy5pZH1cbiAgICAgICAgICAgICAgZGVmYXVsdEZpbGVOYW1lPXtERUZBVUxUX0ZJTEVOQU1FfVxuICAgICAgICAgICAgICBhbmltYXRhYmxlRmlsdGVycz17YW5pbWF0YWJsZUZpbHRlcnN9XG4gICAgICAgICAgICAgIGdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lcz17Z2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1N0eWxlZEV4cG9ydFZpZGVvTW9kYWxDb250ZW50PlxuICAgICAgPC9LZXBsZXJVSUNvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gRXhwb3J0VmlkZW9Nb2RhbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV4cG9ydFZpZGVvTW9kYWxGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLE9BQU9BLEtBQUssSUFBR0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQU8sT0FBTztBQUM5RSxPQUFPQyxNQUFNLElBQUdDLGFBQWEsRUFBRUMsUUFBUSxRQUFPLG1CQUFtQjtBQUVqRSxTQUNFQyxzQkFBc0IsRUFDdEJDLFNBQVMsRUFDVEMsa0JBQWtCLEVBQ2xCQyxZQUFZLFFBQ1Asc0JBQXNCO0FBQzdCLFNBQVFDLGdCQUFnQixRQUFPLHlCQUF5QjtBQUV4RCxTQUNFQyxnQkFBZ0IsRUFDaEJDLGtCQUFrQixFQUNsQkMsa0NBQWtDLFFBQzdCLGtCQUFrQjtBQUN6QixTQUFRQywyQkFBMkIsUUFBTyxvQkFBb0I7QUFJOUQsU0FBUUMsa0JBQWtCLEVBQUVDLFVBQVUsUUFBTyw2QkFBNkI7QUFDMUUsU0FBUUMsTUFBTSxFQUFFQyxLQUFLLFFBQU8sV0FBVztBQUN2QyxPQUFPQyxZQUFZLE1BQU0sdUNBQXVDO0FBQ2hFLE9BQU9DLE1BQU0sTUFBTSx5QkFBeUI7QUFDNUMsT0FBT0MsY0FBYyxNQUFNLDJCQUEyQjtBQUV0RCxTQUNFQyxpQkFBaUIsRUFDakJDLGdCQUFnQixFQUNoQkMsb0JBQW9CLEVBQ3BCQywyQkFBMkIsRUFDM0JDLG9CQUFvQixRQUNmLGdCQUFnQjtBQUN2QixTQUFRQyxxQkFBcUIsUUFBTyx3QkFBd0I7QUFTNUQsSUFBSUMsYUFBa0MsR0FBRyxJQUFJO0FBQzdDLElBQUlDLGNBQTRDLEdBQUcsSUFBSTtBQUN2RCxJQUFJQyxlQUEwQyxHQUFHLElBQUk7QUFDckQsSUFBSUMsZUFBMEMsR0FBRyxJQUFJO0FBRXJELFNBQVNDLFVBQVVBLENBQUEsRUFBMEI7RUFDM0MsSUFBSUosYUFBYSxFQUFFLE9BQU9LLE9BQU8sQ0FBQ0MsT0FB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
|
|
427
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwic3R5bGVkIiwiVGhlbWVQcm92aWRlciIsInVzZVRoZW1lIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIk5PX01BUF9JRCIsIkVNUFRZX01BUEJPWF9TVFlMRSIsIk1hcFNwbGl0TW9kZSIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJvblZpZXdQb3J0Q2hhbmdlIiwiY29tcHV0ZURlY2tFZmZlY3RzIiwicGF0Y2hEZWNrUmVuZGVyZXJGb3JQb3N0UHJvY2Vzc2luZyIsIkRlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCIsIlN0eWxlZE1vZGFsQ29udGVudCIsIklucHV0TGlnaHQiLCJCdXR0b24iLCJJY29ucyIsIkl0ZW1TZWxlY3RvciIsIlNsaWRlciIsIkxvYWRpbmdTcGlubmVyIiwiZ2V0U3RhdGljTWFwUHJvcHMiLCJnZXRCZWZvcmVMYXllcklkIiwiZ2V0SHViYmxlRGVja0dsUHJvcHMiLCJnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMiLCJnZXRBbmltYXRhYmxlRmlsdGVycyIsImdldFJlc29sdXRpb25TZXR0aW5nIiwidXNlRm9nSGVpZ2h0QW5pbWF0aW9uIiwiX2h1YmJsZU1vZHVsZSIsIl9odWJibGVQcm9taXNlIiwiX3N3aXBlQ29udGFpbmVyIiwiX2dsb2JlQ29udGFpbmVyIiwibG9hZEh1YmJsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIm1vZCIsInN3aXBlTW9kIiwiZ2xvYmVNb2QiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic2VudCIsIlN3aXBlRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lciIsInQwIiwiR2xvYmVFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyIiwidDEiLCJhYnJ1cHQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImVyciIsIkRFRkFVTFRfRklMRU5BTUUiLCJFeHBvcnRWaWRlb01vZGFsVGFic0ZhY3RvcnkiLCJNb2RhbFRhYnMiLCJfcmVmMiIsImN1cnJlbnRNZXRob2QiLCJ0b2dnbGVNZXRob2QiLCJsb2FkaW5nTWV0aG9kcyIsImNyZWF0ZUVsZW1lbnQiLCJTdHlsZWRNb2RhbFRhYiIsIm1hcCIsIm1ldGhvZCIsIlN0eWxlZFRhYkl0ZW0iLCJrZXkiLCJpZCIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJsYWJlbCIsImRpdiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCJwcm9wcyIsInRoZW1lIiwiYm9yZGVyQ29sb3JMVCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJzdWJ0ZXh0Q29sb3JMVCIsInRleHRDb2xvckxUIiwiTGlnaHRJdGVtU2VsZWN0b3IiLCJfZXh0ZW5kcyIsImlucHV0VGhlbWUiLCJTTElERVJfTElHSFRfT1ZFUlJJREVTIiwic2xpZGVyQmFyQ29sb3IiLCJzbGlkZXJCYXJCZ2QiLCJzbGlkZXJCYXJIb3ZlckNvbG9yIiwic2xpZGVySGFuZGxlQ29sb3IiLCJzbGlkZXJIYW5kbGVIb3ZlckNvbG9yIiwic2xpZGVySW5hY3RpdmVCb3JkZXJDb2xvciIsInNsaWRlckhhbmRsZVRleHRDb2xvciIsInNsaWRlckhhbmRsZVNoYWRvdyIsIkxpZ2h0U2xpZGVyIiwibGlnaHRUaGVtZSIsIl9vYmplY3RTcHJlYWQiLCJLRVBMRVJfVUkiLCJJbnB1dCIsIk1vZGFsVGFic0ZhY3RvcnkiLCJTdHlsZWRFeHBvcnRWaWRlb01vZGFsQ29udGVudCIsIl90ZW1wbGF0ZU9iamVjdDMiLCJwcmltYXJ5QnRuQWN0QmdkIiwiSFVCQkxFX1BBTkVMX09WRVJIRUFEIiwiRVhQT1JUX1ZJREVPX01PREFMX01BWF9XSURUSCIsIk1PREFMX0hPUklaT05UQUxfUEFERElORyIsIkV4cG9ydFZpZGVvTW9kYWxGYWN0b3J5IiwiRXhwb3J0VmlkZW9Nb2RhbCIsIl9yZWYzIiwiX21hcFN0YXRlJGdsb2JlIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJfcmVmMyRtYXBib3hBcGlVcmwiLCJtYXBib3hBcGlVcmwiLCJtYXBTdGF0ZSIsIm1hcFN0eWxlIiwidmlzU3RhdGUiLCJleHBvcnRWaWRlbyIsImNvbnRhaW5lclciLCJ2aXNTdGF0ZUFjdGlvbnMiLCJ1aVN0YXRlQWN0aW9ucyIsIm9uQ2xvc2UiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJodWJibGUiLCJzZXRIdWJibGUiLCJzaGFkb3dDb21wb3NpdGluZ1JlZiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaHViYmxlRXJyb3IiLCJzZXRIdWJibGVFcnJvciIsIm1lc3NhZ2UiLCJjdXJyZW50IiwiY2xlYW51cCIsImV4cG9ydFZpZGVvV2lkdGgiLCJtb2RhbElubmVyVyIsIk1hdGgiLCJtaW4iLCJtYXgiLCJrZXBsZXJTdGF0ZSIsInN0eWxlVHlwZSIsIl9tYXBTdHlsZSRtYXBTdHlsZXMiLCJub01hcEVudHJ5IiwibWFwU3R5bGVzIiwidXJsIiwiYmciLCJiYWNrZ3JvdW5kQ29sb3IiLCJiZ1N0eWxlIiwibGF5ZXJzIiwidHlwZSIsInBhaW50IiwiY29uY2F0IiwiZW1wdHlTdHlsZVVybCIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJfZGVmaW5lUHJvcGVydHkiLCJvblVwZGF0ZU1hcCIsInZpZXdQb3J0Iiwic2V0RXhwb3J0VmlkZW9TZXR0aW5nIiwiaHViYmxlRGVja0dsUHJvcHMiLCJfdXNlU3RhdGU1IiwiZWZmZWN0cyIsImVmZmVjdCIsImNsb25lIiwiX3VzZVN0YXRlNiIsInZpZGVvRWZmZWN0cyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwidmlkZW9Db25maWd1cmF0aW9uIiwic2V0VmlkZW9Db25maWd1cmF0aW9uIiwib25VcGRhdGVWaWRlb0NvbmZpZ3VyYXRpb24iLCJ2YWx1ZXMiLCJzd2lwZVN0YXJ0UGN0IiwidW5kZWZpbmVkIiwic3dpcGVFbmRQY3QiLCJzd2lwZUVhc2luZyIsImh1YmJsZUNvbnRhaW5lclJlZiIsImRlY2tFZmZlY3RzIiwibGVuZ3RoIiwiZWZmZWN0T3JkZXIiLCJlIiwiaXNFeHBvcnQiLCJoYXNTaGFkb3ciLCJzb21lIiwic2hhZG93IiwiaGFzUG9zdFByb2Nlc3MiLCJwb3N0UmVuZGVyIiwicHVzaCIsImRlY2tQcm9wc1dpdGhFZmZlY3RzIiwiX2lzRXhwb3J0Iiwib25WaWV3Q2hhbmdlIiwidmlld1N0YXRlIiwic3RhdGljTWFwUHJvcHMiLCJpc1N3aXBlTW9kZSIsIm1hcFNwbGl0TW9kZSIsIlNXSVBFX0NPTVBBUkUiLCJpc1NwbGl0IiwiaXNHbG9iZUVuYWJsZWQiLCJCb29sZWFuIiwiZ2xvYmUiLCJlbmFibGVkIiwiX2dldFJlc29sdXRpb25TZXR0aW5nIiwicmVzb2x1dGlvbiIsIndpZHRoIiwic2NhbGVkRHByIiwiZGVzY3JpcHRvciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIndpbmRvdyIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZ2V0Iiwic2V0IiwiZGV2aWNlUGl4ZWxSYXRpbyIsIm9uRmlsdGVyRnJhbWVVcGRhdGUiLCJmaWx0ZXJJZHgiLCJuYW1lIiwidmFsdWUiLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lIiwib25UcmlwRnJhbWVVcGRhdGUiLCJzZXRMYXllckFuaW1hdGlvblRpbWUiLCJ0b3BMYXllciIsInRvcE1hcFN0eWxlIiwiYm90dG9tTWFwU3R5bGUiLCJhbmltYXRhYmxlRmlsdGVycyIsInN0eWxlIiwicGFkZGluZyIsInRleHRBbGlnbiIsImNvbG9yIiwiRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lciIsIktlcGxlclVJQ29udGV4dCIsIlN3aXBlQ29udGFpbmVyIiwiR2xvYmVDb250YWluZXIiLCJQcm92aWRlciIsImluaXRpYWxTdGF0ZSIsIm1hcERhdGEiLCJvblNldHRpbmdzQ2hhbmdlIiwiaGVhZGVyIiwiaGFuZGxlQ2xvc2UiLCJkZWNrUHJvcHMiLCJtYXBQcm9wcyIsImRpc2FibGVCYXNlTWFwIiwibWFwYm94TGF5ZXJCZWZvcmVJZCIsImRlZmF1bHRGaWxlTmFtZSIsInJlZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvZXhwb3J0LXZpZGVvLW1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7VGhlbWVQcm92aWRlciwgdXNlVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgTk9fTUFQX0lELFxuICBFTVBUWV9NQVBCT1hfU1RZTEUsXG4gIE1hcFNwbGl0TW9kZVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Vmlld3BvcnQsIEV4cG9ydFZpZGVvLCBFZmZlY3R9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgb25WaWV3UG9ydENoYW5nZSxcbiAgY29tcHV0ZURlY2tFZmZlY3RzLFxuICBwYXRjaERlY2tSZW5kZXJlckZvclBvc3RQcm9jZXNzaW5nXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3R9IGZyb20gJ0BrZXBsZXIuZ2wvZWZmZWN0cyc7XG5pbXBvcnQge01hcFN0eWxlfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7VUlTdGF0ZUFjdGlvbnMsIFZpc1N0YXRlQWN0aW9uc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcblxuaW1wb3J0IHtTdHlsZWRNb2RhbENvbnRlbnQsIElucHV0TGlnaHR9IGZyb20gJy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0J1dHRvbiwgSWNvbnN9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgSXRlbVNlbGVjdG9yIGZyb20gJy4uL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3InO1xuaW1wb3J0IFNsaWRlciBmcm9tICcuLi9jb21tb24vc2xpZGVyL3NsaWRlcic7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnLi4vY29tbW9uL2xvYWRpbmctc3Bpbm5lcic7XG5cbmltcG9ydCB7XG4gIGdldFN0YXRpY01hcFByb3BzLFxuICBnZXRCZWZvcmVMYXllcklkLFxuICBnZXRIdWJibGVEZWNrR2xQcm9wcyxcbiAgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzLFxuICBnZXRBbmltYXRhYmxlRmlsdGVycyxcbiAgZ2V0UmVzb2x1dGlvblNldHRpbmdcbn0gZnJvbSAnLi9odWJibGUtdXRpbHMnO1xuaW1wb3J0IHt1c2VGb2dIZWlnaHRBbmltYXRpb259IGZyb20gJy4vZm9nLWhlaWdodC1hbmltYXRpb24nO1xuXG50eXBlIFN3aXBlQ29udGFpbmVyVHlwZSA9IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PjtcblxudHlwZSBIdWJibGVNb2R1bGUgPSB7XG4gIEV4cG9ydFZpZGVvUGFuZWxDb250YWluZXI6IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PjtcbiAgS2VwbGVyVUlDb250ZXh0OiBSZWFjdC5Db250ZXh0PGFueT47XG59O1xuXG5sZXQgX2h1YmJsZU1vZHVsZTogSHViYmxlTW9kdWxlIHwgbnVsbCA9IG51bGw7XG5sZXQgX2h1YmJsZVByb21pc2U6IFByb21pc2U8SHViYmxlTW9kdWxlPiB8IG51bGwgPSBudWxsO1xubGV0IF9zd2lwZUNvbnRhaW5lcjogU3dpcGVDb250YWluZXJUeXBlIHwgbnVsbCA9IG51bGw7XG5sZXQgX2dsb2JlQ29udGFpbmVyOiBTd2lwZUNvbnRhaW5lclR5cGUgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gbG9hZEh1YmJsZSgpOiBQcm9taXNlPEh1YmJsZU1vZHVsZT4ge1xuICBpZiAoX2h1YmJsZU1vZHVsZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShfaHViYmxlTW9kdWxlKTtcbiAgaWYgKF9odWJibGVQcm9taXNlKSByZXR1cm4gX2h1YmJsZVByb21pc2U7XG4gIF9odWJibGVQcm9taXNlID0gaW1wb3J0KCdAaHViYmxlLmdsL3JlYWN0JykudGhlbihcbiAgICBhc3luYyBtb2QgPT4ge1xuICAgICAgX2h1YmJsZU1vZHVsZSA9IG1vZCBhcyB1bmtub3duIGFzIEh1YmJsZU1vZHVsZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHN3aXBlTW9kID0gYXdhaXQgaW1wb3J0KCcuL3N3aXBlLWV4cG9ydC12aWRlby1jb250YWluZXInKTtcbiAgICAgICAgX3N3aXBlQ29udGFpbmVyID0gc3dpcGVNb2QuU3dpcGVFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyO1xuICAgICAgfSBjYXRjaCAoX2Vycikge1xuICAgICAgICAvLyBzd2lwZSBleHBvcnQgdW5hdmFpbGFibGU7IHJlZ3VsYXIgZXhwb3J0IHN0aWxsIHdvcmtzXG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBnbG9iZU1vZCA9IGF3YWl0IGltcG9ydCgnLi9nbG9iZS1leHBvcnQtdmlkZW8tY29udGFpbmVyJyk7XG4gICAgICAgIF9nbG9iZUNvbnRhaW5lciA9IGdsb2JlTW9kLkdsb2JlRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcjtcbiAgICAgIH0gY2F0Y2ggKF9lcnIpIHtcbiAgICAgICAgLy8gZ2xvYmUgZXhwb3J0IGNvbnRhaW5lciB1bmF2YWlsYWJsZTsgZmFsbHMgYmFjayB0byBodWJibGUncyBjb250YWluZXJcbiAgICAgIH1cbiAgICAgIHJldHVybiBfaHViYmxlTW9kdWxlO1xuICAgIH0sXG4gICAgZXJyID0+IHtcbiAgICAgIF9odWJibGVQcm9taXNlID0gbnVsbDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICk7XG4gIHJldHVybiBfaHViYmxlUHJvbWlzZTtcbn1cblxuY29uc3QgREVGQVVMVF9GSUxFTkFNRSA9ICdrZXBsZXIuZ2wnO1xuXG5mdW5jdGlvbiBFeHBvcnRWaWRlb01vZGFsVGFic0ZhY3RvcnkoKSB7XG4gIGNvbnN0IE1vZGFsVGFiczogUmVhY3QuRkM8e1xuICAgIGN1cnJlbnRNZXRob2Q6IHN0cmluZztcbiAgICB0b2dnbGVNZXRob2Q6IChtZXRob2Q6IHtpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nfSkgPT4gdm9pZDtcbiAgICBsb2FkaW5nTWV0aG9kczogQXJyYXk8e2lkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmd9PjtcbiAgfT4gPSAoe2N1cnJlbnRNZXRob2QsIHRvZ2dsZU1ldGhvZCwgbG9hZGluZ01ldGhvZHN9KSA9PiAoXG4gICAgPFN0eWxlZE1vZGFsVGFiPlxuICAgICAge2xvYWRpbmdNZXRob2RzLm1hcChtZXRob2QgPT4gKFxuICAgICAgICA8U3R5bGVkVGFiSXRlbVxuICAgICAgICAgIGtleT17bWV0aG9kLmlkfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y3VycmVudE1ldGhvZCA9PT0gbWV0aG9kLmlkID8gJ2FjdGl2ZScgOiAnJ31cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0b2dnbGVNZXRob2QobWV0aG9kKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXttZXRob2QubGFiZWx9IC8+XG4gICAgICAgIDwvU3R5bGVkVGFiSXRlbT5cbiAgICAgICkpfVxuICAgIDwvU3R5bGVkTW9kYWxUYWI+XG4gICk7XG5cbiAgcmV0dXJuIE1vZGFsVGFicztcbn1cblxuY29uc3QgU3R5bGVkTW9kYWxUYWIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ib3JkZXJDb2xvckxUfTtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcbmA7XG5cbmNvbnN0IFN0eWxlZFRhYkl0ZW0gPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiA4cHggMTZweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvckxUfTtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICYuYWN0aXZlIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVH07XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yTFR9O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVH07XG4gIH1cbmA7XG5cbmNvbnN0IExpZ2h0SXRlbVNlbGVjdG9yOiBSZWFjdC5GQzxhbnk+ID0gcHJvcHMgPT4gPEl0ZW1TZWxlY3RvciB7Li4ucHJvcHN9IGlucHV0VGhlbWU9XCJsaWdodFwiIC8+O1xuXG5jb25zdCBTTElERVJfTElHSFRfT1ZFUlJJREVTID0ge1xuICBzbGlkZXJCYXJDb2xvcjogJyNBMEE3QjQnLFxuICBzbGlkZXJCYXJCZ2Q6ICcjRDNEOEUwJyxcbiAgc2xpZGVyQmFySG92ZXJDb2xvcjogJyM5MzlCQTgnLFxuICBzbGlkZXJIYW5kbGVDb2xvcjogJyNGN0Y3RjcnLFxuICBzbGlkZXJIYW5kbGVIb3ZlckNvbG9yOiAnI0Y3RjdGNycsXG4gIHNsaWRlckluYWN0aXZlQm9yZGVyQ29sb3I6ICcjRjdGN0Y3JyxcbiAgc2xpZGVySGFuZGxlVGV4dENvbG9yOiAnI0Y3RjdGNycsXG4gIHNsaWRlckhhbmRsZVNoYWRvdzogJzAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC4yMCknXG59O1xuXG5jb25zdCBMaWdodFNsaWRlcjogUmVhY3QuRkM8YW55PiA9IHByb3BzID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBsaWdodFRoZW1lID0gdXNlTWVtbygoKSA9PiAoey4uLnRoZW1lLCAuLi5TTElERVJfTElHSFRfT1ZFUlJJREVTfSksIFt0aGVtZV0pO1xuICByZXR1cm4gKFxuICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXtsaWdodFRoZW1lfT5cbiAgICAgIDxTbGlkZXIgey4uLnByb3BzfSAvPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKTtcbn07XG5cbmNvbnN0IEtFUExFUl9VSToge1trZXk6IHN0cmluZ106IGFueX0gPSB7XG4gIEJ1dHRvbixcbiAgSWNvbnMsXG4gIElucHV0OiBJbnB1dExpZ2h0LFxuICBJdGVtU2VsZWN0b3I6IExpZ2h0SXRlbVNlbGVjdG9yLFxuICBTbGlkZXI6IExpZ2h0U2xpZGVyLFxuICBMb2FkaW5nU3Bpbm5lcixcbiAgTW9kYWxUYWJzRmFjdG9yeTogRXhwb3J0VmlkZW9Nb2RhbFRhYnNGYWN0b3J5XG59O1xuXG5jb25zdCBTdHlsZWRFeHBvcnRWaWRlb01vZGFsQ29udGVudCA9IHN0eWxlZChTdHlsZWRNb2RhbENvbnRlbnQpYFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBncmlkLXJvdy1nYXA6IDMycHg7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgLmV4cG9ydC12aWRlby1wYW5lbCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgLmV4cG9ydC12aWRlby1wYW5lbF9fYm9keSB7XG4gICAgZ3JpZC1jb2x1bW4tZ2FwOiAyNHB4O1xuICB9XG4gIC5kYXRhLWV4LWljb25zLXBsYXkgPiBwYXRoOmxhc3QtY2hpbGQsXG4gIC5kYXRhLWV4LWljb25zLXN0b3AgPiBwYXRoOmxhc3QtY2hpbGQge1xuICAgIGZpbGw6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgIWltcG9ydGFudDtcbiAgICBzdHJva2U6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucHJpbWFyeUJ0bkFjdEJnZH07XG4gICAgc3Ryb2tlLXdpZHRoOiAzcHg7XG4gIH1cbiAgLmRhdGEtZXgtaWNvbnMtcGxheSA+IHBhdGg6bGFzdC1jaGlsZDpob3ZlcixcbiAgLmRhdGEtZXgtaWNvbnMtc3RvcCA+IHBhdGg6bGFzdC1jaGlsZDpob3ZlciB7XG4gICAgZmlsbDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuQWN0QmdkfSAhaW1wb3J0YW50O1xuICB9XG4gICNkZWNrLWNhbnZhczo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSlcbiAgICAgICAgbm8tcmVwZWF0IGNlbnRlciAvIDFweCAxMDAlLFxuICAgICAgbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCkpIG5vLXJlcGVhdFxuICAgICAgICBjZW50ZXIgLyAxMDAlIDFweDtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCAycHggcmdiYSgwLCAwLCAwLCAwLjYpKTtcbiAgfVxuYDtcblxuZXhwb3J0IHR5cGUgVmlkZW9Db25maWd1cmF0aW9uID0ge1xuICBtZWRpYVR5cGU/OiBzdHJpbmc7XG4gIGNhbWVyYVByZXNldD86IHN0cmluZztcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gIHJlc29sdXRpb24/OiBzdHJpbmc7XG4gIGR1cmF0aW9uTXM/OiBudW1iZXI7XG4gIHN3aXBlU3RhcnRQY3Q/OiBudW1iZXI7XG4gIHN3aXBlRW5kUGN0PzogbnVtYmVyO1xuICBzd2lwZUVhc2luZz86ICdsaW5lYXInIHwgJ2Vhc2UtaW4tb3V0Jztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0VmlkZW9Nb2RhbFByb3BzIHtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHN0cmluZztcbiAgbWFwYm94QXBpVXJsPzogc3RyaW5nO1xuICBtYXBTdGF0ZTogYW55O1xuICBtYXBTdHlsZTogTWFwU3R5bGU7XG4gIHZpc1N0YXRlOiBhbnk7XG4gIGV4cG9ydFZpZGVvOiBFeHBvcnRWaWRlbztcbiAgY29udGFpbmVyVzogbnVtYmVyO1xuICB2aXNTdGF0ZUFjdGlvbnM6IHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnM7XG4gIHVpU3RhdGVBY3Rpb25zOiB0eXBlb2YgVUlTdGF0ZUFjdGlvbnM7XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IEhVQkJMRV9QQU5FTF9PVkVSSEVBRCA9IDIgKiAzMiArIDI0ICsgMjgwO1xuY29uc3QgRVhQT1JUX1ZJREVPX01PREFMX01BWF9XSURUSCA9IDEwODA7XG5jb25zdCBNT0RBTF9IT1JJWk9OVEFMX1BBRERJTkcgPSAxNDQ7XG5cbmNvbnN0IEV4cG9ydFZpZGVvTW9kYWxGYWN0b3J5ID0gKCkgPT4ge1xuICBjb25zdCBFeHBvcnRWaWRlb01vZGFsOiBSZWFjdC5GQzxFeHBvcnRWaWRlb01vZGFsUHJvcHM+ID0gKHtcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBtYXBib3hBcGlVcmwgPSBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICAgIG1hcFN0YXRlLFxuICAgIG1hcFN0eWxlLFxuICAgIHZpc1N0YXRlLFxuICAgIGV4cG9ydFZpZGVvLFxuICAgIGNvbnRhaW5lclcsXG4gICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgIG9uQ2xvc2VcbiAgfSkgPT4ge1xuICAgIGNvbnN0IFtodWJibGUsIHNldEh1YmJsZV0gPSB1c2VTdGF0ZTxIdWJibGVNb2R1bGUgfCBudWxsPihfaHViYmxlTW9kdWxlKTtcbiAgICBjb25zdCBzaGFkb3dDb21wb3NpdGluZ1JlZiA9IHVzZVJlZjxJbnN0YW5jZVR5cGU8dHlwZW9mIERlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdD4gfCBudWxsPihcbiAgICAgIG51bGxcbiAgICApO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHBhdGNoRGVja1JlbmRlcmVyRm9yUG9zdFByb2Nlc3NpbmcoKTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBbaHViYmxlRXJyb3IsIHNldEh1YmJsZUVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghaHViYmxlICYmICFodWJibGVFcnJvcikge1xuICAgICAgICBsb2FkSHViYmxlKClcbiAgICAgICAgICAudGhlbihzZXRIdWJibGUpXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBzZXRIdWJibGVFcnJvcihlcnI/Lm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBsb2FkIHZpZGVvIGV4cG9ydCBtb2R1bGUnKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCBbaHViYmxlLCBodWJibGVFcnJvcl0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChzaGFkb3dDb21wb3NpdGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgc2hhZG93Q29tcG9zaXRpbmdSZWYuY3VycmVudC5jbGVhbnVwKCk7XG4gICAgICAgICAgc2hhZG93Q29tcG9zaXRpbmdSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgZXhwb3J0VmlkZW9XaWR0aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgbW9kYWxJbm5lclcgPVxuICAgICAgICBNYXRoLm1pbihFWFBPUlRfVklERU9fTU9EQUxfTUFYX1dJRFRILCBjb250YWluZXJXICogMC43LCBjb250YWluZXJXKSAtXG4gICAgICAgIE1PREFMX0hPUklaT05UQUxfUEFERElORztcbiAgICAgIHJldHVybiBNYXRoLm1heCgzMjAsIE1hdGgubWluKDU0MCwgbW9kYWxJbm5lclcgLSBIVUJCTEVfUEFORUxfT1ZFUkhFQUQpKTtcbiAgICB9LCBbY29udGFpbmVyV10pO1xuXG4gICAgY29uc3Qga2VwbGVyU3RhdGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChtYXBTdHlsZT8uc3R5bGVUeXBlID09PSBOT19NQVBfSUQpIHtcbiAgICAgICAgY29uc3Qgbm9NYXBFbnRyeSA9IG1hcFN0eWxlLm1hcFN0eWxlcz8uW05PX01BUF9JRF07XG4gICAgICAgIGlmIChub01hcEVudHJ5ICYmICFub01hcEVudHJ5LnVybCkge1xuICAgICAgICAgIGNvbnN0IGJnID0gbWFwU3R5bGUuYmFja2dyb3VuZENvbG9yO1xuICAgICAgICAgIGNvbnN0IGJnU3R5bGUgPSB7XG4gICAgICAgICAgICAuLi5FTVBUWV9NQVBCT1hfU1RZTEUsXG4gICAgICAgICAgICBsYXllcnM6IGJnXG4gICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ2JhY2tncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmFja2dyb3VuZCcsXG4gICAgICAgICAgICAgICAgICAgIHBhaW50OiB7XG4gICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBgcmdiKCR7YmdbMF19LCR7YmdbMV19LCR7YmdbMl19KWBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgOiBbXVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgZW1wdHlTdHlsZVVybCA9IGBkYXRhOmFwcGxpY2F0aW9uL2pzb24sJHtlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShiZ1N0eWxlKVxuICAgICAgICAgICl9YDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmlzU3RhdGUsXG4gICAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICAgIG1hcFN0eWxlOiB7XG4gICAgICAgICAgICAgIC4uLm1hcFN0eWxlLFxuICAgICAgICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICAgICAgICAuLi5tYXBTdHlsZS5tYXBTdHlsZXMsXG4gICAgICAgICAgICAgICAgW05PX01BUF9JRF06IHsuLi5ub01hcEVudHJ5LCB1cmw6IGVtcHR5U3R5bGVVcmx9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge3Zpc1N0YXRlLCBtYXBTdGF0ZSwgbWFwU3R5bGV9O1xuICAgIH0sIFt2aXNTdGF0ZSwgbWFwU3RhdGUsIG1hcFN0eWxlXSk7XG5cbiAgICBjb25zdCBvblVwZGF0ZU1hcCA9IHVzZUNhbGxiYWNrKFxuICAgICAgKHZpZXdQb3J0OiBWaWV3cG9ydCkgPT4ge1xuICAgICAgICB1aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRWaWRlb1NldHRpbmcodmlld1BvcnQgYXMgYW55KTtcbiAgICAgIH0sXG4gICAgICBbdWlTdGF0ZUFjdGlvbnNdXG4gICAgKTtcblxuICAgIGNvbnN0IGh1YmJsZURlY2tHbFByb3BzID0gdXNlTWVtbyhcbiAgICAgICgpID0+IGdldEh1YmJsZURlY2tHbFByb3BzKGtlcGxlclN0YXRlLCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKSxcbiAgICAgIFtrZXBsZXJTdGF0ZSwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybF1cbiAgICApO1xuXG4gICAgY29uc3QgW3ZpZGVvRWZmZWN0c10gPSB1c2VTdGF0ZTxFZmZlY3RbXT4oKCkgPT5cbiAgICAgICh2aXNTdGF0ZS5lZmZlY3RzIHx8IFtdKS5tYXAoKGVmZmVjdDogRWZmZWN0KSA9PiBlZmZlY3QuY2xvbmUoKSlcbiAgICApO1xuXG4gICAgY29uc3QgW3ZpZGVvQ29uZmlndXJhdGlvbiwgc2V0VmlkZW9Db25maWd1cmF0aW9uXSA9IHVzZVN0YXRlPFZpZGVvQ29uZmlndXJhdGlvbj4oe1xuICAgICAgLi4uZXhwb3J0VmlkZW9cbiAgICB9KTtcbiAgICBjb25zdCBvblVwZGF0ZVZpZGVvQ29uZmlndXJhdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgICAgKHZhbHVlczogVmlkZW9Db25maWd1cmF0aW9uKSA9PiB7XG4gICAgICAgIHNldFZpZGVvQ29uZmlndXJhdGlvbihwcmV2ID0+ICh7Li4ucHJldiwgLi4udmFsdWVzfSkpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdmFsdWVzLnN3aXBlU3RhcnRQY3QgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIHZhbHVlcy5zd2lwZUVuZFBjdCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgdmFsdWVzLnN3aXBlRWFzaW5nICE9PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0VmlkZW9TZXR0aW5nKHZhbHVlcyBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW3VpU3RhdGVBY3Rpb25zXVxuICAgICk7XG5cbiAgICBjb25zdCBodWJibGVDb250YWluZXJSZWYgPSB1c2VSZWY8YW55PihudWxsKTtcblxuICAgIHVzZUZvZ0hlaWdodEFuaW1hdGlvbih2aWRlb0VmZmVjdHMsIGh1YmJsZUNvbnRhaW5lclJlZik7XG5cbiAgICBjb25zdCBkZWNrRWZmZWN0cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHZpZGVvRWZmZWN0cy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IGVmZmVjdE9yZGVyID0gdmlzU3RhdGUuZWZmZWN0T3JkZXIgfHwgdmlkZW9FZmZlY3RzLm1hcCgoZTogRWZmZWN0KSA9PiBlLmlkKTtcbiAgICAgIGNvbnN0IGVmZmVjdHMgPSBjb21wdXRlRGVja0VmZmVjdHMoe1xuICAgICAgICB2aXNTdGF0ZTogey4uLnZpc1N0YXRlLCBlZmZlY3RzOiB2aWRlb0VmZmVjdHMsIGVmZmVjdE9yZGVyfSxcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIGlzRXhwb3J0OiB0cnVlXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgaGFzU2hhZG93ID0gZWZmZWN0cy5zb21lKChlOiBhbnkpID0+IGUuc2hhZG93ID09PSB0cnVlKTtcbiAgICAgIGNvbnN0IGhhc1Bvc3RQcm9jZXNzID0gZWZmZWN0cy5zb21lKChlOiBhbnkpID0+IHR5cGVvZiBlLnBvc3RSZW5kZXIgPT09ICdmdW5jdGlvbicpO1xuICAgICAgaWYgKGhhc1NoYWRvdyAmJiAhaGFzUG9zdFByb2Nlc3MpIHtcbiAgICAgICAgaWYgKCFzaGFkb3dDb21wb3NpdGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgc2hhZG93Q29tcG9zaXRpbmdSZWYuY3VycmVudCA9IG5ldyBEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3QoKTtcbiAgICAgICAgfVxuICAgICAgICBlZmZlY3RzLnB1c2goc2hhZG93Q29tcG9zaXRpbmdSZWYuY3VycmVudCBhcyBhbnkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWZmZWN0cztcbiAgICB9LCBbdmlzU3RhdGUsIHZpZGVvRWZmZWN0cywgbWFwU3RhdGVdKTtcblxuICAgIGNvbnN0IGRlY2tQcm9wc1dpdGhFZmZlY3RzID0gdXNlTWVtbyhcbiAgICAgICgpID0+ICh7XG4gICAgICAgIC4uLmh1YmJsZURlY2tHbFByb3BzLFxuICAgICAgICBfaXNFeHBvcnQ6IHRydWUsXG4gICAgICAgIGVmZmVjdHM6IGRlY2tFZmZlY3RzXG4gICAgICB9KSxcbiAgICAgIFtodWJibGVEZWNrR2xQcm9wcywgZGVja0VmZmVjdHNdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uVmlld0NoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKHZpZXdTdGF0ZTogUmVjb3JkPHN0cmluZywgYW55PikgPT5cbiAgICAgICAgb25WaWV3UG9ydENoYW5nZSh2aWV3U3RhdGUgYXMgVmlld3BvcnQsIG9uVXBkYXRlTWFwIGFzIGFueSksXG4gICAgICBbb25VcGRhdGVNYXBdXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YXRpY01hcFByb3BzID0gdXNlTWVtbyhcbiAgICAgICgpID0+IGdldFN0YXRpY01hcFByb3BzKGtlcGxlclN0YXRlLCBvblZpZXdDaGFuZ2UsIG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwpLFxuICAgICAgW2tlcGxlclN0YXRlLCBvblZpZXdDaGFuZ2UsIG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmxdXG4gICAgKTtcblxuICAgIGNvbnN0IGlzU3dpcGVNb2RlID0gbWFwU3RhdGUubWFwU3BsaXRNb2RlID09PSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRSAmJiBtYXBTdGF0ZS5pc1NwbGl0O1xuXG4gICAgLy8gSW4gZ2xvYmUgbW9kZSB0aGUgZGVjay5nbCBHbG9iZVZpZXcgcmVuZGVycyB0aGUgcGxhbmV0IChhbmQgYmFzZW1hcCB0aWxlcylcbiAgICAvLyBpdHNlbGY7IHRoZSBmbGF0IG1hcGxpYnJlIGJhc2UgbWFwIG11c3QgYmUgZGlzYWJsZWQgc28gaXQgZG9lc24ndCByZW5kZXIgYVxuICAgIC8vIDJEIE1lcmNhdG9yIG1hcCBiZWhpbmQvYXJvdW5kIHRoZSBnbG9iZS5cbiAgICBjb25zdCBpc0dsb2JlRW5hYmxlZCA9IEJvb2xlYW4obWFwU3RhdGU/Lmdsb2JlPy5lbmFibGVkKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBTYW1lIGZyZWV6ZSBhcyBiZWZvcmU6IGh1YmJsZS5nbCB3cml0ZXMgd2luZG93LmRldmljZVBpeGVsUmF0aW8gdG8gc2NhbGVcbiAgICAgIC8vIHRoZSBwcmV2aWV3LCB0aGVuIHNldHMgaXQgdG8gMSBkdXJpbmcgYW5pbWF0ZWQgcHJldmlldywgd2hpY2ggZGVzeW5jc1xuICAgICAgLy8gTWFwTGlicmUgZnJvbSB0aGUgRGVjayBvdmVybGF5LiBQaW4gdG8gdGhlICpleHBvcnQqIHNjYWxlIChub3QgbmF0aXZlIERQUilcbiAgICAgIC8vIHNvIHByZXZpZXcgc3RheXMgYWxpZ25lZCBhbmQgcmVjb3JkaW5nIHN0aWxsIHVzZXMgdGhlIHNlbGVjdGVkIHF1YWxpdHkuXG4gICAgICBpZiAoaXNTd2lwZU1vZGUgfHwgaXNHbG9iZUVuYWJsZWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IHt3aWR0aH0gPSBnZXRSZXNvbHV0aW9uU2V0dGluZyh2aWRlb0NvbmZpZ3VyYXRpb24ucmVzb2x1dGlvbiB8fCAnJyk7XG4gICAgICBjb25zdCBzY2FsZWREcHIgPSBleHBvcnRWaWRlb1dpZHRoID8gTWF0aC5tYXgoMSwgd2lkdGggLyBleHBvcnRWaWRlb1dpZHRoKSA6IDE7XG4gICAgICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICdkZXZpY2VQaXhlbFJhdGlvJyk7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICdkZXZpY2VQaXhlbFJhdGlvJywge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldDogKCkgPT4gc2NhbGVkRHByLFxuICAgICAgICBzZXQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBuby1vcDogaWdub3JlIGh1YmJsZS5nbCBkcm9wcGluZyBEUFIgdG8gMSBkdXJpbmcgcHJldmlld1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnZGV2aWNlUGl4ZWxSYXRpbycsIGRlc2NyaXB0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSAod2luZG93IGFzIHtkZXZpY2VQaXhlbFJhdGlvPzogbnVtYmVyfSkuZGV2aWNlUGl4ZWxSYXRpbztcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LCBbaXNTd2lwZU1vZGUsIGlzR2xvYmVFbmFibGVkLCB2aWRlb0NvbmZpZ3VyYXRpb24ucmVzb2x1dGlvbiwgZXhwb3J0VmlkZW9XaWR0aF0pO1xuXG4gICAgY29uc3Qgb25GaWx0ZXJGcmFtZVVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGZpbHRlcklkeDogbnVtYmVyLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlckFuaW1hdGlvblRpbWUoZmlsdGVySWR4LCBuYW1lLCB2YWx1ZSk7XG4gICAgICB9LFxuICAgICAgW3Zpc1N0YXRlQWN0aW9uc11cbiAgICApO1xuXG4gICAgY29uc3Qgb25UcmlwRnJhbWVVcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAgICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucy5zZXRMYXllckFuaW1hdGlvblRpbWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIFt2aXNTdGF0ZUFjdGlvbnNdXG4gICAgKTtcblxuICAgIGNvbnN0IHRvcExheWVyID0gdXNlTWVtbyhcbiAgICAgICgpID0+IGdldEJlZm9yZUxheWVySWQobWFwU3R5bGU/LnRvcE1hcFN0eWxlLCBtYXBTdHlsZT8uYm90dG9tTWFwU3R5bGUpLFxuICAgICAgW21hcFN0eWxlPy50b3BNYXBTdHlsZSwgbWFwU3R5bGU/LmJvdHRvbU1hcFN0eWxlXVxuICAgICk7XG5cbiAgICBjb25zdCBhbmltYXRhYmxlRmlsdGVycyA9IHVzZU1lbW8oKCkgPT4gZ2V0QW5pbWF0YWJsZUZpbHRlcnMoa2VwbGVyU3RhdGUpLCBba2VwbGVyU3RhdGVdKTtcblxuICAgIGlmICghaHViYmxlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkRXhwb3J0VmlkZW9Nb2RhbENvbnRlbnQgY2xhc3NOYW1lPVwiZXhwb3J0LXZpZGVvLW1vZGFsXCI+XG4gICAgICAgICAge2h1YmJsZUVycm9yID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17e3BhZGRpbmc6ICcyMHB4JywgdGV4dEFsaWduOiAnY2VudGVyJywgY29sb3I6ICcjZDk1MzRmJ319PlxuICAgICAgICAgICAgICA8cD57aHViYmxlRXJyb3J9PC9wPlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc2V0SHViYmxlRXJyb3IobnVsbCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFJldHJ5XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU3R5bGVkRXhwb3J0VmlkZW9Nb2RhbENvbnRlbnQ+XG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHtFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLCBLZXBsZXJVSUNvbnRleHR9ID0gaHViYmxlO1xuXG4gICAgY29uc3QgU3dpcGVDb250YWluZXIgPSBfc3dpcGVDb250YWluZXI7XG4gICAgY29uc3QgR2xvYmVDb250YWluZXIgPSBfZ2xvYmVDb250YWluZXI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEtlcGxlclVJQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17S0VQTEVSX1VJfT5cbiAgICAgICAgPFN0eWxlZEV4cG9ydFZpZGVvTW9kYWxDb250ZW50IGNsYXNzTmFtZT1cImV4cG9ydC12aWRlby1tb2RhbFwiPlxuICAgICAgICAgIHtpc1N3aXBlTW9kZSAmJiBTd2lwZUNvbnRhaW5lciA/IChcbiAgICAgICAgICAgIDxTd2lwZUNvbnRhaW5lclxuICAgICAgICAgICAgICBpbml0aWFsU3RhdGU9e3ZpZGVvQ29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgICAgbWFwRGF0YT17a2VwbGVyU3RhdGV9XG4gICAgICAgICAgICAgIG9uU2V0dGluZ3NDaGFuZ2U9e29uVXBkYXRlVmlkZW9Db25maWd1cmF0aW9ufVxuICAgICAgICAgICAgICBoZWFkZXI9e2ZhbHNlfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgZXhwb3J0VmlkZW9XaWR0aD17ZXhwb3J0VmlkZW9XaWR0aH1cbiAgICAgICAgICAgICAgb25GaWx0ZXJGcmFtZVVwZGF0ZT17b25GaWx0ZXJGcmFtZVVwZGF0ZX1cbiAgICAgICAgICAgICAgb25UcmlwRnJhbWVVcGRhdGU9e29uVHJpcEZyYW1lVXBkYXRlfVxuICAgICAgICAgICAgICBkZWNrUHJvcHM9e2RlY2tQcm9wc1dpdGhFZmZlY3RzfVxuICAgICAgICAgICAgICBtYXBQcm9wcz17c3RhdGljTWFwUHJvcHN9XG4gICAgICAgICAgICAgIGRpc2FibGVCYXNlTWFwPXtpc0dsb2JlRW5hYmxlZH1cbiAgICAgICAgICAgICAgbWFwYm94TGF5ZXJCZWZvcmVJZD17dG9wTGF5ZXI/LmlkfVxuICAgICAgICAgICAgICBkZWZhdWx0RmlsZU5hbWU9e0RFRkFVTFRfRklMRU5BTUV9XG4gICAgICAgICAgICAgIGFuaW1hdGFibGVGaWx0ZXJzPXthbmltYXRhYmxlRmlsdGVyc31cbiAgICAgICAgICAgICAgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzPXtnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXN9XG4gICAgICAgICAgICAgIHN3aXBlU3RhcnRQY3Q9e2V4cG9ydFZpZGVvLnN3aXBlU3RhcnRQY3R9XG4gICAgICAgICAgICAgIHN3aXBlRW5kUGN0PXtleHBvcnRWaWRlby5zd2lwZUVuZFBjdH1cbiAgICAgICAgICAgICAgc3dpcGVFYXNpbmc9e2V4cG9ydFZpZGVvLnN3aXBlRWFzaW5nfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogaXNHbG9iZUVuYWJsZWQgJiYgR2xvYmVDb250YWluZXIgPyAoXG4gICAgICAgICAgICAvLyBHbG9iZSAobm9uLXN3aXBlKSBleHBvcnQgdXNlcyBhIGRlZGljYXRlZCBjb250YWluZXIgdGhhdCBkcml2ZXMgaXRzXG4gICAgICAgICAgICAvLyBvd24gY2FwdHVyZSBsb29wLiBodWJibGUncyBidWlsdC1pbiBjb250YWluZXIgb25seSBhZHZhbmNlcyBmcmFtZXNcbiAgICAgICAgICAgIC8vIGZyb20gdGhlIG1hcGJveCBiYXNlIG1hcCdzIHJlbmRlciBldmVudCwgd2hpY2ggZG9lc24ndCBmaXJlIGluXG4gICAgICAgICAgICAvLyBnbG9iZSBtb2RlIChiYXNlIG1hcCBkaXNhYmxlZCksIHNvIGl0cyBleHBvcnQgd291bGQgaGFuZy5cbiAgICAgICAgICAgIDxHbG9iZUNvbnRhaW5lclxuICAgICAgICAgICAgICByZWY9e2h1YmJsZUNvbnRhaW5lclJlZn1cbiAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlPXt2aWRlb0NvbmZpZ3VyYXRpb259XG4gICAgICAgICAgICAgIG1hcERhdGE9e2tlcGxlclN0YXRlfVxuICAgICAgICAgICAgICBvblNldHRpbmdzQ2hhbmdlPXtvblVwZGF0ZVZpZGVvQ29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgICAgaGVhZGVyPXtmYWxzZX1cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIGV4cG9ydFZpZGVvV2lkdGg9e2V4cG9ydFZpZGVvV2lkdGh9XG4gICAgICAgICAgICAgIG9uRmlsdGVyRnJhbWVVcGRhdGU9e29uRmlsdGVyRnJhbWVVcGRhdGV9XG4gICAgICAgICAgICAgIG9uVHJpcEZyYW1lVXBkYXRlPXtvblRyaXBGcmFtZVVwZGF0ZX1cbiAgICAgICAgICAgICAgZGVja1Byb3BzPXtkZWNrUHJvcHNXaXRoRWZmZWN0c31cbiAgICAgICAgICAgICAgbWFwUHJvcHM9e3N0YXRpY01hcFByb3BzfVxuICAgICAgICAgICAgICBkZWZhdWx0RmlsZU5hbWU9e0RFRkFVTFRfRklMRU5BTUV9XG4gICAgICAgICAgICAgIGFuaW1hdGFibGVGaWx0ZXJzPXthbmltYXRhYmxlRmlsdGVyc31cbiAgICAgICAgICAgICAgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzPXtnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8RXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lclxuICAgICAgICAgICAgICByZWY9e2h1YmJsZUNvbnRhaW5lclJlZn1cbiAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlPXt2aWRlb0NvbmZpZ3VyYXRpb259XG4gICAgICAgICAgICAgIG1hcERhdGE9e2tlcGxlclN0YXRlfVxuICAgICAgICAgICAgICBvblNldHRpbmdzQ2hhbmdlPXtvblVwZGF0ZVZpZGVvQ29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgICAgaGVhZGVyPXtmYWxzZX1cbiAgICAgICAgICAgICAgaGFuZGxlQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIGV4cG9ydFZpZGVvV2lkdGg9e2V4cG9ydFZpZGVvV2lkdGh9XG4gICAgICAgICAgICAgIG9uRmlsdGVyRnJhbWVVcGRhdGU9e29uRmlsdGVyRnJhbWVVcGRhdGV9XG4gICAgICAgICAgICAgIG9uVHJpcEZyYW1lVXBkYXRlPXtvblRyaXBGcmFtZVVwZGF0ZX1cbiAgICAgICAgICAgICAgZGVja1Byb3BzPXtkZWNrUHJvcHNXaXRoRWZmZWN0c31cbiAgICAgICAgICAgICAgbWFwUHJvcHM9e3N0YXRpY01hcFByb3BzfVxuICAgICAgICAgICAgICBkaXNhYmxlQmFzZU1hcD17aXNHbG9iZUVuYWJsZWR9XG4gICAgICAgICAgICAgIG1hcGJveExheWVyQmVmb3JlSWQ9e3RvcExheWVyPy5pZH1cbiAgICAgICAgICAgICAgZGVmYXVsdEZpbGVOYW1lPXtERUZBVUxUX0ZJTEVOQU1FfVxuICAgICAgICAgICAgICBhbmltYXRhYmxlRmlsdGVycz17YW5pbWF0YWJsZUZpbHRlcnN9XG4gICAgICAgICAgICAgIGdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lcz17Z2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1N0eWxlZEV4cG9ydFZpZGVvTW9kYWxDb250ZW50PlxuICAgICAgPC9LZXBsZXJVSUNvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gRXhwb3J0VmlkZW9Nb2RhbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV4cG9ydFZpZGVvTW9kYWxGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLE9BQU9BLEtBQUssSUFBR0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQU8sT0FBTztBQUM5RSxPQUFPQyxNQUFNLElBQUdDLGFBQWEsRUFBRUMsUUFBUSxRQUFPLG1CQUFtQjtBQUVqRSxTQUNFQyxzQkFBc0IsRUFDdEJDLFNBQVMsRUFDVEMsa0JBQWtCLEVBQ2xCQyxZQUFZLFFBQ1Asc0JBQXNCO0FBQzdCLFNBQVFDLGdCQUFnQixRQUFPLHlC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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
2
2
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
4
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
5
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
6
|
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; }
|
|
@@ -80,6 +81,18 @@ jest.mock('./hubble-utils', function () {
|
|
|
80
81
|
getTimeRangeFilterKeyframes: jest.fn(),
|
|
81
82
|
getAnimatableFilters: jest.fn(function () {
|
|
82
83
|
return [];
|
|
84
|
+
}),
|
|
85
|
+
getResolutionSetting: jest.fn(function (value) {
|
|
86
|
+
var _String$split$map = String(value || '1280x720').split('x').map(Number),
|
|
87
|
+
_String$split$map2 = _slicedToArray(_String$split$map, 2),
|
|
88
|
+
width = _String$split$map2[0],
|
|
89
|
+
height = _String$split$map2[1];
|
|
90
|
+
return {
|
|
91
|
+
value: value,
|
|
92
|
+
width: width,
|
|
93
|
+
height: height,
|
|
94
|
+
label: value
|
|
95
|
+
};
|
|
83
96
|
})
|
|
84
97
|
};
|
|
85
98
|
});
|
|
@@ -141,26 +154,26 @@ function renderAndWaitForPanel() {
|
|
|
141
154
|
return _renderAndWaitForPanel.apply(this, arguments);
|
|
142
155
|
}
|
|
143
156
|
function _renderAndWaitForPanel() {
|
|
144
|
-
_renderAndWaitForPanel = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function
|
|
157
|
+
_renderAndWaitForPanel = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee19() {
|
|
145
158
|
var props,
|
|
146
159
|
result,
|
|
147
|
-
|
|
148
|
-
return _regeneratorRuntime.wrap(function
|
|
149
|
-
while (1) switch (
|
|
160
|
+
_args19 = arguments;
|
|
161
|
+
return _regeneratorRuntime.wrap(function _callee19$(_context19) {
|
|
162
|
+
while (1) switch (_context19.prev = _context19.next) {
|
|
150
163
|
case 0:
|
|
151
|
-
props =
|
|
164
|
+
props = _args19.length > 0 && _args19[0] !== undefined ? _args19[0] : DEFAULT_PROPS;
|
|
152
165
|
result = renderWithThemeLocal(/*#__PURE__*/React.createElement(ExportVideoModal, props));
|
|
153
|
-
|
|
166
|
+
_context19.next = 4;
|
|
154
167
|
return waitFor(function () {
|
|
155
168
|
expect(mockExportVideoPanelContainer).toHaveBeenCalled();
|
|
156
169
|
});
|
|
157
170
|
case 4:
|
|
158
|
-
return
|
|
171
|
+
return _context19.abrupt("return", result);
|
|
159
172
|
case 5:
|
|
160
173
|
case "end":
|
|
161
|
-
return
|
|
174
|
+
return _context19.stop();
|
|
162
175
|
}
|
|
163
|
-
},
|
|
176
|
+
}, _callee19);
|
|
164
177
|
}));
|
|
165
178
|
return _renderAndWaitForPanel.apply(this, arguments);
|
|
166
179
|
}
|
|
@@ -681,5 +694,38 @@ describe('ExportVideoModal', function () {
|
|
|
681
694
|
}, _callee17);
|
|
682
695
|
})));
|
|
683
696
|
});
|
|
697
|
+
describe('devicePixelRatio freeze', function () {
|
|
698
|
+
var originalDpr = window.devicePixelRatio;
|
|
699
|
+
afterEach(function () {
|
|
700
|
+
Object.defineProperty(window, 'devicePixelRatio', {
|
|
701
|
+
configurable: true,
|
|
702
|
+
enumerable: true,
|
|
703
|
+
writable: true,
|
|
704
|
+
value: originalDpr
|
|
705
|
+
});
|
|
706
|
+
});
|
|
707
|
+
test('pins devicePixelRatio to export scale and restores it on unmount', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee18() {
|
|
708
|
+
var _yield$renderAndWaitF4, unmount, exportVideoWidth;
|
|
709
|
+
return _regeneratorRuntime.wrap(function _callee18$(_context18) {
|
|
710
|
+
while (1) switch (_context18.prev = _context18.next) {
|
|
711
|
+
case 0:
|
|
712
|
+
_context18.next = 2;
|
|
713
|
+
return renderAndWaitForPanel();
|
|
714
|
+
case 2:
|
|
715
|
+
_yield$renderAndWaitF4 = _context18.sent;
|
|
716
|
+
unmount = _yield$renderAndWaitF4.unmount;
|
|
717
|
+
exportVideoWidth = mockExportVideoPanelContainer.mock.calls[0][0].exportVideoWidth;
|
|
718
|
+
expect(window.devicePixelRatio).toBe(1280 / exportVideoWidth);
|
|
719
|
+
window.devicePixelRatio = 1;
|
|
720
|
+
expect(window.devicePixelRatio).toBe(1280 / exportVideoWidth);
|
|
721
|
+
unmount();
|
|
722
|
+
expect(window.devicePixelRatio).toBe(originalDpr);
|
|
723
|
+
case 10:
|
|
724
|
+
case "end":
|
|
725
|
+
return _context18.stop();
|
|
726
|
+
}
|
|
727
|
+
}, _callee18);
|
|
728
|
+
})));
|
|
729
|
+
});
|
|
684
730
|
});
|
|
685
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlRoZW1lUHJvdmlkZXIiLCJJbnRsUHJvdmlkZXIiLCJyZW5kZXIiLCJ3YWl0Rm9yIiwidGhlbWUiLCJtZXNzYWdlcyIsIm1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyIiwiamVzdCIsImZuIiwiY3JlYXRlRWxlbWVudCIsIk1vY2tLZXBsZXJVSUNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwibW9jayIsIkV4cG9ydFZpZGVvUGFuZWxDb250YWluZXIiLCJwcm9wcyIsIktlcGxlclVJQ29udGV4dCIsIm1vY2tDb21wdXRlRGVja0VmZmVjdHMiLCJhY3R1YWwiLCJyZXF1aXJlQWN0dWFsIiwiX29iamVjdFNwcmVhZCIsImNvbXB1dGVEZWNrRWZmZWN0cyIsImFwcGx5IiwiYXJndW1lbnRzIiwicGF0Y2hEZWNrUmVuZGVyZXJGb3JQb3N0UHJvY2Vzc2luZyIsIkRlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsImlkIiwicG9zdFJlbmRlciIsImNsZWFudXAiLCJnZXRTdGF0aWNNYXBQcm9wcyIsIl9zdGF0ZSIsIl9vbkNoYW5nZSIsIl90b2tlbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwicHJlc2VydmVEcmF3aW5nQnVmZmVyIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBTdHlsZSIsIm1hcExpYiIsIlByb21pc2UiLCJyZXNvbHZlIiwiZ2V0QmVmb3JlTGF5ZXJJZCIsImdldEh1YmJsZURlY2tHbFByb3BzIiwicGFyYW1ldGVycyIsImJsZW5kIiwiY29udHJvbGxlciIsInZpZXdzIiwiZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzIiwiZ2V0QW5pbWF0YWJsZUZpbHRlcnMiLCJFeHBvcnRWaWRlb01vZGFsRmFjdG9yeSIsInJlbmRlcldpdGhUaGVtZUxvY2FsIiwiY29tcG9uZW50IiwibG9jYWxlIiwiRXhwb3J0VmlkZW9Nb2RhbCIsIkRFRkFVTFRfUFJPUFMiLCJtYXBib3hBcGlVcmwiLCJtYXBTdGF0ZSIsInpvb20iLCJzdHlsZVR5cGUiLCJtYXBTdHlsZXMiLCJkYXJrIiwiYWNjZXNzVG9rZW4iLCJib3R0b21NYXBTdHlsZSIsInRvcE1hcFN0eWxlIiwidmlzU3RhdGUiLCJmaWx0ZXJzIiwibGF5ZXJzIiwibGF5ZXJCbGVuZGluZyIsImxheWVyT3JkZXIiLCJleHBvcnRWaWRlbyIsIm1lZGlhVHlwZSIsImNhbWVyYVByZXNldCIsImZpbGVOYW1lIiwicmVzb2x1dGlvbiIsImR1cmF0aW9uTXMiLCJjb250YWluZXJXIiwidmlzU3RhdGVBY3Rpb25zIiwic2V0RmlsdGVyQW5pbWF0aW9uVGltZSIsInNldExheWVyQW5pbWF0aW9uVGltZSIsInVpU3RhdGVBY3Rpb25zIiwic2V0RXhwb3J0VmlkZW9TZXR0aW5nIiwib25DbG9zZSIsInJlbmRlckFuZFdhaXRGb3JQYW5lbCIsIl9yZW5kZXJBbmRXYWl0Rm9yUGFuZWwiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZTE4IiwicmVzdWx0IiwiX2FyZ3MxOCIsIndyYXAiLCJfY2FsbGVlMTgkIiwiX2NvbnRleHQxOCIsInByZXYiLCJuZXh0IiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZXhwZWN0IiwidG9IYXZlQmVlbkNhbGxlZCIsImFicnVwdCIsInN0b3AiLCJkZXNjcmliZSIsImJlZm9yZUVhY2giLCJjbGVhckFsbE1vY2tzIiwibW9ja1JldHVyblZhbHVlIiwidGVzdCIsIl9jYWxsZWUiLCJfeWllbGQkcmVuZGVyQW5kV2FpdEYiLCJjb250YWluZXIiLCJfY2FsbGVlJCIsIl9jb250ZXh0Iiwic2VudCIsInF1ZXJ5U2VsZWN0b3IiLCJ0b0JlSW5UaGVEb2N1bWVudCIsIl9jYWxsZWUyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwidG9IYXZlQmVlbkNhbGxlZFRpbWVzIiwiX2NhbGxlZTMiLCJwYW5lbFByb3BzIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwiY2FsbHMiLCJoZWFkZXIiLCJ0b0JlIiwiZGlzYWJsZUJhc2VNYXAiLCJkZWZhdWx0RmlsZU5hbWUiLCJleHBvcnRWaWRlb1dpZHRoIiwidG9CZUxlc3NUaGFuT3JFcXVhbCIsInRvQmVHcmVhdGVyVGhhbk9yRXF1YWwiLCJoYW5kbGVDbG9zZSIsImluaXRpYWxTdGF0ZSIsInRvRXF1YWwiLCJtYXBEYXRhIiwiX2NhbGxlZTQiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJkZWNrUHJvcHMiLCJfaXNFeHBvcnQiLCJlZmZlY3RzIiwiX2NhbGxlZTUiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJtYXBQcm9wcyIsInRvQmVEZWZpbmVkIiwiX2NhbGxlZTYiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJhbmltYXRhYmxlRmlsdGVycyIsIl9jYWxsZWU3IiwiX2NhbGxlZTckIiwiX2NvbnRleHQ3IiwiX3R5cGVvZiIsIl9jYWxsZWU4IiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4Iiwib25GaWx0ZXJGcmFtZVVwZGF0ZSIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiX2NhbGxlZTkiLCJfY2FsbGVlOSQiLCJfY29udGV4dDkiLCJvblRyaXBGcmFtZVVwZGF0ZSIsIk5PX01BUF9QUk9QUyIsIm5vX21hcCIsImxhYmVsIiwiaWNvbiIsImxheWVyR3JvdXBzIiwiY29sb3JNb2RlIiwic3R5bGUiLCJ2ZXJzaW9uIiwic291cmNlcyIsIl9jYWxsZWUwIiwiX3lpZWxkJHJlbmRlckFuZFdhaXRGMiIsIl9jYWxsZWUwJCIsIl9jb250ZXh0MCIsIl9jYWxsZWUxIiwibm9NYXBFbnRyeSIsImVuY29kZWQiLCJkZWNvZGVkIiwiX2NhbGxlZTEkIiwiX2NvbnRleHQxIiwidXJsIiwidG9NYXRjaCIsInJlcGxhY2UiLCJKU09OIiwicGFyc2UiLCJkZWNvZGVVUklDb21wb25lbnQiLCJfY2FsbGVlMTAiLCJwcm9wc1dpdGhVcmwiLCJfY2FsbGVlMTAkIiwiX2NvbnRleHQxMCIsIm1ha2VGb2dEZWNrRWZmZWN0IiwiZWZmZWN0IiwiaGVpZ2h0Iiwic2V0UHJvcHMiLCJuZXdQcm9wcyIsIk9iamVjdCIsImFzc2lnbiIsIm1ha2VTdXJmYWNlRm9nRWZmZWN0IiwiZGVja0VmZmVjdCIsIm92ZXJyaWRlcyIsInR5cGUiLCJpc0VuYWJsZWQiLCJhbmltYXRlSGVpZ2h0IiwiaGVpZ2h0RW5kIiwibGluZWFyRWFzaW5nIiwiY2xvbmUiLCJwcm9wc1dpdGhGb2dFZmZlY3QiLCJmb2dFZmZlY3QiLCJlZmZlY3RPcmRlciIsIl9jYWxsZWUxMSIsIm9yaWdpbmFsUG9zdFJlbmRlciIsIl9jYWxsZWUxMSQiLCJfY29udGV4dDExIiwibm90IiwiX2NhbGxlZTEyIiwiX2NhbGxlZTEyJCIsIl9jb250ZXh0MTIiLCJjYWxsIiwiX2NhbGxlZTEzIiwiX2NhbGxlZTEzJCIsIl9jb250ZXh0MTMiLCJfY2FsbGVlMTQiLCJfeWllbGQkcmVuZGVyQW5kV2FpdEYzIiwidW5tb3VudCIsInBhdGNoZWRQb3N0UmVuZGVyIiwiX2NhbGxlZTE0JCIsIl9jb250ZXh0MTQiLCJiaW5kIiwibW9ja0VmZmVjdCIsInByb3BzV2l0aEVmZmVjdHMiLCJtYXAiLCJlIiwiX2NhbGxlZTE1Iiwic2hhZG93RGVja0VmZmVjdCIsIl9jYWxsZWUxNSQiLCJfY29udGV4dDE1Iiwic2hhZG93IiwiX2NhbGxlZTE2IiwicG9zdFByb2Nlc3NFZmZlY3QiLCJfY2FsbGVlMTYkIiwiX2NvbnRleHQxNiIsImV2ZXJ5IiwiX2NhbGxlZTE3Iiwibm9uU2hhZG93RWZmZWN0IiwiX2NhbGxlZTE3JCIsIl9jb250ZXh0MTciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kYWxzL2V4cG9ydC12aWRlby1tb2RhbC5zcGVjLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7VGhlbWVQcm92aWRlcn0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtJbnRsUHJvdmlkZXJ9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtyZW5kZXIsIHdhaXRGb3J9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHt0aGVtZX0gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHttZXNzYWdlc30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuXG5jb25zdCBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lciA9IGplc3QuZm4oKCkgPT4gKFxuICA8ZGl2IGRhdGEtdGVzdGlkPVwiZXhwb3J0LXZpZGVvLXBhbmVsXCI+TW9jayBQYW5lbDwvZGl2PlxuKSk7XG5jb25zdCBNb2NrS2VwbGVyVUlDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcblxuamVzdC5tb2NrKCdAaHViYmxlLmdsL3JlYWN0JywgKCkgPT4gKHtcbiAgRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcjogcHJvcHMgPT4gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIocHJvcHMpLFxuICBLZXBsZXJVSUNvbnRleHQ6IE1vY2tLZXBsZXJVSUNvbnRleHRcbn0pKTtcblxuY29uc3QgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cyA9IGplc3QuZm4oKCkgPT4gW10pO1xuXG5qZXN0Lm1vY2soJ0BrZXBsZXIuZ2wvdXRpbHMnLCAoKSA9PiB7XG4gIGNvbnN0IGFjdHVhbCA9IGplc3QucmVxdWlyZUFjdHVhbCgnQGtlcGxlci5nbC91dGlscycpO1xuICByZXR1cm4ge1xuICAgIC4uLmFjdHVhbCxcbiAgICBjb21wdXRlRGVja0VmZmVjdHM6ICguLi5hcmdzKSA9PiBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzKC4uLmFyZ3MpLFxuICAgIHBhdGNoRGVja1JlbmRlcmVyRm9yUG9zdFByb2Nlc3Npbmc6IGplc3QuZm4oKVxuICB9O1xufSk7XG5cbmplc3QubW9jaygnQGtlcGxlci5nbC9lZmZlY3RzJywgKCkgPT4gKHtcbiAgRGVja1NoYWRvd0NvbXBvc2l0aW5nRWZmZWN0OiBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+ICh7XG4gICAgaWQ6ICdzaGFkb3ctY29tcG9zaXRpbmctZWZmZWN0JyxcbiAgICBwb3N0UmVuZGVyOiBqZXN0LmZuKCksXG4gICAgY2xlYW51cDogamVzdC5mbigpXG4gIH0pKVxufSkpO1xuXG5qZXN0Lm1vY2soJy4vaHViYmxlLXV0aWxzJywgKCkgPT4gKHtcbiAgZ2V0U3RhdGljTWFwUHJvcHM6IGplc3QuZm4oKF9zdGF0ZSwgX29uQ2hhbmdlLCBfdG9rZW4pID0+ICh7XG4gICAgbGF0aXR1ZGU6IDM3LjcsXG4gICAgbG9uZ2l0dWRlOiAtMTIyLjQsXG4gICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiAnc3R5bGUtdG9rZW4nLFxuICAgIG1hcFN0eWxlOiB7aWQ6ICdkYXJrLXN0eWxlJ30sXG4gICAgbWFwTGliOiBQcm9taXNlLnJlc29sdmUoe30pXG4gIH0pKSxcbiAgZ2V0QmVmb3JlTGF5ZXJJZDogamVzdC5mbigoKSA9PiBudWxsKSxcbiAgZ2V0SHViYmxlRGVja0dsUHJvcHM6IGplc3QuZm4oKCkgPT4gKHtcbiAgICBwYXJhbWV0ZXJzOiB7YmxlbmQ6IHRydWV9LFxuICAgIGNvbnRyb2xsZXI6IHRydWUsXG4gICAgdmlld3M6IHt9XG4gIH0pKSxcbiAgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzOiBqZXN0LmZuKCksXG4gIGdldEFuaW1hdGFibGVGaWx0ZXJzOiBqZXN0LmZuKCgpID0+IFtdKVxufSkpO1xuXG5pbXBvcnQgRXhwb3J0VmlkZW9Nb2RhbEZhY3RvcnkgZnJvbSAnLi9leHBvcnQtdmlkZW8tbW9kYWwnO1xuaW1wb3J0IHtEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3R9IGZyb20gJ0BrZXBsZXIuZ2wvZWZmZWN0cyc7XG5cbmZ1bmN0aW9uIHJlbmRlcldpdGhUaGVtZUxvY2FsKGNvbXBvbmVudCkge1xuICByZXR1cm4gcmVuZGVyKFxuICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICA8SW50bFByb3ZpZGVyIGxvY2FsZT1cImVuXCIgbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAge2NvbXBvbmVudH1cbiAgICAgIDwvSW50bFByb3ZpZGVyPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKTtcbn1cblxuY29uc3QgRXhwb3J0VmlkZW9Nb2RhbCA9IEV4cG9ydFZpZGVvTW9kYWxGYWN0b3J5KCk7XG5cbmNvbnN0IERFRkFVTFRfUFJPUFMgPSB7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiAndGVzdC10b2tlbicsXG4gIG1hcGJveEFwaVVybDogJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20nLFxuICBtYXBTdGF0ZToge2xhdGl0dWRlOiAzNy43LCBsb25naXR1ZGU6IC0xMjIuNCwgem9vbTogMTB9LFxuICBtYXBTdHlsZToge1xuICAgIHN0eWxlVHlwZTogJ2RhcmsnLFxuICAgIG1hcFN0eWxlczoge2Rhcms6IHthY2Nlc3NUb2tlbjogJ3N0eWxlLXRva2VuJ319LFxuICAgIGJvdHRvbU1hcFN0eWxlOiB7aWQ6ICdkYXJrLXN0eWxlJ30sXG4gICAgdG9wTWFwU3R5bGU6IG51bGxcbiAgfSxcbiAgdmlzU3RhdGU6IHtcbiAgICBmaWx0ZXJzOiBbXSxcbiAgICBsYXllcnM6IFtdLFxuICAgIGxheWVyQmxlbmRpbmc6ICdub3JtYWwnLFxuICAgIGxheWVyT3JkZXI6IFtdXG4gIH0sXG4gIGV4cG9ydFZpZGVvOiB7XG4gICAgbWVkaWFUeXBlOiAnd2VibScsXG4gICAgY2FtZXJhUHJlc2V0OiAnTm9uZScsXG4gICAgZmlsZU5hbWU6ICdrZXBsZXIuZ2wnLFxuICAgIHJlc29sdXRpb246ICcxMjgweDcyMCcsXG4gICAgZHVyYXRpb25NczogMTAwMFxuICB9LFxuICBjb250YWluZXJXOiA4MDAsXG4gIHZpc1N0YXRlQWN0aW9uczoge1xuICAgIHNldEZpbHRlckFuaW1hdGlvblRpbWU6IGplc3QuZm4oKSxcbiAgICBzZXRMYXllckFuaW1hdGlvblRpbWU6IGplc3QuZm4oKVxuICB9LFxuICB1aVN0YXRlQWN0aW9uczoge1xuICAgIHNldEV4cG9ydFZpZGVvU2V0dGluZzogamVzdC5mbigpXG4gIH0sXG4gIG9uQ2xvc2U6IGplc3QuZm4oKVxufTtcblxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzID0gREVGQVVMVF9QUk9QUykge1xuICBjb25zdCByZXN1bHQgPSByZW5kZXJXaXRoVGhlbWVMb2NhbCg8RXhwb3J0VmlkZW9Nb2RhbCB7Li4ucHJvcHN9IC8+KTtcbiAgYXdhaXQgd2FpdEZvcigoKSA9PiB7XG4gICAgZXhwZWN0KG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5kZXNjcmliZSgnRXhwb3J0VmlkZW9Nb2RhbCcsICgpID0+IHtcbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG4gICAgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cy5tb2NrUmV0dXJuVmFsdWUoW10pO1xuICB9KTtcblxuICB0ZXN0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge2NvbnRhaW5lcn0gPSBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcbiAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5leHBvcnQtdmlkZW8tbW9kYWwnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgdGVzdCgncHJvdmlkZXMgS2VwbGVyVUkgY29udGV4dCB3aXRoIGV4cGVjdGVkIGNvbXBvbmVudHMnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG4gICAgZXhwZWN0KG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Bhc3NlcyBjb3JyZWN0IHByb3BzIHRvIEV4cG9ydFZpZGVvUGFuZWxDb250YWluZXInLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBleHBlY3QobW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcblxuICAgIGV4cGVjdChwYW5lbFByb3BzLmhlYWRlcikudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuZGlzYWJsZUJhc2VNYXApLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLmRlZmF1bHRGaWxlTmFtZSkudG9CZSgna2VwbGVyLmdsJyk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuZXhwb3J0VmlkZW9XaWR0aCkudG9CZUxlc3NUaGFuT3JFcXVhbCg1NDApO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLmV4cG9ydFZpZGVvV2lkdGgpLnRvQmVHcmVhdGVyVGhhbk9yRXF1YWwoMzIwKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5oYW5kbGVDbG9zZSkudG9CZShERUZBVUxUX1BST1BTLm9uQ2xvc2UpO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLmluaXRpYWxTdGF0ZSkudG9FcXVhbChERUZBVUxUX1BST1BTLmV4cG9ydFZpZGVvKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBEYXRhKS50b0VxdWFsKHtcbiAgICAgIHZpc1N0YXRlOiBERUZBVUxUX1BST1BTLnZpc1N0YXRlLFxuICAgICAgbWFwU3RhdGU6IERFRkFVTFRfUFJPUFMubWFwU3RhdGUsXG4gICAgICBtYXBTdHlsZTogREVGQVVMVF9QUk9QUy5tYXBTdHlsZVxuICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KCdwYXNzZXMgZGVja1Byb3BzIGZyb20gZ2V0SHViYmxlRGVja0dsUHJvcHMnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5kZWNrUHJvcHMpLnRvRXF1YWwoe1xuICAgICAgcGFyYW1ldGVyczoge2JsZW5kOiB0cnVlfSxcbiAgICAgIGNvbnRyb2xsZXI6IHRydWUsXG4gICAgICB2aWV3czoge30sXG4gICAgICBfaXNFeHBvcnQ6IHRydWUsXG4gICAgICBlZmZlY3RzOiBbXVxuICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KCdwYXNzZXMgbWFwUHJvcHMgZnJvbSBnZXRTdGF0aWNNYXBQcm9wcycsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcblxuICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLm1hcFByb3BzLmxhdGl0dWRlKS50b0JlKDM3LjcpO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLm1hcFByb3BzLmxvbmdpdHVkZSkudG9CZSgtMTIyLjQpO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLm1hcFByb3BzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikudG9CZSh0cnVlKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBQcm9wcy5tYXBib3hBcGlBY2Nlc3NUb2tlbikudG9CZSgnc3R5bGUtdG9rZW4nKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBQcm9wcy5tYXBTdHlsZSkudG9FcXVhbCh7aWQ6ICdkYXJrLXN0eWxlJ30pO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLm1hcFByb3BzLm1hcExpYikudG9CZURlZmluZWQoKTtcbiAgfSk7XG5cbiAgdGVzdCgncGFzc2VzIGVtcHR5IGFuaW1hdGFibGVGaWx0ZXJzIHdoZW4gbm8gbWF0Y2hpbmcgZmlsdGVycycsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcblxuICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLmFuaW1hdGFibGVGaWx0ZXJzKS50b0VxdWFsKFtdKTtcbiAgfSk7XG5cbiAgdGVzdCgncHJvdmlkZXMgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzIGNhbGxiYWNrJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuXG4gICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgZXhwZWN0KHR5cGVvZiBwYW5lbFByb3BzLmdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lcykudG9CZSgnZnVuY3Rpb24nKTtcbiAgfSk7XG5cbiAgdGVzdCgncHJvdmlkZXMgb25GaWx0ZXJGcmFtZVVwZGF0ZSB0aGF0IGNhbGxzIHZpc1N0YXRlQWN0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcblxuICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgIHBhbmVsUHJvcHMub25GaWx0ZXJGcmFtZVVwZGF0ZSgwLCAndmFsdWUnLCBbMTAwLCAyMDBdKTtcbiAgICBleHBlY3QoREVGQVVMVF9QUk9QUy52aXNTdGF0ZUFjdGlvbnMuc2V0RmlsdGVyQW5pbWF0aW9uVGltZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAwLFxuICAgICAgJ3ZhbHVlJyxcbiAgICAgIFsxMDAsIDIwMF1cbiAgICApO1xuICB9KTtcblxuICB0ZXN0KCdwcm92aWRlcyBvblRyaXBGcmFtZVVwZGF0ZSB0aGF0IGNhbGxzIHZpc1N0YXRlQWN0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcblxuICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgIHBhbmVsUHJvcHMub25UcmlwRnJhbWVVcGRhdGUoNDIpO1xuICAgIGV4cGVjdChERUZBVUxUX1BST1BTLnZpc1N0YXRlQWN0aW9ucy5zZXRMYXllckFuaW1hdGlvblRpbWUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKDQyKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ05PX01BUF9JRCBoYW5kbGluZycsICgpID0+IHtcbiAgICBjb25zdCBOT19NQVBfUFJPUFMgPSB7XG4gICAgICAuLi5ERUZBVUxUX1BST1BTLFxuICAgICAgbWFwU3R5bGU6IHtcbiAgICAgICAgc3R5bGVUeXBlOiAnbm9fbWFwJyxcbiAgICAgICAgbWFwU3R5bGVzOiB7XG4gICAgICAgICAgbm9fbWFwOiB7XG4gICAgICAgICAgICBpZDogJ25vX21hcCcsXG4gICAgICAgICAgICBsYWJlbDogJ05vIEJhc2VtYXAnLFxuICAgICAgICAgICAgLy8gdXJsIGlzIGludGVudGlvbmFsbHkgbWlzc2luZyB0byBleGVyY2lzZSB0aGUgZGF0YS1VUkkgcGF0Y2hcbiAgICAgICAgICAgIGljb246ICcnLFxuICAgICAgICAgICAgbGF5ZXJHcm91cHM6IFtdLFxuICAgICAgICAgICAgY29sb3JNb2RlOiAnTk9ORScsXG4gICAgICAgICAgICBzdHlsZToge3ZlcnNpb246IDgsIHNvdXJjZXM6IHt9LCBsYXllcnM6IFtdfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYm90dG9tTWFwU3R5bGU6IG51bGwsXG4gICAgICAgIHRvcE1hcFN0eWxlOiBudWxsXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRlc3QoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZyB3aGVuIHN0eWxlVHlwZSBpcyBOT19NQVBfSUQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB7Y29udGFpbmVyfSA9IGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChOT19NQVBfUFJPUFMpO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuZXhwb3J0LXZpZGVvLW1vZGFsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdpbmplY3RzIGRhdGEtVVJJIGVtcHR5IHN0eWxlIFVSTCBpbnRvIG1hcERhdGEgd2hlbiBOT19NQVBfSUQgZW50cnkgaGFzIG5vIHVybCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChOT19NQVBfUFJPUFMpO1xuXG4gICAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGNvbnN0IG5vTWFwRW50cnkgPSBwYW5lbFByb3BzLm1hcERhdGEubWFwU3R5bGUubWFwU3R5bGVzLm5vX21hcDtcblxuICAgICAgZXhwZWN0KG5vTWFwRW50cnkudXJsKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KG5vTWFwRW50cnkudXJsKS50b01hdGNoKC9eZGF0YTphcHBsaWNhdGlvblxcL2pzb24sLyk7XG5cbiAgICAgIGNvbnN0IGVuY29kZWQgPSBub01hcEVudHJ5LnVybC5yZXBsYWNlKCdkYXRhOmFwcGxpY2F0aW9uL2pzb24sJywgJycpO1xuICAgICAgY29uc3QgZGVjb2RlZCA9IEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWQpKTtcbiAgICAgIGV4cGVjdChkZWNvZGVkKS50b0VxdWFsKHt2ZXJzaW9uOiA4LCBzb3VyY2VzOiB7fSwgbGF5ZXJzOiBbXX0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgncHJlc2VydmVzIG9yaWdpbmFsIG1hcFN0eWxlIHdoZW4gTk9fTUFQX0lEIGVudHJ5IGFscmVhZHkgaGFzIGEgdXJsJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHNXaXRoVXJsID0ge1xuICAgICAgICAuLi5ERUZBVUxUX1BST1BTLFxuICAgICAgICBtYXBTdHlsZToge1xuICAgICAgICAgIHN0eWxlVHlwZTogJ25vX21hcCcsXG4gICAgICAgICAgbWFwU3R5bGVzOiB7XG4gICAgICAgICAgICBub19tYXA6IHtcbiAgICAgICAgICAgICAgaWQ6ICdub19tYXAnLFxuICAgICAgICAgICAgICB1cmw6ICdodHRwczovL2V4aXN0aW5nLXN0eWxlLmpzb24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBib3R0b21NYXBTdHlsZTogbnVsbCxcbiAgICAgICAgICB0b3BNYXBTdHlsZTogbnVsbFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHNXaXRoVXJsKTtcblxuICAgICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBEYXRhLm1hcFN0eWxlKS50b0JlKHByb3BzV2l0aFVybC5tYXBTdHlsZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzdXJmYWNlIGZvZyBoZWlnaHQgYW5pbWF0aW9uJywgKCkgPT4ge1xuICAgIGZ1bmN0aW9uIG1ha2VGb2dEZWNrRWZmZWN0KCkge1xuICAgICAgY29uc3QgZWZmZWN0ID0ge1xuICAgICAgICBpZDogJ3N1cmZhY2UtZm9nLWRlY2snLFxuICAgICAgICBwcm9wczoge2hlaWdodDogNTB9LFxuICAgICAgICBwb3N0UmVuZGVyOiBqZXN0LmZuKCksXG4gICAgICAgIHNldFByb3BzOiBqZXN0LmZuKGZ1bmN0aW9uIChuZXdQcm9wcykge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oZWZmZWN0LnByb3BzLCBuZXdQcm9wcyk7XG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGVmZmVjdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlU3VyZmFjZUZvZ0VmZmVjdChkZWNrRWZmZWN0LCBvdmVycmlkZXMgPSB7fSkge1xuICAgICAgY29uc3QgZWZmZWN0ID0ge1xuICAgICAgICBpZDogJ2ZvZy0xJyxcbiAgICAgICAgdHlwZTogJ3N1cmZhY2VGb2cnLFxuICAgICAgICBpc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBoZWlnaHQ6IDUwLFxuICAgICAgICAgIGFuaW1hdGVIZWlnaHQ6IHRydWUsXG4gICAgICAgICAgaGVpZ2h0RW5kOiAyMDAsXG4gICAgICAgICAgbGluZWFyRWFzaW5nOiBmYWxzZSxcbiAgICAgICAgICAuLi5vdmVycmlkZXNcbiAgICAgICAgfSxcbiAgICAgICAgZGVja0VmZmVjdCxcbiAgICAgICAgY2xvbmU6IGplc3QuZm4oKVxuICAgICAgfTtcbiAgICAgIC8vIGNsb25lIHJldHVybnMgYSBmcmVzaCByZWZlcmVuY2UgdGhhdCBzdGlsbCBwb2ludHMgdG8gdGhlIHNhbWUgZGVja0VmZmVjdFxuICAgICAgZWZmZWN0LmNsb25lLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiAoey4uLmVmZmVjdCwgY2xvbmU6IGVmZmVjdC5jbG9uZX0pKTtcbiAgICAgIHJldHVybiBlZmZlY3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvcHNXaXRoRm9nRWZmZWN0KGZvZ0VmZmVjdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uREVGQVVMVF9QUk9QUyxcbiAgICAgICAgdmlzU3RhdGU6IHtcbiAgICAgICAgICAuLi5ERUZBVUxUX1BST1BTLnZpc1N0YXRlLFxuICAgICAgICAgIGVmZmVjdHM6IFtmb2dFZmZlY3RdLFxuICAgICAgICAgIGVmZmVjdE9yZGVyOiBbZm9nRWZmZWN0LmlkXVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHRlc3QoJ3BhdGNoZXMgZGVja0VmZmVjdC5wb3N0UmVuZGVyIHdoZW4gYW5pbWF0ZUhlaWdodCBpcyBlbmFibGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGVja0VmZmVjdCA9IG1ha2VGb2dEZWNrRWZmZWN0KCk7XG4gICAgICBjb25zdCBvcmlnaW5hbFBvc3RSZW5kZXIgPSBkZWNrRWZmZWN0LnBvc3RSZW5kZXI7XG4gICAgICBjb25zdCBmb2dFZmZlY3QgPSBtYWtlU3VyZmFjZUZvZ0VmZmVjdChkZWNrRWZmZWN0KTtcbiAgICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtkZWNrRWZmZWN0XSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhGb2dFZmZlY3QoZm9nRWZmZWN0KSk7XG5cbiAgICAgIGV4cGVjdChkZWNrRWZmZWN0LnBvc3RSZW5kZXIpLm5vdC50b0JlKG9yaWdpbmFsUG9zdFJlbmRlcik7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdyZXN0b3JlcyBvcmlnaW5hbCBoZWlnaHQgd2hlbiBodWJibGUgaXMgbm90IHBsYXlpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBkZWNrRWZmZWN0ID0gbWFrZUZvZ0RlY2tFZmZlY3QoKTtcbiAgICAgIGRlY2tFZmZlY3QucHJvcHMuaGVpZ2h0ID0gNzU7XG4gICAgICBjb25zdCBmb2dFZmZlY3QgPSBtYWtlU3VyZmFjZUZvZ0VmZmVjdChkZWNrRWZmZWN0LCB7aGVpZ2h0OiA3NX0pO1xuICAgICAgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cy5tb2NrUmV0dXJuVmFsdWUoW2RlY2tFZmZlY3RdKTtcblxuICAgICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzV2l0aEZvZ0VmZmVjdChmb2dFZmZlY3QpKTtcblxuICAgICAgLy8gQ2FsbCB0aGUgcGF0Y2hlZCBwb3N0UmVuZGVyIHdpdGhvdXQgaHViYmxlIHBsYXlpbmdcbiAgICAgIGRlY2tFZmZlY3QucG9zdFJlbmRlci5jYWxsKGRlY2tFZmZlY3QsIHt9KTtcblxuICAgICAgLy8gTm90IHBsYXlpbmcg4oaSIGhlaWdodCByZXNldHMgdG8gb3JpZ2luYWxIZWlnaHRcbiAgICAgIGV4cGVjdChkZWNrRWZmZWN0LnByb3BzLmhlaWdodCkudG9CZSg3NSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdkb2VzIG5vdCBtdXRhdGUgaGVpZ2h0IHdoZW4gYW5pbWF0ZUhlaWdodCBpcyBkaXNhYmxlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY2tFZmZlY3QgPSBtYWtlRm9nRGVja0VmZmVjdCgpO1xuICAgICAgY29uc3QgZm9nRWZmZWN0ID0gbWFrZVN1cmZhY2VGb2dFZmZlY3QoZGVja0VmZmVjdCwge2FuaW1hdGVIZWlnaHQ6IGZhbHNlfSk7XG4gICAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbZGVja0VmZmVjdF0pO1xuXG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHNXaXRoRm9nRWZmZWN0KGZvZ0VmZmVjdCkpO1xuXG4gICAgICBkZWNrRWZmZWN0LnByb3BzLmhlaWdodCA9IDQyO1xuICAgICAgZGVja0VmZmVjdC5wb3N0UmVuZGVyLmNhbGwoZGVja0VmZmVjdCwge30pO1xuXG4gICAgICAvLyByZWYuYWN0aXZlIGlzIGZhbHNlIHNvIGhlaWdodCBzaG91bGQgbm90IGJlIHRvdWNoZWRcbiAgICAgIGV4cGVjdChkZWNrRWZmZWN0LnByb3BzLmhlaWdodCkudG9CZSg0Mik7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdyZXN0b3JlcyBvcmlnaW5hbCBwb3N0UmVuZGVyIG9uIHVubW91bnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBkZWNrRWZmZWN0ID0gbWFrZUZvZ0RlY2tFZmZlY3QoKTtcbiAgICAgIGNvbnN0IGZvZ0VmZmVjdCA9IG1ha2VTdXJmYWNlRm9nRWZmZWN0KGRlY2tFZmZlY3QpO1xuICAgICAgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cy5tb2NrUmV0dXJuVmFsdWUoW2RlY2tFZmZlY3RdKTtcblxuICAgICAgY29uc3Qge3VubW91bnR9ID0gYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzV2l0aEZvZ0VmZmVjdChmb2dFZmZlY3QpKTtcblxuICAgICAgLy8gcG9zdFJlbmRlciB3YXMgcGF0Y2hlZCAodGhlIHdyYXBwZXIgZnVuY3Rpb24gZHJpdmVzIGFuaW1hdGlvbilcbiAgICAgIGNvbnN0IHBhdGNoZWRQb3N0UmVuZGVyID0gZGVja0VmZmVjdC5wb3N0UmVuZGVyO1xuICAgICAgLy8gVmVyaWZ5IGl0J3Mgbm90IHRoZSBvcmlnaW5hbCBtb2NrIChjb21wb25lbnQgYmluZHMgYW5kIHdyYXBzIGl0KVxuICAgICAgZXhwZWN0KHBhdGNoZWRQb3N0UmVuZGVyKS5ub3QudG9CZShkZWNrRWZmZWN0LnBvc3RSZW5kZXIuYmluZChkZWNrRWZmZWN0KSk7XG5cbiAgICAgIHVubW91bnQoKTtcblxuICAgICAgLy8gQWZ0ZXIgdW5tb3VudCwgcG9zdFJlbmRlciBubyBsb25nZXIgZHJpdmVzIGFuaW1hdGlvbi5cbiAgICAgIC8vIFRoZSByZXN0b3JlZCBmdW5jdGlvbiBpcyBhIGJvdW5kIGNvcHkgb2YgdGhlIG9yaWdpbmFsIG1vY2suXG4gICAgICBkZWNrRWZmZWN0LnByb3BzLmhlaWdodCA9IDk5O1xuICAgICAgZGVja0VmZmVjdC5wb3N0UmVuZGVyLmNhbGwoZGVja0VmZmVjdCwge30pO1xuICAgICAgLy8gSGVpZ2h0IHNob3VsZCBOT1QgYmUgbXV0YXRlZCBieSBhbmltYXRpb24gbG9naWMgYW55bW9yZVxuICAgICAgZXhwZWN0KGRlY2tFZmZlY3QucHJvcHMuaGVpZ2h0KS50b0JlKDk5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NoYWRvdyBjb21wb3NpdGluZyBmYWxsYmFjaycsICgpID0+IHtcbiAgICBjb25zdCBtb2NrRWZmZWN0ID0ge1xuICAgICAgaWQ6ICdsaWdodC1zaGFkb3ctMScsXG4gICAgICB0eXBlOiAnbGlnaHQtYW5kLXNoYWRvdycsXG4gICAgICBpc0VuYWJsZWQ6IHRydWUsXG4gICAgICBjbG9uZTogamVzdC5mbigoKSA9PiAoey4uLm1vY2tFZmZlY3QsIGNsb25lOiBtb2NrRWZmZWN0LmNsb25lfSkpXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHByb3BzV2l0aEVmZmVjdHMoZWZmZWN0cykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uREVGQVVMVF9QUk9QUyxcbiAgICAgICAgdmlzU3RhdGU6IHtcbiAgICAgICAgICAuLi5ERUZBVUxUX1BST1BTLnZpc1N0YXRlLFxuICAgICAgICAgIGVmZmVjdHMsXG4gICAgICAgICAgZWZmZWN0T3JkZXI6IGVmZmVjdHMubWFwKGUgPT4gZS5pZClcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0ZXN0KCdhZGRzIERlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCB3aGVuIHNoYWRvd3MgZXhpc3QgYnV0IG5vIHBvc3RSZW5kZXIgZWZmZWN0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2hhZG93RGVja0VmZmVjdCA9IHtpZDogJ2xpZ2h0aW5nJywgc2hhZG93OiB0cnVlfTtcbiAgICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtzaGFkb3dEZWNrRWZmZWN0XSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhFZmZlY3RzKFttb2NrRWZmZWN0XSkpO1xuXG4gICAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGNvbnN0IGVmZmVjdHMgPSBwYW5lbFByb3BzLmRlY2tQcm9wcy5lZmZlY3RzO1xuXG4gICAgICBleHBlY3QoZWZmZWN0cy5sZW5ndGgpLnRvQmUoMik7XG4gICAgICBleHBlY3QoZWZmZWN0c1swXSkudG9CZShzaGFkb3dEZWNrRWZmZWN0KTtcbiAgICAgIGV4cGVjdChlZmZlY3RzWzFdLmlkKS50b0JlKCdzaGFkb3ctY29tcG9zaXRpbmctZWZmZWN0Jyk7XG4gICAgICBleHBlY3QoRGVja1NoYWRvd0NvbXBvc2l0aW5nRWZmZWN0KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdkb2VzIG5vdCBhZGQgRGVja1NoYWRvd0NvbXBvc2l0aW5nRWZmZWN0IHdoZW4gYSBwb3N0UmVuZGVyIGVmZmVjdCBhbHJlYWR5IGV4aXN0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNoYWRvd0RlY2tFZmZlY3QgPSB7aWQ6ICdsaWdodGluZycsIHNoYWRvdzogdHJ1ZX07XG4gICAgICBjb25zdCBwb3N0UHJvY2Vzc0VmZmVjdCA9IHtpZDogJ2ZvZycsIHBvc3RSZW5kZXI6IGplc3QuZm4oKX07XG4gICAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbc2hhZG93RGVja0VmZmVjdCwgcG9zdFByb2Nlc3NFZmZlY3RdKTtcblxuICAgICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzV2l0aEVmZmVjdHMoW21vY2tFZmZlY3RdKSk7XG5cbiAgICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgY29uc3QgZWZmZWN0cyA9IHBhbmVsUHJvcHMuZGVja1Byb3BzLmVmZmVjdHM7XG5cbiAgICAgIGV4cGVjdChlZmZlY3RzLmxlbmd0aCkudG9CZSgyKTtcbiAgICAgIGV4cGVjdChlZmZlY3RzWzBdKS50b0JlKHNoYWRvd0RlY2tFZmZlY3QpO1xuICAgICAgZXhwZWN0KGVmZmVjdHNbMV0pLnRvQmUocG9zdFByb2Nlc3NFZmZlY3QpO1xuICAgICAgZXhwZWN0KGVmZmVjdHMuZXZlcnkoZSA9PiBlLmlkICE9PSAnc2hhZG93LWNvbXBvc2l0aW5nLWVmZmVjdCcpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZG9lcyBub3QgYWRkIERlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCB3aGVuIG5vIHNoYWRvdyBlZmZlY3QgZXhpc3RzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgbm9uU2hhZG93RWZmZWN0ID0ge2lkOiAnbGlnaHRpbmcnLCBzaGFkb3c6IGZhbHNlfTtcbiAgICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtub25TaGFkb3dFZmZlY3RdKTtcblxuICAgICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzV2l0aEVmZmVjdHMoW21vY2tFZmZlY3RdKSk7XG5cbiAgICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgY29uc3QgZWZmZWN0cyA9IHBhbmVsUHJvcHMuZGVja1Byb3BzLmVmZmVjdHM7XG5cbiAgICAgIGV4cGVjdChlZmZlY3RzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgIGV4cGVjdChlZmZlY3RzWzBdKS50b0JlKG5vblNoYWRvd0VmZmVjdCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUN6QixTQUFRQyxhQUFhLFFBQU8sbUJBQW1CO0FBQy9DLFNBQVFDLFlBQVksUUFBTyxZQUFZO0FBQ3ZDLFNBQVFDLE1BQU0sRUFBRUMsT0FBTyxRQUFPLHdCQUF3QjtBQUN0RCxTQUFRQyxLQUFLLFFBQU8sbUJBQW1CO0FBQ3ZDLFNBQVFDLFFBQVEsUUFBTyx5QkFBeUI7QUFF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
|
|
731
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlRoZW1lUHJvdmlkZXIiLCJJbnRsUHJvdmlkZXIiLCJyZW5kZXIiLCJ3YWl0Rm9yIiwidGhlbWUiLCJtZXNzYWdlcyIsIm1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyIiwiamVzdCIsImZuIiwiY3JlYXRlRWxlbWVudCIsIk1vY2tLZXBsZXJVSUNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwibW9jayIsIkV4cG9ydFZpZGVvUGFuZWxDb250YWluZXIiLCJwcm9wcyIsIktlcGxlclVJQ29udGV4dCIsIm1vY2tDb21wdXRlRGVja0VmZmVjdHMiLCJhY3R1YWwiLCJyZXF1aXJlQWN0dWFsIiwiX29iamVjdFNwcmVhZCIsImNvbXB1dGVEZWNrRWZmZWN0cyIsImFwcGx5IiwiYXJndW1lbnRzIiwicGF0Y2hEZWNrUmVuZGVyZXJGb3JQb3N0UHJvY2Vzc2luZyIsIkRlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsImlkIiwicG9zdFJlbmRlciIsImNsZWFudXAiLCJnZXRTdGF0aWNNYXBQcm9wcyIsIl9zdGF0ZSIsIl9vbkNoYW5nZSIsIl90b2tlbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwicHJlc2VydmVEcmF3aW5nQnVmZmVyIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBTdHlsZSIsIm1hcExpYiIsIlByb21pc2UiLCJyZXNvbHZlIiwiZ2V0QmVmb3JlTGF5ZXJJZCIsImdldEh1YmJsZURlY2tHbFByb3BzIiwicGFyYW1ldGVycyIsImJsZW5kIiwiY29udHJvbGxlciIsInZpZXdzIiwiZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzIiwiZ2V0QW5pbWF0YWJsZUZpbHRlcnMiLCJnZXRSZXNvbHV0aW9uU2V0dGluZyIsInZhbHVlIiwiX1N0cmluZyRzcGxpdCRtYXAiLCJTdHJpbmciLCJzcGxpdCIsIm1hcCIsIk51bWJlciIsIl9TdHJpbmckc3BsaXQkbWFwMiIsIl9zbGljZWRUb0FycmF5Iiwid2lkdGgiLCJoZWlnaHQiLCJsYWJlbCIsIkV4cG9ydFZpZGVvTW9kYWxGYWN0b3J5IiwicmVuZGVyV2l0aFRoZW1lTG9jYWwiLCJjb21wb25lbnQiLCJsb2NhbGUiLCJFeHBvcnRWaWRlb01vZGFsIiwiREVGQVVMVF9QUk9QUyIsIm1hcGJveEFwaVVybCIsIm1hcFN0YXRlIiwiem9vbSIsInN0eWxlVHlwZSIsIm1hcFN0eWxlcyIsImRhcmsiLCJhY2Nlc3NUb2tlbiIsImJvdHRvbU1hcFN0eWxlIiwidG9wTWFwU3R5bGUiLCJ2aXNTdGF0ZSIsImZpbHRlcnMiLCJsYXllcnMiLCJsYXllckJsZW5kaW5nIiwibGF5ZXJPcmRlciIsImV4cG9ydFZpZGVvIiwibWVkaWFUeXBlIiwiY2FtZXJhUHJlc2V0IiwiZmlsZU5hbWUiLCJyZXNvbHV0aW9uIiwiZHVyYXRpb25NcyIsImNvbnRhaW5lclciLCJ2aXNTdGF0ZUFjdGlvbnMiLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lIiwic2V0TGF5ZXJBbmltYXRpb25UaW1lIiwidWlTdGF0ZUFjdGlvbnMiLCJzZXRFeHBvcnRWaWRlb1NldHRpbmciLCJvbkNsb3NlIiwicmVuZGVyQW5kV2FpdEZvclBhbmVsIiwiX3JlbmRlckFuZFdhaXRGb3JQYW5lbCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlMTkiLCJyZXN1bHQiLCJfYXJnczE5Iiwid3JhcCIsIl9jYWxsZWUxOSQiLCJfY29udGV4dDE5IiwicHJldiIsIm5leHQiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJleHBlY3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwiYWJydXB0Iiwic3RvcCIsImRlc2NyaWJlIiwiYmVmb3JlRWFjaCIsImNsZWFyQWxsTW9ja3MiLCJtb2NrUmV0dXJuVmFsdWUiLCJ0ZXN0IiwiX2NhbGxlZSIsIl95aWVsZCRyZW5kZXJBbmRXYWl0RiIsImNvbnRhaW5lciIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzZW50IiwicXVlcnlTZWxlY3RvciIsInRvQmVJblRoZURvY3VtZW50IiwiX2NhbGxlZTIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJ0b0hhdmVCZWVuQ2FsbGVkVGltZXMiLCJfY2FsbGVlMyIsInBhbmVsUHJvcHMiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJjYWxscyIsImhlYWRlciIsInRvQmUiLCJkaXNhYmxlQmFzZU1hcCIsImRlZmF1bHRGaWxlTmFtZSIsImV4cG9ydFZpZGVvV2lkdGgiLCJ0b0JlTGVzc1RoYW5PckVxdWFsIiwidG9CZUdyZWF0ZXJUaGFuT3JFcXVhbCIsImhhbmRsZUNsb3NlIiwiaW5pdGlhbFN0YXRlIiwidG9FcXVhbCIsIm1hcERhdGEiLCJfY2FsbGVlNCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImRlY2tQcm9wcyIsIl9pc0V4cG9ydCIsImVmZmVjdHMiLCJfY2FsbGVlNSIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIm1hcFByb3BzIiwidG9CZURlZmluZWQiLCJfY2FsbGVlNiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsImFuaW1hdGFibGVGaWx0ZXJzIiwiX2NhbGxlZTciLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJfdHlwZW9mIiwiX2NhbGxlZTgiLCJfY2FsbGVlOCQiLCJfY29udGV4dDgiLCJvbkZpbHRlckZyYW1lVXBkYXRlIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJfY2FsbGVlOSIsIl9jYWxsZWU5JCIsIl9jb250ZXh0OSIsIm9uVHJpcEZyYW1lVXBkYXRlIiwiTk9fTUFQX1BST1BTIiwibm9fbWFwIiwiaWNvbiIsImxheWVyR3JvdXBzIiwiY29sb3JNb2RlIiwic3R5bGUiLCJ2ZXJzaW9uIiwic291cmNlcyIsIl9jYWxsZWUwIiwiX3lpZWxkJHJlbmRlckFuZFdhaXRGMiIsIl9jYWxsZWUwJCIsIl9jb250ZXh0MCIsIl9jYWxsZWUxIiwibm9NYXBFbnRyeSIsImVuY29kZWQiLCJkZWNvZGVkIiwiX2NhbGxlZTEkIiwiX2NvbnRleHQxIiwidXJsIiwidG9NYXRjaCIsInJlcGxhY2UiLCJKU09OIiwicGFyc2UiLCJkZWNvZGVVUklDb21wb25lbnQiLCJfY2FsbGVlMTAiLCJwcm9wc1dpdGhVcmwiLCJfY2FsbGVlMTAkIiwiX2NvbnRleHQxMCIsIm1ha2VGb2dEZWNrRWZmZWN0IiwiZWZmZWN0Iiwic2V0UHJvcHMiLCJuZXdQcm9wcyIsIk9iamVjdCIsImFzc2lnbiIsIm1ha2VTdXJmYWNlRm9nRWZmZWN0IiwiZGVja0VmZmVjdCIsIm92ZXJyaWRlcyIsInR5cGUiLCJpc0VuYWJsZWQiLCJhbmltYXRlSGVpZ2h0IiwiaGVpZ2h0RW5kIiwibGluZWFyRWFzaW5nIiwiY2xvbmUiLCJwcm9wc1dpdGhGb2dFZmZlY3QiLCJmb2dFZmZlY3QiLCJlZmZlY3RPcmRlciIsIl9jYWxsZWUxMSIsIm9yaWdpbmFsUG9zdFJlbmRlciIsIl9jYWxsZWUxMSQiLCJfY29udGV4dDExIiwibm90IiwiX2NhbGxlZTEyIiwiX2NhbGxlZTEyJCIsIl9jb250ZXh0MTIiLCJjYWxsIiwiX2NhbGxlZTEzIiwiX2NhbGxlZTEzJCIsIl9jb250ZXh0MTMiLCJfY2FsbGVlMTQiLCJfeWllbGQkcmVuZGVyQW5kV2FpdEYzIiwidW5tb3VudCIsInBhdGNoZWRQb3N0UmVuZGVyIiwiX2NhbGxlZTE0JCIsIl9jb250ZXh0MTQiLCJiaW5kIiwibW9ja0VmZmVjdCIsInByb3BzV2l0aEVmZmVjdHMiLCJlIiwiX2NhbGxlZTE1Iiwic2hhZG93RGVja0VmZmVjdCIsIl9jYWxsZWUxNSQiLCJfY29udGV4dDE1Iiwic2hhZG93IiwiX2NhbGxlZTE2IiwicG9zdFByb2Nlc3NFZmZlY3QiLCJfY2FsbGVlMTYkIiwiX2NvbnRleHQxNiIsImV2ZXJ5IiwiX2NhbGxlZTE3Iiwibm9uU2hhZG93RWZmZWN0IiwiX2NhbGxlZTE3JCIsIl9jb250ZXh0MTciLCJvcmlnaW5hbERwciIsIndpbmRvdyIsImRldmljZVBpeGVsUmF0aW8iLCJhZnRlckVhY2giLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsIl9jYWxsZWUxOCIsIl95aWVsZCRyZW5kZXJBbmRXYWl0RjQiLCJfY2FsbGVlMTgkIiwiX2NvbnRleHQxOCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvZXhwb3J0LXZpZGVvLW1vZGFsLnNwZWMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtUaGVtZVByb3ZpZGVyfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge3JlbmRlciwgd2FpdEZvcn0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQge3RoZW1lfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge21lc3NhZ2VzfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5cbmNvbnN0IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyID0gamVzdC5mbigoKSA9PiAoXG4gIDxkaXYgZGF0YS10ZXN0aWQ9XCJleHBvcnQtdmlkZW8tcGFuZWxcIj5Nb2NrIFBhbmVsPC9kaXY+XG4pKTtcbmNvbnN0IE1vY2tLZXBsZXJVSUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuXG5qZXN0Lm1vY2soJ0BodWJibGUuZ2wvcmVhY3QnLCAoKSA9PiAoe1xuICBFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyOiBwcm9wcyA9PiBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcihwcm9wcyksXG4gIEtlcGxlclVJQ29udGV4dDogTW9ja0tlcGxlclVJQ29udGV4dFxufSkpO1xuXG5jb25zdCBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzID0gamVzdC5mbigoKSA9PiBbXSk7XG5cbmplc3QubW9jaygnQGtlcGxlci5nbC91dGlscycsICgpID0+IHtcbiAgY29uc3QgYWN0dWFsID0gamVzdC5yZXF1aXJlQWN0dWFsKCdAa2VwbGVyLmdsL3V0aWxzJyk7XG4gIHJldHVybiB7XG4gICAgLi4uYWN0dWFsLFxuICAgIGNvbXB1dGVEZWNrRWZmZWN0czogKC4uLmFyZ3MpID0+IG1vY2tDb21wdXRlRGVja0VmZmVjdHMoLi4uYXJncyksXG4gICAgcGF0Y2hEZWNrUmVuZGVyZXJGb3JQb3N0UHJvY2Vzc2luZzogamVzdC5mbigpXG4gIH07XG59KTtcblxuamVzdC5tb2NrKCdAa2VwbGVyLmdsL2VmZmVjdHMnLCAoKSA9PiAoe1xuICBEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3Q6IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBpZDogJ3NoYWRvdy1jb21wb3NpdGluZy1lZmZlY3QnLFxuICAgIHBvc3RSZW5kZXI6IGplc3QuZm4oKSxcbiAgICBjbGVhbnVwOiBqZXN0LmZuKClcbiAgfSkpXG59KSk7XG5cbmplc3QubW9jaygnLi9odWJibGUtdXRpbHMnLCAoKSA9PiAoe1xuICBnZXRTdGF0aWNNYXBQcm9wczogamVzdC5mbigoX3N0YXRlLCBfb25DaGFuZ2UsIF90b2tlbikgPT4gKHtcbiAgICBsYXRpdHVkZTogMzcuNyxcbiAgICBsb25naXR1ZGU6IC0xMjIuNCxcbiAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46ICdzdHlsZS10b2tlbicsXG4gICAgbWFwU3R5bGU6IHtpZDogJ2Rhcmstc3R5bGUnfSxcbiAgICBtYXBMaWI6IFByb21pc2UucmVzb2x2ZSh7fSlcbiAgfSkpLFxuICBnZXRCZWZvcmVMYXllcklkOiBqZXN0LmZuKCgpID0+IG51bGwpLFxuICBnZXRIdWJibGVEZWNrR2xQcm9wczogamVzdC5mbigoKSA9PiAoe1xuICAgIHBhcmFtZXRlcnM6IHtibGVuZDogdHJ1ZX0sXG4gICAgY29udHJvbGxlcjogdHJ1ZSxcbiAgICB2aWV3czoge31cbiAgfSkpLFxuICBnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXM6IGplc3QuZm4oKSxcbiAgZ2V0QW5pbWF0YWJsZUZpbHRlcnM6IGplc3QuZm4oKCkgPT4gW10pLFxuICBnZXRSZXNvbHV0aW9uU2V0dGluZzogamVzdC5mbih2YWx1ZSA9PiB7XG4gICAgY29uc3QgW3dpZHRoLCBoZWlnaHRdID0gU3RyaW5nKHZhbHVlIHx8ICcxMjgweDcyMCcpLnNwbGl0KCd4JykubWFwKE51bWJlcik7XG4gICAgcmV0dXJuIHt2YWx1ZSwgd2lkdGgsIGhlaWdodCwgbGFiZWw6IHZhbHVlfTtcbiAgfSlcbn0pKTtcblxuaW1wb3J0IEV4cG9ydFZpZGVvTW9kYWxGYWN0b3J5IGZyb20gJy4vZXhwb3J0LXZpZGVvLW1vZGFsJztcbmltcG9ydCB7RGVja1NoYWRvd0NvbXBvc2l0aW5nRWZmZWN0fSBmcm9tICdAa2VwbGVyLmdsL2VmZmVjdHMnO1xuXG5mdW5jdGlvbiByZW5kZXJXaXRoVGhlbWVMb2NhbChjb21wb25lbnQpIHtcbiAgcmV0dXJuIHJlbmRlcihcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgPEludGxQcm92aWRlciBsb2NhbGU9XCJlblwiIG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgIHtjb21wb25lbnR9XG4gICAgICA8L0ludGxQcm92aWRlcj5cbiAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICk7XG59XG5cbmNvbnN0IEV4cG9ydFZpZGVvTW9kYWwgPSBFeHBvcnRWaWRlb01vZGFsRmFjdG9yeSgpO1xuXG5jb25zdCBERUZBVUxUX1BST1BTID0ge1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogJ3Rlc3QtdG9rZW4nLFxuICBtYXBib3hBcGlVcmw6ICdodHRwczovL2FwaS5tYXBib3guY29tJyxcbiAgbWFwU3RhdGU6IHtsYXRpdHVkZTogMzcuNywgbG9uZ2l0dWRlOiAtMTIyLjQsIHpvb206IDEwfSxcbiAgbWFwU3R5bGU6IHtcbiAgICBzdHlsZVR5cGU6ICdkYXJrJyxcbiAgICBtYXBTdHlsZXM6IHtkYXJrOiB7YWNjZXNzVG9rZW46ICdzdHlsZS10b2tlbid9fSxcbiAgICBib3R0b21NYXBTdHlsZToge2lkOiAnZGFyay1zdHlsZSd9LFxuICAgIHRvcE1hcFN0eWxlOiBudWxsXG4gIH0sXG4gIHZpc1N0YXRlOiB7XG4gICAgZmlsdGVyczogW10sXG4gICAgbGF5ZXJzOiBbXSxcbiAgICBsYXllckJsZW5kaW5nOiAnbm9ybWFsJyxcbiAgICBsYXllck9yZGVyOiBbXVxuICB9LFxuICBleHBvcnRWaWRlbzoge1xuICAgIG1lZGlhVHlwZTogJ3dlYm0nLFxuICAgIGNhbWVyYVByZXNldDogJ05vbmUnLFxuICAgIGZpbGVOYW1lOiAna2VwbGVyLmdsJyxcbiAgICByZXNvbHV0aW9uOiAnMTI4MHg3MjAnLFxuICAgIGR1cmF0aW9uTXM6IDEwMDBcbiAgfSxcbiAgY29udGFpbmVyVzogODAwLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHtcbiAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lOiBqZXN0LmZuKCksXG4gICAgc2V0TGF5ZXJBbmltYXRpb25UaW1lOiBqZXN0LmZuKClcbiAgfSxcbiAgdWlTdGF0ZUFjdGlvbnM6IHtcbiAgICBzZXRFeHBvcnRWaWRlb1NldHRpbmc6IGplc3QuZm4oKVxuICB9LFxuICBvbkNsb3NlOiBqZXN0LmZuKClcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wcyA9IERFRkFVTFRfUFJPUFMpIHtcbiAgY29uc3QgcmVzdWx0ID0gcmVuZGVyV2l0aFRoZW1lTG9jYWwoPEV4cG9ydFZpZGVvTW9kYWwgey4uLnByb3BzfSAvPik7XG4gIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgIGV4cGVjdChtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcikudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZGVzY3JpYmUoJ0V4cG9ydFZpZGVvTW9kYWwnLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtdKTtcbiAgfSk7XG5cbiAgdGVzdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHtjb250YWluZXJ9ID0gYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG4gICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuZXhwb3J0LXZpZGVvLW1vZGFsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Byb3ZpZGVzIEtlcGxlclVJIGNvbnRleHQgd2l0aCBleHBlY3RlZCBjb21wb25lbnRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuICAgIGV4cGVjdChtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcikudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICB9KTtcblxuICB0ZXN0KCdwYXNzZXMgY29ycmVjdCBwcm9wcyB0byBFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuXG4gICAgZXhwZWN0KG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG5cbiAgICBleHBlY3QocGFuZWxQcm9wcy5oZWFkZXIpLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLmRpc2FibGVCYXNlTWFwKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5kZWZhdWx0RmlsZU5hbWUpLnRvQmUoJ2tlcGxlci5nbCcpO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLmV4cG9ydFZpZGVvV2lkdGgpLnRvQmVMZXNzVGhhbk9yRXF1YWwoNTQwKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5leHBvcnRWaWRlb1dpZHRoKS50b0JlR3JlYXRlclRoYW5PckVxdWFsKDMyMCk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuaGFuZGxlQ2xvc2UpLnRvQmUoREVGQVVMVF9QUk9QUy5vbkNsb3NlKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5pbml0aWFsU3RhdGUpLnRvRXF1YWwoREVGQVVMVF9QUk9QUy5leHBvcnRWaWRlbyk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwRGF0YSkudG9FcXVhbCh7XG4gICAgICB2aXNTdGF0ZTogREVGQVVMVF9QUk9QUy52aXNTdGF0ZSxcbiAgICAgIG1hcFN0YXRlOiBERUZBVUxUX1BST1BTLm1hcFN0YXRlLFxuICAgICAgbWFwU3R5bGU6IERFRkFVTFRfUFJPUFMubWFwU3R5bGVcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgncGFzc2VzIGRlY2tQcm9wcyBmcm9tIGdldEh1YmJsZURlY2tHbFByb3BzJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuXG4gICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuZGVja1Byb3BzKS50b0VxdWFsKHtcbiAgICAgIHBhcmFtZXRlcnM6IHtibGVuZDogdHJ1ZX0sXG4gICAgICBjb250cm9sbGVyOiB0cnVlLFxuICAgICAgdmlld3M6IHt9LFxuICAgICAgX2lzRXhwb3J0OiB0cnVlLFxuICAgICAgZWZmZWN0czogW11cbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgncGFzc2VzIG1hcFByb3BzIGZyb20gZ2V0U3RhdGljTWFwUHJvcHMnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBQcm9wcy5sYXRpdHVkZSkudG9CZSgzNy43KTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBQcm9wcy5sb25naXR1ZGUpLnRvQmUoLTEyMi40KTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBQcm9wcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwUHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4pLnRvQmUoJ3N0eWxlLXRva2VuJyk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwUHJvcHMubWFwU3R5bGUpLnRvRXF1YWwoe2lkOiAnZGFyay1zdHlsZSd9KTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBQcm9wcy5tYXBMaWIpLnRvQmVEZWZpbmVkKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Bhc3NlcyBlbXB0eSBhbmltYXRhYmxlRmlsdGVycyB3aGVuIG5vIG1hdGNoaW5nIGZpbHRlcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5hbmltYXRhYmxlRmlsdGVycykudG9FcXVhbChbXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Byb3ZpZGVzIGdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lcyBjYWxsYmFjaycsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcblxuICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgIGV4cGVjdCh0eXBlb2YgcGFuZWxQcm9wcy5nZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMpLnRvQmUoJ2Z1bmN0aW9uJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Byb3ZpZGVzIG9uRmlsdGVyRnJhbWVVcGRhdGUgdGhhdCBjYWxscyB2aXNTdGF0ZUFjdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICBwYW5lbFByb3BzLm9uRmlsdGVyRnJhbWVVcGRhdGUoMCwgJ3ZhbHVlJywgWzEwMCwgMjAwXSk7XG4gICAgZXhwZWN0KERFRkFVTFRfUFJPUFMudmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlckFuaW1hdGlvblRpbWUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgMCxcbiAgICAgICd2YWx1ZScsXG4gICAgICBbMTAwLCAyMDBdXG4gICAgKTtcbiAgfSk7XG5cbiAgdGVzdCgncHJvdmlkZXMgb25UcmlwRnJhbWVVcGRhdGUgdGhhdCBjYWxscyB2aXNTdGF0ZUFjdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICBwYW5lbFByb3BzLm9uVHJpcEZyYW1lVXBkYXRlKDQyKTtcbiAgICBleHBlY3QoREVGQVVMVF9QUk9QUy52aXNTdGF0ZUFjdGlvbnMuc2V0TGF5ZXJBbmltYXRpb25UaW1lKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCg0Mik7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdOT19NQVBfSUQgaGFuZGxpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgTk9fTUFQX1BST1BTID0ge1xuICAgICAgLi4uREVGQVVMVF9QUk9QUyxcbiAgICAgIG1hcFN0eWxlOiB7XG4gICAgICAgIHN0eWxlVHlwZTogJ25vX21hcCcsXG4gICAgICAgIG1hcFN0eWxlczoge1xuICAgICAgICAgIG5vX21hcDoge1xuICAgICAgICAgICAgaWQ6ICdub19tYXAnLFxuICAgICAgICAgICAgbGFiZWw6ICdObyBCYXNlbWFwJyxcbiAgICAgICAgICAgIC8vIHVybCBpcyBpbnRlbnRpb25hbGx5IG1pc3NpbmcgdG8gZXhlcmNpc2UgdGhlIGRhdGEtVVJJIHBhdGNoXG4gICAgICAgICAgICBpY29uOiAnJyxcbiAgICAgICAgICAgIGxheWVyR3JvdXBzOiBbXSxcbiAgICAgICAgICAgIGNvbG9yTW9kZTogJ05PTkUnLFxuICAgICAgICAgICAgc3R5bGU6IHt2ZXJzaW9uOiA4LCBzb3VyY2VzOiB7fSwgbGF5ZXJzOiBbXX1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGJvdHRvbU1hcFN0eWxlOiBudWxsLFxuICAgICAgICB0b3BNYXBTdHlsZTogbnVsbFxuICAgICAgfVxuICAgIH07XG5cbiAgICB0ZXN0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcgd2hlbiBzdHlsZVR5cGUgaXMgTk9fTUFQX0lEJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qge2NvbnRhaW5lcn0gPSBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoTk9fTUFQX1BST1BTKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignLmV4cG9ydC12aWRlby1tb2RhbCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnaW5qZWN0cyBkYXRhLVVSSSBlbXB0eSBzdHlsZSBVUkwgaW50byBtYXBEYXRhIHdoZW4gTk9fTUFQX0lEIGVudHJ5IGhhcyBubyB1cmwnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoTk9fTUFQX1BST1BTKTtcblxuICAgICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBjb25zdCBub01hcEVudHJ5ID0gcGFuZWxQcm9wcy5tYXBEYXRhLm1hcFN0eWxlLm1hcFN0eWxlcy5ub19tYXA7XG5cbiAgICAgIGV4cGVjdChub01hcEVudHJ5LnVybCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChub01hcEVudHJ5LnVybCkudG9NYXRjaCgvXmRhdGE6YXBwbGljYXRpb25cXC9qc29uLC8pO1xuXG4gICAgICBjb25zdCBlbmNvZGVkID0gbm9NYXBFbnRyeS51cmwucmVwbGFjZSgnZGF0YTphcHBsaWNhdGlvbi9qc29uLCcsICcnKTtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkKSk7XG4gICAgICBleHBlY3QoZGVjb2RlZCkudG9FcXVhbCh7dmVyc2lvbjogOCwgc291cmNlczoge30sIGxheWVyczogW119KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3ByZXNlcnZlcyBvcmlnaW5hbCBtYXBTdHlsZSB3aGVuIE5PX01BUF9JRCBlbnRyeSBhbHJlYWR5IGhhcyBhIHVybCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzV2l0aFVybCA9IHtcbiAgICAgICAgLi4uREVGQVVMVF9QUk9QUyxcbiAgICAgICAgbWFwU3R5bGU6IHtcbiAgICAgICAgICBzdHlsZVR5cGU6ICdub19tYXAnLFxuICAgICAgICAgIG1hcFN0eWxlczoge1xuICAgICAgICAgICAgbm9fbWFwOiB7XG4gICAgICAgICAgICAgIGlkOiAnbm9fbWFwJyxcbiAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9leGlzdGluZy1zdHlsZS5qc29uJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm90dG9tTWFwU3R5bGU6IG51bGwsXG4gICAgICAgICAgdG9wTWFwU3R5bGU6IG51bGxcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzV2l0aFVybCk7XG5cbiAgICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwRGF0YS5tYXBTdHlsZSkudG9CZShwcm9wc1dpdGhVcmwubWFwU3R5bGUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3VyZmFjZSBmb2cgaGVpZ2h0IGFuaW1hdGlvbicsICgpID0+IHtcbiAgICBmdW5jdGlvbiBtYWtlRm9nRGVja0VmZmVjdCgpIHtcbiAgICAgIGNvbnN0IGVmZmVjdCA9IHtcbiAgICAgICAgaWQ6ICdzdXJmYWNlLWZvZy1kZWNrJyxcbiAgICAgICAgcHJvcHM6IHtoZWlnaHQ6IDUwfSxcbiAgICAgICAgcG9zdFJlbmRlcjogamVzdC5mbigpLFxuICAgICAgICBzZXRQcm9wczogamVzdC5mbihmdW5jdGlvbiAobmV3UHJvcHMpIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGVmZmVjdC5wcm9wcywgbmV3UHJvcHMpO1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICAgIHJldHVybiBlZmZlY3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZVN1cmZhY2VGb2dFZmZlY3QoZGVja0VmZmVjdCwgb3ZlcnJpZGVzID0ge30pIHtcbiAgICAgIGNvbnN0IGVmZmVjdCA9IHtcbiAgICAgICAgaWQ6ICdmb2ctMScsXG4gICAgICAgIHR5cGU6ICdzdXJmYWNlRm9nJyxcbiAgICAgICAgaXNFbmFibGVkOiB0cnVlLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgaGVpZ2h0OiA1MCxcbiAgICAgICAgICBhbmltYXRlSGVpZ2h0OiB0cnVlLFxuICAgICAgICAgIGhlaWdodEVuZDogMjAwLFxuICAgICAgICAgIGxpbmVhckVhc2luZzogZmFsc2UsXG4gICAgICAgICAgLi4ub3ZlcnJpZGVzXG4gICAgICAgIH0sXG4gICAgICAgIGRlY2tFZmZlY3QsXG4gICAgICAgIGNsb25lOiBqZXN0LmZuKClcbiAgICAgIH07XG4gICAgICAvLyBjbG9uZSByZXR1cm5zIGEgZnJlc2ggcmVmZXJlbmNlIHRoYXQgc3RpbGwgcG9pbnRzIHRvIHRoZSBzYW1lIGRlY2tFZmZlY3RcbiAgICAgIGVmZmVjdC5jbG9uZS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHsuLi5lZmZlY3QsIGNsb25lOiBlZmZlY3QuY2xvbmV9KSk7XG4gICAgICByZXR1cm4gZWZmZWN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb3BzV2l0aEZvZ0VmZmVjdChmb2dFZmZlY3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLkRFRkFVTFRfUFJPUFMsXG4gICAgICAgIHZpc1N0YXRlOiB7XG4gICAgICAgICAgLi4uREVGQVVMVF9QUk9QUy52aXNTdGF0ZSxcbiAgICAgICAgICBlZmZlY3RzOiBbZm9nRWZmZWN0XSxcbiAgICAgICAgICBlZmZlY3RPcmRlcjogW2ZvZ0VmZmVjdC5pZF1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0ZXN0KCdwYXRjaGVzIGRlY2tFZmZlY3QucG9zdFJlbmRlciB3aGVuIGFuaW1hdGVIZWlnaHQgaXMgZW5hYmxlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY2tFZmZlY3QgPSBtYWtlRm9nRGVja0VmZmVjdCgpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxQb3N0UmVuZGVyID0gZGVja0VmZmVjdC5wb3N0UmVuZGVyO1xuICAgICAgY29uc3QgZm9nRWZmZWN0ID0gbWFrZVN1cmZhY2VGb2dFZmZlY3QoZGVja0VmZmVjdCk7XG4gICAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbZGVja0VmZmVjdF0pO1xuXG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHNXaXRoRm9nRWZmZWN0KGZvZ0VmZmVjdCkpO1xuXG4gICAgICBleHBlY3QoZGVja0VmZmVjdC5wb3N0UmVuZGVyKS5ub3QudG9CZShvcmlnaW5hbFBvc3RSZW5kZXIpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgncmVzdG9yZXMgb3JpZ2luYWwgaGVpZ2h0IHdoZW4gaHViYmxlIGlzIG5vdCBwbGF5aW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGVja0VmZmVjdCA9IG1ha2VGb2dEZWNrRWZmZWN0KCk7XG4gICAgICBkZWNrRWZmZWN0LnByb3BzLmhlaWdodCA9IDc1O1xuICAgICAgY29uc3QgZm9nRWZmZWN0ID0gbWFrZVN1cmZhY2VGb2dFZmZlY3QoZGVja0VmZmVjdCwge2hlaWdodDogNzV9KTtcbiAgICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtkZWNrRWZmZWN0XSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhGb2dFZmZlY3QoZm9nRWZmZWN0KSk7XG5cbiAgICAgIC8vIENhbGwgdGhlIHBhdGNoZWQgcG9zdFJlbmRlciB3aXRob3V0IGh1YmJsZSBwbGF5aW5nXG4gICAgICBkZWNrRWZmZWN0LnBvc3RSZW5kZXIuY2FsbChkZWNrRWZmZWN0LCB7fSk7XG5cbiAgICAgIC8vIE5vdCBwbGF5aW5nIOKGkiBoZWlnaHQgcmVzZXRzIHRvIG9yaWdpbmFsSGVpZ2h0XG4gICAgICBleHBlY3QoZGVja0VmZmVjdC5wcm9wcy5oZWlnaHQpLnRvQmUoNzUpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZG9lcyBub3QgbXV0YXRlIGhlaWdodCB3aGVuIGFuaW1hdGVIZWlnaHQgaXMgZGlzYWJsZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBkZWNrRWZmZWN0ID0gbWFrZUZvZ0RlY2tFZmZlY3QoKTtcbiAgICAgIGNvbnN0IGZvZ0VmZmVjdCA9IG1ha2VTdXJmYWNlRm9nRWZmZWN0KGRlY2tFZmZlY3QsIHthbmltYXRlSGVpZ2h0OiBmYWxzZX0pO1xuICAgICAgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cy5tb2NrUmV0dXJuVmFsdWUoW2RlY2tFZmZlY3RdKTtcblxuICAgICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzV2l0aEZvZ0VmZmVjdChmb2dFZmZlY3QpKTtcblxuICAgICAgZGVja0VmZmVjdC5wcm9wcy5oZWlnaHQgPSA0MjtcbiAgICAgIGRlY2tFZmZlY3QucG9zdFJlbmRlci5jYWxsKGRlY2tFZmZlY3QsIHt9KTtcblxuICAgICAgLy8gcmVmLmFjdGl2ZSBpcyBmYWxzZSBzbyBoZWlnaHQgc2hvdWxkIG5vdCBiZSB0b3VjaGVkXG4gICAgICBleHBlY3QoZGVja0VmZmVjdC5wcm9wcy5oZWlnaHQpLnRvQmUoNDIpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgncmVzdG9yZXMgb3JpZ2luYWwgcG9zdFJlbmRlciBvbiB1bm1vdW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGVja0VmZmVjdCA9IG1ha2VGb2dEZWNrRWZmZWN0KCk7XG4gICAgICBjb25zdCBmb2dFZmZlY3QgPSBtYWtlU3VyZmFjZUZvZ0VmZmVjdChkZWNrRWZmZWN0KTtcbiAgICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtkZWNrRWZmZWN0XSk7XG5cbiAgICAgIGNvbnN0IHt1bm1vdW50fSA9IGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhGb2dFZmZlY3QoZm9nRWZmZWN0KSk7XG5cbiAgICAgIC8vIHBvc3RSZW5kZXIgd2FzIHBhdGNoZWQgKHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGRyaXZlcyBhbmltYXRpb24pXG4gICAgICBjb25zdCBwYXRjaGVkUG9zdFJlbmRlciA9IGRlY2tFZmZlY3QucG9zdFJlbmRlcjtcbiAgICAgIC8vIFZlcmlmeSBpdCdzIG5vdCB0aGUgb3JpZ2luYWwgbW9jayAoY29tcG9uZW50IGJpbmRzIGFuZCB3cmFwcyBpdClcbiAgICAgIGV4cGVjdChwYXRjaGVkUG9zdFJlbmRlcikubm90LnRvQmUoZGVja0VmZmVjdC5wb3N0UmVuZGVyLmJpbmQoZGVja0VmZmVjdCkpO1xuXG4gICAgICB1bm1vdW50KCk7XG5cbiAgICAgIC8vIEFmdGVyIHVubW91bnQsIHBvc3RSZW5kZXIgbm8gbG9uZ2VyIGRyaXZlcyBhbmltYXRpb24uXG4gICAgICAvLyBUaGUgcmVzdG9yZWQgZnVuY3Rpb24gaXMgYSBib3VuZCBjb3B5IG9mIHRoZSBvcmlnaW5hbCBtb2NrLlxuICAgICAgZGVja0VmZmVjdC5wcm9wcy5oZWlnaHQgPSA5OTtcbiAgICAgIGRlY2tFZmZlY3QucG9zdFJlbmRlci5jYWxsKGRlY2tFZmZlY3QsIHt9KTtcbiAgICAgIC8vIEhlaWdodCBzaG91bGQgTk9UIGJlIG11dGF0ZWQgYnkgYW5pbWF0aW9uIGxvZ2ljIGFueW1vcmVcbiAgICAgIGV4cGVjdChkZWNrRWZmZWN0LnByb3BzLmhlaWdodCkudG9CZSg5OSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaGFkb3cgY29tcG9zaXRpbmcgZmFsbGJhY2snLCAoKSA9PiB7XG4gICAgY29uc3QgbW9ja0VmZmVjdCA9IHtcbiAgICAgIGlkOiAnbGlnaHQtc2hhZG93LTEnLFxuICAgICAgdHlwZTogJ2xpZ2h0LWFuZC1zaGFkb3cnLFxuICAgICAgaXNFbmFibGVkOiB0cnVlLFxuICAgICAgY2xvbmU6IGplc3QuZm4oKCkgPT4gKHsuLi5tb2NrRWZmZWN0LCBjbG9uZTogbW9ja0VmZmVjdC5jbG9uZX0pKVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwcm9wc1dpdGhFZmZlY3RzKGVmZmVjdHMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLkRFRkFVTFRfUFJPUFMsXG4gICAgICAgIHZpc1N0YXRlOiB7XG4gICAgICAgICAgLi4uREVGQVVMVF9QUk9QUy52aXNTdGF0ZSxcbiAgICAgICAgICBlZmZlY3RzLFxuICAgICAgICAgIGVmZmVjdE9yZGVyOiBlZmZlY3RzLm1hcChlID0+IGUuaWQpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGVzdCgnYWRkcyBEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3Qgd2hlbiBzaGFkb3dzIGV4aXN0IGJ1dCBubyBwb3N0UmVuZGVyIGVmZmVjdCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNoYWRvd0RlY2tFZmZlY3QgPSB7aWQ6ICdsaWdodGluZycsIHNoYWRvdzogdHJ1ZX07XG4gICAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbc2hhZG93RGVja0VmZmVjdF0pO1xuXG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHNXaXRoRWZmZWN0cyhbbW9ja0VmZmVjdF0pKTtcblxuICAgICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBjb25zdCBlZmZlY3RzID0gcGFuZWxQcm9wcy5kZWNrUHJvcHMuZWZmZWN0cztcblxuICAgICAgZXhwZWN0KGVmZmVjdHMubGVuZ3RoKS50b0JlKDIpO1xuICAgICAgZXhwZWN0KGVmZmVjdHNbMF0pLnRvQmUoc2hhZG93RGVja0VmZmVjdCk7XG4gICAgICBleHBlY3QoZWZmZWN0c1sxXS5pZCkudG9CZSgnc2hhZG93LWNvbXBvc2l0aW5nLWVmZmVjdCcpO1xuICAgICAgZXhwZWN0KERlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZG9lcyBub3QgYWRkIERlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCB3aGVuIGEgcG9zdFJlbmRlciBlZmZlY3QgYWxyZWFkeSBleGlzdHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzaGFkb3dEZWNrRWZmZWN0ID0ge2lkOiAnbGlnaHRpbmcnLCBzaGFkb3c6IHRydWV9O1xuICAgICAgY29uc3QgcG9zdFByb2Nlc3NFZmZlY3QgPSB7aWQ6ICdmb2cnLCBwb3N0UmVuZGVyOiBqZXN0LmZuKCl9O1xuICAgICAgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cy5tb2NrUmV0dXJuVmFsdWUoW3NoYWRvd0RlY2tFZmZlY3QsIHBvc3RQcm9jZXNzRWZmZWN0XSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhFZmZlY3RzKFttb2NrRWZmZWN0XSkpO1xuXG4gICAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGNvbnN0IGVmZmVjdHMgPSBwYW5lbFByb3BzLmRlY2tQcm9wcy5lZmZlY3RzO1xuXG4gICAgICBleHBlY3QoZWZmZWN0cy5sZW5ndGgpLnRvQmUoMik7XG4gICAgICBleHBlY3QoZWZmZWN0c1swXSkudG9CZShzaGFkb3dEZWNrRWZmZWN0KTtcbiAgICAgIGV4cGVjdChlZmZlY3RzWzFdKS50b0JlKHBvc3RQcm9jZXNzRWZmZWN0KTtcbiAgICAgIGV4cGVjdChlZmZlY3RzLmV2ZXJ5KGUgPT4gZS5pZCAhPT0gJ3NoYWRvdy1jb21wb3NpdGluZy1lZmZlY3QnKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2RvZXMgbm90IGFkZCBEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3Qgd2hlbiBubyBzaGFkb3cgZWZmZWN0IGV4aXN0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vblNoYWRvd0VmZmVjdCA9IHtpZDogJ2xpZ2h0aW5nJywgc2hhZG93OiBmYWxzZX07XG4gICAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbbm9uU2hhZG93RWZmZWN0XSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhFZmZlY3RzKFttb2NrRWZmZWN0XSkpO1xuXG4gICAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGNvbnN0IGVmZmVjdHMgPSBwYW5lbFByb3BzLmRlY2tQcm9wcy5lZmZlY3RzO1xuXG4gICAgICBleHBlY3QoZWZmZWN0cy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICBleHBlY3QoZWZmZWN0c1swXSkudG9CZShub25TaGFkb3dFZmZlY3QpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGV2aWNlUGl4ZWxSYXRpbyBmcmVlemUnLCAoKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxEcHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnZGV2aWNlUGl4ZWxSYXRpbycsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IG9yaWdpbmFsRHByXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3BpbnMgZGV2aWNlUGl4ZWxSYXRpbyB0byBleHBvcnQgc2NhbGUgYW5kIHJlc3RvcmVzIGl0IG9uIHVubW91bnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB7dW5tb3VudH0gPSBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcbiAgICAgIGNvbnN0IHtleHBvcnRWaWRlb1dpZHRofSA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG5cbiAgICAgIGV4cGVjdCh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykudG9CZSgxMjgwIC8gZXhwb3J0VmlkZW9XaWR0aCk7XG5cbiAgICAgIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvID0gMTtcbiAgICAgIGV4cGVjdCh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykudG9CZSgxMjgwIC8gZXhwb3J0VmlkZW9XaWR0aCk7XG5cbiAgICAgIHVubW91bnQoKTtcbiAgICAgIGV4cGVjdCh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykudG9CZShvcmlnaW5hbERwcik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBO0FBQ0EsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsU0FBUUMsYUFBYSxRQUFPLG1CQUFtQjtBQUMvQyxTQUFRQyxZQUFZLFFBQU8sWUFBWTtBQUN2QyxTQUFRQyxNQUFNLEVBQUVDLE9BQU8sUUFBTyx3QkFBd0I7QUFDdEQsU0FBUUMsS0FBSyxRQUFPLG1CQUFtQjtBQUN2QyxTQUFRQyxRQUFRLFFBQU8seUJBQXlCO0FBRWhELElBQU1DLDZCQUE2QixHQUFHQyxJQUFJLENBQUNDLEVBQUUsQ0FBQztFQUFBLG9CQUM1Q1QsS0FBQSxDQUFBVSxhQUFBO0lBQUssZUFBWTtFQUFvQixHQUFDLFlBQWUsQ0FBQztBQUFBLENBQ3ZELENBQUM7QUFDRixJQUFNQyxtQkFBbUIsZ0JBQUdYLEtBQUssQ0FBQ1ksYUFBYSxDQUFDLElBQUksQ0FBQztBQUVyREosSUFBSSxDQUFDSyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7RUFBQSxPQUFPO0lBQ25DQyx5QkFBeUIsRUFBRSxTQUEzQkEseUJBQXlCQSxDQUFFQyxLQUFLO01BQUEsT0FBSVIsNkJBQTZCLENBQUNRLEtBQUssQ0FBQztJQUFBO0lBQ3hFQyxlQUFlLEVBQUVMO0VBQ25CLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSCxJQUFNTSxzQkFBc0IsR0FBR1QsSUFBSSxDQUFDQyxFQUFFLENBQUM7RUFBQSxPQUFNLEVBQUU7QUFBQSxFQUFDO0FBRWhERCxJQUFJLENBQUNLLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxZQUFNO0VBQ2xDLElBQU1LLE1BQU0sR0FBR1YsSUFBSSxDQUFDVyxh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
|