@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
|
@@ -316,7 +316,8 @@ function getGlobeExportLayers(keplerState, _ref3) {
|
|
|
316
316
|
var _keplerState$mapState3, _keplerState$mapStyle5;
|
|
317
317
|
var mapIndex = _ref3.mapIndex,
|
|
318
318
|
mapboxApiAccessToken = _ref3.mapboxApiAccessToken,
|
|
319
|
-
mapboxApiUrl = _ref3.mapboxApiUrl
|
|
319
|
+
mapboxApiUrl = _ref3.mapboxApiUrl,
|
|
320
|
+
viewState = _ref3.viewState;
|
|
320
321
|
var globe = (_keplerState$mapState3 = keplerState.mapState) === null || _keplerState$mapState3 === void 0 ? void 0 : _keplerState$mapState3.globe;
|
|
321
322
|
var globeBaseLayers = (0, _deckglLayers.getGlobeBaseLayers)({
|
|
322
323
|
mapboxApiAccessToken: mapboxApiAccessToken || '',
|
|
@@ -326,7 +327,11 @@ function getGlobeExportLayers(keplerState, _ref3) {
|
|
|
326
327
|
var globeTopLayers = (0, _deckglLayers.getGlobeTopLayers)({
|
|
327
328
|
globe: globe
|
|
328
329
|
});
|
|
329
|
-
|
|
330
|
+
// Same as hubble createKeplerLayers: fold the animated camera into mapState so
|
|
331
|
+
// zoom-dependent props (scatterplot radiusScale) update each frame.
|
|
332
|
+
var dataLayers = (0, _reducers.computeDeckLayers)(viewState ? _objectSpread(_objectSpread({}, keplerState), {}, {
|
|
333
|
+
mapState: _objectSpread(_objectSpread({}, keplerState.mapState), viewState)
|
|
334
|
+
}) : keplerState, {
|
|
330
335
|
mapIndex: mapIndex,
|
|
331
336
|
primaryMap: mapIndex === 0,
|
|
332
337
|
mapboxApiAccessToken: mapboxApiAccessToken,
|
|
@@ -444,4 +449,4 @@ function getResolutionSetting(value) {
|
|
|
444
449
|
return r.value === value;
|
|
445
450
|
}) || RESOLUTIONS[0];
|
|
446
451
|
}
|
|
447
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2RlY2tnbExheWVycyIsIl9yZWR1Y2VycyIsIl9tYXBsaWJyZWdsTWFwYm94UmVxdWVzdFRyYW5zZm9ybWVyIiwiX2hlbHBlcnMiLCJfdHJhbnNmb3JtVHJhbnNsYXRlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mMyIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkVYUE9SVF9ERUNLX0RFVklDRV9QUk9QUyIsImV4cG9ydHMiLCJ0eXBlIiwid2ViZ2wiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJkZWJ1ZyIsIkVYUE9SVF9PVkVSTEFZX0RFVklDRV9QUk9QUyIsInN0ZW5jaWwiLCJsaW5lYXIiLCJwIiwiaG9sZCIsImdldEtleUZyYW1lc0ZyZWUiLCJkZWx0YSIsInZhbHVlIiwia2V5ZnJhbWVzIiwiZG9tYWluIiwiZWFzaW5ncyIsImdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lcyIsIl9yZWYiLCJ0aW1pbmdzIiwiRklMVEVSX1RZUEVTIiwidGltZVJhbmdlIiwiRXJyb3IiLCJkdXJhdGlvbiIsImFuaW1hdGlvbldpbmRvdyIsIl90aW1lQmlucyRkYXRhSWQkIiwicGxvdFR5cGUiLCJ0aW1lQmlucyIsImRhdGFJZCIsImludGVydmFsIiwiYmlucyIsIk1hdGgiLCJyb3VuZCIsIm1hcCIsIl8iLCJpZHgiLCJiaW4iLCJ4MCIsIngxIiwiZ2V0QmVmb3JlTGF5ZXJJZCIsInRvcE1hcFN0eWxlIiwiYm90dG9tTWFwU3R5bGUiLCJfdG9wTWFwU3R5bGUkbGF5ZXJzIiwiX2JvdHRvbU1hcFN0eWxlJGxheWVyIiwibGF5ZXJzIiwiZmlyc3RUb3BMYXllciIsImZpcnN0VG9wTGF5ZXJJZHgiLCJmaW5kSW5kZXgiLCJsYXllciIsImlkIiwiYmVmb3JlSWR4IiwiZ2V0U3RhdGljTWFwUHJvcHMiLCJrZXBsZXJTdGF0ZSIsIm9uVmlld0NoYW5nZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX2tlcGxlclN0YXRlJG1hcFN0eWxlIiwiX2tlcGxlclN0YXRlJG1hcFN0YXRlIiwiX2tlcGxlclN0YXRlJG1hcFN0eWxlMiIsIl9rZXBsZXJTdGF0ZSRtYXBTdHlsZTMiLCJtYXBib3hBcGlVcmwiLCJ1bmRlZmluZWQiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiY3VycmVudFN0eWxlIiwibWFwU3R5bGUiLCJtYXBTdHlsZXMiLCJzdHlsZVR5cGUiLCJhY2Nlc3NUb2tlbiIsImlzTWFwYm94IiwiZ2V0QmFzZU1hcExpYnJhcnkiLCJpc0dsb2JlIiwiQm9vbGVhbiIsIm1hcFN0YXRlIiwiZ2xvYmUiLCJlbmFibGVkIiwibWFwYm94VHJhbnNmb3JtUmVxdWVzdCIsInVybCIsInJlc291cmNlVHlwZSIsImlzTWFwYm94VVJMIiwidHJhbnNmb3JtTWFwYm94VXJsIiwiRU1QVFlfTUFQQk9YX1NUWUxFIiwiY29udmVydE1hcGJveFN0eWxlVXJscyIsInRyYW5zZm9ybVJlcXVlc3QiLCJvblZpZXdwb3J0Q2hhbmdlIiwibWFwTGliIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwic3R5bGUiLCJfdHlwZW9mMiIsImNvbnZlcnRlZCIsInNwcml0ZSIsIl90cmFuc2Zvcm1NYXBib3hVcmwiLCJnbHlwaHMiLCJfdHJhbnNmb3JtTWFwYm94VXJsMiIsInNvdXJjZXMiLCJuZXdTb3VyY2VzIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkyIiwia2V5Iiwic291cmNlIiwiX3RyYW5zZm9ybU1hcGJveFVybDMiLCJnZXRIdWJibGVQYXJhbWV0ZXJzIiwiZ2V0TGF5ZXJCbGVuZGluZ1BhcmFtZXRlcnMiLCJ2aXNTdGF0ZSIsImxheWVyQmxlbmRpbmciLCJnZXRIdWJibGVEZWNrR2xQcm9wcyIsIl9rZXBsZXJTdGF0ZSRtYXBTdGF0ZTIiLCJfa2VwbGVyU3RhdGUkbWFwU3R5bGU0IiwicGFyYW1ldGVycyIsImNvbnRyb2xsZXIiLCJ2aWV3cyIsIk1hcFZpZXciLCJmYXJaTXVsdGlwbGllciIsImdsb2JlQmFzZUxheWVycyIsImdldEdsb2JlQmFzZUxheWVycyIsIm1hcFN0eWxlVHlwZSIsImdsb2JlVG9wTGF5ZXJzIiwiZ2V0R2xvYmVUb3BMYXllcnMiLCJkYXRhTGF5ZXJzIiwiY29tcHV0ZURlY2tMYXllcnMiLCJwcmltYXJ5TWFwIiwiX3JlZjIiLCJsb25naXR1ZGUiLCJsYXRpdHVkZSIsInpvb20iLCJwaXRjaCIsImJlYXJpbmciLCJpbml0aWFsVmlld1N0YXRlIiwibWluWm9vbSIsIkdMT0JFX01JTl9aT09NIiwibWF4Wm9vbSIsIkdMT0JFX01BWF9aT09NIiwiY3VsbCIsIktlcGxlckdsb2JlVmlldyIsInJlc29sdXRpb24iLCJjbGVhciIsImNsZWFyQ29sb3IiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ2V0R2xvYmVFeHBvcnRMYXllcnMiLCJfcmVmMyIsIl9rZXBsZXJTdGF0ZSRtYXBTdGF0ZTMiLCJfa2VwbGVyU3RhdGUkbWFwU3R5bGU1IiwibWFwSW5kZXgiLCJnZXRBbmltYXRhYmxlRmlsdGVycyIsIl9rZXBsZXJTdGF0ZSR2aXNTdGF0ZSIsImZpbHRlcnMiLCJ2aWV3IiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJlbmxhcmdlZCIsInN5bmNlZFdpdGhMYXllclRpbWVsaW5lIiwic2NhbGVUb1ZpZGVvRXhwb3J0Iiwidmlld1N0YXRlIiwiY29udGFpbmVyIiwidmlld3BvcnQiLCJXZWJNZXJjYXRvclZpZXdwb3J0IiwibnciLCJ1bnByb2plY3QiLCJzZSIsIndpZHRoIiwiaGVpZ2h0IiwidmlkZW9WaWV3cG9ydCIsImZpdEJvdW5kcyIsImFsdGl0dWRlIiwicGFyc2VTZXRDYW1lcmFUeXBlIiwic3RyQ2FtZXJhVHlwZSIsIm1vZGlmaWVkVmlld1N0YXRlIiwibWF0Y2giLCJ0dXJmUG9pbnQiLCJwb2ludCIsInBhcnNlSW50IiwiZGlyZWN0aW9ucyIsIlNldCIsImRpcmVjdGlvbk1hcCIsIkVhc3QiLCJTb3V0aCIsIldlc3QiLCJOb3J0aCIsInRyYW5zbGF0ZWRQb2x5IiwidHJhbnNmb3JtVHJhbnNsYXRlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIlJFU09MVVRJT05TIiwibGFiZWwiLCJnZXRSZXNvbHV0aW9uU2V0dGluZyIsImZpbmQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kYWxzL2h1YmJsZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge01hcFZpZXcsIFdlYk1lcmNhdG9yVmlld3BvcnQsIHR5cGUgTWFwVmlld1N0YXRlfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7XG4gIERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIEVNUFRZX01BUEJPWF9TVFlMRSxcbiAgRklMVEVSX1ZJRVdfVFlQRVMsXG4gIEZJTFRFUl9UWVBFUyxcbiAgR0xPQkVfTUlOX1pPT00sXG4gIEdMT0JFX01BWF9aT09NXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Z2V0TGF5ZXJCbGVuZGluZ1BhcmFtZXRlcnMsIGdldEJhc2VNYXBMaWJyYXJ5fSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7Z2V0R2xvYmVCYXNlTGF5ZXJzLCBnZXRHbG9iZVRvcExheWVycywgS2VwbGVyR2xvYmVWaWV3fSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuaW1wb3J0IHtjb21wdXRlRGVja0xheWVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge2lzTWFwYm94VVJMLCB0cmFuc2Zvcm1NYXBib3hVcmx9IGZyb20gJ21hcGxpYnJlZ2wtbWFwYm94LXJlcXVlc3QtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHtwb2ludH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQge3RyYW5zZm9ybVRyYW5zbGF0ZX0gZnJvbSAnQHR1cmYvdHJhbnNmb3JtLXRyYW5zbGF0ZSc7XG5pbXBvcnQge1RpbWVSYW5nZUZpbHRlcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbnR5cGUgS2VwbGVyU3RhdGUgPSB7XG4gIHZpc1N0YXRlOiBhbnk7XG4gIG1hcFN0YXRlOiBhbnk7XG4gIG1hcFN0eWxlOiBhbnk7XG59O1xuXG50eXBlIE1hcGJveExheWVyUmVmID0ge1xuICBpZDogc3RyaW5nO1xufSAmIFJlY29yZDxzdHJpbmcsIGFueT47XG5cbi8vIGx1bWEuZ2wgZGVmYXVsdHMgYGRlYnVnYCB0byB0cnVlIHdoZW5ldmVyIE5PREVfRU5WICE9PSAncHJvZHVjdGlvbicsIHdoaWNoXG4vLyBpbnN0cnVtZW50cyBldmVyeSByZW5kZXIgcGFzcyB3aXRoIGEgVElNRV9FTEFQU0VEX0VYVCB0aW1lciBxdWVyeS4gV2ViR0wyIG9ubHlcbi8vIGFsbG93cyBvbmUgc3VjaCBxdWVyeSB0byBiZSBhY3RpdmUgYXQgYSB0aW1lLCBhbmQgdGhlIGdsb2JlIGV4cG9ydCByZW5kZXJzXG4vLyBzZXZlcmFsIHBhc3NlcyBwZXIgZnJhbWUsIHNvIHRoZSBkZWJ1ZyBjb250ZXh0IHRocm93cyBJTlZBTElEX09QRVJBVElPTiBhbmRcbi8vIHRha2VzIHRoZSB3aG9sZSBleHBvcnQgbW9kYWwgZG93bi4gRXhwb3J0IHByZXZpZXdzIGFyZSB0aHJvd2F3YXkgcmVuZGVyXG4vLyB0YXJnZXRzIHRoYXQgZG9uJ3QgbmVlZCB0aGUgdmFsaWRhdGlvbiBsYXllci5cblxuLyoqIERldmljZSBwcm9wcyBmb3IgZXhwb3J0IHByZXZpZXdzIHRoYXQgb3duIHRoZWlyIGNhbnZhcyBhbmQgcmVhZCBwaXhlbHMgYmFjayBvZmYgaXQuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0RFQ0tfREVWSUNFX1BST1BTID0ge1xuICB0eXBlOiAnd2ViZ2wnIGFzIGNvbnN0LFxuICB3ZWJnbDoge3ByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZX0sXG4gIGRlYnVnOiBmYWxzZVxufTtcblxuLyoqIERldmljZSBwcm9wcyBmb3IgZXhwb3J0IHByZXZpZXdzIHRoYXQgZHJhdyBhcyBhbiBvdmVybGF5IG9uIHRvcCBvZiBhIGJhc2VtYXAuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX09WRVJMQVlfREVWSUNFX1BST1BTID0ge1xuICB0eXBlOiAnd2ViZ2wnIGFzIGNvbnN0LFxuICB3ZWJnbDoge3N0ZW5jaWw6IHRydWV9LFxuICBkZWJ1ZzogZmFsc2Vcbn07XG5cbmNvbnN0IGxpbmVhcjogKHA6IG51bWJlcikgPT4gbnVtYmVyID0gcCA9PiBwO1xuY29uc3QgaG9sZDogKHA6IG51bWJlcikgPT4gbnVtYmVyID0gcCA9PiAocCA9PT0gMSA/IDEgOiAwKTtcblxudHlwZSBUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMgPSB7XG4gIGtleWZyYW1lczoge3ZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdfVtdO1xuICBlYXNpbmdzOiAocDogbnVtYmVyKSA9PiBudW1iZXI7XG4gIHRpbWluZ3M/OiBudW1iZXJbXTtcbn07XG5cbmZ1bmN0aW9uIGdldEtleUZyYW1lc0ZyZWUoZmlsdGVyOiBUaW1lUmFuZ2VGaWx0ZXIpOiBUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMge1xuICBjb25zdCBkZWx0YSA9IGZpbHRlci52YWx1ZVsxXSAtIGZpbHRlci52YWx1ZVswXTtcbiAgcmV0dXJuIHtcbiAgICBrZXlmcmFtZXM6IFtcbiAgICAgIHt2YWx1ZTogW2ZpbHRlci5kb21haW5bMF0sIGZpbHRlci5kb21haW5bMF0gKyBkZWx0YV19LFxuICAgICAge3ZhbHVlOiBbZmlsdGVyLmRvbWFpblsxXSAtIGRlbHRhLCBmaWx0ZXIuZG9tYWluWzFdXX1cbiAgICBdLFxuICAgIGVhc2luZ3M6IGxpbmVhclxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzKHtcbiAgZmlsdGVyLFxuICB0aW1pbmdzXG59OiB7XG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyO1xuICB0aW1pbmdzOiBudW1iZXJbXTtcbn0pOiBUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMge1xuICBpZiAoZmlsdGVyLnR5cGUgIT09IEZJTFRFUl9UWVBFUy50aW1lUmFuZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJmaWx0ZXIgdHlwZSBtdXN0IGJlICd0aW1lUmFuZ2UnLlwiKTtcbiAgfVxuXG4gIGNvbnN0IGR1cmF0aW9uID0gdGltaW5nc1sxXSAtIHRpbWluZ3NbMF07XG5cbiAgc3dpdGNoIChmaWx0ZXIuYW5pbWF0aW9uV2luZG93KSB7XG4gICAgZGVmYXVsdDpcbiAgICBjYXNlICdmcmVlJzoge1xuICAgICAgcmV0dXJuIGdldEtleUZyYW1lc0ZyZWUoZmlsdGVyKTtcbiAgICB9XG4gICAgY2FzZSAnaW5jcmVtZW50YWwnOiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXlmcmFtZXM6IFtcbiAgICAgICAgICB7dmFsdWU6IFtmaWx0ZXIudmFsdWVbMF0sIGZpbHRlci52YWx1ZVswXSArIDFdfSxcbiAgICAgICAgICB7dmFsdWU6IFtmaWx0ZXIudmFsdWVbMF0sIGZpbHRlci5kb21haW5bMV1dfVxuICAgICAgICBdLFxuICAgICAgICBlYXNpbmdzOiBsaW5lYXJcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5ZnJhbWVzOiBbe3ZhbHVlOiBmaWx0ZXIuZG9tYWluWzBdfSwge3ZhbHVlOiBmaWx0ZXIuZG9tYWluWzFdfV0sXG4gICAgICAgIGVhc2luZ3M6IGxpbmVhclxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSAnaW50ZXJ2YWwnOiB7XG4gICAgICBjb25zdCB7cGxvdFR5cGUsIHRpbWVCaW5zLCBkYXRhSWR9ID0gZmlsdGVyO1xuICAgICAgY29uc3Qge2ludGVydmFsfSA9IHBsb3RUeXBlO1xuXG4gICAgICBjb25zdCBiaW5zID0gdGltZUJpbnM/LltkYXRhSWRbMF1dPy5baW50ZXJ2YWxdO1xuXG4gICAgICBpZiAoIWludGVydmFsIHx8ICFiaW5zIHx8IGJpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBnZXRLZXlGcmFtZXNGcmVlKGZpbHRlcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlbHRhID0gTWF0aC5yb3VuZChkdXJhdGlvbiAvIGJpbnMubGVuZ3RoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGltaW5nczogYmlucy5tYXAoKF8sIGlkeCkgPT4gdGltaW5nc1swXSArIGRlbHRhICogaWR4KSxcbiAgICAgICAga2V5ZnJhbWVzOiBiaW5zLm1hcChiaW4gPT4gKHt2YWx1ZTogW2Jpbi54MCwgYmluLngxXX0pKSxcbiAgICAgICAgZWFzaW5nczogaG9sZFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJlZm9yZUxheWVySWQodG9wTWFwU3R5bGU6IGFueSwgYm90dG9tTWFwU3R5bGU6IGFueSk6IE1hcGJveExheWVyUmVmIHwgbnVsbCB7XG4gIGlmICh0b3BNYXBTdHlsZT8ubGF5ZXJzPy5sZW5ndGggJiYgYm90dG9tTWFwU3R5bGU/LmxheWVycz8ubGVuZ3RoKSB7XG4gICAgY29uc3QgZmlyc3RUb3BMYXllciA9IHRvcE1hcFN0eWxlLmxheWVyc1swXTtcbiAgICBjb25zdCBmaXJzdFRvcExheWVySWR4ID0gYm90dG9tTWFwU3R5bGUubGF5ZXJzLmZpbmRJbmRleChcbiAgICAgIChsYXllcjogTWFwYm94TGF5ZXJSZWYpID0+IGxheWVyLmlkID09PSBmaXJzdFRvcExheWVyLmlkXG4gICAgKTtcbiAgICBjb25zdCBiZWZvcmVJZHggPSBmaXJzdFRvcExheWVySWR4IC0gMTtcbiAgICByZXR1cm4gYmVmb3JlSWR4ID4gLTEgPyBib3R0b21NYXBTdHlsZS5sYXllcnNbYmVmb3JlSWR4XSA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0aWNNYXBQcm9wcyhcbiAga2VwbGVyU3RhdGU6IEtlcGxlclN0YXRlLFxuICBvblZpZXdDaGFuZ2U6ICh2aWV3U3RhdGU6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHZvaWQsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gIG1hcGJveEFwaVVybDogc3RyaW5nID0gREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGNvbnN0IGN1cnJlbnRTdHlsZSA9IGtlcGxlclN0YXRlLm1hcFN0eWxlPy5tYXBTdHlsZXM/LltrZXBsZXJTdGF0ZS5tYXBTdHlsZS5zdHlsZVR5cGVdO1xuICBjb25zdCBhY2Nlc3NUb2tlbiA9IGN1cnJlbnRTdHlsZT8uYWNjZXNzVG9rZW4gfHwgbWFwYm94QXBpQWNjZXNzVG9rZW47XG4gIGNvbnN0IGlzTWFwYm94ID0gZ2V0QmFzZU1hcExpYnJhcnkoY3VycmVudFN0eWxlKSA9PT0gJ21hcGJveCc7XG4gIGNvbnN0IGlzR2xvYmUgPSBCb29sZWFuKGtlcGxlclN0YXRlLm1hcFN0YXRlPy5nbG9iZT8uZW5hYmxlZCk7XG5cbiAgY29uc3QgbWFwYm94VHJhbnNmb3JtUmVxdWVzdCA9ICh1cmw6IHN0cmluZywgcmVzb3VyY2VUeXBlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNNYXBib3hVUkwodXJsKSkge1xuICAgICAgcmV0dXJuIHRyYW5zZm9ybU1hcGJveFVybCh1cmwsIHJlc291cmNlVHlwZSwgYWNjZXNzVG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4ge3VybH07XG4gIH07XG5cbiAgLy8gSW4gZ2xvYmUgbW9kZSB0aGUgZGVjay5nbCBHbG9iZVZpZXcgcmVuZGVycyB0aGUgcGxhbmV0ICsgYmFzZW1hcCB0aWxlcyBhc1xuICAvLyBkZWNrIGxheWVycyBvbiBhIHRyYW5zcGFyZW50IGNhbnZhcywgc28gdGhlIGZsYXQgbWFwbGlicmUgYmFzZSBtYXAgbXVzdCBiZVxuICAvLyBzdXBwcmVzc2VkIChvdGhlcndpc2UgYSAyRCBNZXJjYXRvciBiYXNlbWFwIHdvdWxkIHJlbmRlciBiZWhpbmQgdGhlIGdsb2JlKS5cbiAgY29uc3QgYm90dG9tTWFwU3R5bGUgPSBpc0dsb2JlXG4gICAgPyBFTVBUWV9NQVBCT1hfU1RZTEVcbiAgICA6IGlzTWFwYm94XG4gICAgPyBjb252ZXJ0TWFwYm94U3R5bGVVcmxzKGtlcGxlclN0YXRlLm1hcFN0eWxlPy5ib3R0b21NYXBTdHlsZSwgYWNjZXNzVG9rZW4pXG4gICAgOiBrZXBsZXJTdGF0ZS5tYXBTdHlsZT8uYm90dG9tTWFwU3R5bGU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5rZXBsZXJTdGF0ZS5tYXBTdGF0ZSxcbiAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgIG1hcGJveEFwaVVybCxcbiAgICB0cmFuc2Zvcm1SZXF1ZXN0OiBtYXBib3hUcmFuc2Zvcm1SZXF1ZXN0LFxuICAgIG1hcFN0eWxlOiBib3R0b21NYXBTdHlsZSxcbiAgICBvblZpZXdwb3J0Q2hhbmdlOiBvblZpZXdDaGFuZ2UsXG4gICAgbWFwTGliOiBpbXBvcnQoJ21hcGxpYnJlLWdsJylcbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IG1hcGJveDovLyBVUkxzIGluc2lkZSBhIE1hcGJveCBzdHlsZSBvYmplY3QgdG8gSFRUUFMgQVBJIFVSTHNcbiAqIHNvIHRoYXQgbWFwbGlicmUtZ2wgY2FuIGZldGNoIHRoZW0gZGlyZWN0bHkuXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRNYXBib3hTdHlsZVVybHMoc3R5bGU6IGFueSwgYWNjZXNzVG9rZW46IHN0cmluZyk6IGFueSB7XG4gIGlmICghc3R5bGUgfHwgdHlwZW9mIHN0eWxlICE9PSAnb2JqZWN0JykgcmV0dXJuIHN0eWxlO1xuXG4gIGNvbnN0IGNvbnZlcnRlZCA9IHsuLi5zdHlsZX07XG5cbiAgaWYgKHR5cGVvZiBjb252ZXJ0ZWQuc3ByaXRlID09PSAnc3RyaW5nJyAmJiBpc01hcGJveFVSTChjb252ZXJ0ZWQuc3ByaXRlKSkge1xuICAgIGNvbnZlcnRlZC5zcHJpdGUgPSB0cmFuc2Zvcm1NYXBib3hVcmwoY29udmVydGVkLnNwcml0ZSwgJ1Nwcml0ZScsIGFjY2Vzc1Rva2VuKT8udXJsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjb252ZXJ0ZWQuZ2x5cGhzID09PSAnc3RyaW5nJyAmJiBpc01hcGJveFVSTChjb252ZXJ0ZWQuZ2x5cGhzKSkge1xuICAgIGNvbnZlcnRlZC5nbHlwaHMgPSB0cmFuc2Zvcm1NYXBib3hVcmwoY29udmVydGVkLmdseXBocywgJ0dseXBocycsIGFjY2Vzc1Rva2VuKT8udXJsO1xuICB9XG5cbiAgaWYgKGNvbnZlcnRlZC5zb3VyY2VzKSB7XG4gICAgY29uc3QgbmV3U291cmNlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgc291cmNlXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGNvbnZlcnRlZC5zb3VyY2VzKSkge1xuICAgICAgaWYgKHNvdXJjZT8udXJsICYmIGlzTWFwYm94VVJMKHNvdXJjZS51cmwpKSB7XG4gICAgICAgIG5ld1NvdXJjZXNba2V5XSA9IHtcbiAgICAgICAgICAuLi5zb3VyY2UsXG4gICAgICAgICAgdXJsOiB0cmFuc2Zvcm1NYXBib3hVcmwoc291cmNlLnVybCwgJ1NvdXJjZScsIGFjY2Vzc1Rva2VuKT8udXJsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdTb3VyY2VzW2tleV0gPSBzb3VyY2U7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnZlcnRlZC5zb3VyY2VzID0gbmV3U291cmNlcztcbiAgfVxuXG4gIHJldHVybiBjb252ZXJ0ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEh1YmJsZVBhcmFtZXRlcnMoa2VwbGVyU3RhdGU6IEtlcGxlclN0YXRlKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIHJldHVybiBnZXRMYXllckJsZW5kaW5nUGFyYW1ldGVycyhrZXBsZXJTdGF0ZS52aXNTdGF0ZS5sYXllckJsZW5kaW5nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEh1YmJsZURlY2tHbFByb3BzKFxuICBrZXBsZXJTdGF0ZTogS2VwbGVyU3RhdGUsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gIG1hcGJveEFwaVVybDogc3RyaW5nID0gREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGNvbnN0IGdsb2JlID0ga2VwbGVyU3RhdGUubWFwU3RhdGU/Lmdsb2JlO1xuICBjb25zdCBpc0dsb2JlID0gQm9vbGVhbihnbG9iZT8uZW5hYmxlZCk7XG5cbiAgaWYgKCFpc0dsb2JlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcmFtZXRlcnM6IGdldEh1YmJsZVBhcmFtZXRlcnMoa2VwbGVyU3RhdGUpLFxuICAgICAgY29udHJvbGxlcjogdHJ1ZSxcbiAgICAgIHZpZXdzOiBuZXcgTWFwVmlldyh7XG4gICAgICAgIGlkOiAnbWFwYm94JyxcbiAgICAgICAgZmFyWk11bHRpcGxpZXI6IDEuMlxuICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgLy8gR2xvYmUgdmlkZW8gZXhwb3J0OiBtaXJyb3IgdGhlIGludGVyYWN0aXZlIGdsb2JlIHJlbmRlciBwYXRoIGluIG1hcC1jb250YWluZXIuXG4gIC8vIC0gVXNlIGEgR2xvYmVWaWV3IHNvIHRoZSBjYW1lcmEvcHJvamVjdGlvbiBjdXJ2ZSBkYXRhIGFyb3VuZCB0aGUgc3BoZXJlLlxuICAvLyAtIFByb3ZpZGUgbGF5ZXJzIGV4cGxpY2l0bHkgKGdsb2JlIGJhc2UgbGF5ZXJzICsga2VwbGVyIGRhdGEgbGF5ZXJzICsgZ2xvYmVcbiAgLy8gICB0b3AgbGF5ZXJzKS4gV2hlbiBgZGVja1Byb3BzLmxheWVyc2AgaXMgc2V0LCBodWJibGUncyBwcmV2aWV3IHVzZXMgdGhlbVxuICAvLyAgIHZlcmJhdGltIChza2lwcGluZyBpdHMgaW50ZXJuYWwgMkQtb25seSBjcmVhdGVLZXBsZXJMYXllcnMgcGF0aCksIGFuZCB0aGVcbiAgLy8gICBrZXBsZXIgbGF5ZXJzIGFyZSBidWlsdCBmcm9tIGBtYXBTdGF0ZS5nbG9iZWAsIHNvIGNvbXBvc2l0ZSBsYXllcnMgKGUuZy5cbiAgLy8gICB0aGUgaGVhdG1hcCkgZW1pdCB0aGVpciBnbG9iZS1jb25mb3JtaW5nIHN1YmxheWVycy5cbiAgY29uc3QgZ2xvYmVCYXNlTGF5ZXJzID0gZ2V0R2xvYmVCYXNlTGF5ZXJzKHtcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogbWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgJycsXG4gICAgZ2xvYmUsXG4gICAgbWFwU3R5bGVUeXBlOiBrZXBsZXJTdGF0ZS5tYXBTdHlsZT8uc3R5bGVUeXBlXG4gIH0pO1xuICBjb25zdCBnbG9iZVRvcExheWVycyA9IGdldEdsb2JlVG9wTGF5ZXJzKHtnbG9iZX0pO1xuICBjb25zdCBkYXRhTGF5ZXJzID0gY29tcHV0ZURlY2tMYXllcnMoa2VwbGVyU3RhdGUsIHtcbiAgICBwcmltYXJ5TWFwOiB0cnVlLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIG1hcGJveEFwaVVybFxuICB9KTtcblxuICAvLyBodWJibGUncyB2aWRlby1leHBvcnQgcHJldmlldyByZW5kZXJzIGEgYmFyZSA8RGVja0dMPiBpbiB0aGUgZGlzYWJsZUJhc2VNYXBcbiAgLy8gKGdsb2JlKSBicmFuY2ggYW5kIOKAlCB1bmxpa2UgaXRzIG1hcGJveCBicmFuY2gg4oCUIG5ldmVyIGZvcndhcmRzIGEgdmlld1N0YXRlLlxuICAvLyBXaXRoIGBjb250cm9sbGVyOiB0cnVlYCBkZWNrLmdsIHRoZW4gY29uc3RydWN0cyBhIGNvbnRyb2xsZXIgc3RhdGUgZnJvbSBhblxuICAvLyBlbXB0eSB2aWV3IHN0YXRlLCBhbmQgR2xvYmVTdGF0ZS9NYXBTdGF0ZSBhc3NlcnQgb24gdGhlIG1pc3NpbmdcbiAgLy8gbGF0aXR1ZGUvbG9uZ2l0dWRlL3pvb20gKFwiYXNzZXJ0aW9uIGZhaWxlZCBhdCBuZXcgTWFwU3RhdGUvR2xvYmVTdGF0ZVwiKS5cbiAgLy8gVGhhdCBkZWdlbmVyYXRlIHZpZXdwb3J0IGFsc28gbGVhdmVzIHRpbGUvTVZUIGJhc2UgbGF5ZXJzIHBlcm1hbmVudGx5XG4gIC8vIFwibm90IGxvYWRlZFwiLCBzbyBodWJibGUncyBgbGF5ZXJzLmV2ZXJ5KGwgPT4gbC5pc0xvYWRlZClgIGNhcHR1cmUgZ2F0ZSBuZXZlclxuICAvLyBmaXJlcyBhbmQgdGhlIGV4cG9ydCBoYW5ncy4gUHJvdmlkZSBhbiBleHBsaWNpdCBpbml0aWFsVmlld1N0YXRlIChkZWNrLmdsXG4gIC8vIHVzZXMgaXQgdG8gc2VlZCB0aGUgY29udHJvbGxlciB3aGVuIG5vIGNvbnRyb2xsZWQgdmlld1N0YXRlIGlzIHN1cHBsaWVkKSBzb1xuICAvLyB0aGUgZ2xvYmUgY2FtZXJhIGlzIHZhbGlkLCB0aWxlcyByZXNvbHZlLCBhbmQgaW50ZXJhY3Rpb24gd29ya3MuXG4gIGNvbnN0IHtsb25naXR1ZGUsIGxhdGl0dWRlLCB6b29tLCBwaXRjaCwgYmVhcmluZ30gPSBrZXBsZXJTdGF0ZS5tYXBTdGF0ZSB8fCB7fTtcbiAgY29uc3QgaW5pdGlhbFZpZXdTdGF0ZSA9IHtcbiAgICBsb25naXR1ZGUsXG4gICAgbGF0aXR1ZGUsXG4gICAgem9vbSxcbiAgICBwaXRjaDogcGl0Y2ggfHwgMCxcbiAgICBiZWFyaW5nOiBiZWFyaW5nIHx8IDAsXG4gICAgbWluWm9vbTogR0xPQkVfTUlOX1pPT00sXG4gICAgbWF4Wm9vbTogR0xPQkVfTUFYX1pPT01cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIC4uLmdldEh1YmJsZVBhcmFtZXRlcnMoa2VwbGVyU3RhdGUpLFxuICAgICAgY3VsbDogdHJ1ZVxuICAgIH0sXG4gICAgLy8gTWF0Y2ggdGhlIGludGVyYWN0aXZlIGdsb2JlIGNvbnRyb2xsZXIgYm91bmRzIHNvIHBhbm5pbmcvem9vbSBmZWVscyB0aGVcbiAgICAvLyBzYW1lIGluIHRoZSBwcmV2aWV3IGFzIG9uIHRoZSBtYWluIG1hcC5cbiAgICBjb250cm9sbGVyOiB7XG4gICAgICBtaW5ab29tOiBHTE9CRV9NSU5fWk9PTSxcbiAgICAgIG1heFpvb206IEdMT0JFX01BWF9aT09NXG4gICAgfSxcbiAgICBpbml0aWFsVmlld1N0YXRlLFxuICAgIHZpZXdzOiBuZXcgS2VwbGVyR2xvYmVWaWV3KHtcbiAgICAgIHJlc29sdXRpb246IDUsXG4gICAgICAvLyBjbGVhckNvbG9yOmZhbHNlIChub3QgYSBzb2xpZCBjb2xvcikgaXMgZGVsaWJlcmF0ZSBhbmQgbWlycm9ycyB0aGVcbiAgICAgIC8vIGludGVyYWN0aXZlIG1hcDogZGVjay5nbCBhcHBsaWVzIGEgVmlldydzIGNsZWFyQ29sb3IgaW4gRVZFUlkgcGFzc1xuICAgICAgLy8gaW5jbHVkaW5nIHRoZSBwaWNraW5nIHBhc3MsIGZvcmNpbmcgYWxwaGEgdG8gMjU1LiBJbiB0aGUgcGlja2luZyBidWZmZXJcbiAgICAgIC8vIHRoZSBhbHBoYSBieXRlIGVuY29kZXMgdGhlIGxheWVyIGluZGV4LCBzbyBhIHNvbGlkIGNsZWFyIG1ha2VzIGRlY2suZ2xcbiAgICAgIC8vIGRlY29kZSBldmVyeSBwaXhlbCBhcyBhIG5vbi1leGlzdGVudCBsYXllciAoXCJQaWNrZWQgbm9uLWV4aXN0ZW50IGxheWVyLlxuICAgICAgLy8gSXMgcGlja2luZyBidWZmZXIgY29ycnVwdD9cIikgd2hlbmV2ZXIgdGhlIGNvbnRyb2xsZXIgcGlja3Mgb24gaG92ZXIuXG4gICAgICAvLyBTa2lwcGluZyB0aGUgY29sb3IgY2xlYXIga2VlcHMgdGhlIHBpY2tpbmcgYnVmZmVyJ3MgMCBhbHBoYSBpbnRhY3Q7IHRoZVxuICAgICAgLy8gc3BoZXJlIGl0c2VsZiBzdGF5cyBvcGFxdWUgdmlhIHRoZSBnbG9iZS1iYWNrZ3JvdW5kIFNvbGlkUG9seWdvbkxheWVyLlxuICAgICAgY2xlYXI6IHRydWUsXG4gICAgICBjbGVhckNvbG9yOiBmYWxzZVxuICAgIH0pLFxuICAgIGxheWVyczogWy4uLmdsb2JlQmFzZUxheWVycywgLi4uZGF0YUxheWVycywgLi4uZ2xvYmVUb3BMYXllcnNdXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgYSBmcmVzaCBzZXQgb2YgZ2xvYmUgbGF5ZXJzIChiYXNlICsgZGF0YSArIHRvcCkgZm9yIGEgZ2l2ZW4gc3BsaXQtbWFwXG4gKiBpbmRleC4gVXNlZCBieSB0aGUgc3dpcGUgZXhwb3J0IHByZXZpZXcsIHdoaWNoIG1vdW50cyB0d28gaW5kZXBlbmRlbnQgRGVja1xuICogaW5zdGFuY2VzOiBlYWNoIHNpZGUgbmVlZHMgaXRzIE9XTiBsYXllciBpbnN0YW5jZXMgKGRlY2suZ2wgTGF5ZXIgb2JqZWN0cyBhcmVcbiAqIHN0YXRlZnVsIGFuZCBib3VuZCB0byBhIHNpbmdsZSBEZWNrKSBhbmQgaXRzIG93biBgbWFwSW5kZXhgIHNvIHRoZSBzcGxpdC1tYXBcbiAqIGxheWVyIHZpc2liaWxpdHkgaXMgcmVzcGVjdGVkIG9uIGVhY2ggaGFsZiBvZiB0aGUgc3dpcGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHbG9iZUV4cG9ydExheWVycyhcbiAga2VwbGVyU3RhdGU6IEtlcGxlclN0YXRlLFxuICB7XG4gICAgbWFwSW5kZXgsXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgbWFwYm94QXBpVXJsXG4gIH06IHttYXBJbmRleDogbnVtYmVyOyBtYXBib3hBcGlBY2Nlc3NUb2tlbj86IHN0cmluZzsgbWFwYm94QXBpVXJsPzogc3RyaW5nfVxuKSB7XG4gIGNvbnN0IGdsb2JlID0ga2VwbGVyU3RhdGUubWFwU3RhdGU/Lmdsb2JlO1xuICBjb25zdCBnbG9iZUJhc2VMYXllcnMgPSBnZXRHbG9iZUJhc2VMYXllcnMoe1xuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBtYXBib3hBcGlBY2Nlc3NUb2tlbiB8fCAnJyxcbiAgICBnbG9iZSxcbiAgICBtYXBTdHlsZVR5cGU6IGtlcGxlclN0YXRlLm1hcFN0eWxlPy5zdHlsZVR5cGVcbiAgfSk7XG4gIGNvbnN0IGdsb2JlVG9wTGF5ZXJzID0gZ2V0R2xvYmVUb3BMYXllcnMoe2dsb2JlfSk7XG4gIGNvbnN0IGRhdGFMYXllcnMgPSBjb21wdXRlRGVja0xheWVycyhrZXBsZXJTdGF0ZSwge1xuICAgIG1hcEluZGV4LFxuICAgIHByaW1hcnlNYXA6IG1hcEluZGV4ID09PSAwLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIG1hcGJveEFwaVVybFxuICB9KTtcbiAgcmV0dXJuIFsuLi5nbG9iZUJhc2VMYXllcnMsIC4uLmRhdGFMYXllcnMsIC4uLmdsb2JlVG9wTGF5ZXJzXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFuaW1hdGFibGVGaWx0ZXJzKGtlcGxlclN0YXRlOiBLZXBsZXJTdGF0ZSk6IFRpbWVSYW5nZUZpbHRlcltdIHtcbiAgY29uc3QgZmlsdGVycyA9IGtlcGxlclN0YXRlLnZpc1N0YXRlPy5maWx0ZXJzIHx8IFtdO1xuICByZXR1cm4gZmlsdGVycy5maWx0ZXIoXG4gICAgKGY6IGFueSkgPT5cbiAgICAgIGYudHlwZSA9PT0gRklMVEVSX1RZUEVTLnRpbWVSYW5nZSAmJlxuICAgICAgKGYudmlldyA9PT0gRklMVEVSX1ZJRVdfVFlQRVMuZW5sYXJnZWQgfHwgZi5zeW5jZWRXaXRoTGF5ZXJUaW1lbGluZSlcbiAgKTtcbn1cblxuLy8gLS0tIFZpZGVvIGV4cG9ydCB1dGlsaXRpZXMgKGlubGluZWQgZnJvbSBAaHViYmxlLmdsIGludGVybmFscykgLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZVRvVmlkZW9FeHBvcnQoXG4gIHZpZXdTdGF0ZTogTWFwVmlld1N0YXRlLFxuICBjb250YWluZXI6IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn1cbik6IE1hcFZpZXdTdGF0ZSAmIHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn0ge1xuICAvLyBJbiBnbG9iZSBtb2RlIChhbmQgYXQgZXh0cmVtZSB6b29tcykgdGhlIFdlYk1lcmNhdG9yVmlld3BvcnQgdXNlZCBiZWxvdyBjYW5cbiAgLy8gcHJvZHVjZSBhIG5vbi1pbnZlcnRpYmxlIHByb2plY3Rpb24gbWF0cml4LCBtYWtpbmcgYHVucHJvamVjdGAgdGhyb3cuIFRoZVxuICAvLyBNZXJjYXRvciBmaXQtYm91bmRzIHJlc2NhbGluZyBvbmx5IG1ha2VzIHNlbnNlIGZvciB0aGUgZmxhdCBNYXBWaWV3IGFueXdheSxcbiAgLy8gc28gZmFsbCBiYWNrIHRvIHNpbXBseSByZXNpemluZyB0aGUgdmlld3BvcnQgdG8gdGhlIGV4cG9ydCBjb250YWluZXIuXG4gIHRyeSB7XG4gICAgY29uc3Qgdmlld3BvcnQgPSBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh2aWV3U3RhdGUpO1xuICAgIGNvbnN0IG53ID0gdmlld3BvcnQudW5wcm9qZWN0KFswLCAwXSkgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICBjb25zdCBzZSA9IHZpZXdwb3J0LnVucHJvamVjdChbdmlld3BvcnQud2lkdGgsIHZpZXdwb3J0LmhlaWdodF0pIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgY29uc3QgdmlkZW9WaWV3cG9ydCA9IG5ldyBXZWJNZXJjYXRvclZpZXdwb3J0KHtcbiAgICAgIC4uLnZpZXdTdGF0ZSxcbiAgICAgIHdpZHRoOiBjb250YWluZXIud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNvbnRhaW5lci5oZWlnaHRcbiAgICB9KS5maXRCb3VuZHMoW253LCBzZV0pO1xuICAgIGNvbnN0IHtoZWlnaHQsIHdpZHRoLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCB6b29tLCBhbHRpdHVkZX0gPSB2aWRlb1ZpZXdwb3J0O1xuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQsXG4gICAgICB3aWR0aCxcbiAgICAgIGxhdGl0dWRlLFxuICAgICAgbG9uZ2l0dWRlLFxuICAgICAgcGl0Y2g6IHZpZXdTdGF0ZS5waXRjaCxcbiAgICAgIHpvb20sXG4gICAgICBiZWFyaW5nOiB2aWV3U3RhdGUuYmVhcmluZyxcbiAgICAgIGFsdGl0dWRlXG4gICAgfSBhcyBhbnk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmlld1N0YXRlLFxuICAgICAgd2lkdGg6IGNvbnRhaW5lci53aWR0aCxcbiAgICAgIGhlaWdodDogY29udGFpbmVyLmhlaWdodFxuICAgIH0gYXMgYW55O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNldENhbWVyYVR5cGUoc3RyQ2FtZXJhVHlwZTogc3RyaW5nLCB2aWV3U3RhdGU6IE1hcFZpZXdTdGF0ZSk6IE1hcFZpZXdTdGF0ZSB7XG4gIGNvbnN0IG1vZGlmaWVkVmlld1N0YXRlOiBhbnkgPSB7Li4udmlld1N0YXRlfTtcbiAgY29uc3QgbWF0Y2ggPSBzdHJDYW1lcmFUeXBlLm1hdGNoKC9cXGIoPyF0bylcXGJcXFMrXFx3L2cpO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gbW9kaWZpZWRWaWV3U3RhdGU7XG5cbiAgY29uc3QgdHVyZlBvaW50ID0gcG9pbnQoW21vZGlmaWVkVmlld1N0YXRlLmxvbmdpdHVkZSwgbW9kaWZpZWRWaWV3U3RhdGUubGF0aXR1ZGVdKTtcblxuICBpZiAobWF0Y2hbMF0gPT09ICdPcmJpdCcpIHtcbiAgICBtb2RpZmllZFZpZXdTdGF0ZS5iZWFyaW5nID0gbW9kaWZpZWRWaWV3U3RhdGUuYmVhcmluZyArIHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7XG4gIH1cblxuICBjb25zdCBkaXJlY3Rpb25zID0gbmV3IFNldChbJ0Vhc3QnLCAnU291dGgnLCAnV2VzdCcsICdOb3J0aCddKTtcbiAgaWYgKGRpcmVjdGlvbnMuaGFzKG1hdGNoWzBdKSkge1xuICAgIGNvbnN0IGRpcmVjdGlvbk1hcDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtFYXN0OiAyNzAsIFNvdXRoOiAwLCBXZXN0OiA5MCwgTm9ydGg6IDE4MH07XG4gICAgY29uc3QgdHJhbnNsYXRlZFBvbHkgPSB0cmFuc2Zvcm1UcmFuc2xhdGUodHVyZlBvaW50LCAxMCwgZGlyZWN0aW9uTWFwW21hdGNoWzBdXSk7XG4gICAgaWYgKG1hdGNoWzBdID09PSAnRWFzdCcgfHwgbWF0Y2hbMF0gPT09ICdXZXN0Jykge1xuICAgICAgbW9kaWZpZWRWaWV3U3RhdGUubG9uZ2l0dWRlID0gdHJhbnNsYXRlZFBvbHkuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG1vZGlmaWVkVmlld1N0YXRlLmxhdGl0dWRlID0gdHJhbnNsYXRlZFBvbHkuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV07XG4gICAgfVxuICB9XG5cbiAgaWYgKG1hdGNoWzBdID09PSAnWm9vbScpIHtcbiAgICBtb2RpZmllZFZpZXdTdGF0ZS56b29tICs9IG1hdGNoWzFdID09PSAnSW4nID8gMyA6IC0zO1xuICB9XG5cbiAgcmV0dXJuIG1vZGlmaWVkVmlld1N0YXRlO1xufVxuXG50eXBlIFJlc29sdXRpb24gPSB7dmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xuXG5jb25zdCBSRVNPTFVUSU9OUzogUmVzb2x1dGlvbltdID0gW1xuICB7dmFsdWU6ICc5NjB4NTQwJywgbGFiZWw6ICdHb29kICg1NDBwKScsIHdpZHRoOiA5NjAsIGhlaWdodDogNTQwfSxcbiAge3ZhbHVlOiAnMTI4MHg3MjAnLCBsYWJlbDogJ0hpZ2ggKDcyMHApJywgd2lkdGg6IDEyODAsIGhlaWdodDogNzIwfSxcbiAge3ZhbHVlOiAnMTkyMHgxMDgwJywgbGFiZWw6ICdIaWdoZXN0ICgxMDgwcCknLCB3aWR0aDogMTkyMCwgaGVpZ2h0OiAxMDgwfSxcbiAge3ZhbHVlOiAnNjQweDQ4MCcsIGxhYmVsOiAnR29vZCAoNDgwcCknLCB3aWR0aDogNjQwLCBoZWlnaHQ6IDQ4MH0sXG4gIHt2YWx1ZTogJzEyODB4OTYwJywgbGFiZWw6ICdIaWdoICg5NjBwKScsIHdpZHRoOiAxMjgwLCBoZWlnaHQ6IDk2MH0sXG4gIHt2YWx1ZTogJzE5MjB4MTQ0MCcsIGxhYmVsOiAnSGlnaGVzdCAoMTQ0MHApJywgd2lkdGg6IDE5MjAsIGhlaWdodDogMTQ0MH1cbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvbHV0aW9uU2V0dGluZyh2YWx1ZTogc3RyaW5nKTogUmVzb2x1dGlvbiB7XG4gIHJldHVybiBSRVNPTFVUSU9OUy5maW5kKHIgPT4gci52YWx1ZSA9PT0gdmFsdWUpIHx8IFJFU09MVVRJT05TWzBdO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFRQSxJQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxtQ0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sbUJBQUEsR0FBQVAsT0FBQTtBQUE2RCxTQUFBUSx3QkFBQUMsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUgsdUJBQUEsWUFBQUEs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
|
|
452
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2RlY2tnbExheWVycyIsIl9yZWR1Y2VycyIsIl9tYXBsaWJyZWdsTWFwYm94UmVxdWVzdFRyYW5zZm9ybWVyIiwiX2hlbHBlcnMiLCJfdHJhbnNmb3JtVHJhbnNsYXRlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mMyIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkVYUE9SVF9ERUNLX0RFVklDRV9QUk9QUyIsImV4cG9ydHMiLCJ0eXBlIiwid2ViZ2wiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJkZWJ1ZyIsIkVYUE9SVF9PVkVSTEFZX0RFVklDRV9QUk9QUyIsInN0ZW5jaWwiLCJsaW5lYXIiLCJwIiwiaG9sZCIsImdldEtleUZyYW1lc0ZyZWUiLCJkZWx0YSIsInZhbHVlIiwia2V5ZnJhbWVzIiwiZG9tYWluIiwiZWFzaW5ncyIsImdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lcyIsIl9yZWYiLCJ0aW1pbmdzIiwiRklMVEVSX1RZUEVTIiwidGltZVJhbmdlIiwiRXJyb3IiLCJkdXJhdGlvbiIsImFuaW1hdGlvbldpbmRvdyIsIl90aW1lQmlucyRkYXRhSWQkIiwicGxvdFR5cGUiLCJ0aW1lQmlucyIsImRhdGFJZCIsImludGVydmFsIiwiYmlucyIsIk1hdGgiLCJyb3VuZCIsIm1hcCIsIl8iLCJpZHgiLCJiaW4iLCJ4MCIsIngxIiwiZ2V0QmVmb3JlTGF5ZXJJZCIsInRvcE1hcFN0eWxlIiwiYm90dG9tTWFwU3R5bGUiLCJfdG9wTWFwU3R5bGUkbGF5ZXJzIiwiX2JvdHRvbU1hcFN0eWxlJGxheWVyIiwibGF5ZXJzIiwiZmlyc3RUb3BMYXllciIsImZpcnN0VG9wTGF5ZXJJZHgiLCJmaW5kSW5kZXgiLCJsYXllciIsImlkIiwiYmVmb3JlSWR4IiwiZ2V0U3RhdGljTWFwUHJvcHMiLCJrZXBsZXJTdGF0ZSIsIm9uVmlld0NoYW5nZSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX2tlcGxlclN0YXRlJG1hcFN0eWxlIiwiX2tlcGxlclN0YXRlJG1hcFN0YXRlIiwiX2tlcGxlclN0YXRlJG1hcFN0eWxlMiIsIl9rZXBsZXJTdGF0ZSRtYXBTdHlsZTMiLCJtYXBib3hBcGlVcmwiLCJ1bmRlZmluZWQiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiY3VycmVudFN0eWxlIiwibWFwU3R5bGUiLCJtYXBTdHlsZXMiLCJzdHlsZVR5cGUiLCJhY2Nlc3NUb2tlbiIsImlzTWFwYm94IiwiZ2V0QmFzZU1hcExpYnJhcnkiLCJpc0dsb2JlIiwiQm9vbGVhbiIsIm1hcFN0YXRlIiwiZ2xvYmUiLCJlbmFibGVkIiwibWFwYm94VHJhbnNmb3JtUmVxdWVzdCIsInVybCIsInJlc291cmNlVHlwZSIsImlzTWFwYm94VVJMIiwidHJhbnNmb3JtTWFwYm94VXJsIiwiRU1QVFlfTUFQQk9YX1NUWUxFIiwiY29udmVydE1hcGJveFN0eWxlVXJscyIsInRyYW5zZm9ybVJlcXVlc3QiLCJvblZpZXdwb3J0Q2hhbmdlIiwibWFwTGliIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwic3R5bGUiLCJfdHlwZW9mMiIsImNvbnZlcnRlZCIsInNwcml0ZSIsIl90cmFuc2Zvcm1NYXBib3hVcmwiLCJnbHlwaHMiLCJfdHJhbnNmb3JtTWFwYm94VXJsMiIsInNvdXJjZXMiLCJuZXdTb3VyY2VzIiwiX2kiLCJfT2JqZWN0JGVudHJpZXMiLCJlbnRyaWVzIiwiX09iamVjdCRlbnRyaWVzJF9pIiwiX3NsaWNlZFRvQXJyYXkyIiwia2V5Iiwic291cmNlIiwiX3RyYW5zZm9ybU1hcGJveFVybDMiLCJnZXRIdWJibGVQYXJhbWV0ZXJzIiwiZ2V0TGF5ZXJCbGVuZGluZ1BhcmFtZXRlcnMiLCJ2aXNTdGF0ZSIsImxheWVyQmxlbmRpbmciLCJnZXRIdWJibGVEZWNrR2xQcm9wcyIsIl9rZXBsZXJTdGF0ZSRtYXBTdGF0ZTIiLCJfa2VwbGVyU3RhdGUkbWFwU3R5bGU0IiwicGFyYW1ldGVycyIsImNvbnRyb2xsZXIiLCJ2aWV3cyIsIk1hcFZpZXciLCJmYXJaTXVsdGlwbGllciIsImdsb2JlQmFzZUxheWVycyIsImdldEdsb2JlQmFzZUxheWVycyIsIm1hcFN0eWxlVHlwZSIsImdsb2JlVG9wTGF5ZXJzIiwiZ2V0R2xvYmVUb3BMYXllcnMiLCJkYXRhTGF5ZXJzIiwiY29tcHV0ZURlY2tMYXllcnMiLCJwcmltYXJ5TWFwIiwiX3JlZjIiLCJsb25naXR1ZGUiLCJsYXRpdHVkZSIsInpvb20iLCJwaXRjaCIsImJlYXJpbmciLCJpbml0aWFsVmlld1N0YXRlIiwibWluWm9vbSIsIkdMT0JFX01JTl9aT09NIiwibWF4Wm9vbSIsIkdMT0JFX01BWF9aT09NIiwiY3VsbCIsIktlcGxlckdsb2JlVmlldyIsInJlc29sdXRpb24iLCJjbGVhciIsImNsZWFyQ29sb3IiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ2V0R2xvYmVFeHBvcnRMYXllcnMiLCJfcmVmMyIsIl9rZXBsZXJTdGF0ZSRtYXBTdGF0ZTMiLCJfa2VwbGVyU3RhdGUkbWFwU3R5bGU1IiwibWFwSW5kZXgiLCJ2aWV3U3RhdGUiLCJnZXRBbmltYXRhYmxlRmlsdGVycyIsIl9rZXBsZXJTdGF0ZSR2aXNTdGF0ZSIsImZpbHRlcnMiLCJ2aWV3IiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJlbmxhcmdlZCIsInN5bmNlZFdpdGhMYXllclRpbWVsaW5lIiwic2NhbGVUb1ZpZGVvRXhwb3J0IiwiY29udGFpbmVyIiwidmlld3BvcnQiLCJXZWJNZXJjYXRvclZpZXdwb3J0IiwibnciLCJ1bnByb2plY3QiLCJzZSIsIndpZHRoIiwiaGVpZ2h0IiwidmlkZW9WaWV3cG9ydCIsImZpdEJvdW5kcyIsImFsdGl0dWRlIiwicGFyc2VTZXRDYW1lcmFUeXBlIiwic3RyQ2FtZXJhVHlwZSIsIm1vZGlmaWVkVmlld1N0YXRlIiwibWF0Y2giLCJ0dXJmUG9pbnQiLCJwb2ludCIsInBhcnNlSW50IiwiZGlyZWN0aW9ucyIsIlNldCIsImRpcmVjdGlvbk1hcCIsIkVhc3QiLCJTb3V0aCIsIldlc3QiLCJOb3J0aCIsInRyYW5zbGF0ZWRQb2x5IiwidHJhbnNmb3JtVHJhbnNsYXRlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIlJFU09MVVRJT05TIiwibGFiZWwiLCJnZXRSZXNvbHV0aW9uU2V0dGluZyIsImZpbmQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kYWxzL2h1YmJsZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge01hcFZpZXcsIFdlYk1lcmNhdG9yVmlld3BvcnQsIHR5cGUgTWFwVmlld1N0YXRlfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7XG4gIERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIEVNUFRZX01BUEJPWF9TVFlMRSxcbiAgRklMVEVSX1ZJRVdfVFlQRVMsXG4gIEZJTFRFUl9UWVBFUyxcbiAgR0xPQkVfTUlOX1pPT00sXG4gIEdMT0JFX01BWF9aT09NXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Z2V0TGF5ZXJCbGVuZGluZ1BhcmFtZXRlcnMsIGdldEJhc2VNYXBMaWJyYXJ5fSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7Z2V0R2xvYmVCYXNlTGF5ZXJzLCBnZXRHbG9iZVRvcExheWVycywgS2VwbGVyR2xvYmVWaWV3fSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuaW1wb3J0IHtjb21wdXRlRGVja0xheWVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge2lzTWFwYm94VVJMLCB0cmFuc2Zvcm1NYXBib3hVcmx9IGZyb20gJ21hcGxpYnJlZ2wtbWFwYm94LXJlcXVlc3QtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHtwb2ludH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQge3RyYW5zZm9ybVRyYW5zbGF0ZX0gZnJvbSAnQHR1cmYvdHJhbnNmb3JtLXRyYW5zbGF0ZSc7XG5pbXBvcnQge1RpbWVSYW5nZUZpbHRlcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbnR5cGUgS2VwbGVyU3RhdGUgPSB7XG4gIHZpc1N0YXRlOiBhbnk7XG4gIG1hcFN0YXRlOiBhbnk7XG4gIG1hcFN0eWxlOiBhbnk7XG59O1xuXG50eXBlIE1hcGJveExheWVyUmVmID0ge1xuICBpZDogc3RyaW5nO1xufSAmIFJlY29yZDxzdHJpbmcsIGFueT47XG5cbi8vIGx1bWEuZ2wgZGVmYXVsdHMgYGRlYnVnYCB0byB0cnVlIHdoZW5ldmVyIE5PREVfRU5WICE9PSAncHJvZHVjdGlvbicsIHdoaWNoXG4vLyBpbnN0cnVtZW50cyBldmVyeSByZW5kZXIgcGFzcyB3aXRoIGEgVElNRV9FTEFQU0VEX0VYVCB0aW1lciBxdWVyeS4gV2ViR0wyIG9ubHlcbi8vIGFsbG93cyBvbmUgc3VjaCBxdWVyeSB0byBiZSBhY3RpdmUgYXQgYSB0aW1lLCBhbmQgdGhlIGdsb2JlIGV4cG9ydCByZW5kZXJzXG4vLyBzZXZlcmFsIHBhc3NlcyBwZXIgZnJhbWUsIHNvIHRoZSBkZWJ1ZyBjb250ZXh0IHRocm93cyBJTlZBTElEX09QRVJBVElPTiBhbmRcbi8vIHRha2VzIHRoZSB3aG9sZSBleHBvcnQgbW9kYWwgZG93bi4gRXhwb3J0IHByZXZpZXdzIGFyZSB0aHJvd2F3YXkgcmVuZGVyXG4vLyB0YXJnZXRzIHRoYXQgZG9uJ3QgbmVlZCB0aGUgdmFsaWRhdGlvbiBsYXllci5cblxuLyoqIERldmljZSBwcm9wcyBmb3IgZXhwb3J0IHByZXZpZXdzIHRoYXQgb3duIHRoZWlyIGNhbnZhcyBhbmQgcmVhZCBwaXhlbHMgYmFjayBvZmYgaXQuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0RFQ0tfREVWSUNFX1BST1BTID0ge1xuICB0eXBlOiAnd2ViZ2wnIGFzIGNvbnN0LFxuICB3ZWJnbDoge3ByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZX0sXG4gIGRlYnVnOiBmYWxzZVxufTtcblxuLyoqIERldmljZSBwcm9wcyBmb3IgZXhwb3J0IHByZXZpZXdzIHRoYXQgZHJhdyBhcyBhbiBvdmVybGF5IG9uIHRvcCBvZiBhIGJhc2VtYXAuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX09WRVJMQVlfREVWSUNFX1BST1BTID0ge1xuICB0eXBlOiAnd2ViZ2wnIGFzIGNvbnN0LFxuICB3ZWJnbDoge3N0ZW5jaWw6IHRydWV9LFxuICBkZWJ1ZzogZmFsc2Vcbn07XG5cbmNvbnN0IGxpbmVhcjogKHA6IG51bWJlcikgPT4gbnVtYmVyID0gcCA9PiBwO1xuY29uc3QgaG9sZDogKHA6IG51bWJlcikgPT4gbnVtYmVyID0gcCA9PiAocCA9PT0gMSA/IDEgOiAwKTtcblxudHlwZSBUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMgPSB7XG4gIGtleWZyYW1lczoge3ZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdfVtdO1xuICBlYXNpbmdzOiAocDogbnVtYmVyKSA9PiBudW1iZXI7XG4gIHRpbWluZ3M/OiBudW1iZXJbXTtcbn07XG5cbmZ1bmN0aW9uIGdldEtleUZyYW1lc0ZyZWUoZmlsdGVyOiBUaW1lUmFuZ2VGaWx0ZXIpOiBUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMge1xuICBjb25zdCBkZWx0YSA9IGZpbHRlci52YWx1ZVsxXSAtIGZpbHRlci52YWx1ZVswXTtcbiAgcmV0dXJuIHtcbiAgICBrZXlmcmFtZXM6IFtcbiAgICAgIHt2YWx1ZTogW2ZpbHRlci5kb21haW5bMF0sIGZpbHRlci5kb21haW5bMF0gKyBkZWx0YV19LFxuICAgICAge3ZhbHVlOiBbZmlsdGVyLmRvbWFpblsxXSAtIGRlbHRhLCBmaWx0ZXIuZG9tYWluWzFdXX1cbiAgICBdLFxuICAgIGVhc2luZ3M6IGxpbmVhclxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzKHtcbiAgZmlsdGVyLFxuICB0aW1pbmdzXG59OiB7XG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyO1xuICB0aW1pbmdzOiBudW1iZXJbXTtcbn0pOiBUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMge1xuICBpZiAoZmlsdGVyLnR5cGUgIT09IEZJTFRFUl9UWVBFUy50aW1lUmFuZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJmaWx0ZXIgdHlwZSBtdXN0IGJlICd0aW1lUmFuZ2UnLlwiKTtcbiAgfVxuXG4gIGNvbnN0IGR1cmF0aW9uID0gdGltaW5nc1sxXSAtIHRpbWluZ3NbMF07XG5cbiAgc3dpdGNoIChmaWx0ZXIuYW5pbWF0aW9uV2luZG93KSB7XG4gICAgZGVmYXVsdDpcbiAgICBjYXNlICdmcmVlJzoge1xuICAgICAgcmV0dXJuIGdldEtleUZyYW1lc0ZyZWUoZmlsdGVyKTtcbiAgICB9XG4gICAgY2FzZSAnaW5jcmVtZW50YWwnOiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXlmcmFtZXM6IFtcbiAgICAgICAgICB7dmFsdWU6IFtmaWx0ZXIudmFsdWVbMF0sIGZpbHRlci52YWx1ZVswXSArIDFdfSxcbiAgICAgICAgICB7dmFsdWU6IFtmaWx0ZXIudmFsdWVbMF0sIGZpbHRlci5kb21haW5bMV1dfVxuICAgICAgICBdLFxuICAgICAgICBlYXNpbmdzOiBsaW5lYXJcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5ZnJhbWVzOiBbe3ZhbHVlOiBmaWx0ZXIuZG9tYWluWzBdfSwge3ZhbHVlOiBmaWx0ZXIuZG9tYWluWzFdfV0sXG4gICAgICAgIGVhc2luZ3M6IGxpbmVhclxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSAnaW50ZXJ2YWwnOiB7XG4gICAgICBjb25zdCB7cGxvdFR5cGUsIHRpbWVCaW5zLCBkYXRhSWR9ID0gZmlsdGVyO1xuICAgICAgY29uc3Qge2ludGVydmFsfSA9IHBsb3RUeXBlO1xuXG4gICAgICBjb25zdCBiaW5zID0gdGltZUJpbnM/LltkYXRhSWRbMF1dPy5baW50ZXJ2YWxdO1xuXG4gICAgICBpZiAoIWludGVydmFsIHx8ICFiaW5zIHx8IGJpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBnZXRLZXlGcmFtZXNGcmVlKGZpbHRlcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlbHRhID0gTWF0aC5yb3VuZChkdXJhdGlvbiAvIGJpbnMubGVuZ3RoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGltaW5nczogYmlucy5tYXAoKF8sIGlkeCkgPT4gdGltaW5nc1swXSArIGRlbHRhICogaWR4KSxcbiAgICAgICAga2V5ZnJhbWVzOiBiaW5zLm1hcChiaW4gPT4gKHt2YWx1ZTogW2Jpbi54MCwgYmluLngxXX0pKSxcbiAgICAgICAgZWFzaW5nczogaG9sZFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJlZm9yZUxheWVySWQodG9wTWFwU3R5bGU6IGFueSwgYm90dG9tTWFwU3R5bGU6IGFueSk6IE1hcGJveExheWVyUmVmIHwgbnVsbCB7XG4gIGlmICh0b3BNYXBTdHlsZT8ubGF5ZXJzPy5sZW5ndGggJiYgYm90dG9tTWFwU3R5bGU/LmxheWVycz8ubGVuZ3RoKSB7XG4gICAgY29uc3QgZmlyc3RUb3BMYXllciA9IHRvcE1hcFN0eWxlLmxheWVyc1swXTtcbiAgICBjb25zdCBmaXJzdFRvcExheWVySWR4ID0gYm90dG9tTWFwU3R5bGUubGF5ZXJzLmZpbmRJbmRleChcbiAgICAgIChsYXllcjogTWFwYm94TGF5ZXJSZWYpID0+IGxheWVyLmlkID09PSBmaXJzdFRvcExheWVyLmlkXG4gICAgKTtcbiAgICBjb25zdCBiZWZvcmVJZHggPSBmaXJzdFRvcExheWVySWR4IC0gMTtcbiAgICByZXR1cm4gYmVmb3JlSWR4ID4gLTEgPyBib3R0b21NYXBTdHlsZS5sYXllcnNbYmVmb3JlSWR4XSA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0aWNNYXBQcm9wcyhcbiAga2VwbGVyU3RhdGU6IEtlcGxlclN0YXRlLFxuICBvblZpZXdDaGFuZ2U6ICh2aWV3U3RhdGU6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHZvaWQsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gIG1hcGJveEFwaVVybDogc3RyaW5nID0gREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGNvbnN0IGN1cnJlbnRTdHlsZSA9IGtlcGxlclN0YXRlLm1hcFN0eWxlPy5tYXBTdHlsZXM/LltrZXBsZXJTdGF0ZS5tYXBTdHlsZS5zdHlsZVR5cGVdO1xuICBjb25zdCBhY2Nlc3NUb2tlbiA9IGN1cnJlbnRTdHlsZT8uYWNjZXNzVG9rZW4gfHwgbWFwYm94QXBpQWNjZXNzVG9rZW47XG4gIGNvbnN0IGlzTWFwYm94ID0gZ2V0QmFzZU1hcExpYnJhcnkoY3VycmVudFN0eWxlKSA9PT0gJ21hcGJveCc7XG4gIGNvbnN0IGlzR2xvYmUgPSBCb29sZWFuKGtlcGxlclN0YXRlLm1hcFN0YXRlPy5nbG9iZT8uZW5hYmxlZCk7XG5cbiAgY29uc3QgbWFwYm94VHJhbnNmb3JtUmVxdWVzdCA9ICh1cmw6IHN0cmluZywgcmVzb3VyY2VUeXBlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNNYXBib3hVUkwodXJsKSkge1xuICAgICAgcmV0dXJuIHRyYW5zZm9ybU1hcGJveFVybCh1cmwsIHJlc291cmNlVHlwZSwgYWNjZXNzVG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4ge3VybH07XG4gIH07XG5cbiAgLy8gSW4gZ2xvYmUgbW9kZSB0aGUgZGVjay5nbCBHbG9iZVZpZXcgcmVuZGVycyB0aGUgcGxhbmV0ICsgYmFzZW1hcCB0aWxlcyBhc1xuICAvLyBkZWNrIGxheWVycyBvbiBhIHRyYW5zcGFyZW50IGNhbnZhcywgc28gdGhlIGZsYXQgbWFwbGlicmUgYmFzZSBtYXAgbXVzdCBiZVxuICAvLyBzdXBwcmVzc2VkIChvdGhlcndpc2UgYSAyRCBNZXJjYXRvciBiYXNlbWFwIHdvdWxkIHJlbmRlciBiZWhpbmQgdGhlIGdsb2JlKS5cbiAgY29uc3QgYm90dG9tTWFwU3R5bGUgPSBpc0dsb2JlXG4gICAgPyBFTVBUWV9NQVBCT1hfU1RZTEVcbiAgICA6IGlzTWFwYm94XG4gICAgPyBjb252ZXJ0TWFwYm94U3R5bGVVcmxzKGtlcGxlclN0YXRlLm1hcFN0eWxlPy5ib3R0b21NYXBTdHlsZSwgYWNjZXNzVG9rZW4pXG4gICAgOiBrZXBsZXJTdGF0ZS5tYXBTdHlsZT8uYm90dG9tTWFwU3R5bGU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5rZXBsZXJTdGF0ZS5tYXBTdGF0ZSxcbiAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgIG1hcGJveEFwaVVybCxcbiAgICB0cmFuc2Zvcm1SZXF1ZXN0OiBtYXBib3hUcmFuc2Zvcm1SZXF1ZXN0LFxuICAgIG1hcFN0eWxlOiBib3R0b21NYXBTdHlsZSxcbiAgICBvblZpZXdwb3J0Q2hhbmdlOiBvblZpZXdDaGFuZ2UsXG4gICAgbWFwTGliOiBpbXBvcnQoJ21hcGxpYnJlLWdsJylcbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IG1hcGJveDovLyBVUkxzIGluc2lkZSBhIE1hcGJveCBzdHlsZSBvYmplY3QgdG8gSFRUUFMgQVBJIFVSTHNcbiAqIHNvIHRoYXQgbWFwbGlicmUtZ2wgY2FuIGZldGNoIHRoZW0gZGlyZWN0bHkuXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRNYXBib3hTdHlsZVVybHMoc3R5bGU6IGFueSwgYWNjZXNzVG9rZW46IHN0cmluZyk6IGFueSB7XG4gIGlmICghc3R5bGUgfHwgdHlwZW9mIHN0eWxlICE9PSAnb2JqZWN0JykgcmV0dXJuIHN0eWxlO1xuXG4gIGNvbnN0IGNvbnZlcnRlZCA9IHsuLi5zdHlsZX07XG5cbiAgaWYgKHR5cGVvZiBjb252ZXJ0ZWQuc3ByaXRlID09PSAnc3RyaW5nJyAmJiBpc01hcGJveFVSTChjb252ZXJ0ZWQuc3ByaXRlKSkge1xuICAgIGNvbnZlcnRlZC5zcHJpdGUgPSB0cmFuc2Zvcm1NYXBib3hVcmwoY29udmVydGVkLnNwcml0ZSwgJ1Nwcml0ZScsIGFjY2Vzc1Rva2VuKT8udXJsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjb252ZXJ0ZWQuZ2x5cGhzID09PSAnc3RyaW5nJyAmJiBpc01hcGJveFVSTChjb252ZXJ0ZWQuZ2x5cGhzKSkge1xuICAgIGNvbnZlcnRlZC5nbHlwaHMgPSB0cmFuc2Zvcm1NYXBib3hVcmwoY29udmVydGVkLmdseXBocywgJ0dseXBocycsIGFjY2Vzc1Rva2VuKT8udXJsO1xuICB9XG5cbiAgaWYgKGNvbnZlcnRlZC5zb3VyY2VzKSB7XG4gICAgY29uc3QgbmV3U291cmNlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgc291cmNlXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGNvbnZlcnRlZC5zb3VyY2VzKSkge1xuICAgICAgaWYgKHNvdXJjZT8udXJsICYmIGlzTWFwYm94VVJMKHNvdXJjZS51cmwpKSB7XG4gICAgICAgIG5ld1NvdXJjZXNba2V5XSA9IHtcbiAgICAgICAgICAuLi5zb3VyY2UsXG4gICAgICAgICAgdXJsOiB0cmFuc2Zvcm1NYXBib3hVcmwoc291cmNlLnVybCwgJ1NvdXJjZScsIGFjY2Vzc1Rva2VuKT8udXJsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdTb3VyY2VzW2tleV0gPSBzb3VyY2U7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnZlcnRlZC5zb3VyY2VzID0gbmV3U291cmNlcztcbiAgfVxuXG4gIHJldHVybiBjb252ZXJ0ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEh1YmJsZVBhcmFtZXRlcnMoa2VwbGVyU3RhdGU6IEtlcGxlclN0YXRlKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIHJldHVybiBnZXRMYXllckJsZW5kaW5nUGFyYW1ldGVycyhrZXBsZXJTdGF0ZS52aXNTdGF0ZS5sYXllckJsZW5kaW5nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEh1YmJsZURlY2tHbFByb3BzKFxuICBrZXBsZXJTdGF0ZTogS2VwbGVyU3RhdGUsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gIG1hcGJveEFwaVVybDogc3RyaW5nID0gREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGNvbnN0IGdsb2JlID0ga2VwbGVyU3RhdGUubWFwU3RhdGU/Lmdsb2JlO1xuICBjb25zdCBpc0dsb2JlID0gQm9vbGVhbihnbG9iZT8uZW5hYmxlZCk7XG5cbiAgaWYgKCFpc0dsb2JlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcmFtZXRlcnM6IGdldEh1YmJsZVBhcmFtZXRlcnMoa2VwbGVyU3RhdGUpLFxuICAgICAgY29udHJvbGxlcjogdHJ1ZSxcbiAgICAgIHZpZXdzOiBuZXcgTWFwVmlldyh7XG4gICAgICAgIGlkOiAnbWFwYm94JyxcbiAgICAgICAgZmFyWk11bHRpcGxpZXI6IDEuMlxuICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgLy8gR2xvYmUgdmlkZW8gZXhwb3J0OiBtaXJyb3IgdGhlIGludGVyYWN0aXZlIGdsb2JlIHJlbmRlciBwYXRoIGluIG1hcC1jb250YWluZXIuXG4gIC8vIC0gVXNlIGEgR2xvYmVWaWV3IHNvIHRoZSBjYW1lcmEvcHJvamVjdGlvbiBjdXJ2ZSBkYXRhIGFyb3VuZCB0aGUgc3BoZXJlLlxuICAvLyAtIFByb3ZpZGUgbGF5ZXJzIGV4cGxpY2l0bHkgKGdsb2JlIGJhc2UgbGF5ZXJzICsga2VwbGVyIGRhdGEgbGF5ZXJzICsgZ2xvYmVcbiAgLy8gICB0b3AgbGF5ZXJzKS4gV2hlbiBgZGVja1Byb3BzLmxheWVyc2AgaXMgc2V0LCBodWJibGUncyBwcmV2aWV3IHVzZXMgdGhlbVxuICAvLyAgIHZlcmJhdGltIChza2lwcGluZyBpdHMgaW50ZXJuYWwgMkQtb25seSBjcmVhdGVLZXBsZXJMYXllcnMgcGF0aCksIGFuZCB0aGVcbiAgLy8gICBrZXBsZXIgbGF5ZXJzIGFyZSBidWlsdCBmcm9tIGBtYXBTdGF0ZS5nbG9iZWAsIHNvIGNvbXBvc2l0ZSBsYXllcnMgKGUuZy5cbiAgLy8gICB0aGUgaGVhdG1hcCkgZW1pdCB0aGVpciBnbG9iZS1jb25mb3JtaW5nIHN1YmxheWVycy5cbiAgY29uc3QgZ2xvYmVCYXNlTGF5ZXJzID0gZ2V0R2xvYmVCYXNlTGF5ZXJzKHtcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogbWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgJycsXG4gICAgZ2xvYmUsXG4gICAgbWFwU3R5bGVUeXBlOiBrZXBsZXJTdGF0ZS5tYXBTdHlsZT8uc3R5bGVUeXBlXG4gIH0pO1xuICBjb25zdCBnbG9iZVRvcExheWVycyA9IGdldEdsb2JlVG9wTGF5ZXJzKHtnbG9iZX0pO1xuICBjb25zdCBkYXRhTGF5ZXJzID0gY29tcHV0ZURlY2tMYXllcnMoa2VwbGVyU3RhdGUsIHtcbiAgICBwcmltYXJ5TWFwOiB0cnVlLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIG1hcGJveEFwaVVybFxuICB9KTtcblxuICAvLyBodWJibGUncyB2aWRlby1leHBvcnQgcHJldmlldyByZW5kZXJzIGEgYmFyZSA8RGVja0dMPiBpbiB0aGUgZGlzYWJsZUJhc2VNYXBcbiAgLy8gKGdsb2JlKSBicmFuY2ggYW5kIOKAlCB1bmxpa2UgaXRzIG1hcGJveCBicmFuY2gg4oCUIG5ldmVyIGZvcndhcmRzIGEgdmlld1N0YXRlLlxuICAvLyBXaXRoIGBjb250cm9sbGVyOiB0cnVlYCBkZWNrLmdsIHRoZW4gY29uc3RydWN0cyBhIGNvbnRyb2xsZXIgc3RhdGUgZnJvbSBhblxuICAvLyBlbXB0eSB2aWV3IHN0YXRlLCBhbmQgR2xvYmVTdGF0ZS9NYXBTdGF0ZSBhc3NlcnQgb24gdGhlIG1pc3NpbmdcbiAgLy8gbGF0aXR1ZGUvbG9uZ2l0dWRlL3pvb20gKFwiYXNzZXJ0aW9uIGZhaWxlZCBhdCBuZXcgTWFwU3RhdGUvR2xvYmVTdGF0ZVwiKS5cbiAgLy8gVGhhdCBkZWdlbmVyYXRlIHZpZXdwb3J0IGFsc28gbGVhdmVzIHRpbGUvTVZUIGJhc2UgbGF5ZXJzIHBlcm1hbmVudGx5XG4gIC8vIFwibm90IGxvYWRlZFwiLCBzbyBodWJibGUncyBgbGF5ZXJzLmV2ZXJ5KGwgPT4gbC5pc0xvYWRlZClgIGNhcHR1cmUgZ2F0ZSBuZXZlclxuICAvLyBmaXJlcyBhbmQgdGhlIGV4cG9ydCBoYW5ncy4gUHJvdmlkZSBhbiBleHBsaWNpdCBpbml0aWFsVmlld1N0YXRlIChkZWNrLmdsXG4gIC8vIHVzZXMgaXQgdG8gc2VlZCB0aGUgY29udHJvbGxlciB3aGVuIG5vIGNvbnRyb2xsZWQgdmlld1N0YXRlIGlzIHN1cHBsaWVkKSBzb1xuICAvLyB0aGUgZ2xvYmUgY2FtZXJhIGlzIHZhbGlkLCB0aWxlcyByZXNvbHZlLCBhbmQgaW50ZXJhY3Rpb24gd29ya3MuXG4gIGNvbnN0IHtsb25naXR1ZGUsIGxhdGl0dWRlLCB6b29tLCBwaXRjaCwgYmVhcmluZ30gPSBrZXBsZXJTdGF0ZS5tYXBTdGF0ZSB8fCB7fTtcbiAgY29uc3QgaW5pdGlhbFZpZXdTdGF0ZSA9IHtcbiAgICBsb25naXR1ZGUsXG4gICAgbGF0aXR1ZGUsXG4gICAgem9vbSxcbiAgICBwaXRjaDogcGl0Y2ggfHwgMCxcbiAgICBiZWFyaW5nOiBiZWFyaW5nIHx8IDAsXG4gICAgbWluWm9vbTogR0xPQkVfTUlOX1pPT00sXG4gICAgbWF4Wm9vbTogR0xPQkVfTUFYX1pPT01cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIC4uLmdldEh1YmJsZVBhcmFtZXRlcnMoa2VwbGVyU3RhdGUpLFxuICAgICAgY3VsbDogdHJ1ZVxuICAgIH0sXG4gICAgLy8gTWF0Y2ggdGhlIGludGVyYWN0aXZlIGdsb2JlIGNvbnRyb2xsZXIgYm91bmRzIHNvIHBhbm5pbmcvem9vbSBmZWVscyB0aGVcbiAgICAvLyBzYW1lIGluIHRoZSBwcmV2aWV3IGFzIG9uIHRoZSBtYWluIG1hcC5cbiAgICBjb250cm9sbGVyOiB7XG4gICAgICBtaW5ab29tOiBHTE9CRV9NSU5fWk9PTSxcbiAgICAgIG1heFpvb206IEdMT0JFX01BWF9aT09NXG4gICAgfSxcbiAgICBpbml0aWFsVmlld1N0YXRlLFxuICAgIHZpZXdzOiBuZXcgS2VwbGVyR2xvYmVWaWV3KHtcbiAgICAgIHJlc29sdXRpb246IDUsXG4gICAgICAvLyBjbGVhckNvbG9yOmZhbHNlIChub3QgYSBzb2xpZCBjb2xvcikgaXMgZGVsaWJlcmF0ZSBhbmQgbWlycm9ycyB0aGVcbiAgICAgIC8vIGludGVyYWN0aXZlIG1hcDogZGVjay5nbCBhcHBsaWVzIGEgVmlldydzIGNsZWFyQ29sb3IgaW4gRVZFUlkgcGFzc1xuICAgICAgLy8gaW5jbHVkaW5nIHRoZSBwaWNraW5nIHBhc3MsIGZvcmNpbmcgYWxwaGEgdG8gMjU1LiBJbiB0aGUgcGlja2luZyBidWZmZXJcbiAgICAgIC8vIHRoZSBhbHBoYSBieXRlIGVuY29kZXMgdGhlIGxheWVyIGluZGV4LCBzbyBhIHNvbGlkIGNsZWFyIG1ha2VzIGRlY2suZ2xcbiAgICAgIC8vIGRlY29kZSBldmVyeSBwaXhlbCBhcyBhIG5vbi1leGlzdGVudCBsYXllciAoXCJQaWNrZWQgbm9uLWV4aXN0ZW50IGxheWVyLlxuICAgICAgLy8gSXMgcGlja2luZyBidWZmZXIgY29ycnVwdD9cIikgd2hlbmV2ZXIgdGhlIGNvbnRyb2xsZXIgcGlja3Mgb24gaG92ZXIuXG4gICAgICAvLyBTa2lwcGluZyB0aGUgY29sb3IgY2xlYXIga2VlcHMgdGhlIHBpY2tpbmcgYnVmZmVyJ3MgMCBhbHBoYSBpbnRhY3Q7IHRoZVxuICAgICAgLy8gc3BoZXJlIGl0c2VsZiBzdGF5cyBvcGFxdWUgdmlhIHRoZSBnbG9iZS1iYWNrZ3JvdW5kIFNvbGlkUG9seWdvbkxheWVyLlxuICAgICAgY2xlYXI6IHRydWUsXG4gICAgICBjbGVhckNvbG9yOiBmYWxzZVxuICAgIH0pLFxuICAgIGxheWVyczogWy4uLmdsb2JlQmFzZUxheWVycywgLi4uZGF0YUxheWVycywgLi4uZ2xvYmVUb3BMYXllcnNdXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgYSBmcmVzaCBzZXQgb2YgZ2xvYmUgbGF5ZXJzIChiYXNlICsgZGF0YSArIHRvcCkgZm9yIGEgZ2l2ZW4gc3BsaXQtbWFwXG4gKiBpbmRleC4gVXNlZCBieSB0aGUgc3dpcGUgZXhwb3J0IHByZXZpZXcsIHdoaWNoIG1vdW50cyB0d28gaW5kZXBlbmRlbnQgRGVja1xuICogaW5zdGFuY2VzOiBlYWNoIHNpZGUgbmVlZHMgaXRzIE9XTiBsYXllciBpbnN0YW5jZXMgKGRlY2suZ2wgTGF5ZXIgb2JqZWN0cyBhcmVcbiAqIHN0YXRlZnVsIGFuZCBib3VuZCB0byBhIHNpbmdsZSBEZWNrKSBhbmQgaXRzIG93biBgbWFwSW5kZXhgIHNvIHRoZSBzcGxpdC1tYXBcbiAqIGxheWVyIHZpc2liaWxpdHkgaXMgcmVzcGVjdGVkIG9uIGVhY2ggaGFsZiBvZiB0aGUgc3dpcGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHbG9iZUV4cG9ydExheWVycyhcbiAga2VwbGVyU3RhdGU6IEtlcGxlclN0YXRlLFxuICB7XG4gICAgbWFwSW5kZXgsXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgbWFwYm94QXBpVXJsLFxuICAgIHZpZXdTdGF0ZVxuICB9OiB7XG4gICAgbWFwSW5kZXg6IG51bWJlcjtcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gICAgdmlld1N0YXRlPzogTWFwVmlld1N0YXRlO1xuICB9XG4pIHtcbiAgY29uc3QgZ2xvYmUgPSBrZXBsZXJTdGF0ZS5tYXBTdGF0ZT8uZ2xvYmU7XG4gIGNvbnN0IGdsb2JlQmFzZUxheWVycyA9IGdldEdsb2JlQmFzZUxheWVycyh7XG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IG1hcGJveEFwaUFjY2Vzc1Rva2VuIHx8ICcnLFxuICAgIGdsb2JlLFxuICAgIG1hcFN0eWxlVHlwZToga2VwbGVyU3RhdGUubWFwU3R5bGU/LnN0eWxlVHlwZVxuICB9KTtcbiAgY29uc3QgZ2xvYmVUb3BMYXllcnMgPSBnZXRHbG9iZVRvcExheWVycyh7Z2xvYmV9KTtcbiAgLy8gU2FtZSBhcyBodWJibGUgY3JlYXRlS2VwbGVyTGF5ZXJzOiBmb2xkIHRoZSBhbmltYXRlZCBjYW1lcmEgaW50byBtYXBTdGF0ZSBzb1xuICAvLyB6b29tLWRlcGVuZGVudCBwcm9wcyAoc2NhdHRlcnBsb3QgcmFkaXVzU2NhbGUpIHVwZGF0ZSBlYWNoIGZyYW1lLlxuICBjb25zdCBkYXRhTGF5ZXJzID0gY29tcHV0ZURlY2tMYXllcnMoXG4gICAgdmlld1N0YXRlXG4gICAgICA/IHsuLi5rZXBsZXJTdGF0ZSwgbWFwU3RhdGU6IHsuLi5rZXBsZXJTdGF0ZS5tYXBTdGF0ZSwgLi4udmlld1N0YXRlfX1cbiAgICAgIDoga2VwbGVyU3RhdGUsXG4gICAge1xuICAgICAgbWFwSW5kZXgsXG4gICAgICBwcmltYXJ5TWFwOiBtYXBJbmRleCA9PT0gMCxcbiAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgbWFwYm94QXBpVXJsXG4gICAgfVxuICApO1xuICByZXR1cm4gWy4uLmdsb2JlQmFzZUxheWVycywgLi4uZGF0YUxheWVycywgLi4uZ2xvYmVUb3BMYXllcnNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5pbWF0YWJsZUZpbHRlcnMoa2VwbGVyU3RhdGU6IEtlcGxlclN0YXRlKTogVGltZVJhbmdlRmlsdGVyW10ge1xuICBjb25zdCBmaWx0ZXJzID0ga2VwbGVyU3RhdGUudmlzU3RhdGU/LmZpbHRlcnMgfHwgW107XG4gIHJldHVybiBmaWx0ZXJzLmZpbHRlcihcbiAgICAoZjogYW55KSA9PlxuICAgICAgZi50eXBlID09PSBGSUxURVJfVFlQRVMudGltZVJhbmdlICYmXG4gICAgICAoZi52aWV3ID09PSBGSUxURVJfVklFV19UWVBFUy5lbmxhcmdlZCB8fCBmLnN5bmNlZFdpdGhMYXllclRpbWVsaW5lKVxuICApO1xufVxuXG4vLyAtLS0gVmlkZW8gZXhwb3J0IHV0aWxpdGllcyAoaW5saW5lZCBmcm9tIEBodWJibGUuZ2wgaW50ZXJuYWxzKSAtLS1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlVG9WaWRlb0V4cG9ydChcbiAgdmlld1N0YXRlOiBNYXBWaWV3U3RhdGUsXG4gIGNvbnRhaW5lcjoge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfVxuKTogTWFwVmlld1N0YXRlICYge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfSB7XG4gIC8vIEluIGdsb2JlIG1vZGUgKGFuZCBhdCBleHRyZW1lIHpvb21zKSB0aGUgV2ViTWVyY2F0b3JWaWV3cG9ydCB1c2VkIGJlbG93IGNhblxuICAvLyBwcm9kdWNlIGEgbm9uLWludmVydGlibGUgcHJvamVjdGlvbiBtYXRyaXgsIG1ha2luZyBgdW5wcm9qZWN0YCB0aHJvdy4gVGhlXG4gIC8vIE1lcmNhdG9yIGZpdC1ib3VuZHMgcmVzY2FsaW5nIG9ubHkgbWFrZXMgc2Vuc2UgZm9yIHRoZSBmbGF0IE1hcFZpZXcgYW55d2F5LFxuICAvLyBzbyBmYWxsIGJhY2sgdG8gc2ltcGx5IHJlc2l6aW5nIHRoZSB2aWV3cG9ydCB0byB0aGUgZXhwb3J0IGNvbnRhaW5lci5cbiAgdHJ5IHtcbiAgICBjb25zdCB2aWV3cG9ydCA9IG5ldyBXZWJNZXJjYXRvclZpZXdwb3J0KHZpZXdTdGF0ZSk7XG4gICAgY29uc3QgbncgPSB2aWV3cG9ydC51bnByb2plY3QoWzAsIDBdKSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgIGNvbnN0IHNlID0gdmlld3BvcnQudW5wcm9qZWN0KFt2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0XSkgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICBjb25zdCB2aWRlb1ZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQoe1xuICAgICAgLi4udmlld1N0YXRlLFxuICAgICAgd2lkdGg6IGNvbnRhaW5lci53aWR0aCxcbiAgICAgIGhlaWdodDogY29udGFpbmVyLmhlaWdodFxuICAgIH0pLmZpdEJvdW5kcyhbbncsIHNlXSk7XG4gICAgY29uc3Qge2hlaWdodCwgd2lkdGgsIGxhdGl0dWRlLCBsb25naXR1ZGUsIHpvb20sIGFsdGl0dWRlfSA9IHZpZGVvVmlld3BvcnQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodCxcbiAgICAgIHdpZHRoLFxuICAgICAgbGF0aXR1ZGUsXG4gICAgICBsb25naXR1ZGUsXG4gICAgICBwaXRjaDogdmlld1N0YXRlLnBpdGNoLFxuICAgICAgem9vbSxcbiAgICAgIGJlYXJpbmc6IHZpZXdTdGF0ZS5iZWFyaW5nLFxuICAgICAgYWx0aXR1ZGVcbiAgICB9IGFzIGFueTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi52aWV3U3RhdGUsXG4gICAgICB3aWR0aDogY29udGFpbmVyLndpZHRoLFxuICAgICAgaGVpZ2h0OiBjb250YWluZXIuaGVpZ2h0XG4gICAgfSBhcyBhbnk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2V0Q2FtZXJhVHlwZShzdHJDYW1lcmFUeXBlOiBzdHJpbmcsIHZpZXdTdGF0ZTogTWFwVmlld1N0YXRlKTogTWFwVmlld1N0YXRlIHtcbiAgY29uc3QgbW9kaWZpZWRWaWV3U3RhdGU6IGFueSA9IHsuLi52aWV3U3RhdGV9O1xuICBjb25zdCBtYXRjaCA9IHN0ckNhbWVyYVR5cGUubWF0Y2goL1xcYig/IXRvKVxcYlxcUytcXHcvZyk7XG4gIGlmICghbWF0Y2gpIHJldHVybiBtb2RpZmllZFZpZXdTdGF0ZTtcblxuICBjb25zdCB0dXJmUG9pbnQgPSBwb2ludChbbW9kaWZpZWRWaWV3U3RhdGUubG9uZ2l0dWRlLCBtb2RpZmllZFZpZXdTdGF0ZS5sYXRpdHVkZV0pO1xuXG4gIGlmIChtYXRjaFswXSA9PT0gJ09yYml0Jykge1xuICAgIG1vZGlmaWVkVmlld1N0YXRlLmJlYXJpbmcgPSBtb2RpZmllZFZpZXdTdGF0ZS5iZWFyaW5nICsgcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgfVxuXG4gIGNvbnN0IGRpcmVjdGlvbnMgPSBuZXcgU2V0KFsnRWFzdCcsICdTb3V0aCcsICdXZXN0JywgJ05vcnRoJ10pO1xuICBpZiAoZGlyZWN0aW9ucy5oYXMobWF0Y2hbMF0pKSB7XG4gICAgY29uc3QgZGlyZWN0aW9uTWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge0Vhc3Q6IDI3MCwgU291dGg6IDAsIFdlc3Q6IDkwLCBOb3J0aDogMTgwfTtcbiAgICBjb25zdCB0cmFuc2xhdGVkUG9seSA9IHRyYW5zZm9ybVRyYW5zbGF0ZSh0dXJmUG9pbnQsIDEwLCBkaXJlY3Rpb25NYXBbbWF0Y2hbMF1dKTtcbiAgICBpZiAobWF0Y2hbMF0gPT09ICdFYXN0JyB8fCBtYXRjaFswXSA9PT0gJ1dlc3QnKSB7XG4gICAgICBtb2RpZmllZFZpZXdTdGF0ZS5sb25naXR1ZGUgPSB0cmFuc2xhdGVkUG9seS5nZW9tZXRyeS5jb29yZGluYXRlc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW9kaWZpZWRWaWV3U3RhdGUubGF0aXR1ZGUgPSB0cmFuc2xhdGVkUG9seS5nZW9tZXRyeS5jb29yZGluYXRlc1sxXTtcbiAgICB9XG4gIH1cblxuICBpZiAobWF0Y2hbMF0gPT09ICdab29tJykge1xuICAgIG1vZGlmaWVkVmlld1N0YXRlLnpvb20gKz0gbWF0Y2hbMV0gPT09ICdJbicgPyAzIDogLTM7XG4gIH1cblxuICByZXR1cm4gbW9kaWZpZWRWaWV3U3RhdGU7XG59XG5cbnR5cGUgUmVzb2x1dGlvbiA9IHt2YWx1ZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn07XG5cbmNvbnN0IFJFU09MVVRJT05TOiBSZXNvbHV0aW9uW10gPSBbXG4gIHt2YWx1ZTogJzk2MHg1NDAnLCBsYWJlbDogJ0dvb2QgKDU0MHApJywgd2lkdGg6IDk2MCwgaGVpZ2h0OiA1NDB9LFxuICB7dmFsdWU6ICcxMjgweDcyMCcsIGxhYmVsOiAnSGlnaCAoNzIwcCknLCB3aWR0aDogMTI4MCwgaGVpZ2h0OiA3MjB9LFxuICB7dmFsdWU6ICcxOTIweDEwODAnLCBsYWJlbDogJ0hpZ2hlc3QgKDEwODBwKScsIHdpZHRoOiAxOTIwLCBoZWlnaHQ6IDEwODB9LFxuICB7dmFsdWU6ICc2NDB4NDgwJywgbGFiZWw6ICdHb29kICg0ODBwKScsIHdpZHRoOiA2NDAsIGhlaWdodDogNDgwfSxcbiAge3ZhbHVlOiAnMTI4MHg5NjAnLCBsYWJlbDogJ0hpZ2ggKDk2MHApJywgd2lkdGg6IDEyODAsIGhlaWdodDogOTYwfSxcbiAge3ZhbHVlOiAnMTkyMHgxNDQwJywgbGFiZWw6ICdIaWdoZXN0ICgxNDQwcCknLCB3aWR0aDogMTkyMCwgaGVpZ2h0OiAxNDQwfVxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc29sdXRpb25TZXR0aW5nKHZhbHVlOiBzdHJpbmcpOiBSZXNvbHV0aW9uIHtcbiAgcmV0dXJuIFJFU09MVVRJT05TLmZpbmQociA9PiByLnZhbHVlID09PSB2YWx1ZSkgfHwgUkVTT0xVVElPTlNbMF07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7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
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.compositeSwipeFrame = compositeSwipeFrame;
|
|
7
7
|
exports.getSwipePercentageAtTime = getSwipePercentageAtTime;
|
|
8
8
|
var _popmotion = require("popmotion");
|
|
9
|
+
var _deckglLayers = require("@kepler.gl/deckgl-layers");
|
|
9
10
|
// SPDX-License-Identifier: MIT
|
|
10
11
|
// Copyright contributors to the kepler.gl project
|
|
11
12
|
|
|
@@ -83,6 +84,7 @@ function drawSwipeDivider(ctx, splitX, height) {
|
|
|
83
84
|
function compositeSwipeFrame(leftCanvas, rightCanvas, outputCanvas, percentage) {
|
|
84
85
|
var showDivider = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
85
86
|
var backgroundColor = arguments.length > 5 ? arguments[5] : undefined;
|
|
87
|
+
var showStars = arguments.length > 6 ? arguments[6] : undefined;
|
|
86
88
|
var ctx = outputCanvas.getContext('2d');
|
|
87
89
|
if (!ctx) return;
|
|
88
90
|
var w = outputCanvas.width;
|
|
@@ -99,6 +101,12 @@ function compositeSwipeFrame(leftCanvas, rightCanvas, outputCanvas, percentage)
|
|
|
99
101
|
ctx.fillRect(0, 0, w, h);
|
|
100
102
|
}
|
|
101
103
|
|
|
104
|
+
// Stars are a CSS background on the live globe map, so they must be tiled
|
|
105
|
+
// onto the composite canvas or they won't appear in preview or export.
|
|
106
|
+
if (showStars) {
|
|
107
|
+
(0, _deckglLayers.drawStarsBackground)(ctx, w, h);
|
|
108
|
+
}
|
|
109
|
+
|
|
102
110
|
// Draw right (background) canvas fully
|
|
103
111
|
ctx.drawImage(rightCanvas, 0, 0, w, h);
|
|
104
112
|
|
|
@@ -115,4 +123,4 @@ function compositeSwipeFrame(leftCanvas, rightCanvas, outputCanvas, percentage)
|
|
|
115
123
|
drawSwipeDivider(ctx, splitX, h);
|
|
116
124
|
}
|
|
117
125
|
}
|
|
118
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcG9wbW90aW9uIiwicmVxdWlyZSIsImxpbmVhciIsInAiLCJFQVNJTkdfTUFQIiwiZWFzZUluT3V0IiwiZ2V0U3dpcGVQZXJjZW50YWdlQXRUaW1lIiwidGltZU1zIiwiZHVyYXRpb25NcyIsInN0YXJ0UGN0IiwiZW5kUGN0IiwiZWFzaW5nIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwicHJvZ3Jlc3MiLCJNYXRoIiwibWF4IiwibWluIiwiZWFzZWRQcm9ncmVzcyIsIkhBTkRMRV9SQURJVVMiLCJBUlJPV19TSVpFIiwiZHJhd1N3aXBlRGl2aWRlciIsImN0eCIsInNwbGl0WCIsImhlaWdodCIsInNhdmUiLCJzdHJva2VTdHlsZSIsImxpbmVXaWR0aCIsInNoYWRvd0NvbG9yIiwic2hhZG93Qmx1ciIsImJlZ2luUGF0aCIsIm1vdmVUbyIsImxpbmVUbyIsInN0cm9rZSIsImN5IiwiYXJjIiwiUEkiLCJmaWxsU3R5bGUiLCJmaWxsIiwiY2xvc2VQYXRoIiwicmVzdG9yZSIsImNvbXBvc2l0ZVN3aXBlRnJhbWUiLCJsZWZ0Q2FudmFzIiwicmlnaHRDYW52YXMiLCJvdXRwdXRDYW52YXMiLCJwZXJjZW50YWdlIiwic2hvd0RpdmlkZXIiLCJiYWNrZ3JvdW5kQ29sb3IiLCJnZXRDb250ZXh0IiwidyIsIndpZHRoIiwiaCIsInJvdW5kIiwiY2xlYXJSZWN0IiwiZmlsbFJlY3QiLCJkcmF3SW1hZ2UiLCJyZWN0IiwiY2xpcCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvc3dpcGUtY29tcG9zaXRlLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7ZWFzZUluT3V0fSBmcm9tICdwb3Btb3Rpb24nO1xuXG5leHBvcnQgdHlwZSBTd2lwZUVhc2luZyA9ICdsaW5lYXInIHwgJ2Vhc2UtaW4tb3V0JztcblxuY29uc3QgbGluZWFyID0gKHA6IG51bWJlcik6IG51bWJlciA9PiBwO1xuY29uc3QgRUFTSU5HX01BUDogUmVjb3JkPFN3aXBlRWFzaW5nLCAocDogbnVtYmVyKSA9PiBudW1iZXI+ID0ge1xuICBsaW5lYXIsXG4gICdlYXNlLWluLW91dCc6IGVhc2VJbk91dFxufTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBzd2lwZSBwZXJjZW50YWdlIGF0IGEgZ2l2ZW4gdGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN3aXBlUGVyY2VudGFnZUF0VGltZShcbiAgdGltZU1zOiBudW1iZXIsXG4gIGR1cmF0aW9uTXM6IG51bWJlcixcbiAgc3RhcnRQY3Q6IG51bWJlcixcbiAgZW5kUGN0OiBudW1iZXIsXG4gIGVhc2luZzogU3dpcGVFYXNpbmcgPSAnZWFzZS1pbi1vdXQnXG4pOiBudW1iZXIge1xuICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHRpbWVNcyAvIGR1cmF0aW9uTXMpKTtcbiAgY29uc3QgZWFzZWRQcm9ncmVzcyA9IEVBU0lOR19NQVBbZWFzaW5nXShwcm9ncmVzcyk7XG4gIHJldHVybiBzdGFydFBjdCArIChlbmRQY3QgLSBzdGFydFBjdCkgKiBlYXNlZFByb2dyZXNzO1xufVxuXG5jb25zdCBIQU5ETEVfUkFESVVTID0gMTQ7XG5jb25zdCBBUlJPV19TSVpFID0gNjtcblxuLyoqXG4gKiBEcmF3IGEgc3dpcGUgZGl2aWRlciAobGluZSArIGNpcmN1bGFyIGhhbmRsZSB3aXRoIGFycm93cykgb250byBhIDJEIGNhbnZhcyBjb250ZXh0LlxuICovXG5mdW5jdGlvbiBkcmF3U3dpcGVEaXZpZGVyKFxuICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgc3BsaXRYOiBudW1iZXIsXG4gIGhlaWdodDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgY3R4LnNhdmUoKTtcblxuICAvLyBEaXZpZGVyIGxpbmVcbiAgY3R4LnN0cm9rZVN0eWxlID0gJyNGRkZGRkYnO1xuICBjdHgubGluZVdpZHRoID0gMjtcbiAgY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMCwgMCwgMCwgMC41KSc7XG4gIGN0eC5zaGFkb3dCbHVyID0gNDtcbiAgY3R4LmJlZ2luUGF0aCgpO1xuICBjdHgubW92ZVRvKHNwbGl0WCwgMCk7XG4gIGN0eC5saW5lVG8oc3BsaXRYLCBoZWlnaHQpO1xuICBjdHguc3Ryb2tlKCk7XG5cbiAgLy8gSGFuZGxlIGNpcmNsZVxuICBjb25zdCBjeSA9IGhlaWdodCAvIDI7XG4gIGN0eC5zaGFkb3dCbHVyID0gNjtcbiAgY3R4LmJlZ2luUGF0aCgpO1xuICBjdHguYXJjKHNwbGl0WCwgY3ksIEhBTkRMRV9SQURJVVMsIDAsIE1hdGguUEkgKiAyKTtcbiAgY3R4LmZpbGxTdHlsZSA9ICcjMjkzMjNDJztcbiAgY3R4LmZpbGwoKTtcbiAgY3R4LnN0cm9rZVN0eWxlID0gJyNGRkZGRkYnO1xuICBjdHgubGluZVdpZHRoID0gMjtcbiAgY3R4LnN0cm9rZSgpO1xuICBjdHguc2hhZG93Qmx1ciA9IDA7XG5cbiAgLy8gTGVmdCBhcnJvd1xuICBjdHguZmlsbFN0eWxlID0gJyNGRkZGRkYnO1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5tb3ZlVG8oc3BsaXRYIC0gQVJST1dfU0laRSAtIDMsIGN5KTtcbiAgY3R4LmxpbmVUbyhzcGxpdFggLSAzLCBjeSAtIEFSUk9XX1NJWkUpO1xuICBjdHgubGluZVRvKHNwbGl0WCAtIDMsIGN5ICsgQVJST1dfU0laRSk7XG4gIGN0eC5jbG9zZVBhdGgoKTtcbiAgY3R4LmZpbGwoKTtcblxuICAvLyBSaWdodCBhcnJvd1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5tb3ZlVG8oc3BsaXRYICsgQVJST1dfU0laRSArIDMsIGN5KTtcbiAgY3R4LmxpbmVUbyhzcGxpdFggKyAzLCBjeSAtIEFSUk9XX1NJWkUpO1xuICBjdHgubGluZVRvKHNwbGl0WCArIDMsIGN5ICsgQVJST1dfU0laRSk7XG4gIGN0eC5jbG9zZVBhdGgoKTtcbiAgY3R4LmZpbGwoKTtcblxuICBjdHgucmVzdG9yZSgpO1xufVxuXG4vKipcbiAqIENvbXBvc2l0ZSB0d28gY2FudmFzZXMgKGxlZnQvcmlnaHQgbWFwIHZpZXdzKSB3aXRoIGEgc3dpcGUgZGl2aWRlclxuICogaW50byBhIHNpbmdsZSBvdXRwdXQgY2FudmFzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zaXRlU3dpcGVGcmFtZShcbiAgbGVmdENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQsXG4gIHJpZ2h0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCxcbiAgb3V0cHV0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCxcbiAgcGVyY2VudGFnZTogbnVtYmVyLFxuICBzaG93RGl2aWRlcjogYm9vbGVhbiA9IHRydWUsXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGN0eCA9IG91dHB1dENhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBpZiAoIWN0eCkgcmV0dXJuO1xuXG4gIGNvbnN0IHcgPSBvdXRwdXRDYW52YXMud2lkdGg7XG4gIGNvbnN0IGggPSBvdXRwdXRDYW52YXMuaGVpZ2h0O1xuICBjb25zdCBzcGxpdFggPSBNYXRoLnJvdW5kKCh3ICogcGVyY2VudGFnZSkgLyAxMDApO1xuXG4gIGN0eC5jbGVhclJlY3QoMCwgMCwgdywgaCk7XG5cbiAgLy8gSW4gZ2xvYmUgbW9kZSB0aGUgZGVjayBjYW52YXNlcyBhcmUgdHJhbnNwYXJlbnQgd2hlcmUgdGhlIGdsb2JlIGlzbid0XG4gIC8vIGRyYXduIChjbGVhckNvbG9yIGlzIGRpc2FibGVkIHRvIGtlZXAgcGlja2luZyBpbnRhY3QpLCBzbyBwYWludCB0aGVcbiAgLy8gY29uZmlndXJlZCBiYWNrZ3JvdW5kIGZpcnN0LiBOb24tZ2xvYmUgc3dpcGUgcGFzc2VzIG5vIGNvbG9yIGFuZCBrZWVwcyB0aGVcbiAgLy8gcHJldmlvdXMgdHJhbnNwYXJlbnQtY2xlYXIgYmVoYXZpb3IgKHRoZSBiYXNlIG1hcCBpcyBhbHJlYWR5IG9wYXF1ZSkuXG4gIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICBjdHguZmlsbFN0eWxlID0gYmFja2dyb3VuZENvbG9yO1xuICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3LCBoKTtcbiAgfVxuXG4gIC8vIERyYXcgcmlnaHQgKGJhY2tncm91bmQpIGNhbnZhcyBmdWxseVxuICBjdHguZHJhd0ltYWdlKHJpZ2h0Q2FudmFzLCAwLCAwLCB3LCBoKTtcblxuICAvLyBEcmF3IGxlZnQgKGZvcmVncm91bmQpIGNhbnZhcyBjbGlwcGVkIHRvIDAuLnNwbGl0WFxuICBjdHguc2F2ZSgpO1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5yZWN0KDAsIDAsIHNwbGl0WCwgaCk7XG4gIGN0eC5jbGlwKCk7XG4gIGN0eC5kcmF3SW1hZ2UobGVmdENhbnZhcywgMCwgMCwgdywgaCk7XG4gIGN0eC5yZXN0b3JlKCk7XG5cbiAgLy8gRHJhdyB0aGUgZGl2aWRlclxuICBpZiAoc2hvd0RpdmlkZXIpIHtcbiAgICBkcmF3U3dpcGVEaXZpZGVyKGN0eCwgc3BsaXRYLCBoKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBR0EsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBSEE7QUFDQTs7QUFNQSxJQUFNQyxNQUFNLEdBQUcsU0FBVEEsTUFBTUEsQ0FBSUMsQ0FBUztFQUFBLE9BQWFBLENBQUM7QUFBQTtBQUN2QyxJQUFNQyxVQUFzRCxHQUFHO0VBQzdERixNQUFNLEVBQU5BLE1BQU07RUFDTixhQUFhLEVBQUVHO0FBQ2pCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ08sU0FBU0Msd0JBQXdCQSxDQUN0Q0MsTUFBYyxFQUNkQyxVQUFrQixFQUNsQkMsUUFBZ0IsRUFDaEJDLE1BQWMsRUFFTjtFQUFBLElBRFJDLE1BQW1CLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLGFBQWE7RUFFbkMs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
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcG9wbW90aW9uIiwicmVxdWlyZSIsIl9kZWNrZ2xMYXllcnMiLCJsaW5lYXIiLCJwIiwiRUFTSU5HX01BUCIsImVhc2VJbk91dCIsImdldFN3aXBlUGVyY2VudGFnZUF0VGltZSIsInRpbWVNcyIsImR1cmF0aW9uTXMiLCJzdGFydFBjdCIsImVuZFBjdCIsImVhc2luZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInByb2dyZXNzIiwiTWF0aCIsIm1heCIsIm1pbiIsImVhc2VkUHJvZ3Jlc3MiLCJIQU5ETEVfUkFESVVTIiwiQVJST1dfU0laRSIsImRyYXdTd2lwZURpdmlkZXIiLCJjdHgiLCJzcGxpdFgiLCJoZWlnaHQiLCJzYXZlIiwic3Ryb2tlU3R5bGUiLCJsaW5lV2lkdGgiLCJzaGFkb3dDb2xvciIsInNoYWRvd0JsdXIiLCJiZWdpblBhdGgiLCJtb3ZlVG8iLCJsaW5lVG8iLCJzdHJva2UiLCJjeSIsImFyYyIsIlBJIiwiZmlsbFN0eWxlIiwiZmlsbCIsImNsb3NlUGF0aCIsInJlc3RvcmUiLCJjb21wb3NpdGVTd2lwZUZyYW1lIiwibGVmdENhbnZhcyIsInJpZ2h0Q2FudmFzIiwib3V0cHV0Q2FudmFzIiwicGVyY2VudGFnZSIsInNob3dEaXZpZGVyIiwiYmFja2dyb3VuZENvbG9yIiwic2hvd1N0YXJzIiwiZ2V0Q29udGV4dCIsInciLCJ3aWR0aCIsImgiLCJyb3VuZCIsImNsZWFyUmVjdCIsImZpbGxSZWN0IiwiZHJhd1N0YXJzQmFja2dyb3VuZCIsImRyYXdJbWFnZSIsInJlY3QiLCJjbGlwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGFscy9zd2lwZS1jb21wb3NpdGUtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtlYXNlSW5PdXR9IGZyb20gJ3BvcG1vdGlvbic7XG5pbXBvcnQge2RyYXdTdGFyc0JhY2tncm91bmR9IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5cbmV4cG9ydCB0eXBlIFN3aXBlRWFzaW5nID0gJ2xpbmVhcicgfCAnZWFzZS1pbi1vdXQnO1xuXG5jb25zdCBsaW5lYXIgPSAocDogbnVtYmVyKTogbnVtYmVyID0+IHA7XG5jb25zdCBFQVNJTkdfTUFQOiBSZWNvcmQ8U3dpcGVFYXNpbmcsIChwOiBudW1iZXIpID0+IG51bWJlcj4gPSB7XG4gIGxpbmVhcixcbiAgJ2Vhc2UtaW4tb3V0JzogZWFzZUluT3V0XG59O1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIHN3aXBlIHBlcmNlbnRhZ2UgYXQgYSBnaXZlbiB0aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3dpcGVQZXJjZW50YWdlQXRUaW1lKFxuICB0aW1lTXM6IG51bWJlcixcbiAgZHVyYXRpb25NczogbnVtYmVyLFxuICBzdGFydFBjdDogbnVtYmVyLFxuICBlbmRQY3Q6IG51bWJlcixcbiAgZWFzaW5nOiBTd2lwZUVhc2luZyA9ICdlYXNlLWluLW91dCdcbik6IG51bWJlciB7XG4gIGNvbnN0IHByb2dyZXNzID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgdGltZU1zIC8gZHVyYXRpb25NcykpO1xuICBjb25zdCBlYXNlZFByb2dyZXNzID0gRUFTSU5HX01BUFtlYXNpbmddKHByb2dyZXNzKTtcbiAgcmV0dXJuIHN0YXJ0UGN0ICsgKGVuZFBjdCAtIHN0YXJ0UGN0KSAqIGVhc2VkUHJvZ3Jlc3M7XG59XG5cbmNvbnN0IEhBTkRMRV9SQURJVVMgPSAxNDtcbmNvbnN0IEFSUk9XX1NJWkUgPSA2O1xuXG4vKipcbiAqIERyYXcgYSBzd2lwZSBkaXZpZGVyIChsaW5lICsgY2lyY3VsYXIgaGFuZGxlIHdpdGggYXJyb3dzKSBvbnRvIGEgMkQgY2FudmFzIGNvbnRleHQuXG4gKi9cbmZ1bmN0aW9uIGRyYXdTd2lwZURpdmlkZXIoXG4gIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICBzcGxpdFg6IG51bWJlcixcbiAgaGVpZ2h0OiBudW1iZXJcbik6IHZvaWQge1xuICBjdHguc2F2ZSgpO1xuXG4gIC8vIERpdmlkZXIgbGluZVxuICBjdHguc3Ryb2tlU3R5bGUgPSAnI0ZGRkZGRic7XG4gIGN0eC5saW5lV2lkdGggPSAyO1xuICBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgwLCAwLCAwLCAwLjUpJztcbiAgY3R4LnNoYWRvd0JsdXIgPSA0O1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5tb3ZlVG8oc3BsaXRYLCAwKTtcbiAgY3R4LmxpbmVUbyhzcGxpdFgsIGhlaWdodCk7XG4gIGN0eC5zdHJva2UoKTtcblxuICAvLyBIYW5kbGUgY2lyY2xlXG4gIGNvbnN0IGN5ID0gaGVpZ2h0IC8gMjtcbiAgY3R4LnNoYWRvd0JsdXIgPSA2O1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5hcmMoc3BsaXRYLCBjeSwgSEFORExFX1JBRElVUywgMCwgTWF0aC5QSSAqIDIpO1xuICBjdHguZmlsbFN0eWxlID0gJyMyOTMyM0MnO1xuICBjdHguZmlsbCgpO1xuICBjdHguc3Ryb2tlU3R5bGUgPSAnI0ZGRkZGRic7XG4gIGN0eC5saW5lV2lkdGggPSAyO1xuICBjdHguc3Ryb2tlKCk7XG4gIGN0eC5zaGFkb3dCbHVyID0gMDtcblxuICAvLyBMZWZ0IGFycm93XG4gIGN0eC5maWxsU3R5bGUgPSAnI0ZGRkZGRic7XG4gIGN0eC5iZWdpblBhdGgoKTtcbiAgY3R4Lm1vdmVUbyhzcGxpdFggLSBBUlJPV19TSVpFIC0gMywgY3kpO1xuICBjdHgubGluZVRvKHNwbGl0WCAtIDMsIGN5IC0gQVJST1dfU0laRSk7XG4gIGN0eC5saW5lVG8oc3BsaXRYIC0gMywgY3kgKyBBUlJPV19TSVpFKTtcbiAgY3R4LmNsb3NlUGF0aCgpO1xuICBjdHguZmlsbCgpO1xuXG4gIC8vIFJpZ2h0IGFycm93XG4gIGN0eC5iZWdpblBhdGgoKTtcbiAgY3R4Lm1vdmVUbyhzcGxpdFggKyBBUlJPV19TSVpFICsgMywgY3kpO1xuICBjdHgubGluZVRvKHNwbGl0WCArIDMsIGN5IC0gQVJST1dfU0laRSk7XG4gIGN0eC5saW5lVG8oc3BsaXRYICsgMywgY3kgKyBBUlJPV19TSVpFKTtcbiAgY3R4LmNsb3NlUGF0aCgpO1xuICBjdHguZmlsbCgpO1xuXG4gIGN0eC5yZXN0b3JlKCk7XG59XG5cbi8qKlxuICogQ29tcG9zaXRlIHR3byBjYW52YXNlcyAobGVmdC9yaWdodCBtYXAgdmlld3MpIHdpdGggYSBzd2lwZSBkaXZpZGVyXG4gKiBpbnRvIGEgc2luZ2xlIG91dHB1dCBjYW52YXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NpdGVTd2lwZUZyYW1lKFxuICBsZWZ0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCxcbiAgcmlnaHRDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50LFxuICBvdXRwdXRDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50LFxuICBwZXJjZW50YWdlOiBudW1iZXIsXG4gIHNob3dEaXZpZGVyOiBib29sZWFuID0gdHJ1ZSxcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nLFxuICBzaG93U3RhcnM/OiBib29sZWFuXG4pOiB2b2lkIHtcbiAgY29uc3QgY3R4ID0gb3V0cHV0Q2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gIGlmICghY3R4KSByZXR1cm47XG5cbiAgY29uc3QgdyA9IG91dHB1dENhbnZhcy53aWR0aDtcbiAgY29uc3QgaCA9IG91dHB1dENhbnZhcy5oZWlnaHQ7XG4gIGNvbnN0IHNwbGl0WCA9IE1hdGgucm91bmQoKHcgKiBwZXJjZW50YWdlKSAvIDEwMCk7XG5cbiAgY3R4LmNsZWFyUmVjdCgwLCAwLCB3LCBoKTtcblxuICAvLyBJbiBnbG9iZSBtb2RlIHRoZSBkZWNrIGNhbnZhc2VzIGFyZSB0cmFuc3BhcmVudCB3aGVyZSB0aGUgZ2xvYmUgaXNuJ3RcbiAgLy8gZHJhd24gKGNsZWFyQ29sb3IgaXMgZGlzYWJsZWQgdG8ga2VlcCBwaWNraW5nIGludGFjdCksIHNvIHBhaW50IHRoZVxuICAvLyBjb25maWd1cmVkIGJhY2tncm91bmQgZmlyc3QuIE5vbi1nbG9iZSBzd2lwZSBwYXNzZXMgbm8gY29sb3IgYW5kIGtlZXBzIHRoZVxuICAvLyBwcmV2aW91cyB0cmFuc3BhcmVudC1jbGVhciBiZWhhdmlvciAodGhlIGJhc2UgbWFwIGlzIGFscmVhZHkgb3BhcXVlKS5cbiAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgIGN0eC5maWxsU3R5bGUgPSBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIHcsIGgpO1xuICB9XG5cbiAgLy8gU3RhcnMgYXJlIGEgQ1NTIGJhY2tncm91bmQgb24gdGhlIGxpdmUgZ2xvYmUgbWFwLCBzbyB0aGV5IG11c3QgYmUgdGlsZWRcbiAgLy8gb250byB0aGUgY29tcG9zaXRlIGNhbnZhcyBvciB0aGV5IHdvbid0IGFwcGVhciBpbiBwcmV2aWV3IG9yIGV4cG9ydC5cbiAgaWYgKHNob3dTdGFycykge1xuICAgIGRyYXdTdGFyc0JhY2tncm91bmQoY3R4LCB3LCBoKTtcbiAgfVxuXG4gIC8vIERyYXcgcmlnaHQgKGJhY2tncm91bmQpIGNhbnZhcyBmdWxseVxuICBjdHguZHJhd0ltYWdlKHJpZ2h0Q2FudmFzLCAwLCAwLCB3LCBoKTtcblxuICAvLyBEcmF3IGxlZnQgKGZvcmVncm91bmQpIGNhbnZhcyBjbGlwcGVkIHRvIDAuLnNwbGl0WFxuICBjdHguc2F2ZSgpO1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5yZWN0KDAsIDAsIHNwbGl0WCwgaCk7XG4gIGN0eC5jbGlwKCk7XG4gIGN0eC5kcmF3SW1hZ2UobGVmdENhbnZhcywgMCwgMCwgdywgaCk7XG4gIGN0eC5yZXN0b3JlKCk7XG5cbiAgLy8gRHJhdyB0aGUgZGl2aWRlclxuICBpZiAoc2hvd0RpdmlkZXIpIHtcbiAgICBkcmF3U3dpcGVEaXZpZGVyKGN0eCwgc3BsaXRYLCBoKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7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
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _deckglLayers = require("@kepler.gl/deckgl-layers");
|
|
4
|
+
var _swipeCompositeUtils = require("./swipe-composite-utils");
|
|
5
|
+
// SPDX-License-Identifier: MIT
|
|
6
|
+
// Copyright contributors to the kepler.gl project
|
|
7
|
+
|
|
8
|
+
jest.mock('@kepler.gl/deckgl-layers', function () {
|
|
9
|
+
return {
|
|
10
|
+
drawStarsBackground: jest.fn()
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
function mockCanvas(width, height, ctx) {
|
|
14
|
+
return {
|
|
15
|
+
width: width,
|
|
16
|
+
height: height,
|
|
17
|
+
getContext: function getContext() {
|
|
18
|
+
return ctx;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function mockCompositeCtx() {
|
|
23
|
+
return {
|
|
24
|
+
clearRect: jest.fn(),
|
|
25
|
+
fillRect: jest.fn(),
|
|
26
|
+
drawImage: jest.fn(),
|
|
27
|
+
save: jest.fn(),
|
|
28
|
+
restore: jest.fn(),
|
|
29
|
+
beginPath: jest.fn(),
|
|
30
|
+
rect: jest.fn(),
|
|
31
|
+
clip: jest.fn(),
|
|
32
|
+
fillStyle: '',
|
|
33
|
+
strokeStyle: '',
|
|
34
|
+
lineWidth: 0,
|
|
35
|
+
shadowColor: '',
|
|
36
|
+
shadowBlur: 0,
|
|
37
|
+
moveTo: jest.fn(),
|
|
38
|
+
lineTo: jest.fn(),
|
|
39
|
+
stroke: jest.fn(),
|
|
40
|
+
arc: jest.fn(),
|
|
41
|
+
fill: jest.fn(),
|
|
42
|
+
closePath: jest.fn()
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
describe('compositeSwipeFrame', function () {
|
|
46
|
+
afterEach(function () {
|
|
47
|
+
jest.clearAllMocks();
|
|
48
|
+
});
|
|
49
|
+
test('tiles stars after the globe background color when showStars is true', function () {
|
|
50
|
+
var ctx = mockCompositeCtx();
|
|
51
|
+
var left = mockCanvas(10, 10, ctx);
|
|
52
|
+
var right = mockCanvas(10, 10, ctx);
|
|
53
|
+
var output = mockCanvas(100, 50, ctx);
|
|
54
|
+
(0, _swipeCompositeUtils.compositeSwipeFrame)(left, right, output, 50, false, 'rgb(1, 2, 3)', true);
|
|
55
|
+
expect(ctx.fillStyle).toBe('rgb(1, 2, 3)');
|
|
56
|
+
expect(ctx.fillRect).toHaveBeenCalledWith(0, 0, 100, 50);
|
|
57
|
+
expect(_deckglLayers.drawStarsBackground).toHaveBeenCalledWith(ctx, 100, 50);
|
|
58
|
+
expect(ctx.fillRect.mock.invocationCallOrder[0]).toBeLessThan(_deckglLayers.drawStarsBackground.mock.invocationCallOrder[0]);
|
|
59
|
+
});
|
|
60
|
+
test('does not draw stars when showStars is omitted', function () {
|
|
61
|
+
var ctx = mockCompositeCtx();
|
|
62
|
+
var left = mockCanvas(10, 10, ctx);
|
|
63
|
+
var right = mockCanvas(10, 10, ctx);
|
|
64
|
+
var output = mockCanvas(100, 50, ctx);
|
|
65
|
+
(0, _swipeCompositeUtils.compositeSwipeFrame)(left, right, output, 50, false, 'rgb(1, 2, 3)');
|
|
66
|
+
expect(_deckglLayers.drawStarsBackground).not.toHaveBeenCalled();
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVja2dsTGF5ZXJzIiwicmVxdWlyZSIsIl9zd2lwZUNvbXBvc2l0ZVV0aWxzIiwiamVzdCIsIm1vY2siLCJkcmF3U3RhcnNCYWNrZ3JvdW5kIiwiZm4iLCJtb2NrQ2FudmFzIiwid2lkdGgiLCJoZWlnaHQiLCJjdHgiLCJnZXRDb250ZXh0IiwibW9ja0NvbXBvc2l0ZUN0eCIsImNsZWFyUmVjdCIsImZpbGxSZWN0IiwiZHJhd0ltYWdlIiwic2F2ZSIsInJlc3RvcmUiLCJiZWdpblBhdGgiLCJyZWN0IiwiY2xpcCIsImZpbGxTdHlsZSIsInN0cm9rZVN0eWxlIiwibGluZVdpZHRoIiwic2hhZG93Q29sb3IiLCJzaGFkb3dCbHVyIiwibW92ZVRvIiwibGluZVRvIiwic3Ryb2tlIiwiYXJjIiwiZmlsbCIsImNsb3NlUGF0aCIsImRlc2NyaWJlIiwiYWZ0ZXJFYWNoIiwiY2xlYXJBbGxNb2NrcyIsInRlc3QiLCJsZWZ0IiwicmlnaHQiLCJvdXRwdXQiLCJjb21wb3NpdGVTd2lwZUZyYW1lIiwiZXhwZWN0IiwidG9CZSIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiaW52b2NhdGlvbkNhbGxPcmRlciIsInRvQmVMZXNzVGhhbiIsIm5vdCIsInRvSGF2ZUJlZW5DYWxsZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kYWxzL3N3aXBlLWNvbXBvc2l0ZS11dGlscy5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmplc3QubW9jaygnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJywgKCkgPT4gKHtcbiAgZHJhd1N0YXJzQmFja2dyb3VuZDogamVzdC5mbigpXG59KSk7XG5cbmltcG9ydCB7ZHJhd1N0YXJzQmFja2dyb3VuZH0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcbmltcG9ydCB7Y29tcG9zaXRlU3dpcGVGcmFtZX0gZnJvbSAnLi9zd2lwZS1jb21wb3NpdGUtdXRpbHMnO1xuXG5mdW5jdGlvbiBtb2NrQ2FudmFzKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGwpIHtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgZ2V0Q29udGV4dDogKCkgPT4gY3R4XG4gIH0gYXMgdW5rbm93biBhcyBIVE1MQ2FudmFzRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gbW9ja0NvbXBvc2l0ZUN0eCgpIHtcbiAgcmV0dXJuIHtcbiAgICBjbGVhclJlY3Q6IGplc3QuZm4oKSxcbiAgICBmaWxsUmVjdDogamVzdC5mbigpLFxuICAgIGRyYXdJbWFnZTogamVzdC5mbigpLFxuICAgIHNhdmU6IGplc3QuZm4oKSxcbiAgICByZXN0b3JlOiBqZXN0LmZuKCksXG4gICAgYmVnaW5QYXRoOiBqZXN0LmZuKCksXG4gICAgcmVjdDogamVzdC5mbigpLFxuICAgIGNsaXA6IGplc3QuZm4oKSxcbiAgICBmaWxsU3R5bGU6ICcnLFxuICAgIHN0cm9rZVN0eWxlOiAnJyxcbiAgICBsaW5lV2lkdGg6IDAsXG4gICAgc2hhZG93Q29sb3I6ICcnLFxuICAgIHNoYWRvd0JsdXI6IDAsXG4gICAgbW92ZVRvOiBqZXN0LmZuKCksXG4gICAgbGluZVRvOiBqZXN0LmZuKCksXG4gICAgc3Ryb2tlOiBqZXN0LmZuKCksXG4gICAgYXJjOiBqZXN0LmZuKCksXG4gICAgZmlsbDogamVzdC5mbigpLFxuICAgIGNsb3NlUGF0aDogamVzdC5mbigpXG4gIH07XG59XG5cbmRlc2NyaWJlKCdjb21wb3NpdGVTd2lwZUZyYW1lJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICB9KTtcblxuICB0ZXN0KCd0aWxlcyBzdGFycyBhZnRlciB0aGUgZ2xvYmUgYmFja2dyb3VuZCBjb2xvciB3aGVuIHNob3dTdGFycyBpcyB0cnVlJywgKCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IG1vY2tDb21wb3NpdGVDdHgoKTtcbiAgICBjb25zdCBsZWZ0ID0gbW9ja0NhbnZhcygxMCwgMTAsIGN0eCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG4gICAgY29uc3QgcmlnaHQgPSBtb2NrQ2FudmFzKDEwLCAxMCwgY3R4IGFzIHVua25vd24gYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTtcbiAgICBjb25zdCBvdXRwdXQgPSBtb2NrQ2FudmFzKDEwMCwgNTAsIGN0eCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG5cbiAgICBjb21wb3NpdGVTd2lwZUZyYW1lKGxlZnQsIHJpZ2h0LCBvdXRwdXQsIDUwLCBmYWxzZSwgJ3JnYigxLCAyLCAzKScsIHRydWUpO1xuXG4gICAgZXhwZWN0KGN0eC5maWxsU3R5bGUpLnRvQmUoJ3JnYigxLCAyLCAzKScpO1xuICAgIGV4cGVjdChjdHguZmlsbFJlY3QpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKDAsIDAsIDEwMCwgNTApO1xuICAgIGV4cGVjdChkcmF3U3RhcnNCYWNrZ3JvdW5kKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChjdHgsIDEwMCwgNTApO1xuICAgIGV4cGVjdChjdHguZmlsbFJlY3QubW9jay5pbnZvY2F0aW9uQ2FsbE9yZGVyWzBdKS50b0JlTGVzc1RoYW4oXG4gICAgICAoZHJhd1N0YXJzQmFja2dyb3VuZCBhcyBqZXN0Lk1vY2spLm1vY2suaW52b2NhdGlvbkNhbGxPcmRlclswXVxuICAgICk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RvZXMgbm90IGRyYXcgc3RhcnMgd2hlbiBzaG93U3RhcnMgaXMgb21pdHRlZCcsICgpID0+IHtcbiAgICBjb25zdCBjdHggPSBtb2NrQ29tcG9zaXRlQ3R4KCk7XG4gICAgY29uc3QgbGVmdCA9IG1vY2tDYW52YXMoMTAsIDEwLCBjdHggYXMgdW5rbm93biBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuICAgIGNvbnN0IHJpZ2h0ID0gbW9ja0NhbnZhcygxMCwgMTAsIGN0eCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gbW9ja0NhbnZhcygxMDAsIDUwLCBjdHggYXMgdW5rbm93biBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuXG4gICAgY29tcG9zaXRlU3dpcGVGcmFtZShsZWZ0LCByaWdodCwgb3V0cHV0LCA1MCwgZmFsc2UsICdyZ2IoMSwgMiwgMyknKTtcblxuICAgIGV4cGVjdChkcmF3U3RhcnNCYWNrZ3JvdW5kKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQU9BLElBQUFBLGFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLG9CQUFBLEdBQUFELE9BQUE7QUFSQTtBQUNBOztBQUVBRSxJQUFJLENBQUNDLElBQUksQ0FBQywwQkFBMEIsRUFBRTtFQUFBLE9BQU87SUFDM0NDLG1CQUFtQixFQUFFRixJQUFJLENBQUNHLEVBQUUsQ0FBQztFQUMvQixDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBS0gsU0FBU0MsVUFBVUEsQ0FBQ0MsS0FBYSxFQUFFQyxNQUFjLEVBQUVDLEdBQW9DLEVBQUU7RUFDdkYsT0FBTztJQUNMRixLQUFLLEVBQUxBLEtBQUs7SUFDTEMsTUFBTSxFQUFOQSxNQUFNO0lBQ05FLFVBQVUsRUFBRSxTQUFaQSxVQUFVQSxDQUFBO01BQUEsT0FBUUQsR0FBRztJQUFBO0VBQ3ZCLENBQUM7QUFDSDtBQUVBLFNBQVNFLGdCQUFnQkEsQ0FBQSxFQUFHO0VBQzFCLE9BQU87SUFDTEMsU0FBUyxFQUFFVixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCUSxRQUFRLEVBQUVYLElBQUksQ0FBQ0csRUFBRSxDQUFDLENBQUM7SUFDbkJTLFNBQVMsRUFBRVosSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztJQUNwQlUsSUFBSSxFQUFFYixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ2ZXLE9BQU8sRUFBRWQsSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztJQUNsQlksU0FBUyxFQUFFZixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCYSxJQUFJLEVBQUVoQixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ2ZjLElBQUksRUFBRWpCLElBQUksQ0FBQ0csRUFBRSxDQUFDLENBQUM7SUFDZmUsU0FBUyxFQUFFLEVBQUU7SUFDYkMsV0FBVyxFQUFFLEVBQUU7SUFDZkMsU0FBUyxFQUFFLENBQUM7SUFDWkMsV0FBVyxFQUFFLEVBQUU7SUFDZkMsVUFBVSxFQUFFLENBQUM7SUFDYkMsTUFBTSxFQUFFdkIsSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztJQUNqQnFCLE1BQU0sRUFBRXhCLElBQUksQ0FBQ0csRUFBRSxDQUFDLENBQUM7SUFDakJzQixNQUFNLEVBQUV6QixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCdUIsR0FBRyxFQUFFMUIsSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztJQUNkd0IsSUFBSSxFQUFFM0IsSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztJQUNmeUIsU0FBUyxFQUFFNUIsSUFBSSxDQUFDRyxFQUFFLENBQUM7RUFDckIsQ0FBQztBQUNIO0FBRUEwQixRQUFRLENBQUMscUJBQXFCLEVBQUUsWUFBTTtFQUNwQ0MsU0FBUyxDQUFDLFlBQU07SUFDZDlCLElBQUksQ0FBQytCLGFBQWEsQ0FBQyxDQUFDO0VBQ3RCLENBQUMsQ0FBQztFQUVGQyxJQUFJLENBQUMscUVBQXFFLEVBQUUsWUFBTTtJQUNoRixJQUFNekIsR0FBRyxHQUFHRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlCLElBQU13QixJQUFJLEdBQUc3QixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRUcsR0FBMEMsQ0FBQztJQUMzRSxJQUFNMkIsS0FBSyxHQUFHOUIsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUVHLEdBQTBDLENBQUM7SUFDNUUsSUFBTTRCLE1BQU0sR0FBRy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFRyxHQUEwQyxDQUFDO0lBRTlFLElBQUE2Qix3Q0FBbUIsRUFBQ0gsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUM7SUFFekVFLE1BQU0sQ0FBQzlCLEdBQUcsQ0FBQ1csU0FBUyxDQUFDLENBQUNvQixJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzFDRCxNQUFNLENBQUM5QixHQUFHLENBQUNJLFFBQVEsQ0FBQyxDQUFDNEIsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3hERixNQUFNLENBQUNuQyxpQ0FBbUIsQ0FBQyxDQUFDcUMsb0JBQW9CLENBQUNoQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUM5RDhCLE1BQU0sQ0FBQzlCLEdBQUcsQ0FBQ0ksUUFBUSxDQUFDVixJQUFJLENBQUN1QyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxZQUFZLENBQzFEdkMsaUNBQW1CLENBQWVELElBQUksQ0FBQ3VDLG1CQUFtQixDQUFDLENBQUMsQ0FDL0QsQ0FBQztFQUNILENBQUMsQ0FBQztFQUVGUixJQUFJLENBQUMsK0NBQStDLEVBQUUsWUFBTTtJQUMxRCxJQUFNekIsR0FBRyxHQUFHRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlCLElBQU13QixJQUFJLEdBQUc3QixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRUcsR0FBMEMsQ0FBQztJQUMzRSxJQUFNMkIsS0FBSyxHQUFHOUIsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUVHLEdBQTBDLENBQUM7SUFDNUUsSUFBTTRCLE1BQU0sR0FBRy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFRyxHQUEwQyxDQUFDO0lBRTlFLElBQUE2Qix3Q0FBbUIsRUFBQ0gsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQztJQUVuRUUsTUFBTSxDQUFDbkMsaUNBQW1CLENBQUMsQ0FBQ3dDLEdBQUcsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQztFQUNwRCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|