@kepler.gl/reducers 3.2.6 → 3.3.0-alpha.0
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/combined-updaters.d.ts +1 -1
- package/dist/composer-helpers.d.ts +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/layer-utils.d.ts +8 -7
- package/dist/layer-utils.js +1 -1
- package/dist/map-state-updaters.d.ts +4 -4
- package/dist/map-state.d.ts +16 -16
- package/dist/map-style-updaters.d.ts +3 -3
- package/dist/provider-state-updaters.d.ts +2 -2
- package/dist/root.d.ts +1 -1
- package/dist/ui-state-updaters.d.ts +1 -1
- package/dist/vis-state-merger.d.ts +1 -1
- package/dist/vis-state-selectors.d.ts +11 -2
- package/dist/vis-state-selectors.js +1 -1
- package/dist/vis-state-updaters.d.ts +11 -64
- package/dist/vis-state-updaters.js +16 -3
- package/dist/vis-state.d.ts +36 -104
- package/package.json +18 -18
|
@@ -3,7 +3,7 @@ import { MapStyle } from './map-style-updaters';
|
|
|
3
3
|
import { ProviderState } from './provider-state-updaters';
|
|
4
4
|
import { loadFilesSuccessUpdaterAction, MapStyleChangeUpdaterAction, LayerTypeChangeUpdaterAction, ToggleSplitMapUpdaterAction, ReplaceDataInMapPayload } from '@kepler.gl/actions';
|
|
5
5
|
import { VisState } from '@kepler.gl/schemas';
|
|
6
|
-
export
|
|
6
|
+
export type KeplerGlState = {
|
|
7
7
|
visState: VisState;
|
|
8
8
|
mapState: MapState;
|
|
9
9
|
mapStyle: MapStyle;
|
|
@@ -6,7 +6,7 @@ export declare function payload_<P>(payload: P): {
|
|
|
6
6
|
};
|
|
7
7
|
/** Wraps a value in an object and stores it the `payload` field */
|
|
8
8
|
export declare function apply_<State, P>(updater: (state: State, nextPayload: P) => State, payload: P): (state: State) => State;
|
|
9
|
-
|
|
9
|
+
type Arg<State> = (state: State) => (nextState: State) => State;
|
|
10
10
|
export declare function with_<State>(fn: Arg<State>): (state: State) => State;
|
|
11
11
|
export declare function if_<State>(pred: boolean, fn: (state: State) => State): (state: State) => State;
|
|
12
12
|
export declare function compose_<State>(fns: Array<(s: State) => State>): (s: State) => State;
|
package/dist/core.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { VisState } from '@kepler.gl/schemas';
|
|
|
2
2
|
import { MapState, UiState } from '@kepler.gl/types';
|
|
3
3
|
import { MapStyle } from './map-style-updaters';
|
|
4
4
|
import { ProviderState } from './provider-state-updaters';
|
|
5
|
-
export
|
|
5
|
+
export type KeplerGlState = {
|
|
6
6
|
visState: VisState;
|
|
7
7
|
mapState: MapState;
|
|
8
8
|
mapStyle: MapStyle;
|
package/dist/layer-utils.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { Layer as DeckLayer
|
|
1
|
+
import { Layer as DeckLayer } from '@deck.gl/core';
|
|
2
|
+
type DeckLayerProps = any;
|
|
2
3
|
import { Field, TooltipField, CompareType, SplitMapLayers, Editor, Feature, FeatureSelectionContext, BindedLayerCallbacks, LayerCallbacks, Viewport } from '@kepler.gl/types';
|
|
3
4
|
import { Layer, LayerClassesType } from '@kepler.gl/layers';
|
|
4
5
|
import KeplerTable from '@kepler.gl/table';
|
|
5
6
|
import { VisState } from '@kepler.gl/schemas';
|
|
6
7
|
import { DataRow } from '@kepler.gl/utils';
|
|
7
|
-
export
|
|
8
|
+
export type LayersToRender = {
|
|
8
9
|
[layerId: string]: boolean;
|
|
9
10
|
};
|
|
10
|
-
export
|
|
11
|
+
export type AggregationLayerHoverData = {
|
|
11
12
|
points: any[];
|
|
12
13
|
colorValue?: any;
|
|
13
14
|
elevationValue?: any;
|
|
@@ -16,7 +17,7 @@ export declare type AggregationLayerHoverData = {
|
|
|
16
17
|
value?: any;
|
|
17
18
|
}>;
|
|
18
19
|
};
|
|
19
|
-
export
|
|
20
|
+
export type LayerHoverProp = {
|
|
20
21
|
data: DataRow | AggregationLayerHoverData | null;
|
|
21
22
|
fields: Field[];
|
|
22
23
|
fieldsToShow: TooltipField[];
|
|
@@ -29,7 +30,7 @@ export declare type LayerHoverProp = {
|
|
|
29
30
|
* Find default layers from fields
|
|
30
31
|
*/
|
|
31
32
|
export declare function findDefaultLayer(dataset: KeplerTable, layerClasses: LayerClassesType): Layer[];
|
|
32
|
-
|
|
33
|
+
type MinVisStateForLayerData = {
|
|
33
34
|
datasets: VisState['datasets'];
|
|
34
35
|
animationConfig: VisState['animationConfig'];
|
|
35
36
|
};
|
|
@@ -63,9 +64,9 @@ export declare function prepareLayersForDeck(layers: Layer[], layerData: VisStat
|
|
|
63
64
|
[key: string]: boolean;
|
|
64
65
|
};
|
|
65
66
|
export declare function prepareLayersToRender(layers: Layer[], layerData: VisState['layerData'], mapLayers?: SplitMapLayers | undefined | null): LayersToRender;
|
|
66
|
-
|
|
67
|
+
type CustomDeckLayer = DeckLayer<DeckLayerProps>;
|
|
67
68
|
export declare function getCustomDeckLayers(deckGlProps?: any): [CustomDeckLayer[], CustomDeckLayer[]];
|
|
68
|
-
export
|
|
69
|
+
export type ComputeDeckLayersProps = {
|
|
69
70
|
mapIndex?: number;
|
|
70
71
|
mapboxApiAccessToken?: string;
|
|
71
72
|
mapboxApiUrl?: string;
|
package/dist/layer-utils.js
CHANGED
|
@@ -332,4 +332,4 @@ function areAnyDeckLayersLoading(layers) {
|
|
|
332
332
|
return layer.internalState && !layer.isLoaded;
|
|
333
333
|
});
|
|
334
334
|
}
|
|
335
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbnN0YW50cyIsIl9sYXllcnMiLCJfdXRpbHMiLCJfY29tbW9uVXRpbHMiLCJfZGVja2dsTGF5ZXJzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJmaW5kRGVmYXVsdExheWVyIiwiZGF0YXNldCIsImxheWVyQ2xhc3NlcyIsImxheWVyUHJvcHMiLCJyZWR1Y2UiLCJwcmV2aW91cyIsImxjIiwicmVzdWx0IiwiZmluZERlZmF1bHRMYXllclByb3BzIiwicHJvcHMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3VuZExheWVycyIsImNvbmNhdCIsIm1hcCIsInAiLCJ0eXBlIiwiZGF0YUlkIiwiaWQiLCJpc1Zpc2libGUiLCJsYXllciIsInNldEluaXRpYWxMYXllckNvbmZpZyIsImRhdGFDb250YWluZXIiLCJjYWxjdWxhdGVMYXllckRhdGEiLCJzdGF0ZSIsIm9sZExheWVyRGF0YSIsImxheWVyRGF0YSIsImlzVmFsaWQiLCJfb2xkRGF0YVVwZGF0ZVRyaWdnZXJzIiwidW5kZWZpbmVkIiwiaGFzQWxsQ29sdW1ucyIsImNvbmZpZyIsImZvcm1hdExheWVyRGF0YSIsImRhdGFzZXRzIiwidXBkYXRlTGF5ZXJDb25maWciLCJlcnJvck1lc3NhZ2UiLCJlcnIiLCJDb25zb2xlIiwiZXJyb3IiLCJFcnJvciIsIm1lc3NhZ2UiLCJzdWJzdHJpbmciLCJnZXRMYXllckhvdmVyUHJvcCIsIl9yZWYiLCJhbmltYXRpb25Db25maWciLCJpbnRlcmFjdGlvbkNvbmZpZyIsImhvdmVySW5mbyIsImxheWVycyIsImxheWVyc1RvUmVuZGVyIiwidG9vbHRpcCIsImVuYWJsZWQiLCJwaWNrZWQiLCJvYmplY3QiLCJvdmVybGF5IiwiaWR4IiwiaW5kZXgiLCJnZXRIb3ZlckRhdGEiLCJfZGF0YXNldHMkZGF0YUlkIiwiZmllbGRzIiwiZGF0YSIsImZpZWxkc1RvU2hvdyIsImN1cnJlbnRUaW1lIiwicmVuZGVyRGVja0dsTGF5ZXIiLCJsYXllckNhbGxiYWNrcyIsImxheWVySW5kZXgiLCJjbGlja2VkIiwibWFwU3RhdGUiLCJtYXBMYXllcnMiLCJleHBlcmltZW50YWxDb250ZXh0IiwiX3JlZjIiLCJncHVGaWx0ZXIiLCJvYmplY3RIb3ZlcmVkIiwidmlzaWJsZSIsInJlbmRlckxheWVyIiwiaXNMYXllclJlbmRlcmFibGUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsInNob3VsZFJlbmRlckxheWVyIiwiaXNMYXllclZpc2libGUiLCJwcmVwYXJlTGF5ZXJzRm9yRGVjayIsImFjY3UiLCJvdmVybGF5VHlwZSIsIk9WRVJMQVlfVFlQRV9DT05TVCIsImRlY2tnbCIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsImdldEN1c3RvbURlY2tMYXllcnMiLCJkZWNrR2xQcm9wcyIsImJvdHRvbURlY2tMYXllcnMiLCJpc0Z1bmN0aW9uIiwidG9wRGVja0xheWVycyIsInRvcExheWVycyIsImJpbmRMYXllckNhbGxiYWNrcyIsImtleSIsInZhbCIsImNvbXB1dGVEZWNrTGF5ZXJzIiwiX3JlZjMiLCJvcHRpb25zIiwidmlzU3RhdGUiLCJtYXBTdHlsZSIsImVmZmVjdHMiLCJsYXllck9yZGVyIiwic3BsaXRNYXBzIiwiX3JlZjQiLCJtYXBJbmRleCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwicHJpbWFyeU1hcCIsImxheWVyc0ZvckRlY2siLCJlZGl0b3JJbmZvIiwiZGF0YUxheWVycyIsImhhc1NoYWRvd0VmZmVjdCIsInNvbWUiLCJlZmZlY3QiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVCIsImdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMiLCJjdXJyZW50TGF5ZXJzRm9yRGVjayIsInNsaWNlIiwicmV2ZXJzZSIsIm92ZXJsYXlzIiwibGF5ZXJJZCIsImZpbmRJbmRleCIsIl9yZWY1IiwiYmluZGVkTGF5ZXJDYWxsYmFja3MiLCJsYXllck92ZXJsYXkiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJUaHJlZURCdWlsZGluZ0xheWVyIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsInVwZGF0ZVRyaWdnZXJzIiwiZ2V0RmlsbENvbG9yIiwiX2dldEN1c3RvbURlY2tMYXllcnMiLCJfZ2V0Q3VzdG9tRGVja0xheWVyczIiLCJfc2xpY2VkVG9BcnJheTIiLCJjdXN0b21Cb3R0b21EZWNrTGF5ZXJzIiwiY3VzdG9tVG9wRGVja0xheWVycyIsImVkaXRvckxheWVyIiwiZ2V0RWRpdG9yTGF5ZXIiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ2V0TGF5ZXJPcmRlckZyb21MYXllcnMiLCJfcmVmNiIsInJlb3JkZXJMYXllck9yZGVyIiwib3JpZ2luTGF5ZXJJZCIsImRlc3RpbmF0aW9uTGF5ZXJJZCIsImFjdGl2ZUluZGV4IiwiaW5kZXhPZiIsIm92ZXJJbmRleCIsImFycmF5TW92ZSIsImFkZExheWVyVG9MYXllck9yZGVyIiwiZ2V0TGF5ZXJIb3ZlclByb3BWYWx1ZSIsImZpZWxkSW5kZXgiLCJEYXRhUm93IiwidmFsdWVBdCIsImFyZUFueURlY2tMYXllcnNMb2FkaW5nIiwiaW50ZXJuYWxTdGF0ZSIsImlzTG9hZGVkIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xheWVyLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBDb25zb2xlIGZyb20gJ2dsb2JhbC9jb25zb2xlJztcblxuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRCwgTElHSFRfQU5EX1NIQURPV19FRkZFQ1R9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TGF5ZXIgYXMgRGVja0xheWVyLCBMYXllclByb3BzIGFzIERlY2tMYXllclByb3BzfSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCB7XG4gIEZpZWxkLFxuICBUb29sdGlwRmllbGQsXG4gIENvbXBhcmVUeXBlLFxuICBTcGxpdE1hcExheWVycyxcbiAgRWRpdG9yLFxuICBGZWF0dXJlLFxuICBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dCxcbiAgQmluZGVkTGF5ZXJDYWxsYmFja3MsXG4gIExheWVyQ2FsbGJhY2tzLFxuICBWaWV3cG9ydFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIEZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlLFxuICBGaW5kRGVmYXVsdExheWVyUHJvcHMsXG4gIExheWVyLFxuICBMYXllckNsYXNzZXNUeXBlLFxuICBPVkVSTEFZX1RZUEVfQ09OU1QsXG4gIGdldEVkaXRvckxheWVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcblxuaW1wb3J0IEtlcGxlclRhYmxlIGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7aXNGdW5jdGlvbiwgZ2V0TWFwTGF5ZXJzRnJvbVNwbGl0TWFwcywgRGF0YVJvd30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2FycmF5TW92ZX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuXG5pbXBvcnQge1RocmVlREJ1aWxkaW5nTGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5cbmV4cG9ydCB0eXBlIExheWVyc1RvUmVuZGVyID0ge1xuICBbbGF5ZXJJZDogc3RyaW5nXTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEgPSB7XG4gIHBvaW50czogYW55W107XG4gIGNvbG9yVmFsdWU/OiBhbnk7XG4gIGVsZXZhdGlvblZhbHVlPzogYW55O1xuICBhZ2dyZWdhdGVkRGF0YT86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgbWVhc3VyZTogc3RyaW5nO1xuICAgICAgdmFsdWU/OiBhbnk7XG4gICAgfVxuICA+O1xufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJIb3ZlclByb3AgPSB7XG4gIGRhdGE6IERhdGFSb3cgfCBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhIHwgbnVsbDtcbiAgZmllbGRzOiBGaWVsZFtdO1xuICBmaWVsZHNUb1Nob3c6IFRvb2x0aXBGaWVsZFtdO1xuICBsYXllcjogTGF5ZXI7XG4gIHByaW1hcnlEYXRhPzogRGF0YVJvdyB8IEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEgfCBudWxsO1xuICBjb21wYXJlVHlwZT86IENvbXBhcmVUeXBlO1xuICBjdXJyZW50VGltZT86IFZpc1N0YXRlWydhbmltYXRpb25Db25maWcnXVsnY3VycmVudFRpbWUnXTtcbn07XG5cbi8qKlxuICogRmluZCBkZWZhdWx0IGxheWVycyBmcm9tIGZpZWxkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZERlZmF1bHRMYXllcihkYXRhc2V0OiBLZXBsZXJUYWJsZSwgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlKTogTGF5ZXJbXSB7XG4gIGlmICghZGF0YXNldCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGxheWVyUHJvcHMgPSAoT2JqZWN0LmtleXMobGF5ZXJDbGFzc2VzKSBhcyBBcnJheTxrZXlvZiBMYXllckNsYXNzZXNUeXBlPikucmVkdWNlKFxuICAgIChwcmV2aW91cywgbGMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdDogRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUgPVxuICAgICAgICB0eXBlb2YgbGF5ZXJDbGFzc2VzW2xjXS5maW5kRGVmYXVsdExheWVyUHJvcHMgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IGxheWVyQ2xhc3Nlc1tsY10uZmluZERlZmF1bHRMYXllclByb3BzKGRhdGFzZXQsIHByZXZpb3VzKVxuICAgICAgICAgIDoge3Byb3BzOiBbXX07XG5cbiAgICAgIGNvbnN0IHByb3BzID0gQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0IDogcmVzdWx0LnByb3BzIHx8IFtdO1xuICAgICAgY29uc3QgZm91bmRMYXllcnMgPSByZXN1bHQuZm91bmRMYXllcnMgfHwgcHJldmlvdXM7XG5cbiAgICAgIHJldHVybiBmb3VuZExheWVycy5jb25jYXQoXG4gICAgICAgIHByb3BzLm1hcChwID0+ICh7XG4gICAgICAgICAgLi4ucCxcbiAgICAgICAgICB0eXBlOiBsYyxcbiAgICAgICAgICBkYXRhSWQ6IGRhdGFzZXQuaWQsXG4gICAgICAgICAgLy8gc2V0IGFyYyBsYXllciBpbml0aWFsIHZpc2libGl0eSB0byBmYWxzZSwgYmVjYXVzZSBhcmNzIHRlbmQgdG8gYmUgdG9vIG11c3lcbiAgICAgICAgICAuLi4obGMgPT09ICdhcmMnIHx8IGxjID09PSAnbGluZScgPyB7aXNWaXNpYmxlOiBmYWxzZX0gOiB7fSlcbiAgICAgICAgfSkpXG4gICAgICApO1xuICAgIH0sXG4gICAgW10gYXMgKEZpbmREZWZhdWx0TGF5ZXJQcm9wcyAmIHt0eXBlOiBzdHJpbmd9KVtdXG4gICk7XG5cbiAgLy8gZ28gdGhyb3VnaCBhbGwgbGF5ZXJQcm9wcyB0byBjcmVhdGUgbGF5ZXJcbiAgcmV0dXJuIGxheWVyUHJvcHMubWFwKHByb3BzID0+IHtcbiAgICBjb25zdCBsYXllciA9IG5ldyBsYXllckNsYXNzZXNbcHJvcHMudHlwZV0ocHJvcHMpO1xuICAgIHJldHVybiB0eXBlb2YgbGF5ZXIuc2V0SW5pdGlhbExheWVyQ29uZmlnID09PSAnZnVuY3Rpb24nICYmIGRhdGFzZXQuZGF0YUNvbnRhaW5lclxuICAgICAgPyBsYXllci5zZXRJbml0aWFsTGF5ZXJDb25maWcoZGF0YXNldClcbiAgICAgIDogbGF5ZXI7XG4gIH0pO1xufVxuXG50eXBlIE1pblZpc1N0YXRlRm9yTGF5ZXJEYXRhID0ge1xuICBkYXRhc2V0czogVmlzU3RhdGVbJ2RhdGFzZXRzJ107XG4gIGFuaW1hdGlvbkNvbmZpZzogVmlzU3RhdGVbJ2FuaW1hdGlvbkNvbmZpZyddO1xufTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgbGF5ZXIgZGF0YSBiYXNlZCBvbiBsYXllciB0eXBlLCBjb2wgQ29uZmlnLFxuICogcmV0dXJuIHVwZGF0ZWQgbGF5ZXIgaWYgY29sb3JEb21haW4sIGRhdGFNYXAgaGFzIGNoYW5nZWQuXG4gKiBBbHNvLCByZXR1cm5zIHVwZGF0ZWQgbGF5ZXIgaW4gY2FzZSB0aGUgaW5wdXQgbGF5ZXIgd2FzIGluIGludmFsaWQgc3RhdGUuXG4gKiBBZGRzIGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGxheWVyIGluIGNhc2Ugb2YgYW4gZXhjZXB0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlTGF5ZXJEYXRhPFMgZXh0ZW5kcyBNaW5WaXNTdGF0ZUZvckxheWVyRGF0YT4oXG4gIGxheWVyOiBMYXllcixcbiAgc3RhdGU6IFMsXG4gIG9sZExheWVyRGF0YT86IGFueVxuKToge1xuICBsYXllckRhdGE6IGFueTtcbiAgbGF5ZXI6IExheWVyO1xufSB7XG4gIGxldCBsYXllckRhdGE7XG4gIHRyeSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBsYXllciB1cGRhdGVzIGRhdGEgYWZ0ZXIgYW4gZXJyb3JcbiAgICBpZiAoIWxheWVyLmlzVmFsaWQpIHtcbiAgICAgIGxheWVyLl9vbGREYXRhVXBkYXRlVHJpZ2dlcnMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCFsYXllci50eXBlIHx8ICFsYXllci5oYXNBbGxDb2x1bW5zKCkgfHwgIWxheWVyLmNvbmZpZy5kYXRhSWQpIHtcbiAgICAgIHJldHVybiB7bGF5ZXIsIGxheWVyRGF0YToge319O1xuICAgIH1cblxuICAgIGxheWVyRGF0YSA9IGxheWVyLmZvcm1hdExheWVyRGF0YShzdGF0ZS5kYXRhc2V0cywgb2xkTGF5ZXJEYXRhKTtcblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGRhdGEgZm9yIHRoZSBsYXllciBpcyB1cGRhdGVkIHdpdGhvdXQgZXJyb3JzXG4gICAgaWYgKCFsYXllci5pc1ZhbGlkKSB7XG4gICAgICAvLyBTd2l0Y2ggdG8gdmlzaWJsZSBhZnRlciBhbiBlcnJvclxuICAgICAgbGF5ZXIgPSBsYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICAgIGlzVmlzaWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGxheWVyLmlzVmFsaWQgPSB0cnVlO1xuICAgIGxheWVyLmVycm9yTWVzc2FnZSA9IG51bGw7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIENvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICBsYXllciA9IGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgIGlzVmlzaWJsZTogZmFsc2VcbiAgICB9KTtcbiAgICBsYXllci5pc1ZhbGlkID0gZmFsc2U7XG5cbiAgICBsYXllci5lcnJvck1lc3NhZ2UgPVxuICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyLm1lc3NhZ2UgPyBlcnIubWVzc2FnZS5zdWJzdHJpbmcoMCwgMTAwKSA6ICdVbmtub3duIGVycm9yJztcblxuICAgIGxheWVyRGF0YSA9IHt9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsYXllcixcbiAgICBsYXllckRhdGFcbiAgfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgcHJvcHMgcGFzc2VkIHRvIExheWVySG92ZXJJbmZvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllckhvdmVyUHJvcCh7XG4gIGFuaW1hdGlvbkNvbmZpZyxcbiAgaW50ZXJhY3Rpb25Db25maWcsXG4gIGhvdmVySW5mbyxcbiAgbGF5ZXJzLFxuICBsYXllcnNUb1JlbmRlcixcbiAgZGF0YXNldHNcbn06IHtcbiAgaW50ZXJhY3Rpb25Db25maWc6IFZpc1N0YXRlWydpbnRlcmFjdGlvbkNvbmZpZyddO1xuICBhbmltYXRpb25Db25maWc6IFZpc1N0YXRlWydhbmltYXRpb25Db25maWcnXTtcbiAgaG92ZXJJbmZvOiBWaXNTdGF0ZVsnaG92ZXJJbmZvJ107XG4gIGxheWVyczogVmlzU3RhdGVbJ2xheWVycyddO1xuICBsYXllcnNUb1JlbmRlcjogTGF5ZXJzVG9SZW5kZXI7XG4gIGRhdGFzZXRzOiBWaXNTdGF0ZVsnZGF0YXNldHMnXTtcbn0pOiBMYXllckhvdmVyUHJvcCB8IG51bGwge1xuICBpZiAoaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5lbmFibGVkICYmIGhvdmVySW5mbyAmJiBob3ZlckluZm8ucGlja2VkKSB7XG4gICAgLy8gaWYgYW55dGhpbmcgaG92ZXJlZFxuICAgIGNvbnN0IHtvYmplY3QsIGxheWVyOiBvdmVybGF5fSA9IGhvdmVySW5mbztcblxuICAgIC8vIGRlY2tnbCBsYXllciB0byBrZXBsZXItZ2wgbGF5ZXJcbiAgICBjb25zdCBsYXllciA9IGxheWVyc1tvdmVybGF5LnByb3BzLmlkeF07XG5cbiAgICAvLyBOT1RFOiBmb3IgYmluYXJ5IGZvcm1hdCBHZW9qc29uTGF5ZXIsIGRlY2sgd2lsbCByZXR1cm4gb2JqZWN0PW51bGwgYnV0IGhvdmVySW5mby5pbmRleCA+PSAwXG4gICAgaWYgKFxuICAgICAgKG9iamVjdCB8fCBob3ZlckluZm8uaW5kZXggPj0gMCkgJiZcbiAgICAgIGxheWVyICYmXG4gICAgICBsYXllci5nZXRIb3ZlckRhdGEgJiZcbiAgICAgIGxheWVyc1RvUmVuZGVyW2xheWVyLmlkXVxuICAgICkge1xuICAgICAgLy8gaWYgbGF5ZXIgaXMgdmlzaWJsZSBhbmQgaGF2ZSBob3ZlcmVkIGRhdGFcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY29uZmlnOiB7ZGF0YUlkfVxuICAgICAgfSA9IGxheWVyO1xuICAgICAgaWYgKCFkYXRhSWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCB7ZGF0YUNvbnRhaW5lciwgZmllbGRzfSA9IGRhdGFzZXRzW2RhdGFJZF07XG4gICAgICBjb25zdCBkYXRhOiBEYXRhUm93IHwgbnVsbCA9IGxheWVyLmdldEhvdmVyRGF0YShcbiAgICAgICAgb2JqZWN0IHx8IGhvdmVySW5mby5pbmRleCxcbiAgICAgICAgZGF0YUNvbnRhaW5lcixcbiAgICAgICAgZmllbGRzLFxuICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgIGhvdmVySW5mb1xuICAgICAgKTtcbiAgICAgIGlmICghZGF0YSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpZWxkc1RvU2hvdyA9IGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLmZpZWxkc1RvU2hvd1tkYXRhSWRdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIGZpZWxkc1RvU2hvdyxcbiAgICAgICAgbGF5ZXIsXG4gICAgICAgIGN1cnJlbnRUaW1lOiBhbmltYXRpb25Db25maWcuY3VycmVudFRpbWVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJEZWNrR2xMYXllcihwcm9wczogYW55LCBsYXllckNhbGxiYWNrczoge1trZXk6IHN0cmluZ106IGFueX0pIHtcbiAgY29uc3Qge1xuICAgIGRhdGFzZXRzLFxuICAgIGxheWVyLFxuICAgIGxheWVySW5kZXgsXG4gICAgZGF0YSxcbiAgICBob3ZlckluZm8sXG4gICAgY2xpY2tlZCxcbiAgICBtYXBTdGF0ZSxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICBhbmltYXRpb25Db25maWcsXG4gICAgbWFwTGF5ZXJzLFxuICAgIGV4cGVyaW1lbnRhbENvbnRleHRcbiAgfSA9IHByb3BzO1xuICBjb25zdCBkYXRhc2V0ID0gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF07XG4gIGNvbnN0IHtncHVGaWx0ZXJ9ID0gZGF0YXNldCB8fCB7fTtcbiAgY29uc3Qgb2JqZWN0SG92ZXJlZCA9IGNsaWNrZWQgfHwgaG92ZXJJbmZvO1xuICBjb25zdCB2aXNpYmxlID0gIW1hcExheWVycyB8fCAobWFwTGF5ZXJzICYmIG1hcExheWVyc1tsYXllci5pZF0pO1xuICAvLyBMYXllciBpcyBMYXllciBjbGFzc1xuICByZXR1cm4gbGF5ZXIucmVuZGVyTGF5ZXIoe1xuICAgIGRhdGEsXG4gICAgZ3B1RmlsdGVyLFxuICAgIGlkeDogbGF5ZXJJbmRleCxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICBsYXllckNhbGxiYWNrcyxcbiAgICBtYXBTdGF0ZSxcbiAgICBhbmltYXRpb25Db25maWcsXG4gICAgb2JqZWN0SG92ZXJlZCxcbiAgICB2aXNpYmxlLFxuICAgIGRhdGFzZXQsXG4gICAgZXhwZXJpbWVudGFsQ29udGV4dFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGF5ZXJSZW5kZXJhYmxlKGxheWVyOiBMYXllciwgbGF5ZXJEYXRhKSB7XG4gIHJldHVybiBsYXllci5pZCAhPT0gR0VPQ09ERVJfTEFZRVJfSUQgJiYgbGF5ZXIuc2hvdWxkUmVuZGVyTGF5ZXIobGF5ZXJEYXRhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGF5ZXJWaXNpYmxlKGxheWVyLCBtYXBMYXllcnMpIHtcbiAgcmV0dXJuIChcbiAgICBsYXllci5jb25maWcuaXNWaXNpYmxlICYmXG4gICAgLy8gaWYgbGF5ZXIuaWQgaXMgbm90IGluIG1hcExheWVycywgZG9uJ3QgcmVuZGVyIGl0XG4gICAgKCFtYXBMYXllcnMgfHwgKG1hcExheWVycyAmJiBtYXBMYXllcnNbbGF5ZXIuaWRdKSlcbiAgKTtcbn1cblxuLy8gUHJlcGFyZSBhIGRpY3Qgb2YgbGF5ZXJzIHJlbmRlcmVkIGJ5IHRoZSBkZWNrLmdsXG4vLyBOb3RlLCBpc1Zpc2libGU6IGZhbHNlIGxheWVyIGlzIHBhc3NlZCB0byBkZWNrLmdsIGhlcmVcbi8vIHJldHVybiB7W2lkXTogdHJ1ZSBcXCBmYWxzZX1cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTGF5ZXJzRm9yRGVjayhcbiAgbGF5ZXJzOiBMYXllcltdLFxuICBsYXllckRhdGE6IFZpc1N0YXRlWydsYXllckRhdGEnXVxuKToge1xuICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufSB7XG4gIHJldHVybiBsYXllcnMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllciwgaWR4KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtsYXllci5pZF06XG4gICAgICAgIGlzTGF5ZXJSZW5kZXJhYmxlKGxheWVyLCBsYXllckRhdGFbaWR4XSkgJiYgbGF5ZXIub3ZlcmxheVR5cGUgPT09IE9WRVJMQVlfVFlQRV9DT05TVC5kZWNrZ2xcbiAgICB9KSxcbiAgICB7fVxuICApO1xufVxuXG4vLyBQcmVwYXJlIGEgZGljdCBvZiByZW5kZXJlZCBsYXllcnMgcmVuZGVyZWQgaW4gdGhlIG1hcFxuLy8gVGhpcyBpbmNsdWRlcyBvbmx5IHRoZSB2aXNpYmlsZSBsYXllcnMgZm9yIHNpbmdsZSBtYXAgdmlldyBhbmQgc3BsaXQgbWFwIHZpZXdcbi8vIHJldHVybiB7W2lkXTogdHJ1ZSBcXCBmYWxzZX1cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTGF5ZXJzVG9SZW5kZXIoXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGF5ZXJEYXRhOiBWaXNTdGF0ZVsnbGF5ZXJEYXRhJ10sXG4gIG1hcExheWVycz86IFNwbGl0TWFwTGF5ZXJzIHwgdW5kZWZpbmVkIHwgbnVsbFxuKTogTGF5ZXJzVG9SZW5kZXIge1xuICByZXR1cm4gbGF5ZXJzLnJlZHVjZShcbiAgICAoYWNjdSwgbGF5ZXIsIGlkeCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuaWRdOiBpc0xheWVyUmVuZGVyYWJsZShsYXllciwgbGF5ZXJEYXRhW2lkeF0pICYmIGlzTGF5ZXJWaXNpYmxlKGxheWVyLCBtYXBMYXllcnMpXG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxudHlwZSBDdXN0b21EZWNrTGF5ZXIgPSBEZWNrTGF5ZXI8RGVja0xheWVyUHJvcHM+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VzdG9tRGVja0xheWVycyhkZWNrR2xQcm9wcz86IGFueSk6IFtDdXN0b21EZWNrTGF5ZXJbXSwgQ3VzdG9tRGVja0xheWVyW11dIHtcbiAgY29uc3QgYm90dG9tRGVja0xheWVycyA9IEFycmF5LmlzQXJyYXkoZGVja0dsUHJvcHM/LmxheWVycylcbiAgICA/IGRlY2tHbFByb3BzPy5sYXllcnNcbiAgICA6IGlzRnVuY3Rpb24oZGVja0dsUHJvcHM/LmxheWVycylcbiAgICA/IGRlY2tHbFByb3BzPy5sYXllcnMoKVxuICAgIDogW107XG4gIGNvbnN0IHRvcERlY2tMYXllcnMgPSBBcnJheS5pc0FycmF5KGRlY2tHbFByb3BzPy50b3BMYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8udG9wTGF5ZXJzXG4gICAgOiBpc0Z1bmN0aW9uKGRlY2tHbFByb3BzPy50b3BMYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKClcbiAgICA6IFtdO1xuXG4gIHJldHVybiBbYm90dG9tRGVja0xheWVycywgdG9wRGVja0xheWVyc107XG59XG5cbmV4cG9ydCB0eXBlIENvbXB1dGVEZWNrTGF5ZXJzUHJvcHMgPSB7XG4gIG1hcEluZGV4PzogbnVtYmVyO1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgbWFwYm94QXBpVXJsPzogc3RyaW5nO1xuICBwcmltYXJ5TWFwPzogYm9vbGVhbjtcbiAgbGF5ZXJzRm9yRGVjaz86IHtba2V5OiBzdHJpbmddOiBib29sZWFufTtcbiAgZWRpdG9ySW5mbz86IHtcbiAgICBlZGl0b3I6IEVkaXRvcjtcbiAgICBlZGl0b3JNZW51QWN0aXZlOiBib29sZWFuO1xuICAgIG9uU2V0RmVhdHVyZXM6IChmZWF0dXJlczogRmVhdHVyZVtdKSA9PiBhbnk7XG4gICAgc2V0U2VsZWN0ZWRGZWF0dXJlOiAoXG4gICAgICBmZWF0dXJlOiBGZWF0dXJlIHwgbnVsbCxcbiAgICAgIHNlbGVjdGlvbkNvbnRleHQ/OiBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dFxuICAgICkgPT4gYW55O1xuICAgIGZlYXR1cmVDb2xsZWN0aW9uOiB7XG4gICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICBmZWF0dXJlczogRmVhdHVyZVtdO1xuICAgIH07XG4gICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlczogbnVtYmVyW107XG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0O1xuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRMYXllckNhbGxiYWNrcyhcbiAgbGF5ZXJDYWxsYmFja3M6IExheWVyQ2FsbGJhY2tzID0ge30sXG4gIGlkeDogbnVtYmVyXG4pOiBCaW5kZWRMYXllckNhbGxiYWNrcyB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhsYXllckNhbGxiYWNrcykucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2tleV06IHZhbCA9PiBsYXllckNhbGxiYWNrc1trZXldKGlkeCwgdmFsKVxuICAgIH0pLFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsICh2YWw6IHVua25vd24pID0+IHZvaWQ+XG4gICk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZURlY2tMYXllcnMoXG4gIHt2aXNTdGF0ZSwgbWFwU3RhdGUsIG1hcFN0eWxlfTogYW55LFxuICBvcHRpb25zPzogQ29tcHV0ZURlY2tMYXllcnNQcm9wcyxcbiAgbGF5ZXJDYWxsYmFja3M/OiBMYXllckNhbGxiYWNrcyxcbiAgZGVja0dsUHJvcHM/OiBhbnlcbik6IExheWVyW10ge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgZWZmZWN0cyxcbiAgICBsYXllcnMsXG4gICAgbGF5ZXJPcmRlcixcbiAgICBsYXllckRhdGEsXG4gICAgaG92ZXJJbmZvLFxuICAgIGNsaWNrZWQsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIHNwbGl0TWFwc1xuICB9ID0gdmlzU3RhdGU7XG5cbiAgY29uc3Qge21hcEluZGV4LCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsLCBwcmltYXJ5TWFwLCBsYXllcnNGb3JEZWNrLCBlZGl0b3JJbmZvfSA9XG4gICAgb3B0aW9ucyB8fCB7fTtcblxuICBsZXQgZGF0YUxheWVyczogYW55W10gPSBbXTtcblxuICBjb25zdCBoYXNTaGFkb3dFZmZlY3QgPSBlZmZlY3RzLnNvbWUoZWZmZWN0ID0+IHtcbiAgICByZXR1cm4gZWZmZWN0LnR5cGUgPT09IExJR0hUX0FORF9TSEFET1dfRUZGRUNULnR5cGU7XG4gIH0pO1xuXG4gIGlmIChsYXllckRhdGEgJiYgbGF5ZXJEYXRhLmxlbmd0aCkge1xuICAgIGNvbnN0IG1hcExheWVycyA9IGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMoc3BsaXRNYXBzLCBtYXBJbmRleCB8fCAwKTtcblxuICAgIGNvbnN0IGN1cnJlbnRMYXllcnNGb3JEZWNrID0gbGF5ZXJzRm9yRGVjayB8fCBwcmVwYXJlTGF5ZXJzRm9yRGVjayhsYXllcnMsIGxheWVyRGF0YSk7XG5cbiAgICBkYXRhTGF5ZXJzID0gbGF5ZXJPcmRlclxuICAgICAgLnNsaWNlKClcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5maWx0ZXIoaWQgPT4gY3VycmVudExheWVyc0ZvckRlY2tbaWRdKVxuICAgICAgLnJlZHVjZSgob3ZlcmxheXMsIGxheWVySWQpID0+IHtcbiAgICAgICAgY29uc3QgbGF5ZXJJbmRleCA9IGxheWVycy5maW5kSW5kZXgoKHtpZH0pID0+IGlkID09PSBsYXllcklkKTtcbiAgICAgICAgY29uc3QgYmluZGVkTGF5ZXJDYWxsYmFja3MgPSBsYXllckNhbGxiYWNrc1xuICAgICAgICAgID8gYmluZExheWVyQ2FsbGJhY2tzKGxheWVyQ2FsbGJhY2tzLCBsYXllckluZGV4KVxuICAgICAgICAgIDoge307XG4gICAgICAgIGNvbnN0IGxheWVyID0gbGF5ZXJzW2xheWVySW5kZXhdO1xuICAgICAgICBjb25zdCBkYXRhID0gbGF5ZXJEYXRhW2xheWVySW5kZXhdO1xuICAgICAgICBjb25zdCBsYXllck92ZXJsYXkgPSByZW5kZXJEZWNrR2xMYXllcihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgICAgIGxheWVyLFxuICAgICAgICAgICAgbGF5ZXJJbmRleCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBob3ZlckluZm8sXG4gICAgICAgICAgICBjbGlja2VkLFxuICAgICAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgICAgIG1hcExheWVycyxcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbENvbnRleHQ6IHtcbiAgICAgICAgICAgICAgaGFzU2hhZG93RWZmZWN0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBiaW5kZWRMYXllckNhbGxiYWNrc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICB9LCBbXSk7XG4gIH1cblxuICBpZiAoIXByaW1hcnlNYXApIHtcbiAgICByZXR1cm4gZGF0YUxheWVycztcbiAgfVxuXG4gIGlmIChcbiAgICBtYXBTdHlsZT8udmlzaWJsZUxheWVyR3JvdXBzWyczZCBidWlsZGluZyddICYmXG4gICAgcHJpbWFyeU1hcCAmJlxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuICYmXG4gICAgbWFwYm94QXBpVXJsXG4gICkge1xuICAgIGRhdGFMYXllcnMucHVzaChcbiAgICAgIG5ldyBUaHJlZURCdWlsZGluZ0xheWVyKHtcbiAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIGdldEZpbGxDb2xvcjogbWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvclxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb25zdCBbY3VzdG9tQm90dG9tRGVja0xheWVycywgY3VzdG9tVG9wRGVja0xheWVyc10gPSBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzKTtcblxuICBjb25zdCBlZGl0b3JMYXllcjogYW55W10gPSBbXTtcbiAgaWYgKGVkaXRvckluZm8pIHtcbiAgICBlZGl0b3JMYXllci5wdXNoKFxuICAgICAgZ2V0RWRpdG9yTGF5ZXIoe1xuICAgICAgICAuLi5lZGl0b3JJbmZvXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gWy4uLmN1c3RvbUJvdHRvbURlY2tMYXllcnMsIC4uLmRhdGFMYXllcnMsIC4uLmN1c3RvbVRvcERlY2tMYXllcnMsIC4uLmVkaXRvckxheWVyXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVyT3JkZXJGcm9tTGF5ZXJzPFQgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+KGxheWVyczogVFtdKTogc3RyaW5nW10ge1xuICByZXR1cm4gbGF5ZXJzLm1hcCgoe2lkfSkgPT4gaWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVvcmRlckxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IFZpc1N0YXRlWydsYXllck9yZGVyJ10sXG4gIG9yaWdpbkxheWVySWQ6IHN0cmluZyxcbiAgZGVzdGluYXRpb25MYXllcklkOiBzdHJpbmdcbik6IFZpc1N0YXRlWydsYXllck9yZGVyJ10ge1xuICBjb25zdCBhY3RpdmVJbmRleCA9IGxheWVyT3JkZXIuaW5kZXhPZihvcmlnaW5MYXllcklkKTtcbiAgY29uc3Qgb3ZlckluZGV4ID0gbGF5ZXJPcmRlci5pbmRleE9mKGRlc3RpbmF0aW9uTGF5ZXJJZCk7XG5cbiAgcmV0dXJuIGFycmF5TW92ZShsYXllck9yZGVyLCBhY3RpdmVJbmRleCwgb3ZlckluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExheWVyVG9MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBWaXNTdGF0ZVsnbGF5ZXJPcmRlciddLFxuICBsYXllcklkOiBzdHJpbmdcbik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIFtsYXllcklkLCAuLi5sYXllck9yZGVyXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVySG92ZXJQcm9wVmFsdWUoXG4gIGRhdGE6IERhdGFSb3cgfCBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgZmllbGRJbmRleDogbnVtYmVyXG4pIHtcbiAgaWYgKCFkYXRhKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIERhdGFSb3cpIHJldHVybiBkYXRhLnZhbHVlQXQoZmllbGRJbmRleCk7XG4gIHJldHVybiBkYXRhW2ZpZWxkSW5kZXhdO1xufVxuXG4vKiogQ2hlY2tzIGlmIGFueSBEZWNrIGxheWVycyBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcmVBbnlEZWNrTGF5ZXJzTG9hZGluZyhsYXllcnM6IERlY2tMYXllcltdKTogYm9vbGVhbiB7XG4gIHJldHVybiBsYXllcnMuc29tZShcbiAgICAvLyBsYXllci5pc0xvYWRlZCBjaGFuZ2VzIGZyZXF1ZW50bHkgaW4gRGVjayAoZXZlbiBvbiBob3Zlcikgc28gd2UgY2hlY2sgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXG4gICAgbGF5ZXIgPT4gbGF5ZXIuaW50ZXJuYWxTdGF0ZSAmJiAhbGF5ZXIuaXNMb2FkZWRcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQWNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQVdBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUE2RCxTQUFBTSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsT0FBQWEsT0FBQSxXQUFBZCxDQUFBLFFBQUFlLGdCQUFBLGFBQUFoQixDQUFBLEVBQUFD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
|
|
335
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbnN0YW50cyIsIl9sYXllcnMiLCJfdXRpbHMiLCJfY29tbW9uVXRpbHMiLCJfZGVja2dsTGF5ZXJzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJmaW5kRGVmYXVsdExheWVyIiwiZGF0YXNldCIsImxheWVyQ2xhc3NlcyIsImxheWVyUHJvcHMiLCJyZWR1Y2UiLCJwcmV2aW91cyIsImxjIiwicmVzdWx0IiwiZmluZERlZmF1bHRMYXllclByb3BzIiwicHJvcHMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3VuZExheWVycyIsImNvbmNhdCIsIm1hcCIsInAiLCJ0eXBlIiwiZGF0YUlkIiwiaWQiLCJpc1Zpc2libGUiLCJsYXllciIsInNldEluaXRpYWxMYXllckNvbmZpZyIsImRhdGFDb250YWluZXIiLCJjYWxjdWxhdGVMYXllckRhdGEiLCJzdGF0ZSIsIm9sZExheWVyRGF0YSIsImxheWVyRGF0YSIsImlzVmFsaWQiLCJfb2xkRGF0YVVwZGF0ZVRyaWdnZXJzIiwidW5kZWZpbmVkIiwiaGFzQWxsQ29sdW1ucyIsImNvbmZpZyIsImZvcm1hdExheWVyRGF0YSIsImRhdGFzZXRzIiwidXBkYXRlTGF5ZXJDb25maWciLCJlcnJvck1lc3NhZ2UiLCJlcnIiLCJDb25zb2xlIiwiZXJyb3IiLCJFcnJvciIsIm1lc3NhZ2UiLCJzdWJzdHJpbmciLCJnZXRMYXllckhvdmVyUHJvcCIsIl9yZWYiLCJhbmltYXRpb25Db25maWciLCJpbnRlcmFjdGlvbkNvbmZpZyIsImhvdmVySW5mbyIsImxheWVycyIsImxheWVyc1RvUmVuZGVyIiwidG9vbHRpcCIsImVuYWJsZWQiLCJwaWNrZWQiLCJvYmplY3QiLCJvdmVybGF5IiwiaWR4IiwiaW5kZXgiLCJnZXRIb3ZlckRhdGEiLCJfZGF0YXNldHMkZGF0YUlkIiwiZmllbGRzIiwiZGF0YSIsImZpZWxkc1RvU2hvdyIsImN1cnJlbnRUaW1lIiwicmVuZGVyRGVja0dsTGF5ZXIiLCJsYXllckNhbGxiYWNrcyIsImxheWVySW5kZXgiLCJjbGlja2VkIiwibWFwU3RhdGUiLCJtYXBMYXllcnMiLCJleHBlcmltZW50YWxDb250ZXh0IiwiX3JlZjIiLCJncHVGaWx0ZXIiLCJvYmplY3RIb3ZlcmVkIiwidmlzaWJsZSIsInJlbmRlckxheWVyIiwiaXNMYXllclJlbmRlcmFibGUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsInNob3VsZFJlbmRlckxheWVyIiwiaXNMYXllclZpc2libGUiLCJwcmVwYXJlTGF5ZXJzRm9yRGVjayIsImFjY3UiLCJvdmVybGF5VHlwZSIsIk9WRVJMQVlfVFlQRV9DT05TVCIsImRlY2tnbCIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsImdldEN1c3RvbURlY2tMYXllcnMiLCJkZWNrR2xQcm9wcyIsImJvdHRvbURlY2tMYXllcnMiLCJpc0Z1bmN0aW9uIiwidG9wRGVja0xheWVycyIsInRvcExheWVycyIsImJpbmRMYXllckNhbGxiYWNrcyIsImtleSIsInZhbCIsImNvbXB1dGVEZWNrTGF5ZXJzIiwiX3JlZjMiLCJvcHRpb25zIiwidmlzU3RhdGUiLCJtYXBTdHlsZSIsImVmZmVjdHMiLCJsYXllck9yZGVyIiwic3BsaXRNYXBzIiwiX3JlZjQiLCJtYXBJbmRleCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwicHJpbWFyeU1hcCIsImxheWVyc0ZvckRlY2siLCJlZGl0b3JJbmZvIiwiZGF0YUxheWVycyIsImhhc1NoYWRvd0VmZmVjdCIsInNvbWUiLCJlZmZlY3QiLCJMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVCIsImdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMiLCJjdXJyZW50TGF5ZXJzRm9yRGVjayIsInNsaWNlIiwicmV2ZXJzZSIsIm92ZXJsYXlzIiwibGF5ZXJJZCIsImZpbmRJbmRleCIsIl9yZWY1IiwiYmluZGVkTGF5ZXJDYWxsYmFja3MiLCJsYXllck92ZXJsYXkiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJUaHJlZURCdWlsZGluZ0xheWVyIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsInVwZGF0ZVRyaWdnZXJzIiwiZ2V0RmlsbENvbG9yIiwiX2dldEN1c3RvbURlY2tMYXllcnMiLCJfZ2V0Q3VzdG9tRGVja0xheWVyczIiLCJfc2xpY2VkVG9BcnJheTIiLCJjdXN0b21Cb3R0b21EZWNrTGF5ZXJzIiwiY3VzdG9tVG9wRGVja0xheWVycyIsImVkaXRvckxheWVyIiwiZ2V0RWRpdG9yTGF5ZXIiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZ2V0TGF5ZXJPcmRlckZyb21MYXllcnMiLCJfcmVmNiIsInJlb3JkZXJMYXllck9yZGVyIiwib3JpZ2luTGF5ZXJJZCIsImRlc3RpbmF0aW9uTGF5ZXJJZCIsImFjdGl2ZUluZGV4IiwiaW5kZXhPZiIsIm92ZXJJbmRleCIsImFycmF5TW92ZSIsImFkZExheWVyVG9MYXllck9yZGVyIiwiZ2V0TGF5ZXJIb3ZlclByb3BWYWx1ZSIsImZpZWxkSW5kZXgiLCJEYXRhUm93IiwidmFsdWVBdCIsImFyZUFueURlY2tMYXllcnNMb2FkaW5nIiwiaW50ZXJuYWxTdGF0ZSIsImlzTG9hZGVkIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xheWVyLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBDb25zb2xlIGZyb20gJ2dsb2JhbC9jb25zb2xlJztcblxuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRCwgTElHSFRfQU5EX1NIQURPV19FRkZFQ1R9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TGF5ZXIgYXMgRGVja0xheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbnR5cGUgRGVja0xheWVyUHJvcHMgPSBhbnk7XG5pbXBvcnQge1xuICBGaWVsZCxcbiAgVG9vbHRpcEZpZWxkLFxuICBDb21wYXJlVHlwZSxcbiAgU3BsaXRNYXBMYXllcnMsXG4gIEVkaXRvcixcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVNlbGVjdGlvbkNvbnRleHQsXG4gIEJpbmRlZExheWVyQ2FsbGJhY2tzLFxuICBMYXllckNhbGxiYWNrcyxcbiAgVmlld3BvcnRcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSxcbiAgRmluZERlZmF1bHRMYXllclByb3BzLFxuICBMYXllcixcbiAgTGF5ZXJDbGFzc2VzVHlwZSxcbiAgT1ZFUkxBWV9UWVBFX0NPTlNULFxuICBnZXRFZGl0b3JMYXllclxufSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5cbmltcG9ydCBLZXBsZXJUYWJsZSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge2lzRnVuY3Rpb24sIGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHMsIERhdGFSb3d9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHthcnJheU1vdmV9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcblxuaW1wb3J0IHtUaHJlZURCdWlsZGluZ0xheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuXG5leHBvcnQgdHlwZSBMYXllcnNUb1JlbmRlciA9IHtcbiAgW2xheWVySWQ6IHN0cmluZ106IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhID0ge1xuICBwb2ludHM6IGFueVtdO1xuICBjb2xvclZhbHVlPzogYW55O1xuICBlbGV2YXRpb25WYWx1ZT86IGFueTtcbiAgYWdncmVnYXRlZERhdGE/OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIG1lYXN1cmU6IHN0cmluZztcbiAgICAgIHZhbHVlPzogYW55O1xuICAgIH1cbiAgPjtcbn07XG5cbmV4cG9ydCB0eXBlIExheWVySG92ZXJQcm9wID0ge1xuICBkYXRhOiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IG51bGw7XG4gIGZpZWxkczogRmllbGRbXTtcbiAgZmllbGRzVG9TaG93OiBUb29sdGlwRmllbGRbXTtcbiAgbGF5ZXI6IExheWVyO1xuICBwcmltYXJ5RGF0YT86IERhdGFSb3cgfCBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhIHwgbnVsbDtcbiAgY29tcGFyZVR5cGU/OiBDb21wYXJlVHlwZTtcbiAgY3VycmVudFRpbWU/OiBWaXNTdGF0ZVsnYW5pbWF0aW9uQ29uZmlnJ11bJ2N1cnJlbnRUaW1lJ107XG59O1xuXG4vKipcbiAqIEZpbmQgZGVmYXVsdCBsYXllcnMgZnJvbSBmaWVsZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmREZWZhdWx0TGF5ZXIoZGF0YXNldDogS2VwbGVyVGFibGUsIGxheWVyQ2xhc3NlczogTGF5ZXJDbGFzc2VzVHlwZSk6IExheWVyW10ge1xuICBpZiAoIWRhdGFzZXQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBsYXllclByb3BzID0gKE9iamVjdC5rZXlzKGxheWVyQ2xhc3NlcykgYXMgQXJyYXk8a2V5b2YgTGF5ZXJDbGFzc2VzVHlwZT4pLnJlZHVjZShcbiAgICAocHJldmlvdXMsIGxjKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQ6IEZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlID1cbiAgICAgICAgdHlwZW9mIGxheWVyQ2xhc3Nlc1tsY10uZmluZERlZmF1bHRMYXllclByb3BzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgPyBsYXllckNsYXNzZXNbbGNdLmZpbmREZWZhdWx0TGF5ZXJQcm9wcyhkYXRhc2V0LCBwcmV2aW91cylcbiAgICAgICAgICA6IHtwcm9wczogW119O1xuXG4gICAgICBjb25zdCBwcm9wcyA9IEFycmF5LmlzQXJyYXkocmVzdWx0KSA/IHJlc3VsdCA6IHJlc3VsdC5wcm9wcyB8fCBbXTtcbiAgICAgIGNvbnN0IGZvdW5kTGF5ZXJzID0gcmVzdWx0LmZvdW5kTGF5ZXJzIHx8IHByZXZpb3VzO1xuXG4gICAgICByZXR1cm4gZm91bmRMYXllcnMuY29uY2F0KFxuICAgICAgICBwcm9wcy5tYXAocCA9PiAoe1xuICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgdHlwZTogbGMsXG4gICAgICAgICAgZGF0YUlkOiBkYXRhc2V0LmlkLFxuICAgICAgICAgIC8vIHNldCBhcmMgbGF5ZXIgaW5pdGlhbCB2aXNpYmxpdHkgdG8gZmFsc2UsIGJlY2F1c2UgYXJjcyB0ZW5kIHRvIGJlIHRvbyBtdXN5XG4gICAgICAgICAgLi4uKGxjID09PSAnYXJjJyB8fCBsYyA9PT0gJ2xpbmUnID8ge2lzVmlzaWJsZTogZmFsc2V9IDoge30pXG4gICAgICAgIH0pKVxuICAgICAgKTtcbiAgICB9LFxuICAgIFtdIGFzIChGaW5kRGVmYXVsdExheWVyUHJvcHMgJiB7dHlwZTogc3RyaW5nfSlbXVxuICApO1xuXG4gIC8vIGdvIHRocm91Z2ggYWxsIGxheWVyUHJvcHMgdG8gY3JlYXRlIGxheWVyXG4gIHJldHVybiBsYXllclByb3BzLm1hcChwcm9wcyA9PiB7XG4gICAgY29uc3QgbGF5ZXIgPSBuZXcgbGF5ZXJDbGFzc2VzW3Byb3BzLnR5cGVdKHByb3BzKTtcbiAgICByZXR1cm4gdHlwZW9mIGxheWVyLnNldEluaXRpYWxMYXllckNvbmZpZyA9PT0gJ2Z1bmN0aW9uJyAmJiBkYXRhc2V0LmRhdGFDb250YWluZXJcbiAgICAgID8gbGF5ZXIuc2V0SW5pdGlhbExheWVyQ29uZmlnKGRhdGFzZXQpXG4gICAgICA6IGxheWVyO1xuICB9KTtcbn1cblxudHlwZSBNaW5WaXNTdGF0ZUZvckxheWVyRGF0YSA9IHtcbiAgZGF0YXNldHM6IFZpc1N0YXRlWydkYXRhc2V0cyddO1xuICBhbmltYXRpb25Db25maWc6IFZpc1N0YXRlWydhbmltYXRpb25Db25maWcnXTtcbn07XG5cbi8qKlxuICogQ2FsY3VsYXRlIGxheWVyIGRhdGEgYmFzZWQgb24gbGF5ZXIgdHlwZSwgY29sIENvbmZpZyxcbiAqIHJldHVybiB1cGRhdGVkIGxheWVyIGlmIGNvbG9yRG9tYWluLCBkYXRhTWFwIGhhcyBjaGFuZ2VkLlxuICogQWxzbywgcmV0dXJucyB1cGRhdGVkIGxheWVyIGluIGNhc2UgdGhlIGlucHV0IGxheWVyIHdhcyBpbiBpbnZhbGlkIHN0YXRlLlxuICogQWRkcyBhbiBlcnJvciBtZXNzYWdlIHRvIHRoZSBsYXllciBpbiBjYXNlIG9mIGFuIGV4Y2VwdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUxheWVyRGF0YTxTIGV4dGVuZHMgTWluVmlzU3RhdGVGb3JMYXllckRhdGE+KFxuICBsYXllcjogTGF5ZXIsXG4gIHN0YXRlOiBTLFxuICBvbGRMYXllckRhdGE/OiBhbnlcbik6IHtcbiAgbGF5ZXJEYXRhOiBhbnk7XG4gIGxheWVyOiBMYXllcjtcbn0ge1xuICBsZXQgbGF5ZXJEYXRhO1xuICB0cnkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGF5ZXIgdXBkYXRlcyBkYXRhIGFmdGVyIGFuIGVycm9yXG4gICAgaWYgKCFsYXllci5pc1ZhbGlkKSB7XG4gICAgICBsYXllci5fb2xkRGF0YVVwZGF0ZVRyaWdnZXJzID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghbGF5ZXIudHlwZSB8fCAhbGF5ZXIuaGFzQWxsQ29sdW1ucygpIHx8ICFsYXllci5jb25maWcuZGF0YUlkKSB7XG4gICAgICByZXR1cm4ge2xheWVyLCBsYXllckRhdGE6IHt9fTtcbiAgICB9XG5cbiAgICBsYXllckRhdGEgPSBsYXllci5mb3JtYXRMYXllckRhdGEoc3RhdGUuZGF0YXNldHMsIG9sZExheWVyRGF0YSk7XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBkYXRhIGZvciB0aGUgbGF5ZXIgaXMgdXBkYXRlZCB3aXRob3V0IGVycm9yc1xuICAgIGlmICghbGF5ZXIuaXNWYWxpZCkge1xuICAgICAgLy8gU3dpdGNoIHRvIHZpc2libGUgYWZ0ZXIgYW4gZXJyb3JcbiAgICAgIGxheWVyID0gbGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICBpc1Zpc2libGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsYXllci5pc1ZhbGlkID0gdHJ1ZTtcbiAgICBsYXllci5lcnJvck1lc3NhZ2UgPSBudWxsO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBDb25zb2xlLmVycm9yKGVycik7XG4gICAgbGF5ZXIgPSBsYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICBpc1Zpc2libGU6IGZhbHNlXG4gICAgfSk7XG4gICAgbGF5ZXIuaXNWYWxpZCA9IGZhbHNlO1xuXG4gICAgbGF5ZXIuZXJyb3JNZXNzYWdlID1cbiAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5tZXNzYWdlID8gZXJyLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsIDEwMCkgOiAnVW5rbm93biBlcnJvcic7XG5cbiAgICBsYXllckRhdGEgPSB7fTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbGF5ZXIsXG4gICAgbGF5ZXJEYXRhXG4gIH07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHByb3BzIHBhc3NlZCB0byBMYXllckhvdmVySW5mb1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJIb3ZlclByb3Aoe1xuICBhbmltYXRpb25Db25maWcsXG4gIGludGVyYWN0aW9uQ29uZmlnLFxuICBob3ZlckluZm8sXG4gIGxheWVycyxcbiAgbGF5ZXJzVG9SZW5kZXIsXG4gIGRhdGFzZXRzXG59OiB7XG4gIGludGVyYWN0aW9uQ29uZmlnOiBWaXNTdGF0ZVsnaW50ZXJhY3Rpb25Db25maWcnXTtcbiAgYW5pbWF0aW9uQ29uZmlnOiBWaXNTdGF0ZVsnYW5pbWF0aW9uQ29uZmlnJ107XG4gIGhvdmVySW5mbzogVmlzU3RhdGVbJ2hvdmVySW5mbyddO1xuICBsYXllcnM6IFZpc1N0YXRlWydsYXllcnMnXTtcbiAgbGF5ZXJzVG9SZW5kZXI6IExheWVyc1RvUmVuZGVyO1xuICBkYXRhc2V0czogVmlzU3RhdGVbJ2RhdGFzZXRzJ107XG59KTogTGF5ZXJIb3ZlclByb3AgfCBudWxsIHtcbiAgaWYgKGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuZW5hYmxlZCAmJiBob3ZlckluZm8gJiYgaG92ZXJJbmZvLnBpY2tlZCkge1xuICAgIC8vIGlmIGFueXRoaW5nIGhvdmVyZWRcbiAgICBjb25zdCB7b2JqZWN0LCBsYXllcjogb3ZlcmxheX0gPSBob3ZlckluZm87XG5cbiAgICAvLyBkZWNrZ2wgbGF5ZXIgdG8ga2VwbGVyLWdsIGxheWVyXG4gICAgY29uc3QgbGF5ZXIgPSBsYXllcnNbb3ZlcmxheS5wcm9wcy5pZHhdO1xuXG4gICAgLy8gTk9URTogZm9yIGJpbmFyeSBmb3JtYXQgR2VvanNvbkxheWVyLCBkZWNrIHdpbGwgcmV0dXJuIG9iamVjdD1udWxsIGJ1dCBob3ZlckluZm8uaW5kZXggPj0gMFxuICAgIGlmIChcbiAgICAgIChvYmplY3QgfHwgaG92ZXJJbmZvLmluZGV4ID49IDApICYmXG4gICAgICBsYXllciAmJlxuICAgICAgbGF5ZXIuZ2V0SG92ZXJEYXRhICYmXG4gICAgICBsYXllcnNUb1JlbmRlcltsYXllci5pZF1cbiAgICApIHtcbiAgICAgIC8vIGlmIGxheWVyIGlzIHZpc2libGUgYW5kIGhhdmUgaG92ZXJlZCBkYXRhXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbmZpZzoge2RhdGFJZH1cbiAgICAgIH0gPSBsYXllcjtcbiAgICAgIGlmICghZGF0YUlkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0c1tkYXRhSWRdO1xuICAgICAgY29uc3QgZGF0YTogRGF0YVJvdyB8IG51bGwgPSBsYXllci5nZXRIb3ZlckRhdGEoXG4gICAgICAgIG9iamVjdCB8fCBob3ZlckluZm8uaW5kZXgsXG4gICAgICAgIGRhdGFDb250YWluZXIsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICBob3ZlckluZm9cbiAgICAgICk7XG4gICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWVsZHNUb1Nob3cgPSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5maWVsZHNUb1Nob3dbZGF0YUlkXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICBmaWVsZHNUb1Nob3csXG4gICAgICAgIGxheWVyLFxuICAgICAgICBjdXJyZW50VGltZTogYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRGVja0dsTGF5ZXIocHJvcHM6IGFueSwgbGF5ZXJDYWxsYmFja3M6IHtba2V5OiBzdHJpbmddOiBhbnl9KSB7XG4gIGNvbnN0IHtcbiAgICBkYXRhc2V0cyxcbiAgICBsYXllcixcbiAgICBsYXllckluZGV4LFxuICAgIGRhdGEsXG4gICAgaG92ZXJJbmZvLFxuICAgIGNsaWNrZWQsXG4gICAgbWFwU3RhdGUsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG1hcExheWVycyxcbiAgICBleHBlcmltZW50YWxDb250ZXh0XG4gIH0gPSBwcm9wcztcbiAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdO1xuICBjb25zdCB7Z3B1RmlsdGVyfSA9IGRhdGFzZXQgfHwge307XG4gIGNvbnN0IG9iamVjdEhvdmVyZWQgPSBjbGlja2VkIHx8IGhvdmVySW5mbztcbiAgY29uc3QgdmlzaWJsZSA9ICFtYXBMYXllcnMgfHwgKG1hcExheWVycyAmJiBtYXBMYXllcnNbbGF5ZXIuaWRdKTtcbiAgLy8gTGF5ZXIgaXMgTGF5ZXIgY2xhc3NcbiAgcmV0dXJuIGxheWVyLnJlbmRlckxheWVyKHtcbiAgICBkYXRhLFxuICAgIGdwdUZpbHRlcixcbiAgICBpZHg6IGxheWVySW5kZXgsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgbGF5ZXJDYWxsYmFja3MsXG4gICAgbWFwU3RhdGUsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG9iamVjdEhvdmVyZWQsXG4gICAgdmlzaWJsZSxcbiAgICBkYXRhc2V0LFxuICAgIGV4cGVyaW1lbnRhbENvbnRleHRcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xheWVyUmVuZGVyYWJsZShsYXllcjogTGF5ZXIsIGxheWVyRGF0YSkge1xuICByZXR1cm4gbGF5ZXIuaWQgIT09IEdFT0NPREVSX0xBWUVSX0lEICYmIGxheWVyLnNob3VsZFJlbmRlckxheWVyKGxheWVyRGF0YSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xheWVyVmlzaWJsZShsYXllciwgbWFwTGF5ZXJzKSB7XG4gIHJldHVybiAoXG4gICAgbGF5ZXIuY29uZmlnLmlzVmlzaWJsZSAmJlxuICAgIC8vIGlmIGxheWVyLmlkIGlzIG5vdCBpbiBtYXBMYXllcnMsIGRvbid0IHJlbmRlciBpdFxuICAgICghbWFwTGF5ZXJzIHx8IChtYXBMYXllcnMgJiYgbWFwTGF5ZXJzW2xheWVyLmlkXSkpXG4gICk7XG59XG5cbi8vIFByZXBhcmUgYSBkaWN0IG9mIGxheWVycyByZW5kZXJlZCBieSB0aGUgZGVjay5nbFxuLy8gTm90ZSwgaXNWaXNpYmxlOiBmYWxzZSBsYXllciBpcyBwYXNzZWQgdG8gZGVjay5nbCBoZXJlXG4vLyByZXR1cm4ge1tpZF06IHRydWUgXFwgZmFsc2V9XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUxheWVyc0ZvckRlY2soXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGF5ZXJEYXRhOiBWaXNTdGF0ZVsnbGF5ZXJEYXRhJ11cbik6IHtcbiAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbn0ge1xuICByZXR1cm4gbGF5ZXJzLnJlZHVjZShcbiAgICAoYWNjdSwgbGF5ZXIsIGlkeCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuaWRdOlxuICAgICAgICBpc0xheWVyUmVuZGVyYWJsZShsYXllciwgbGF5ZXJEYXRhW2lkeF0pICYmIGxheWVyLm92ZXJsYXlUeXBlID09PSBPVkVSTEFZX1RZUEVfQ09OU1QuZGVja2dsXG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuLy8gUHJlcGFyZSBhIGRpY3Qgb2YgcmVuZGVyZWQgbGF5ZXJzIHJlbmRlcmVkIGluIHRoZSBtYXBcbi8vIFRoaXMgaW5jbHVkZXMgb25seSB0aGUgdmlzaWJpbGUgbGF5ZXJzIGZvciBzaW5nbGUgbWFwIHZpZXcgYW5kIHNwbGl0IG1hcCB2aWV3XG4vLyByZXR1cm4ge1tpZF06IHRydWUgXFwgZmFsc2V9XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUxheWVyc1RvUmVuZGVyKFxuICBsYXllcnM6IExheWVyW10sXG4gIGxheWVyRGF0YTogVmlzU3RhdGVbJ2xheWVyRGF0YSddLFxuICBtYXBMYXllcnM/OiBTcGxpdE1hcExheWVycyB8IHVuZGVmaW5lZCB8IG51bGxcbik6IExheWVyc1RvUmVuZGVyIHtcbiAgcmV0dXJuIGxheWVycy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyLCBpZHgpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2xheWVyLmlkXTogaXNMYXllclJlbmRlcmFibGUobGF5ZXIsIGxheWVyRGF0YVtpZHhdKSAmJiBpc0xheWVyVmlzaWJsZShsYXllciwgbWFwTGF5ZXJzKVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbnR5cGUgQ3VzdG9tRGVja0xheWVyID0gRGVja0xheWVyPERlY2tMYXllclByb3BzPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1c3RvbURlY2tMYXllcnMoZGVja0dsUHJvcHM/OiBhbnkpOiBbQ3VzdG9tRGVja0xheWVyW10sIEN1c3RvbURlY2tMYXllcltdXSB7XG4gIGNvbnN0IGJvdHRvbURlY2tMYXllcnMgPSBBcnJheS5pc0FycmF5KGRlY2tHbFByb3BzPy5sYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8ubGF5ZXJzXG4gICAgOiBpc0Z1bmN0aW9uKGRlY2tHbFByb3BzPy5sYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8ubGF5ZXJzKClcbiAgICA6IFtdO1xuICBjb25zdCB0b3BEZWNrTGF5ZXJzID0gQXJyYXkuaXNBcnJheShkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LnRvcExheWVyc1xuICAgIDogaXNGdW5jdGlvbihkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LnRvcExheWVycygpXG4gICAgOiBbXTtcblxuICByZXR1cm4gW2JvdHRvbURlY2tMYXllcnMsIHRvcERlY2tMYXllcnNdO1xufVxuXG5leHBvcnQgdHlwZSBDb21wdXRlRGVja0xheWVyc1Byb3BzID0ge1xuICBtYXBJbmRleD86IG51bWJlcjtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgcHJpbWFyeU1hcD86IGJvb2xlYW47XG4gIGxheWVyc0ZvckRlY2s/OiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG4gIGVkaXRvckluZm8/OiB7XG4gICAgZWRpdG9yOiBFZGl0b3I7XG4gICAgZWRpdG9yTWVudUFjdGl2ZTogYm9vbGVhbjtcbiAgICBvblNldEZlYXR1cmVzOiAoZmVhdHVyZXM6IEZlYXR1cmVbXSkgPT4gYW55O1xuICAgIHNldFNlbGVjdGVkRmVhdHVyZTogKFxuICAgICAgZmVhdHVyZTogRmVhdHVyZSB8IG51bGwsXG4gICAgICBzZWxlY3Rpb25Db250ZXh0PzogRmVhdHVyZVNlbGVjdGlvbkNvbnRleHRcbiAgICApID0+IGFueTtcbiAgICBmZWF0dXJlQ29sbGVjdGlvbjoge1xuICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgZmVhdHVyZXM6IEZlYXR1cmVbXTtcbiAgICB9O1xuICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4ZXM6IG51bWJlcltdO1xuICAgIHZpZXdwb3J0OiBWaWV3cG9ydDtcbiAgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kTGF5ZXJDYWxsYmFja3MoXG4gIGxheWVyQ2FsbGJhY2tzOiBMYXllckNhbGxiYWNrcyA9IHt9LFxuICBpZHg6IG51bWJlclxuKTogQmluZGVkTGF5ZXJDYWxsYmFja3Mge1xuICByZXR1cm4gT2JqZWN0LmtleXMobGF5ZXJDYWxsYmFja3MpLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtrZXldOiB2YWwgPT4gbGF5ZXJDYWxsYmFja3Nba2V5XShpZHgsIHZhbClcbiAgICB9KSxcbiAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCAodmFsOiB1bmtub3duKSA9PiB2b2lkPlxuICApO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVEZWNrTGF5ZXJzKFxuICB7dmlzU3RhdGUsIG1hcFN0YXRlLCBtYXBTdHlsZX06IGFueSxcbiAgb3B0aW9ucz86IENvbXB1dGVEZWNrTGF5ZXJzUHJvcHMsXG4gIGxheWVyQ2FsbGJhY2tzPzogTGF5ZXJDYWxsYmFja3MsXG4gIGRlY2tHbFByb3BzPzogYW55XG4pOiBMYXllcltdIHtcbiAgY29uc3Qge1xuICAgIGRhdGFzZXRzLFxuICAgIGVmZmVjdHMsXG4gICAgbGF5ZXJzLFxuICAgIGxheWVyT3JkZXIsXG4gICAgbGF5ZXJEYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBzcGxpdE1hcHNcbiAgfSA9IHZpc1N0YXRlO1xuXG4gIGNvbnN0IHttYXBJbmRleCwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgcHJpbWFyeU1hcCwgbGF5ZXJzRm9yRGVjaywgZWRpdG9ySW5mb30gPVxuICAgIG9wdGlvbnMgfHwge307XG5cbiAgbGV0IGRhdGFMYXllcnM6IGFueVtdID0gW107XG5cbiAgY29uc3QgaGFzU2hhZG93RWZmZWN0ID0gZWZmZWN0cy5zb21lKGVmZmVjdCA9PiB7XG4gICAgcmV0dXJuIGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlO1xuICB9KTtcblxuICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICBjb25zdCBtYXBMYXllcnMgPSBnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzKHNwbGl0TWFwcywgbWFwSW5kZXggfHwgMCk7XG5cbiAgICBjb25zdCBjdXJyZW50TGF5ZXJzRm9yRGVjayA9IGxheWVyc0ZvckRlY2sgfHwgcHJlcGFyZUxheWVyc0ZvckRlY2sobGF5ZXJzLCBsYXllckRhdGEpO1xuXG4gICAgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgIC5zbGljZSgpXG4gICAgICAucmV2ZXJzZSgpXG4gICAgICAuZmlsdGVyKGlkID0+IGN1cnJlbnRMYXllcnNGb3JEZWNrW2lkXSlcbiAgICAgIC5yZWR1Y2UoKG92ZXJsYXlzLCBsYXllcklkKSA9PiB7XG4gICAgICAgIGNvbnN0IGxheWVySW5kZXggPSBsYXllcnMuZmluZEluZGV4KCh7aWR9KSA9PiBpZCA9PT0gbGF5ZXJJZCk7XG4gICAgICAgIGNvbnN0IGJpbmRlZExheWVyQ2FsbGJhY2tzID0gbGF5ZXJDYWxsYmFja3NcbiAgICAgICAgICA/IGJpbmRMYXllckNhbGxiYWNrcyhsYXllckNhbGxiYWNrcywgbGF5ZXJJbmRleClcbiAgICAgICAgICA6IHt9O1xuICAgICAgICBjb25zdCBsYXllciA9IGxheWVyc1tsYXllckluZGV4XTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGxheWVyRGF0YVtsYXllckluZGV4XTtcbiAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgICBsYXllcixcbiAgICAgICAgICAgIGxheWVySW5kZXgsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICAgICAgY2xpY2tlZCxcbiAgICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgICBtYXBMYXllcnMsXG4gICAgICAgICAgICBleHBlcmltZW50YWxDb250ZXh0OiB7XG4gICAgICAgICAgICAgIGhhc1NoYWRvd0VmZmVjdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmluZGVkTGF5ZXJDYWxsYmFja3NcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG92ZXJsYXlzLmNvbmNhdChsYXllck92ZXJsYXkgfHwgW10pO1xuICAgICAgfSwgW10pO1xuICB9XG5cbiAgaWYgKCFwcmltYXJ5TWFwKSB7XG4gICAgcmV0dXJuIGRhdGFMYXllcnM7XG4gIH1cblxuICBpZiAoXG4gICAgbWFwU3R5bGU/LnZpc2libGVMYXllckdyb3Vwc1snM2QgYnVpbGRpbmcnXSAmJlxuICAgIHByaW1hcnlNYXAgJiZcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbiAmJlxuICAgIG1hcGJveEFwaVVybFxuICApIHtcbiAgICBkYXRhTGF5ZXJzLnB1c2goXG4gICAgICBuZXcgVGhyZWVEQnVpbGRpbmdMYXllcih7XG4gICAgICAgIGlkOiAnX2tlcGxlcmdsXzNkLWJ1aWxkaW5nJyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgdGhyZWVEQnVpbGRpbmdDb2xvcjogbWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvcixcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICBnZXRGaWxsQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3JcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY29uc3QgW2N1c3RvbUJvdHRvbURlY2tMYXllcnMsIGN1c3RvbVRvcERlY2tMYXllcnNdID0gZ2V0Q3VzdG9tRGVja0xheWVycyhkZWNrR2xQcm9wcyk7XG5cbiAgY29uc3QgZWRpdG9yTGF5ZXI6IGFueVtdID0gW107XG4gIGlmIChlZGl0b3JJbmZvKSB7XG4gICAgZWRpdG9yTGF5ZXIucHVzaChcbiAgICAgIGdldEVkaXRvckxheWVyKHtcbiAgICAgICAgLi4uZWRpdG9ySW5mb1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIFsuLi5jdXN0b21Cb3R0b21EZWNrTGF5ZXJzLCAuLi5kYXRhTGF5ZXJzLCAuLi5jdXN0b21Ub3BEZWNrTGF5ZXJzLCAuLi5lZGl0b3JMYXllcl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllck9yZGVyRnJvbUxheWVyczxUIGV4dGVuZHMge2lkOiBzdHJpbmd9PihsYXllcnM6IFRbXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGxheWVycy5tYXAoKHtpZH0pID0+IGlkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlb3JkZXJMYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBWaXNTdGF0ZVsnbGF5ZXJPcmRlciddLFxuICBvcmlnaW5MYXllcklkOiBzdHJpbmcsXG4gIGRlc3RpbmF0aW9uTGF5ZXJJZDogc3RyaW5nXG4pOiBWaXNTdGF0ZVsnbGF5ZXJPcmRlciddIHtcbiAgY29uc3QgYWN0aXZlSW5kZXggPSBsYXllck9yZGVyLmluZGV4T2Yob3JpZ2luTGF5ZXJJZCk7XG4gIGNvbnN0IG92ZXJJbmRleCA9IGxheWVyT3JkZXIuaW5kZXhPZihkZXN0aW5hdGlvbkxheWVySWQpO1xuXG4gIHJldHVybiBhcnJheU1vdmUobGF5ZXJPcmRlciwgYWN0aXZlSW5kZXgsIG92ZXJJbmRleCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRMYXllclRvTGF5ZXJPcmRlcihcbiAgbGF5ZXJPcmRlcjogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSxcbiAgbGF5ZXJJZDogc3RyaW5nXG4pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbbGF5ZXJJZCwgLi4ubGF5ZXJPcmRlcl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllckhvdmVyUHJvcFZhbHVlKFxuICBkYXRhOiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGZpZWxkSW5kZXg6IG51bWJlclxuKSB7XG4gIGlmICghZGF0YSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBEYXRhUm93KSByZXR1cm4gZGF0YS52YWx1ZUF0KGZpZWxkSW5kZXgpO1xuICByZXR1cm4gZGF0YVtmaWVsZEluZGV4XTtcbn1cblxuLyoqIENoZWNrcyBpZiBhbnkgRGVjayBsYXllcnMgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gYXJlQW55RGVja0xheWVyc0xvYWRpbmcobGF5ZXJzOiBEZWNrTGF5ZXJbXSk6IGJvb2xlYW4ge1xuICByZXR1cm4gbGF5ZXJzLnNvbWUoXG4gICAgLy8gbGF5ZXIuaXNMb2FkZWQgY2hhbmdlcyBmcmVxdWVudGx5IGluIERlY2sgKGV2ZW4gb24gaG92ZXIpIHNvIHdlIGNoZWNrIGFkZGl0aW9uYWwgcHJvcGVydGllc1xuICAgIGxheWVyID0+IGxheWVyLmludGVybmFsU3RhdGUgJiYgIWxheWVyLmlzTG9hZGVkXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFlQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFXQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFBNkQsU0FBQU0sUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVB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
|
|
@@ -77,11 +77,11 @@ export declare const toggleSplitMapViewportUpdater: (state: MapState, action: Ma
|
|
|
77
77
|
dragRotate: boolean;
|
|
78
78
|
width: number;
|
|
79
79
|
height: number;
|
|
80
|
-
minZoom?: number
|
|
81
|
-
maxZoom?: number
|
|
82
|
-
maxBounds?: Bounds
|
|
80
|
+
minZoom?: number;
|
|
81
|
+
maxZoom?: number;
|
|
82
|
+
maxBounds?: Bounds;
|
|
83
83
|
initialState?: any;
|
|
84
|
-
scale?: number
|
|
84
|
+
scale?: number;
|
|
85
85
|
isSplit: boolean;
|
|
86
86
|
splitMapViewports: Viewport[];
|
|
87
87
|
};
|
package/dist/map-state.d.ts
CHANGED
|
@@ -9,11 +9,11 @@ export declare const mapStateReducerFactory: (initialState?: {}) => import("redu
|
|
|
9
9
|
dragRotate: boolean;
|
|
10
10
|
width: number;
|
|
11
11
|
height: number;
|
|
12
|
-
minZoom?: number
|
|
13
|
-
maxZoom?: number
|
|
14
|
-
maxBounds?: import("@kepler.gl/types").Bounds
|
|
12
|
+
minZoom?: number;
|
|
13
|
+
maxZoom?: number;
|
|
14
|
+
maxBounds?: import("@kepler.gl/types").Bounds;
|
|
15
15
|
initialState?: any;
|
|
16
|
-
scale?: number
|
|
16
|
+
scale?: number;
|
|
17
17
|
isSplit: boolean;
|
|
18
18
|
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
19
19
|
}, {
|
|
@@ -27,11 +27,11 @@ export declare const mapStateReducerFactory: (initialState?: {}) => import("redu
|
|
|
27
27
|
dragRotate: boolean;
|
|
28
28
|
width: number;
|
|
29
29
|
height: number;
|
|
30
|
-
minZoom?: number
|
|
31
|
-
maxZoom?: number
|
|
32
|
-
maxBounds?: import("@kepler.gl/types").Bounds
|
|
30
|
+
minZoom?: number;
|
|
31
|
+
maxZoom?: number;
|
|
32
|
+
maxBounds?: import("@kepler.gl/types").Bounds;
|
|
33
33
|
initialState?: any;
|
|
34
|
-
scale?: number
|
|
34
|
+
scale?: number;
|
|
35
35
|
isSplit: boolean;
|
|
36
36
|
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
37
37
|
}>;
|
|
@@ -46,11 +46,11 @@ declare const _default: import("redux-actions").ReduxCompatibleReducer<{
|
|
|
46
46
|
dragRotate: boolean;
|
|
47
47
|
width: number;
|
|
48
48
|
height: number;
|
|
49
|
-
minZoom?: number
|
|
50
|
-
maxZoom?: number
|
|
51
|
-
maxBounds?: import("@kepler.gl/types").Bounds
|
|
49
|
+
minZoom?: number;
|
|
50
|
+
maxZoom?: number;
|
|
51
|
+
maxBounds?: import("@kepler.gl/types").Bounds;
|
|
52
52
|
initialState?: any;
|
|
53
|
-
scale?: number
|
|
53
|
+
scale?: number;
|
|
54
54
|
isSplit: boolean;
|
|
55
55
|
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
56
56
|
}, {
|
|
@@ -64,11 +64,11 @@ declare const _default: import("redux-actions").ReduxCompatibleReducer<{
|
|
|
64
64
|
dragRotate: boolean;
|
|
65
65
|
width: number;
|
|
66
66
|
height: number;
|
|
67
|
-
minZoom?: number
|
|
68
|
-
maxZoom?: number
|
|
69
|
-
maxBounds?: import("@kepler.gl/types").Bounds
|
|
67
|
+
minZoom?: number;
|
|
68
|
+
maxZoom?: number;
|
|
69
|
+
maxBounds?: import("@kepler.gl/types").Bounds;
|
|
70
70
|
initialState?: any;
|
|
71
|
-
scale?: number
|
|
71
|
+
scale?: number;
|
|
72
72
|
isSplit: boolean;
|
|
73
73
|
splitMapViewports: import("@kepler.gl/types").Viewport[];
|
|
74
74
|
}>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RGBColor, LayerGroup, MapStyles, InputStyle, VisibleLayerGroups } from '@kepler.gl/types';
|
|
2
2
|
import { ActionTypes, ReceiveMapConfigPayload, KeplerGlInitPayload, MapStyleActions } from '@kepler.gl/actions';
|
|
3
|
-
export
|
|
4
|
-
export
|
|
3
|
+
export type MapboxStyleUrl = string;
|
|
4
|
+
export type MapStyle = {
|
|
5
5
|
styleType: string;
|
|
6
6
|
visibleLayerGroups: VisibleLayerGroups;
|
|
7
7
|
topLayerGroups: VisibleLayerGroups;
|
|
@@ -84,7 +84,7 @@ export declare const requestMapStylesUpdater: (state: MapStyle, { payload: { map
|
|
|
84
84
|
* @public
|
|
85
85
|
*/
|
|
86
86
|
export declare const initMapStyleUpdater: (state: MapStyle, { payload }: {
|
|
87
|
-
type?:
|
|
87
|
+
type?: typeof ActionTypes.INIT;
|
|
88
88
|
payload: KeplerGlInitPayload;
|
|
89
89
|
}) => MapStyle;
|
|
90
90
|
/**
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ProviderActions } from '@kepler.gl/actions';
|
|
2
2
|
import { ExportFileToCloudPayload } from '@kepler.gl/types';
|
|
3
3
|
import { MapListItem } from '@kepler.gl/cloud-providers';
|
|
4
|
-
|
|
4
|
+
type ActionPayload<P> = {
|
|
5
5
|
type?: string;
|
|
6
6
|
payload: P;
|
|
7
7
|
};
|
|
8
|
-
export
|
|
8
|
+
export type ProviderState = {
|
|
9
9
|
isProviderLoading: boolean;
|
|
10
10
|
isCloudMapLoading: boolean;
|
|
11
11
|
providerError: any;
|
package/dist/root.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { KeplerGlState } from './core';
|
|
2
|
-
|
|
2
|
+
type KeplerGlStateMap = {
|
|
3
3
|
[id: string]: Partial<KeplerGlState>;
|
|
4
4
|
};
|
|
5
5
|
export declare function provideInitialState(initialState: any, extraReducers?: any): (state: {} | undefined, action: any) => KeplerGlStateMap;
|
|
@@ -96,7 +96,7 @@ export declare const INITIAL_UI_STATE: UiState;
|
|
|
96
96
|
* @memberof uiStateUpdaters
|
|
97
97
|
*/
|
|
98
98
|
export declare const initUiStateUpdater: (state: UiState, action: {
|
|
99
|
-
type?: (typeof ActionTypes)[
|
|
99
|
+
type?: (typeof ActionTypes)["INIT"];
|
|
100
100
|
payload: KeplerGlInitPayload;
|
|
101
101
|
}) => UiState;
|
|
102
102
|
/**
|
|
@@ -124,7 +124,7 @@ export declare function validateSavedTextLabel(fields: any, [layerTextLabel]: [a
|
|
|
124
124
|
export declare function validateSavedVisualChannels(fields: KeplerTable['fields'], newLayer: Layer, savedLayer: ParsedLayer, options?: {
|
|
125
125
|
throwOnError?: boolean;
|
|
126
126
|
}): null | Layer;
|
|
127
|
-
|
|
127
|
+
type ValidateLayerOption = {
|
|
128
128
|
allowEmptyColumn?: boolean;
|
|
129
129
|
throwOnError?: boolean;
|
|
130
130
|
};
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
interface LoaderInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
extensions: string[];
|
|
4
|
+
}
|
|
5
|
+
export declare const getFileFormatNames: ((state: {
|
|
6
|
+
loaders: LoaderInfo[];
|
|
7
|
+
}) => string[]) & import("reselect").OutputSelectorFields<(args_0: LoaderInfo[]) => string[], {
|
|
2
8
|
clearCache: () => void;
|
|
3
9
|
}> & {
|
|
4
10
|
clearCache: () => void;
|
|
5
11
|
};
|
|
6
|
-
export declare const getFileExtensions: ((state:
|
|
12
|
+
export declare const getFileExtensions: ((state: {
|
|
13
|
+
loaders: LoaderInfo[];
|
|
14
|
+
}) => string[]) & import("reselect").OutputSelectorFields<(args_0: LoaderInfo[]) => string[], {
|
|
7
15
|
clearCache: () => void;
|
|
8
16
|
}> & {
|
|
9
17
|
clearCache: () => void;
|
|
10
18
|
};
|
|
19
|
+
export {};
|
|
@@ -27,4 +27,4 @@ var getFileExtensions = exports.getFileExtensions = (0, _reselect.createSelector
|
|
|
27
27
|
return loader.extensions;
|
|
28
28
|
})));
|
|
29
29
|
});
|
|
30
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVzZWxlY3QiLCJyZXF1aXJlIiwiREVGQVVMVF9GSUxFX0VYVEVOU0lPTlMiLCJERUZBVUxUX0ZJTEVfRk9STUFUUyIsImdldEZpbGVGb3JtYXROYW1lcyIsImV4cG9ydHMiLCJjcmVhdGVTZWxlY3RvciIsInN0YXRlIiwibG9hZGVycyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJtYXAiLCJsb2FkZXIiLCJuYW1lIiwiZ2V0RmlsZUV4dGVuc2lvbnMiLCJmbGF0TWFwIiwiZXh0ZW5zaW9ucyJdLCJzb3VyY2VzIjpbIi4uL3NyYy92aXMtc3RhdGUtc2VsZWN0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcblxuLy8gTk9URTogZGVmYXVsdCBmb3JtYXRzIG11c3QgbWF0Y2ggZmlsZS1oYW5kbGVyLXRlc3QuanNcbmNvbnN0IERFRkFVTFRfRklMRV9FWFRFTlNJT05TID0gWydjc3YnLCAnanNvbicsICdnZW9qc29uJywgJ2Fycm93JywgJ3BhcnF1ZXQnXTtcbmNvbnN0IERFRkFVTFRfRklMRV9GT1JNQVRTID0gWydDU1YnLCAnSnNvbicsICdHZW9KU09OJywgJ0Fycm93JywgJ1BhcnF1ZXQnXTtcblxuaW50ZXJmYWNlIExvYWRlckluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGV4dGVuc2lvbnM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RmlsZUZvcm1hdE5hbWVzID0gY3JlYXRlU2VsZWN0b3IoXG4gIChzdGF0ZToge2xvYWRlcnM6IExvYWRlckluZm9bXX0pID0+IHN0YXRlLmxvYWRlcnMsXG4gIGxvYWRlcnMgPT4gWy4uLkRFRkFVTFRfRklMRV9GT1JNQVRTLCAuLi5sb2FkZXJzLm1hcChsb2FkZXIgPT4gbG9hZGVyLm5hbWUpXVxuKTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbGVFeHRlbnNpb25zID0gY3JlYXRlU2VsZWN0b3IoXG4gIChzdGF0ZToge2xvYWRlcnM6IExvYWRlckluZm9bXX0pID0+IHN0YXRlLmxvYWRlcnMsXG4gIGxvYWRlcnMgPT4gWy4uLkRFRkFVTFRfRklMRV9FWFRFTlNJT05TLCAuLi5sb2FkZXJzLmZsYXRNYXAobG9hZGVyID0+IGxvYWRlci5leHRlbnNpb25zKV1cbik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0EsSUFBQUEsU0FBQSxHQUFBQyxPQUFBO0FBSEE7QUFDQTs7QUFJQTtBQUNBLElBQU1DLHVCQUF1QixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQztBQUM5RSxJQUFNQyxvQkFBb0IsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7QUFPcEUsSUFBTUMsa0JBQWtCLEdBQUFDLE9BQUEsQ0FBQUQsa0JBQUEsR0FBRyxJQUFBRSx3QkFBYyxFQUM5QyxVQUFDQyxLQUE4QjtFQUFBLE9BQUtBLEtBQUssQ0FBQ0MsT0FBTztBQUFBLEdBQ2pELFVBQUFBLE9BQU87RUFBQSxVQUFBQyxNQUFBLENBQVFOLG9CQUFvQixNQUFBTyxtQkFBQSxhQUFLRixPQUFPLENBQUNHLEdBQUcsQ0FBQyxVQUFBQyxNQUFNO0lBQUEsT0FBSUEsTUFBTSxDQUFDQyxJQUFJO0VBQUEsRUFBQztBQUFBLENBQzVFLENBQUM7QUFFTSxJQUFNQyxpQkFBaUIsR0FBQVQsT0FBQSxDQUFBUyxpQkFBQSxHQUFHLElBQUFSLHdCQUFjLEVBQzdDLFVBQUNDLEtBQThCO0VBQUEsT0FBS0EsS0FBSyxDQUFDQyxPQUFPO0FBQUEsR0FDakQsVUFBQUEsT0FBTztFQUFBLFVBQUFDLE1BQUEsQ0FBUVAsdUJBQXVCLE1BQUFRLG1CQUFBLGFBQUtGLE9BQU8sQ0FBQ08sT0FBTyxDQUFDLFVBQUFILE1BQU07SUFBQSxPQUFJQSxNQUFNLENBQUNJLFVBQVU7RUFBQSxFQUFDO0FBQUEsQ0FDekYsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ActionTypes, CreateNewDatasetSuccessPayload, MapStateActions, ReceiveMapConfigPayload, VisStateActions, SetLoadingIndicatorPayload } from '@kepler.gl/actions';
|
|
2
2
|
import { Layer } from '@kepler.gl/layers';
|
|
3
|
-
import { Merger, PostMergerPayload, VisState } from '@kepler.gl/schemas';
|
|
3
|
+
import KeplerGLSchema, { Merger, PostMergerPayload, VisState } from '@kepler.gl/schemas';
|
|
4
4
|
import { Filter, InteractionConfig, AnimationConfig, FilterAnimationConfig, Editor } from '@kepler.gl/types';
|
|
5
5
|
import { Loader } from '@loaders.gl/loader-utils';
|
|
6
6
|
import { Datasets } from '@kepler.gl/table';
|
|
@@ -17,7 +17,7 @@ export declare const DEFAULT_EDITOR: Editor;
|
|
|
17
17
|
export declare const INITIAL_VIS_STATE: VisState;
|
|
18
18
|
export declare const ACTION_TASK_FIT_BOUNDS: any;
|
|
19
19
|
export declare const ACTION_TASK_ADD_NOTIFICATION: any;
|
|
20
|
-
|
|
20
|
+
type UpdateStateWithLayerAndDataType = {
|
|
21
21
|
layers: Layer[];
|
|
22
22
|
layerData: any[];
|
|
23
23
|
};
|
|
@@ -200,80 +200,27 @@ export declare const setFilterViewUpdater: (state: VisState, action: VisStateAct
|
|
|
200
200
|
interactionConfig: InteractionConfig;
|
|
201
201
|
interactionToBeMerged: any;
|
|
202
202
|
layerBlending: string;
|
|
203
|
-
overlayBlending?: string
|
|
203
|
+
overlayBlending?: string;
|
|
204
204
|
hoverInfo: any;
|
|
205
205
|
clicked: any;
|
|
206
206
|
mousePos: any;
|
|
207
207
|
maxDefaultTooltips: number;
|
|
208
|
-
layerClasses:
|
|
209
|
-
point: typeof import("@kepler.gl/layers/dist/point-layer/point-layer").default;
|
|
210
|
-
arc: typeof import("@kepler.gl/layers/dist/arc-layer/arc-layer").default;
|
|
211
|
-
line: typeof import("@kepler.gl/layers/dist/line-layer/line-layer").default;
|
|
212
|
-
grid: typeof import("@kepler.gl/layers/dist/grid-layer/grid-layer").default;
|
|
213
|
-
hexagon: typeof import("@kepler.gl/layers/dist/hexagon-layer/hexagon-layer").default;
|
|
214
|
-
geojson: typeof import("@kepler.gl/layers/dist/geojson-layer/geojson-layer").default;
|
|
215
|
-
cluster: typeof import("@kepler.gl/layers/dist/cluster-layer/cluster-layer").default;
|
|
216
|
-
/**
|
|
217
|
-
* Updaters for `visState` reducer. Can be used in your root reducer to directly modify kepler.gl's state.
|
|
218
|
-
* Read more about [Using updaters](../advanced-usage/using-updaters.md)
|
|
219
|
-
*
|
|
220
|
-
* @public
|
|
221
|
-
* @example
|
|
222
|
-
*
|
|
223
|
-
* import keplerGlReducer, {visStateUpdaters} from '@kepler.gl/reducers';
|
|
224
|
-
* // Root Reducer
|
|
225
|
-
* const reducers = combineReducers({
|
|
226
|
-
* keplerGl: keplerGlReducer,
|
|
227
|
-
* app: appReducer
|
|
228
|
-
* });
|
|
229
|
-
*
|
|
230
|
-
* const composedReducer = (state, action) => {
|
|
231
|
-
* switch (action.type) {
|
|
232
|
-
* case 'CLICK_BUTTON':
|
|
233
|
-
* return {
|
|
234
|
-
* ...state,
|
|
235
|
-
* keplerGl: {
|
|
236
|
-
* ...state.keplerGl,
|
|
237
|
-
* foo: {
|
|
238
|
-
* ...state.keplerGl.foo,
|
|
239
|
-
* visState: visStateUpdaters.enlargeFilterUpdater(
|
|
240
|
-
* state.keplerGl.foo.visState,
|
|
241
|
-
* {idx: 0}
|
|
242
|
-
* )
|
|
243
|
-
* }
|
|
244
|
-
* }
|
|
245
|
-
* };
|
|
246
|
-
* }
|
|
247
|
-
* return reducers(state, action);
|
|
248
|
-
* };
|
|
249
|
-
*
|
|
250
|
-
* export default composedReducer;
|
|
251
|
-
*/
|
|
252
|
-
icon: typeof import("@kepler.gl/layers/dist/icon-layer/icon-layer").default;
|
|
253
|
-
heatmap: typeof import("@kepler.gl/layers/dist/heatmap-layer/heatmap-layer").default;
|
|
254
|
-
hexagonId: typeof import("@kepler.gl/layers/dist/h3-hexagon-layer/h3-hexagon-layer").default;
|
|
255
|
-
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
256
|
-
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
257
|
-
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
258
|
-
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
259
|
-
rasterTile: typeof import("@kepler.gl/layers").RasterTileLayer;
|
|
260
|
-
wms: typeof import("@kepler.gl/layers/dist/wms-layer/wms-layer").default;
|
|
261
|
-
};
|
|
208
|
+
layerClasses: import("@kepler.gl/layers").LayerClassesType;
|
|
262
209
|
animationConfig: AnimationConfig;
|
|
263
210
|
editor: Editor;
|
|
264
211
|
splitMaps: import("@kepler.gl/types").SplitMap[];
|
|
265
212
|
splitMapsToBeMerged: import("@kepler.gl/types").SplitMap[];
|
|
266
|
-
fileLoading:
|
|
213
|
+
fileLoading: import("@kepler.gl/types").FileLoading | false;
|
|
267
214
|
fileLoadingProgress: import("@kepler.gl/types").FileLoadingProgress;
|
|
268
215
|
loadingIndicatorValue: number;
|
|
269
|
-
loaders: Loader
|
|
216
|
+
loaders: Loader[];
|
|
270
217
|
loadOptions: object;
|
|
271
|
-
initialState?: Partial<VisState
|
|
218
|
+
initialState?: Partial<VisState>;
|
|
272
219
|
mergers: import("@kepler.gl/schemas").VisStateMergers<any>;
|
|
273
|
-
schema:
|
|
274
|
-
preserveLayerOrder?: string[]
|
|
275
|
-
preserveFilterOrder?: string[]
|
|
276
|
-
preserveDatasetOrder?: string[]
|
|
220
|
+
schema: typeof KeplerGLSchema;
|
|
221
|
+
preserveLayerOrder?: string[];
|
|
222
|
+
preserveFilterOrder?: string[];
|
|
223
|
+
preserveDatasetOrder?: string[];
|
|
277
224
|
isMergingDatasets: {
|
|
278
225
|
[datasetId: string]: boolean;
|
|
279
226
|
};
|