kepler.gl 3.1.0-alpha.2 → 3.1.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/actions/src/vis-state-actions.d.ts +2 -2
  2. package/dist/components/src/common/color-legend.d.ts +1 -1
  3. package/dist/components/src/side-panel/layer-panel/color-range-selector.d.ts +2 -2
  4. package/dist/components/src/side-panel/layer-panel/color-scale-selector.d.ts +2 -3
  5. package/dist/components/src/side-panel/layer-panel/color-selector.d.ts +1 -1
  6. package/dist/components/src/side-panel/layer-panel/layer-color-selector.d.ts +1 -1
  7. package/dist/components/src/side-panel/layer-panel/single-color-palette.d.ts +1 -2
  8. package/dist/constants/src/color-palettes.d.ts +1 -2
  9. package/dist/constants/src/layers.d.ts +2 -21
  10. package/dist/utils/src/color-utils.d.ts +2 -2
  11. package/dist/utils/src/data-scale-utils.d.ts +1 -2
  12. package/dist/utils/src/index.d.ts +1 -0
  13. package/package.json +3 -3
  14. package/src/actions/dist/vis-state-actions.d.ts +2 -2
  15. package/src/actions/dist/vis-state-actions.js +1 -1
  16. package/src/actions/package.json +8 -6
  17. package/src/actions/src/vis-state-actions.ts +2 -2
  18. package/src/ai-assistant/package.json +9 -8
  19. package/src/cloud-providers/package.json +2 -2
  20. package/src/common-utils/package.json +4 -3
  21. package/src/components/dist/common/color-legend.d.ts +1 -1
  22. package/src/components/dist/common/color-legend.js +1 -1
  23. package/src/components/dist/map/layer-hover-info.js +2 -2
  24. package/src/components/dist/side-panel/layer-panel/color-range-selector.d.ts +2 -2
  25. package/src/components/dist/side-panel/layer-panel/color-range-selector.js +1 -1
  26. package/src/components/dist/side-panel/layer-panel/color-scale-selector.d.ts +2 -3
  27. package/src/components/dist/side-panel/layer-panel/color-scale-selector.js +12 -7
  28. package/src/components/dist/side-panel/layer-panel/color-selector.d.ts +1 -1
  29. package/src/components/dist/side-panel/layer-panel/color-selector.js +1 -1
  30. package/src/components/dist/side-panel/layer-panel/custom-palette.js +1 -1
  31. package/src/components/dist/side-panel/layer-panel/layer-color-selector.d.ts +1 -1
  32. package/src/components/dist/side-panel/layer-panel/layer-color-selector.js +1 -1
  33. package/src/components/dist/side-panel/layer-panel/single-color-palette.d.ts +1 -2
  34. package/src/components/dist/side-panel/layer-panel/single-color-palette.js +1 -1
  35. package/src/components/dist/side-panel/layer-panel/text-label-panel.js +1 -1
  36. package/src/components/package.json +18 -15
  37. package/src/components/src/common/color-legend.tsx +1 -1
  38. package/src/components/src/map/layer-hover-info.tsx +1 -1
  39. package/src/components/src/side-panel/layer-panel/color-range-selector.tsx +2 -2
  40. package/src/components/src/side-panel/layer-panel/color-scale-selector.tsx +16 -6
  41. package/src/components/src/side-panel/layer-panel/color-selector.tsx +1 -1
  42. package/src/components/src/side-panel/layer-panel/custom-palette.tsx +6 -5
  43. package/src/components/src/side-panel/layer-panel/layer-color-selector.tsx +1 -1
  44. package/src/components/src/side-panel/layer-panel/single-color-palette.tsx +2 -2
  45. package/src/components/src/side-panel/layer-panel/text-label-panel.tsx +1 -1
  46. package/src/constants/dist/color-palettes.d.ts +1 -2
  47. package/src/constants/dist/color-palettes.js +1 -1
  48. package/src/constants/dist/default-settings.js +1 -1
  49. package/src/constants/dist/layers.d.ts +2 -21
  50. package/src/constants/dist/layers.js +1 -3
  51. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/15/89/09e4a16358cd5ba55bbea51c90f9bb96dd768871d5b1e623b2b8ec5832829af413317f661ae858524939ca8d09397dce821b2c3cb030fb908d700e220e96 +1 -0
  52. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/9d/b1/196d8d41c4b5996359eb31df5b2f9fce46384f20b5f5313cd1166176a33bac1dbdb1930a660e9a314194e69888d8e38432305dd411494e0f02d3cb6c9ae7 +1 -0
  53. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/5b/19/e8aef413276d2640a91c2fcfb8cdbce6fb65537503324dfd56f347b35be1 +2 -0
  54. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/8f/48/eafd96b6e87f6e8d8de42459e5391d863e6722dcbc8e672838cc2dae6cce +2 -0
  55. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/b8/1d/b120a9eba6f67712053478741f1818d970e5eac0b96cc382e15ac523410f +2 -0
  56. package/src/constants/package.json +11 -3
  57. package/src/constants/src/color-palettes.ts +1 -2
  58. package/src/constants/src/layers.ts +1 -22
  59. package/src/constants/umd/keplergl.min.js +1 -1
  60. package/src/deckgl-arrow-layers/package.json +1 -1
  61. package/src/deckgl-layers/dist/svg-icon-layer/svg-icon-layer.d.ts +3 -3
  62. package/src/deckgl-layers/dist/svg-icon-layer/svg-icon-layer.js +1 -1
  63. package/src/deckgl-layers/package.json +5 -4
  64. package/src/deckgl-layers/src/svg-icon-layer/svg-icon-layer.ts +3 -3
  65. package/src/effects/dist/custom-deck-lighting-effect.js +3 -3
  66. package/src/effects/package.json +6 -4
  67. package/src/effects/src/custom-deck-lighting-effect.ts +2 -2
  68. package/src/layers/dist/aggregation-layer.js +1 -1
  69. package/src/layers/dist/arc-layer/arc-layer.js +1 -1
  70. package/src/layers/dist/base-layer.js +1 -1
  71. package/src/layers/dist/cluster-layer/cluster-layer.js +1 -1
  72. package/src/layers/dist/geojson-layer/geojson-layer.js +1 -1
  73. package/src/layers/dist/grid-layer/grid-layer.js +1 -1
  74. package/src/layers/dist/h3-hexagon-layer/h3-hexagon-layer.js +1 -1
  75. package/src/layers/dist/heatmap-layer/heatmap-layer.js +1 -1
  76. package/src/layers/dist/hexagon-layer/hexagon-layer.js +1 -1
  77. package/src/layers/dist/icon-layer/icon-layer.js +1 -1
  78. package/src/layers/dist/line-layer/line-layer.js +1 -1
  79. package/src/layers/dist/point-layer/point-layer.js +1 -1
  80. package/src/layers/dist/s2-geometry-layer/s2-geometry-layer.js +1 -1
  81. package/src/layers/dist/scenegraph-layer/scenegraph-layer.js +1 -1
  82. package/src/layers/dist/src/layers/src/arc-layer/arc-layer.d.ts +1 -2
  83. package/src/layers/dist/src/layers/src/base-layer.d.ts +2 -2
  84. package/src/layers/dist/src/layers/src/cluster-layer/cluster-layer.d.ts +2 -2
  85. package/src/layers/dist/src/layers/src/geojson-layer/geojson-layer.d.ts +1 -2
  86. package/src/layers/dist/src/layers/src/grid-layer/grid-layer.d.ts +2 -2
  87. package/src/layers/dist/src/layers/src/h3-hexagon-layer/h3-hexagon-layer.d.ts +1 -2
  88. package/src/layers/dist/src/layers/src/heatmap-layer/heatmap-layer.d.ts +1 -2
  89. package/src/layers/dist/src/layers/src/hexagon-layer/hexagon-layer.d.ts +2 -2
  90. package/src/layers/dist/src/layers/src/icon-layer/icon-layer.d.ts +1 -2
  91. package/src/layers/dist/src/layers/src/line-layer/line-layer.d.ts +1 -2
  92. package/src/layers/dist/src/layers/src/point-layer/point-layer.d.ts +1 -2
  93. package/src/layers/dist/src/layers/src/s2-geometry-layer/s2-geometry-layer.d.ts +1 -2
  94. package/src/layers/dist/src/layers/src/scenegraph-layer/scenegraph-layer.d.ts +1 -2
  95. package/src/layers/dist/src/layers/src/trip-layer/trip-layer.d.ts +1 -2
  96. package/src/layers/dist/trip-layer/trip-info-modal.js +3 -3
  97. package/src/layers/dist/trip-layer/trip-layer.js +1 -1
  98. package/src/layers/package.json +14 -9
  99. package/src/layers/src/aggregation-layer.ts +2 -3
  100. package/src/layers/src/arc-layer/arc-layer.ts +1 -1
  101. package/src/layers/src/base-layer.ts +1 -1
  102. package/src/layers/src/cluster-layer/cluster-layer.ts +4 -3
  103. package/src/layers/src/geojson-layer/geojson-layer.ts +1 -1
  104. package/src/layers/src/grid-layer/grid-layer.ts +2 -1
  105. package/src/layers/src/h3-hexagon-layer/h3-hexagon-layer.ts +2 -2
  106. package/src/layers/src/heatmap-layer/heatmap-layer.ts +9 -2
  107. package/src/layers/src/hexagon-layer/hexagon-layer.ts +2 -1
  108. package/src/layers/src/icon-layer/icon-layer.ts +2 -1
  109. package/src/layers/src/line-layer/line-layer.ts +2 -1
  110. package/src/layers/src/point-layer/point-layer.ts +1 -1
  111. package/src/layers/src/s2-geometry-layer/s2-geometry-layer.ts +1 -1
  112. package/src/layers/src/scenegraph-layer/scenegraph-layer.ts +8 -2
  113. package/src/layers/src/trip-layer/trip-info-modal.tsx +2 -1
  114. package/src/layers/src/trip-layer/trip-layer.ts +2 -1
  115. package/src/localization/package.json +1 -1
  116. package/src/processors/package.json +11 -8
  117. package/src/reducers/dist/vis-state-merger.js +4 -4
  118. package/src/reducers/package.json +22 -16
  119. package/src/reducers/src/vis-state-merger.ts +2 -1
  120. package/src/schemas/package.json +7 -8
  121. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/9d/89/a7c668dc6d93c8fddd7767e10348d0adad77b9ccc7f3530b2568c5ea56abe48299796dc4fa8b6a30768fce618785d6d0a599d513ffae3d2e202bd5e599cc +1 -0
  122. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/ad/39/6439afec143527ea2c8706cb416385eaef17b0ca1bd7796951727832a451abbe177924c8de15b30f346a3328444792ef6dab157ba24166f16f0ada28fe4e +1 -0
  123. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/21/e7/9f87be9e0194a03eaaf2acb9d07d9f8f7ff0e638be93c0ec879e883ac85c +2 -0
  124. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/72/92/4a8d86786cc2a0061d26ccd4e0813e6d9d1ed105dfd86607543072f980b8 +2 -0
  125. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/9d/c4/65cbe482c86a9f173ef93c957b2b2104f503c61ddc8c4052c0c4be0d5cf8 +2 -0
  126. package/src/styles/package.json +2 -2
  127. package/src/styles/umd/keplergl.min.js +1 -1
  128. package/src/table/package.json +5 -5
  129. package/src/tasks/package.json +2 -2
  130. package/src/types/layers.d.ts +22 -1
  131. package/src/types/package.json +1 -1
  132. package/src/utils/dist/color-utils.d.ts +2 -2
  133. package/src/utils/dist/color-utils.js +1 -1
  134. package/src/utils/dist/data-scale-utils.d.ts +1 -2
  135. package/src/utils/dist/data-scale-utils.js +1 -1
  136. package/src/utils/dist/index.d.ts +1 -0
  137. package/src/utils/dist/index.js +1 -1
  138. package/src/utils/package.json +12 -5
  139. package/src/utils/src/color-utils.ts +2 -4
  140. package/src/utils/src/data-scale-utils.ts +2 -2
  141. package/src/utils/src/index.ts +2 -0
  142. package/umd/keplergl.min.js +1138 -1138
@@ -4,8 +4,8 @@ import { PickInfo } from '@deck.gl/core/lib/deck';
4
4
  import { default as ActionTypes } from './action-types';
5
5
  import { FileCacheItem } from '@kepler.gl/processors';
6
6
  import { Layer, LayerBaseConfig } from '@kepler.gl/layers';
7
- import { AddDataToMapPayload, ValueOf, Merge, RGBColor, NestedPartial, LayerVisConfig, ColorUI, Feature, FeatureSelectionContext, InteractionConfig, Filter, ParsedConfig, ParsedLayer, EffectPropsPartial, SyncTimelineMode } from '@kepler.gl/types';
8
7
  import { KeplerTable } from '@kepler.gl/table';
8
+ import { AddDataToMapPayload, ValueOf, Merge, RGBColor, NestedPartial, LayerVisConfig, ColorUI, Feature, FeatureSelectionContext, InteractionConfig, Filter, ParsedConfig, ParsedLayer, EffectPropsPartial, SyncTimelineMode } from '@kepler.gl/types';
9
9
  export declare type ApplyLayerConfigUpdaterAction = {
10
10
  oldLayerId: string;
11
11
  newLayerConfig: ParsedLayer;
@@ -1012,7 +1012,7 @@ export declare function setTimeFilterSyncTimelineMode({ id, mode }: setTimeFilte
1012
1012
  type: typeof ActionTypes.SYNC_TIME_FILTER_TIMELINE_MODE;
1013
1013
  }>;
1014
1014
  export declare type CreateNewDatasetSuccessPayload = {
1015
- results: (PromiseFulfilledResult<KeplerTable<any>> | PromiseRejectedResult)[];
1015
+ results: (PromiseFulfilledResult<KeplerTable> | PromiseRejectedResult)[];
1016
1016
  addToMapOptions: AddDataToMapPayload['options'];
1017
1017
  };
1018
1018
  /**
@@ -1,4 +1,4 @@
1
- import { ColorRange } from '@kepler.gl/constants';
1
+ import { ColorRange } from '@kepler.gl/types';
2
2
  import { Layer } from '@kepler.gl/layers';
3
3
  import { HexColor, MapState } from '@kepler.gl/types';
4
4
  import React from 'react';
@@ -1,6 +1,6 @@
1
1
  import React, { MouseEvent } from 'react';
2
- import { ColorRange, ColorPalette } from '@kepler.gl/constants';
3
- import { ColorUI, NestedPartial } from '@kepler.gl/types';
2
+ import { ColorPalette } from '@kepler.gl/constants';
3
+ import { ColorRange, ColorUI, NestedPartial } from '@kepler.gl/types';
4
4
  import CustomPaletteFactory from './custom-palette';
5
5
  declare type ColorRangeSelectorProps = {
6
6
  colorPalettes?: ColorPalette[];
@@ -1,10 +1,9 @@
1
1
  import React from 'react';
2
- import { ColorRange } from '@kepler.gl/constants';
3
2
  import { Layer, VisualChannelDomain } from '@kepler.gl/layers';
4
- import { ColorUI, Field } from '@kepler.gl/types';
3
+ import { KeplerTable } from '@kepler.gl/table';
4
+ import { ColorRange, ColorUI, Field } from '@kepler.gl/types';
5
5
  import ColorBreaksPanelFactory, { ColorBreaksPanelProps } from './color-breaks-panel';
6
6
  import { SetColorUIFunc } from './custom-palette';
7
- import { KeplerTable } from '@kepler.gl/table';
8
7
  export declare type ScaleOption = {
9
8
  label: string;
10
9
  value: string;
@@ -1,4 +1,4 @@
1
- import { ColorRange } from '@kepler.gl/constants';
1
+ import { ColorRange } from '@kepler.gl/types';
2
2
  import { ColorUI, NestedPartial, RGBAColor, RGBColor } from '@kepler.gl/types';
3
3
  import { ComponentType } from 'react';
4
4
  import RangeSliderFactory from '../../common/range-slider';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ColorRange } from '@kepler.gl/constants';
2
+ import { ColorRange } from '@kepler.gl/types';
3
3
  import { Layer } from '@kepler.gl/layers';
4
4
  import { NestedPartial, RGBColor, ColorUI } from '@kepler.gl/types';
5
5
  import ColorSelectorFactory from './color-selector';
@@ -1,6 +1,5 @@
1
1
  import React, { MouseEvent } from 'react';
2
- import { ColorRange } from '@kepler.gl/constants';
3
- import { RGBColor, HexColor } from '@kepler.gl/types';
2
+ import { ColorRange, HexColor, RGBColor } from '@kepler.gl/types';
4
3
  export declare type SingleColorPaletteProps = {
5
4
  selectedColor: HexColor;
6
5
  onSelectColor: (color: RGBColor | ColorRange, e: MouseEvent) => void;
@@ -1,5 +1,4 @@
1
- import { HexColor, ValueOf } from '@kepler.gl/types';
2
- import { MiniColorRange } from './layers';
1
+ import { HexColor, MiniColorRange, ValueOf } from '@kepler.gl/types';
3
2
  declare type GetColors = (steps: number) => HexColor[];
4
3
  declare type GetLinear = () => (n: number) => string;
5
4
  export declare type CategoricalPalette = {
@@ -1,24 +1,5 @@
1
1
  import { AGGREGATION_TYPES } from './default-settings';
2
- import { ColorUI, HexColor, LayerTextConfig, LayerTextLabel, LayerVisConfigSettings, RGBAColor } from '@kepler.gl/types';
3
- export declare type ColorMap = [string[] | string | number | null, HexColor][];
4
- export declare type ColorLegends = {
5
- [key: HexColor]: string;
6
- };
7
- export declare type ColorRange = {
8
- name?: string;
9
- type?: string;
10
- category?: string;
11
- colors: HexColor[];
12
- reversed?: boolean;
13
- colorMap?: ColorMap;
14
- colorLegends?: ColorLegends;
15
- };
16
- export declare type MiniColorRange = {
17
- name: string;
18
- type: string;
19
- category: string;
20
- colors: HexColor[];
21
- };
2
+ import { ColorRange, ColorUI, LayerTextConfig, LayerTextLabel, LayerVisConfigSettings, RGBAColor } from '@kepler.gl/types';
22
3
  export declare type AggregationTypes = keyof typeof AGGREGATION_TYPES;
23
4
  export declare const PROPERTY_GROUPS: {
24
5
  color: "color";
@@ -35,7 +16,7 @@ export declare const DEFAULT_LAYER_OPACITY = 0.8;
35
16
  export declare const DEFAULT_HIGHLIGHT_COLOR: RGBAColor;
36
17
  export declare const DEFAULT_LAYER_LABEL = "new layer";
37
18
  export declare const DEFAULT_TEXT_LABEL: LayerTextLabel;
38
- export declare const DEFAULT_COLOR_RANGE: MiniColorRange;
19
+ export declare const DEFAULT_COLOR_RANGE: import("@kepler.gl/types").MiniColorRange;
39
20
  export declare const DEFAULT_CUSTOM_PALETTE: ColorRange;
40
21
  export declare const UNKNOWN_COLOR_KEY = "__unknownColor__";
41
22
  export declare const DEFAULT_COLOR_UI: ColorUI;
@@ -1,5 +1,5 @@
1
- import { CategoricalPalette, ColorMap, ColorPalette, ColorRange } from '@kepler.gl/constants';
2
- import { ColorRangeConfig, HexColor, RGBColor } from '@kepler.gl/types';
1
+ import { CategoricalPalette, ColorPalette } from '@kepler.gl/constants';
2
+ import { ColorMap, ColorRange, ColorRangeConfig, HexColor, RGBColor } from '@kepler.gl/types';
3
3
  /**
4
4
  * get r g b from hex code
5
5
  *
@@ -1,5 +1,4 @@
1
- import { ColorMap, ColorRange } from '@kepler.gl/constants';
2
- import { HexColor, MapState } from '@kepler.gl/types';
1
+ import { ColorMap, ColorRange, HexColor, MapState } from '@kepler.gl/types';
3
2
  import { DataContainerInterface } from './data-container-interface';
4
3
  export declare type ColorBreak = {
5
4
  data: HexColor;
@@ -39,3 +39,4 @@ export { DataRow } from './data-row';
39
39
  export { getApplicationConfig, initApplicationConfig } from './application-config';
40
40
  export type { KeplerApplicationConfig, MapLibInstance } from './application-config';
41
41
  export { default as quickInsertionSort } from './quick-insertion-sort';
42
+ export type { KeplerTableModel } from './types';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kepler.gl",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.0-alpha.2",
4
+ "version": "3.1.0-alpha.3",
5
5
  "description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -79,7 +79,7 @@
79
79
  "analyze:bundle": "NODE_OPTIONS=--openssl-legacy-provider webpack --config ./webpack/bundle.js --progress --env.prod",
80
80
  "check-licence": "babel-node ./scripts/license-header/bin --license ./FILE-HEADER --dry",
81
81
  "add-licence": "babel-node ./scripts/license-header/bin --license ./FILE-HEADER",
82
- "prepublishOnly": "yarn workspaces foreach -A run stab && yarn workspaces foreach -A run prepublish && yarn add-licence && yarn build:umd && yarn build:types",
82
+ "prepublishOnly": "yarn workspaces foreach -At run stab && yarn workspaces foreach -At run prepublishOnly && yarn add-licence && yarn build:umd && yarn build:types",
83
83
  "docs": "babel-node ./scripts/documentation.js",
84
84
  "typedoc": "typedoc --theme markdown --out typedoc --inputFiles ./src/reducers --inputFiles ./src/actions --excludeExternals --excludeNotExported --excludePrivate",
85
85
  "example-version": "babel-node ./scripts/edit-version.js",
@@ -102,7 +102,7 @@
102
102
  "@deck.gl/mapbox": "^8.9.27",
103
103
  "@hubble.gl/core": "1.2.0-alpha.6",
104
104
  "@hubble.gl/react": "1.2.0-alpha.6",
105
- "@kepler.gl/components": "3.1.0-alpha.2",
105
+ "@kepler.gl/components": "3.1.0-alpha.3",
106
106
  "@loaders.gl/polyfills": "^4.3.2",
107
107
  "@types/mapbox__geo-viewport": "^0.4.1",
108
108
  "html-webpack-plugin": "^4.3.0",
@@ -3,8 +3,8 @@ import { PickInfo } from '@deck.gl/core/lib/deck';
3
3
  import { default as ActionTypes } from './action-types';
4
4
  import { FileCacheItem } from '@kepler.gl/processors';
5
5
  import { Layer, LayerBaseConfig } from '@kepler.gl/layers';
6
- import { AddDataToMapPayload, ValueOf, Merge, RGBColor, NestedPartial, LayerVisConfig, ColorUI, Feature, FeatureSelectionContext, InteractionConfig, Filter, ParsedConfig, ParsedLayer, EffectPropsPartial, SyncTimelineMode } from '@kepler.gl/types';
7
6
  import { KeplerTable } from '@kepler.gl/table';
7
+ import { AddDataToMapPayload, ValueOf, Merge, RGBColor, NestedPartial, LayerVisConfig, ColorUI, Feature, FeatureSelectionContext, InteractionConfig, Filter, ParsedConfig, ParsedLayer, EffectPropsPartial, SyncTimelineMode } from '@kepler.gl/types';
8
8
  export declare type ApplyLayerConfigUpdaterAction = {
9
9
  oldLayerId: string;
10
10
  newLayerConfig: ParsedLayer;
@@ -1011,7 +1011,7 @@ export declare function setTimeFilterSyncTimelineMode({ id, mode }: setTimeFilte
1011
1011
  type: typeof ActionTypes.SYNC_TIME_FILTER_TIMELINE_MODE;
1012
1012
  }>;
1013
1013
  export declare type CreateNewDatasetSuccessPayload = {
1014
- results: (PromiseFulfilledResult<KeplerTable<any>> | PromiseRejectedResult)[];
1014
+ results: (PromiseFulfilledResult<KeplerTable> | PromiseRejectedResult)[];
1015
1015
  addToMapOptions: AddDataToMapPayload['options'];
1016
1016
  };
1017
1017
  /**
@@ -1085,4 +1085,4 @@ var createNewDatasetSuccess = exports.createNewDatasetSuccess = (0, _toolkit.cre
1085
1085
  // @ts-ignore
1086
1086
  var visStateActions = null;
1087
1087
  /* eslint-enable @typescript-eslint/no-unused-vars */
1088
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90b29sa2l0IiwiYXBwbHlMYXllckNvbmZpZyIsIm9sZExheWVySWQiLCJuZXdMYXllckNvbmZpZyIsImxheWVySW5kZXgiLCJ0eXBlIiwiQWN0aW9uVHlwZXMiLCJBUFBMWV9MQVlFUl9DT05GSUciLCJsYXllckNvbmZpZ0NoYW5nZSIsIm9sZExheWVyIiwibmV3Q29uZmlnIiwiTEFZRVJfQ09ORklHX0NIQU5HRSIsImxheWVyVGV4dExhYmVsQ2hhbmdlIiwiaWR4IiwicHJvcCIsInZhbHVlIiwiTEFZRVJfVEVYVF9MQUJFTF9DSEFOR0UiLCJsYXllclNldElzVmFsaWQiLCJpc1ZhbGlkIiwiTEFZRVJfU0VUX0lTX1ZBTElEIiwibGF5ZXJUeXBlQ2hhbmdlIiwibmV3VHlwZSIsIkxBWUVSX1RZUEVfQ0hBTkdFIiwibGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlIiwiY2hhbm5lbCIsIm5ld1Zpc0NvbmZpZyIsIkxBWUVSX1ZJU1VBTF9DSEFOTkVMX0NIQU5HRSIsImxheWVyVmlzQ29uZmlnQ2hhbmdlIiwiTEFZRVJfVklTX0NPTkZJR19DSEFOR0UiLCJsYXllckNvbG9yVUlDaGFuZ2UiLCJMQVlFUl9DT0xPUl9VSV9DSEFOR0UiLCJ1cGRhdGVMYXllckJsZW5kaW5nIiwibW9kZSIsIlVQREFURV9MQVlFUl9CTEVORElORyIsInVwZGF0ZU92ZXJsYXlCbGVuZGluZyIsIlVQREFURV9PVkVSTEFZX0JMRU5ESU5HIiwiaW50ZXJhY3Rpb25Db25maWdDaGFuZ2UiLCJjb25maWciLCJJTlRFUkFDVElPTl9DT05GSUdfQ0hBTkdFIiwic2V0RmlsdGVyIiwidmFsdWVJbmRleCIsIlNFVF9GSUxURVIiLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lIiwiU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRSIsInNldEZpbHRlckFuaW1hdGlvbldpbmRvdyIsIl9yZWYiLCJpZCIsImFuaW1hdGlvbldpbmRvdyIsIlNFVF9GSUxURVJfQU5JTUFUSU9OX1dJTkRPVyIsImFkZEZpbHRlciIsImRhdGFJZCIsIkFERF9GSUxURVIiLCJjcmVhdGVPclVwZGF0ZUZpbHRlciIsImZpZWxkIiwiQ1JFQVRFX09SX1VQREFURV9GSUxURVIiLCJhZGRMYXllciIsImRhdGFzZXRJZCIsIkFERF9MQVlFUiIsInJlb3JkZXJMYXllciIsIm9yZGVyIiwiUkVPUkRFUl9MQVlFUiIsInJlbW92ZUZpbHRlciIsIlJFTU9WRV9GSUxURVIiLCJyZW1vdmVMYXllciIsIlJFTU9WRV9MQVlFUiIsImR1cGxpY2F0ZUxheWVyIiwiRFVQTElDQVRFX0xBWUVSIiwiYWRkRWZmZWN0IiwiQUREX0VGRkVDVCIsInJlb3JkZXJFZmZlY3QiLCJSRU9SREVSX0VGRkVDVCIsInJlbW92ZUVmZmVjdCIsIlJFTU9WRV9FRkZFQ1QiLCJ1cGRhdGVFZmZlY3QiLCJwcm9wcyIsIlVQREFURV9FRkZFQ1QiLCJyZW1vdmVEYXRhc2V0IiwiUkVNT1ZFX0RBVEFTRVQiLCJzaG93RGF0YXNldFRhYmxlIiwiU0hPV19EQVRBU0VUX1RBQkxFIiwidXBkYXRlVGFibGVDb2xvciIsIm5ld0NvbG9yIiwiVVBEQVRFX1RBQkxFX0NPTE9SIiwic29ydFRhYmxlQ29sdW1uIiwiY29sdW1uIiwiU09SVF9UQUJMRV9DT0xVTU4iLCJwaW5UYWJsZUNvbHVtbiIsIlBJTl9UQUJMRV9DT0xVTU4iLCJjb3B5VGFibGVDb2x1bW4iLCJDT1BZX1RBQkxFX0NPTFVNTiIsInNldENvbHVtbkRpc3BsYXlGb3JtYXQiLCJmb3JtYXRzIiwiU0VUX0NPTFVNTl9ESVNQTEFZX0ZPUk1BVCIsInVwZGF0ZVZpc0RhdGEiLCJkYXRhc2V0cyIsIm9wdGlvbnMiLCJVUERBVEVfVklTX0RBVEEiLCJyZW5hbWVEYXRhc2V0IiwibGFiZWwiLCJSRU5BTUVfREFUQVNFVCIsInVwZGF0ZURhdGFzZXRQcm9wcyIsIlVQREFURV9EQVRBU0VUX1BST1BTIiwidG9nZ2xlRmlsdGVyQW5pbWF0aW9uIiwiVE9HR0xFX0ZJTFRFUl9BTklNQVRJT04iLCJ1cGRhdGVGaWx0ZXJBbmltYXRpb25TcGVlZCIsInNwZWVkIiwiVVBEQVRFX0ZJTFRFUl9BTklNQVRJT05fU1BFRUQiLCJzZXRMYXllckFuaW1hdGlvblRpbWUiLCJTRVRfTEFZRVJfQU5JTUFUSU9OX1RJTUUiLCJ1cGRhdGVMYXllckFuaW1hdGlvblNwZWVkIiwiVVBEQVRFX0xBWUVSX0FOSU1BVElPTl9TUEVFRCIsInRvZ2dsZUxheWVyQW5pbWF0aW9uIiwiVE9HR0xFX0xBWUVSX0FOSU1BVElPTiIsInRvZ2dsZUxheWVyQW5pbWF0aW9uQ29udHJvbCIsIlRPR0dMRV9MQVlFUl9BTklNQVRJT05fQ09OVFJPTCIsInNldEZpbHRlclZpZXciLCJ2aWV3IiwiU0VUX0ZJTFRFUl9WSUVXIiwidG9nZ2xlRmlsdGVyRmVhdHVyZSIsIlRPR0dMRV9GSUxURVJfRkVBVFVSRSIsIm9uTGF5ZXJIb3ZlciIsImluZm8iLCJtYXBJbmRleCIsIkxBWUVSX0hPVkVSIiwib25MYXllckNsaWNrIiwiTEFZRVJfQ0xJQ0siLCJvbk1hcENsaWNrIiwiTUFQX0NMSUNLIiwib25Nb3VzZU1vdmUiLCJldnQiLCJNT1VTRV9NT1ZFIiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJsYXllcklkIiwiVE9HR0xFX0xBWUVSX0ZPUl9NQVAiLCJzZXRGaWx0ZXJQbG90IiwibmV3UHJvcCIsIlNFVF9GSUxURVJfUExPVCIsInNldE1hcEluZm8iLCJTRVRfTUFQX0lORk8iLCJsb2FkRmlsZXMiLCJmaWxlcyIsIm9uRmluaXNoIiwiTE9BRF9GSUxFUyIsImxvYWROZXh0RmlsZSIsIkxPQURfTkVYVF9GSUxFIiwibG9hZEZpbGVzU3VjY2VzcyIsInJlc3VsdCIsIkxPQURfRklMRVNfU1VDQ0VTUyIsImxvYWRGaWxlU3RlcFN1Y2Nlc3MiLCJfcmVmMiIsImZpbGVOYW1lIiwiZmlsZUNhY2hlIiwiTE9BRF9GSUxFX1NURVBfU1VDQ0VTUyIsImxvYWRGaWxlc0VyciIsImVycm9yIiwiTE9BRF9GSUxFU19FUlIiLCJzZXRGZWF0dXJlcyIsImZlYXR1cmVzIiwiU0VUX0ZFQVRVUkVTIiwic2V0UG9seWdvbkZpbHRlckxheWVyIiwibGF5ZXIiLCJmZWF0dXJlIiwiU0VUX1BPTFlHT05fRklMVEVSX0xBWUVSIiwic2V0U2VsZWN0ZWRGZWF0dXJlIiwic2VsZWN0aW9uQ29udGV4dCIsIlNFVF9TRUxFQ1RFRF9GRUFUVVJFIiwiZGVsZXRlRmVhdHVyZSIsIkRFTEVURV9GRUFUVVJFIiwic2V0RWRpdG9yTW9kZSIsIlNFVF9FRElUT1JfTU9ERSIsImFwcGx5Q1BVRmlsdGVyIiwiQVBQTFlfQ1BVX0ZJTFRFUiIsInRvZ2dsZUVkaXRvclZpc2liaWxpdHkiLCJUT0dHTEVfRURJVE9SX1ZJU0lCSUxJVFkiLCJuZXh0RmlsZUJhdGNoIiwicGF5bG9hZCIsIk5FWFRfRklMRV9CQVRDSCIsInByb2Nlc3NGaWxlQ29udGVudCIsIlBST0NFU1NfRklMRV9DT05URU5UIiwic2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnIiwiU0VUX0xBWUVSX0FOSU1BVElPTl9USU1FX0NPTkZJRyIsInNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWciLCJTRVRfRklMVEVSX0FOSU1BVElPTl9USU1FX0NPTkZJRyIsImxheWVyRmlsdGVyZWRJdGVtc0NoYW5nZSIsImV2ZW50IiwiTEFZRVJfRklMVEVSRURfSVRFTVNfQ0hBTkdFIiwic3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZSIsImVuYWJsZSIsIlNZTkNfVElNRV9GSUxURVJfV0lUSF9MQVlFUl9USU1FTElORSIsInNldFRpbWVGaWx0ZXJTeW5jVGltZWxpbmVNb2RlIiwiX3JlZjMiLCJTWU5DX1RJTUVfRklMVEVSX1RJTUVMSU5FX01PREUiLCJjcmVhdGVOZXdEYXRhc2V0U3VjY2VzcyIsImV4cG9ydHMiLCJjcmVhdGVBY3Rpb24iLCJDUkVBVEVfTkVXX0RBVEFTRVRfU1VDQ0VTUyIsInZpc1N0YXRlQWN0aW9ucyJdLCJzb3VyY2VzIjpbIi4uL3NyYy92aXMtc3RhdGUtYWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyB2aXMtc3RhdGUtcmVkdWNlclxuaW1wb3J0IHtQaWNrSW5mb30gZnJvbSAnQGRlY2suZ2wvY29yZS9saWIvZGVjayc7XG5pbXBvcnQge2RlZmF1bHQgYXMgQWN0aW9uVHlwZXN9IGZyb20gJy4vYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7RmlsZUNhY2hlSXRlbX0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7TGF5ZXIsIExheWVyQmFzZUNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtcbiAgQWRkRGF0YVRvTWFwUGF5bG9hZCxcbiAgVmFsdWVPZixcbiAgTWVyZ2UsXG4gIFJHQkNvbG9yLFxuICBOZXN0ZWRQYXJ0aWFsLFxuICBMYXllclZpc0NvbmZpZyxcbiAgQ29sb3JVSSxcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVNlbGVjdGlvbkNvbnRleHQsXG4gIEludGVyYWN0aW9uQ29uZmlnLFxuICBGaWx0ZXIsXG4gIFBhcnNlZENvbmZpZyxcbiAgUGFyc2VkTGF5ZXIsXG4gIEVmZmVjdFByb3BzUGFydGlhbCxcbiAgU3luY1RpbWVsaW5lTW9kZVxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcblxuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG4vLyBUT0RPIC0gaW1wb3J0IExvYWRlck9iamVjdCB0eXBlIGZyb20gQGxvYWRlcnMuZ2wvY29yZSB3aGVuIHN1cHBvcnRlZFxuLy8gVE9ETyAtIGltcG9ydCBMb2FkT3B0aW9ucyB0eXBlIGZyb20gQGxvYWRlcnMuZ2wvY29yZSB3aGVuIHN1cHBvcnRlZFxuXG5leHBvcnQgdHlwZSBBcHBseUxheWVyQ29uZmlnVXBkYXRlckFjdGlvbiA9IHtcbiAgb2xkTGF5ZXJJZDogc3RyaW5nO1xuICBuZXdMYXllckNvbmZpZzogUGFyc2VkTGF5ZXI7XG4gIGxheWVySW5kZXg/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIFVwZGF0ZSBsYXllciBiYXNlIGNvbmZpZzogZGF0YUlkLCBsYWJlbCwgY29sdW1uLCBpc1Zpc2libGVcbiAqIEBwYXJhbSBvbGRMYXllcklkIC0gbGF5ZXIgaWQgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIG5ld0xheWVyQ29uZmlnIC0gbmV3IGxheWVyIGNvbmZpZ1xuICogQHBhcmFtIGxheWVySW5kZXggLSAoT3B0aW9uYWwpIEluZGV4IG9mIHRoZSBsYXllciB0byBiZSB1cGRhdGVkIChjYW4gYmUgdXNlZnVsIGluIHNvbWUgY2FzZXMsIGJlY2F1c2VcbiAqICAgICAgICAgICAgICAgICAgICAgdGhlIGxheWVyIGlkIG1pZ2h0IGNoYW5nZSBkdXJpbmcgdXBkYXRlLCBlLmcuIHdoZW4gdGhlIHR5cGUgb2YgdGhlIGxheWVyIGNoYW5nZXMpXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5TGF5ZXJDb25maWcoXG4gIG9sZExheWVySWQ6IHN0cmluZyxcbiAgbmV3TGF5ZXJDb25maWc6IFBhcnNlZExheWVyLFxuICBsYXllckluZGV4PzogbnVtYmVyXG4pOiBNZXJnZTxBcHBseUxheWVyQ29uZmlnVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5BUFBMWV9MQVlFUl9DT05GSUd9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuQVBQTFlfTEFZRVJfQ09ORklHLFxuICAgIG9sZExheWVySWQsXG4gICAgbmV3TGF5ZXJDb25maWcsXG4gICAgbGF5ZXJJbmRleFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMYXllckNvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9sZExheWVyOiBMYXllcjtcbiAgbmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz47XG59O1xuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgYmFzZSBjb25maWc6IGRhdGFJZCwgbGFiZWwsIGNvbHVtbiwgaXNWaXNpYmxlXG4gKiBAcGFyYW0gb2xkTGF5ZXIgLSBsYXllciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gbmV3Q29uZmlnIC0gbmV3IGNvbmZpZyB0byBiZSBtZXJnZWQgd2l0aCBvbGQgY29uZmlnXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyQ29uZmlnQ2hhbmdlKFxuICBvbGRMYXllcjogTGF5ZXIsXG4gIG5ld0NvbmZpZzogUGFydGlhbDxMYXllckJhc2VDb25maWc+XG4pOiBNZXJnZTxMYXllckNvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfQ09ORklHX0NIQU5HRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9DT05GSUdfQ0hBTkdFLFxuICAgIG9sZExheWVyLFxuICAgIG5ld0NvbmZpZ1xuICB9O1xufVxuZXhwb3J0IHR5cGUgTGF5ZXJUZXh0TGFiZWxDaGFuZ2VVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcjogTGF5ZXI7XG4gIGlkeDogbnVtYmVyIHwgJ2FsbCc7XG4gIHByb3A6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbn07XG5cbi8qKlxuICogVXBkYXRlIGxheWVyIHRleHQgbGFiZWxcbiAqIEBwYXJhbSBvbGRMYXllciAtIGxheWVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBpZHggLWBpZHhgIG9mIHRleHQgbGFiZWwgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIHByb3AgLSBgcHJvcGAgb2YgdGV4dCBsYWJlbCwgZSxnLCBgYW5jaG9yYCwgYGFsaWdubWVudGAsIGBjb2xvcmAsIGBzaXplYCwgYGZpZWxkYCwgYG91dGxpbmVXaWR0aGAsIGBvdXRsaW5lQ29sb3JgXG4gKiBAcGFyYW0gdmFsdWUgLSBuZXcgdmFsdWVcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJUZXh0TGFiZWxDaGFuZ2UoXG4gIG9sZExheWVyOiBMYXllcixcbiAgaWR4OiBudW1iZXIgfCAnYWxsJyxcbiAgcHJvcDogc3RyaW5nLFxuICB2YWx1ZTogYW55XG4pOiBNZXJnZTxMYXllclRleHRMYWJlbENoYW5nZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfVEVYVF9MQUJFTF9DSEFOR0V9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfVEVYVF9MQUJFTF9DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgaWR4LFxuICAgIHByb3AsXG4gICAgdmFsdWVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgTGF5ZXJTZXRJc1ZhbGlkVXBkYXRlckFjdGlvbiA9IHtcbiAgb2xkTGF5ZXI6IExheWVyO1xuICBpc1ZhbGlkOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBDaGFuZ2VzIHZhbHVlIG9mIGlzVmFsaWQgZmxhZyBmb3IgYSBsYXllci5cbiAqIFRoZSBhY3Rpb24gYWxzbyB1cGRhdGVzIHZpc2liaWxpdHkgb2YgdGhlIGxheWVyIGJhc2VkIG9uIGlzVmFsaWQuXG4gKiBAcGFyYW0gb2xkTGF5ZXIgLSBsYXllciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gaXNWYWxpZCAtIG5ldyB2YWx1ZSBmb3IgaXNWYWxpZCBmbGFnXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyU2V0SXNWYWxpZChcbiAgb2xkTGF5ZXI6IExheWVyLFxuICBpc1ZhbGlkOiBib29sZWFuXG4pOiBNZXJnZTxMYXllclNldElzVmFsaWRVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX1NFVF9JU19WQUxJRH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9TRVRfSVNfVkFMSUQsXG4gICAgb2xkTGF5ZXIsXG4gICAgaXNWYWxpZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMYXllclR5cGVDaGFuZ2VVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcjogTGF5ZXI7XG4gIG5ld1R5cGU6IHN0cmluZztcbn07XG4vKipcbiAqIFVwZGF0ZSBsYXllciB0eXBlLiBQcmV2aWV3cyBsYXllciBjb25maWcgd2lsbCBiZSBjb3BpZWQgaWYgYXBwbGljYWJsZS5cbiAqIEBwYXJhbSBvbGRMYXllciAtIGxheWVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBuZXdUeXBlIC0gbmV3IHR5cGVcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJUeXBlQ2hhbmdlKFxuICBvbGRMYXllcjogTGF5ZXIsXG4gIG5ld1R5cGU6IHN0cmluZ1xuKTogTWVyZ2U8TGF5ZXJUeXBlQ2hhbmdlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9UWVBFX0NIQU5HRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9UWVBFX0NIQU5HRSxcbiAgICBvbGRMYXllcixcbiAgICBuZXdUeXBlXG4gIH07XG59XG5leHBvcnQgdHlwZSBMYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcjogTGF5ZXI7XG4gIG5ld0NvbmZpZzogUGFydGlhbDxMYXllckJhc2VDb25maWc+O1xuICBjaGFubmVsOiBzdHJpbmc7XG4gIG5ld1Zpc0NvbmZpZz86IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+O1xufTtcbi8qKlxuICogVXBkYXRlIGxheWVyIHZpc3VhbCBjaGFubmVsXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gb2xkTGF5ZXIgLSBsYXllciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gbmV3Q29uZmlnIC0gbmV3IHZpc3VhbCBjaGFubmVsIGNvbmZpZ1xuICogQHBhcmFtIGNoYW5uZWwgLSBjaGFubmVsIHRvIGJlIHVwZGF0ZWRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlKFxuICBvbGRMYXllcjogTGF5ZXIsXG4gIG5ld0NvbmZpZzogUGFydGlhbDxMYXllckJhc2VDb25maWc+LFxuICBjaGFubmVsOiBzdHJpbmcsXG4gIG5ld1Zpc0NvbmZpZz86IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+XG4pOiBNZXJnZTxcbiAgTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9WSVNVQUxfQ0hBTk5FTF9DSEFOR0V9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9WSVNVQUxfQ0hBTk5FTF9DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgbmV3Q29uZmlnLFxuICAgIGNoYW5uZWwsXG4gICAgbmV3VmlzQ29uZmlnXG4gIH07XG59XG5leHBvcnQgdHlwZSBMYXllclZpc0NvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9sZExheWVyOiBMYXllcjtcbiAgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPjtcbn07XG4vKipcbiAqIFVwZGF0ZSBsYXllciBgdmlzQ29uZmlnYFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIG9sZExheWVyIC0gbGF5ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIG5ld1Zpc0NvbmZpZyAtIG5ldyB2aXNDb25maWcgYXMgYSBrZXkgdmFsdWUgbWFwOiBlLmcuIGB7b3BhY2l0eTogMC44fWBcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJWaXNDb25maWdDaGFuZ2UoXG4gIG9sZExheWVyOiBMYXllcixcbiAgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPlxuKTogTWVyZ2U8TGF5ZXJWaXNDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX1ZJU19DT05GSUdfQ0hBTkdFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1ZJU19DT05GSUdfQ0hBTkdFLFxuICAgIG9sZExheWVyLFxuICAgIG5ld1Zpc0NvbmZpZ1xuICB9O1xufVxuZXhwb3J0IHR5cGUgTGF5ZXJDb2xvclVJQ2hhbmdlVXBkYXRlckFjdGlvbiA9IHtcbiAgb2xkTGF5ZXI6IExheWVyO1xuICBwcm9wOiBzdHJpbmc7XG4gIG5ld0NvbmZpZzogTmVzdGVkUGFydGlhbDxDb2xvclVJPjtcbn07XG5cbi8qKlxuICogU2V0IHRoZSBjb2xvciBwYWxldHRlIHVpIGZvciBsYXllciBjb2xvclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIG9sZExheWVyIC0gbGF5ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIHByb3AgLSB3aGljaCBjb2xvciBwcm9wXG4gKiBAcGFyYW0gbmV3Q29uZmlnIC0gdG8gYmUgbWVyZ2VkXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyQ29sb3JVSUNoYW5nZShcbiAgb2xkTGF5ZXI6IExheWVyLFxuICBwcm9wOiBzdHJpbmcsXG4gIG5ld0NvbmZpZzogTmVzdGVkUGFydGlhbDxDb2xvclVJPlxuKTogTWVyZ2U8TGF5ZXJDb2xvclVJQ2hhbmdlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9DT0xPUl9VSV9DSEFOR0V9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfQ09MT1JfVUlfQ0hBTkdFLFxuICAgIG9sZExheWVyLFxuICAgIHByb3AsXG4gICAgbmV3Q29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUxheWVyQmxlbmRpbmdVcGRhdGVyQWN0aW9uID0ge1xuICBtb2RlOiAnYWRkaXRpdmUnIHwgJ25vcm1hbCcgfCAnc3VidHJhY3RpdmUnO1xufTtcbi8qKlxuICogVXBkYXRlIGxheWVyIGJsZW5kaW5nIG1vZGVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBtb2RlIG9uZSBvZiBgYWRkaXRpdmVgLCBgbm9ybWFsYCBhbmQgYHN1YnRyYWN0aXZlYFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVMYXllckJsZW5kaW5nKFxuICBtb2RlOiAnYWRkaXRpdmUnIHwgJ25vcm1hbCcgfCAnc3VidHJhY3RpdmUnXG4pOiBNZXJnZTxVcGRhdGVMYXllckJsZW5kaW5nVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5VUERBVEVfTEFZRVJfQkxFTkRJTkd9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0xBWUVSX0JMRU5ESU5HLFxuICAgIG1vZGVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlT3ZlcmxheUJsZW5kaW5nVXBkYXRlckFjdGlvbiA9IHtcbiAgbW9kZTogJ3NjcmVlbicgfCAnbm9ybWFsJyB8ICdkYXJrZW4nO1xufTtcblxuLyoqXG4gKiBVcGRhdGUgb3ZlcmxheSBibGVuZGluZyBtb2RlXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gbW9kZSBvbmUgb2YgYHNjcmVlbmAsIGBub3JtYWxgIGFuZCBgZGFya2VuYFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVPdmVybGF5QmxlbmRpbmcoXG4gIG1vZGU6ICdzY3JlZW4nIHwgJ25vcm1hbCcgfCAnZGFya2VuJ1xuKTogTWVyZ2U8VXBkYXRlT3ZlcmxheUJsZW5kaW5nVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5VUERBVEVfT1ZFUkxBWV9CTEVORElOR30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5VUERBVEVfT1ZFUkxBWV9CTEVORElORyxcbiAgICBtb2RlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEludGVyYWN0aW9uQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvbiA9IHtcbiAgY29uZmlnOiBWYWx1ZU9mPEludGVyYWN0aW9uQ29uZmlnPjtcbn07XG4vKipcbiAqIFVwZGF0ZSBgaW50ZXJhY3Rpb25Db25maWdgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gY29uZmlnIC0gbmV3IGNvbmZpZyBhcyBrZXkgdmFsdWUgbWFwOiBge3Rvb2x0aXA6IHtlbmFibGVkOiB0cnVlfX1gXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVyYWN0aW9uQ29uZmlnQ2hhbmdlKFxuICBjb25maWc6IFZhbHVlT2Y8SW50ZXJhY3Rpb25Db25maWc+XG4pOiBNZXJnZTxcbiAgSW50ZXJhY3Rpb25Db25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLklOVEVSQUNUSU9OX0NPTkZJR19DSEFOR0V9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5JTlRFUkFDVElPTl9DT05GSUdfQ0hBTkdFLFxuICAgIGNvbmZpZ1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRGaWx0ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbiAgcHJvcDogc3RyaW5nIHwgc3RyaW5nW107XG4gIHZhbHVlOiBhbnk7XG4gIHZhbHVlSW5kZXg/OiBudW1iZXI7XG59O1xuLyoqXG4gKiBVcGRhdGUgZmlsdGVyIHByb3BlcnR5XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWR4IC1gaWR4YCBvZiBmaWx0ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIHByb3AgLSBgcHJvcGAgb2YgZmlsdGVyLCBlLGcsIGBkYXRhSWRgLCBgbmFtZWAsIGB2YWx1ZWBcbiAqICAgICAgICAgICAgICAgIG9yIGFuIGFycmF5IGUuZy4gWydpZHgnLCAnbmFtZSddLiBpbiB0aGF0IGNhc2UgdGhlIHZhbHVlXG4gKiAgICAgICAgICAgICAgICBzaG91bGQgYWxzbyBiZSBhbiBhcnJheSBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgKGJ5IGluZGV4KVxuICogQHBhcmFtIHZhbHVlIC0gbmV3IHZhbHVlXG4gKiBAcGFyYW0gdmFsdWVJbmRleCAtIGRhdGFJZCBpbmRleFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGaWx0ZXIoXG4gIGlkeDogbnVtYmVyLFxuICBwcm9wOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgdmFsdWU6IGFueSxcbiAgdmFsdWVJbmRleD86IG51bWJlclxuKTogTWVyZ2U8U2V0RmlsdGVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9GSUxURVIsXG4gICAgaWR4LFxuICAgIHByb3AsXG4gICAgdmFsdWUsXG4gICAgdmFsdWVJbmRleFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRGaWx0ZXJBbmltYXRpb25UaW1lVXBkYXRlckFjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG4gIHByb3A6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgdmFsdWVJbmRleD86IG51bWJlcjtcbn07XG4vKipcbiAqIFNhbWUgYXMgVXBkYXRlIGZpbHRlclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkeCAtYGlkeGAgb2YgZmlsdGVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBwcm9wIC0gYHByb3BgIG9mIGZpbHRlciwgZSxnLCBgZGF0YUlkYCwgYG5hbWVgLCBgdmFsdWVgXG4gKiBAcGFyYW0gdmFsdWUgLSBuZXcgdmFsdWVcbiAqIEBwYXJhbSB2YWx1ZUluZGV4IC0gZGF0YUlkIGluZGV4XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlckFuaW1hdGlvblRpbWUoXG4gIGlkeDogbnVtYmVyLFxuICBwcm9wOiBzdHJpbmcsXG4gIHZhbHVlOiBhbnksXG4gIHZhbHVlSW5kZXg/OiBudW1iZXJcbik6IE1lcmdlPFxuICBTZXRGaWx0ZXJBbmltYXRpb25UaW1lVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9USU1FfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRSxcbiAgICBpZHgsXG4gICAgcHJvcCxcbiAgICB2YWx1ZSxcbiAgICB2YWx1ZUluZGV4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEZpbHRlckFuaW1hdGlvbldpbmRvd1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGFuaW1hdGlvbldpbmRvdzogc3RyaW5nO1xufTtcbi8qKlxuICogU2FtZSBhcyBVcGRhdGUgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGaWx0ZXJBbmltYXRpb25XaW5kb3coe1xuICBpZCxcbiAgYW5pbWF0aW9uV2luZG93XG59OiBTZXRGaWx0ZXJBbmltYXRpb25XaW5kb3dVcGRhdGVyQWN0aW9uKTogTWVyZ2U8XG4gIFNldEZpbHRlckFuaW1hdGlvbldpbmRvd1VwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9BTklNQVRJT05fV0lORE9XfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9BTklNQVRJT05fV0lORE9XLFxuICAgIGlkLFxuICAgIGFuaW1hdGlvbldpbmRvd1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBBZGRGaWx0ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGw7XG4gIGlkPzogc3RyaW5nO1xufTtcbi8qKlxuICogQWRkIGEgbmV3IGZpbHRlclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFJZCAtIGRhdGFzZXQgYGlkYCB0aGlzIG5ldyBmaWx0ZXIgaXMgYXNzb2NpYXRlZCB3aXRoXG4gKiBAcGFyYW0gaWQgLSBgaWRgIGZvciB0aGUgbmV3IGZpbHRlclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRGaWx0ZXIoXG4gIGRhdGFJZDogc3RyaW5nIHwgbnVsbCxcbiAgaWQ/OiBzdHJpbmdcbik6IE1lcmdlPEFkZEZpbHRlclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuQUREX0ZJTFRFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5BRERfRklMVEVSLFxuICAgIGRhdGFJZCxcbiAgICBpZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVPclVwZGF0ZUZpbHRlclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkPzogc3RyaW5nO1xuICBkYXRhSWQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgZmllbGQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdmFsdWU/OiBhbnk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBvciB1cGRhdGVzIGEgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIC0gZGF0YXNldCBgaWRgIHRoaXMgbmV3IGZpbHRlciBpcyBhc3NvY2lhdGVkIHdpdGhcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT3JVcGRhdGVGaWx0ZXIoXG4gIGlkPzogc3RyaW5nLFxuICBkYXRhSWQ/OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgZmllbGQ/OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgdmFsdWU/OiBhbnlcbik6IE1lcmdlPENyZWF0ZU9yVXBkYXRlRmlsdGVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5DUkVBVEVfT1JfVVBEQVRFX0ZJTFRFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5DUkVBVEVfT1JfVVBEQVRFX0ZJTFRFUixcbiAgICBpZCxcbiAgICBkYXRhSWQsXG4gICAgZmllbGQsXG4gICAgdmFsdWVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQWRkTGF5ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBjb25maWc/OiBvYmplY3Q7XG4gIGRhdGFzZXRJZD86IHN0cmluZztcbn07XG4vKipcbiAqIEFkZCBhIG5ldyBsYXllclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGNvbmZpZyAtIG5ldyBsYXllciBjb25maWdcbiAqIEBwYXJhbSBkYXRhc2V0SWQgLSBkYXRhc2V0IGlkIHVzZWQgZm9yIGNyZWF0aW5nIGFuIGVtcHR5IGxheWVyXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZExheWVyKFxuICBjb25maWc/OiBvYmplY3QsXG4gIGRhdGFzZXRJZD86IHN0cmluZ1xuKTogTWVyZ2U8QWRkTGF5ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9MQVlFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5BRERfTEFZRVIsXG4gICAgY29uZmlnLFxuICAgIGRhdGFzZXRJZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW9yZGVyTGF5ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBvcmRlcjogc3RyaW5nW107XG59O1xuLyoqXG4gKiBSZW9yZGVyIGxheWVyLCBvcmRlciBpcyBhbiBhcnJheSBvZiBsYXllciBpbmRleGVzLCBpbmRleCAwIHdpbGwgYmUgdGhlIG9uZSBhdCB0aGUgYm90dG9tXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gb3JkZXIgYW4gYXJyYXkgb2YgbGF5ZXIgaW5kZXhlc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGJyaW5nIGBsYXllcnNbMV1gIGJlbG93IGBsYXllcnNbMF1gLCB0aGUgc2VxdWVuY2UgbGF5ZXJzIHdpbGwgYmUgcmVuZGVyZWQgaXMgYGxheWVyc1sxXS5pZGAsIGBsYXllcnNbMF0uaWRgLCBgbGF5ZXJzWzJdLmlkYCwgYGxheWVyc1szXS5pZGAuXG4gKiBgbGF5ZXJzWzFdYCB3aWxsIGJlIGF0IHRoZSBib3R0b20sIGBsYXllcnNbMTNdYCB3aWxsIGJlIGF0IHRoZSB0b3AuXG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKHJlb3JkZXJMYXllcihbYGxheWVyc1sxXS5pZGAsIGBsYXllcnNbMF0uaWRgLCBgbGF5ZXJzWzJdLmlkYCwgYGxheWVyc1szXS5pZGBdKSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyTGF5ZXIoXG4gIG9yZGVyOiBzdHJpbmdbXVxuKTogTWVyZ2U8UmVvcmRlckxheWVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU9SREVSX0xBWUVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFT1JERVJfTEFZRVIsXG4gICAgb3JkZXJcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUmVtb3ZlRmlsdGVyVXBkYXRlckFjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG59O1xuLyoqXG4gKiBSZW1vdmUgYSBmaWx0ZXIgZnJvbSBgdmlzU3RhdGUuZmlsdGVyc2AsIG9uY2UgYSBmaWx0ZXIgaXMgcmVtb3ZlZCwgZGF0YSB3aWxsIGJlIHJlLWZpbHRlcmVkIGFuZCBsYXllciB3aWxsIGJlIHVwZGF0ZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggaWR4IG9mIGZpbHRlciB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZpbHRlcihcbiAgaWR4OiBudW1iZXJcbik6IE1lcmdlPFJlbW92ZUZpbHRlclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX0ZJTFRFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU1PVkVfRklMVEVSLFxuICAgIGlkeFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW1vdmVMYXllclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBSZW1vdmUgYSBsYXllclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkIGlkeCBvZiBsYXllciB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUxheWVyKFxuICBpZDogc3RyaW5nXG4pOiBNZXJnZTxSZW1vdmVMYXllclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX0xBWUVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTU9WRV9MQVlFUixcbiAgICBpZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBEdXBsaWNhdGVMYXllclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBEdXBsaWNhdGUgYSBsYXllclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkIGlkIG9mIGxheWVyIHRvIGJlIGR1cGxpY2F0ZWRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gZHVwbGljYXRlTGF5ZXIoXG4gIGlkOiBzdHJpbmdcbik6IE1lcmdlPER1cGxpY2F0ZUxheWVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5EVVBMSUNBVEVfTEFZRVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuRFVQTElDQVRFX0xBWUVSLFxuICAgIGlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFkZEVmZmVjdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGNvbmZpZzogRWZmZWN0UHJvcHNQYXJ0aWFsO1xufTtcblxuLyoqXG4gKiBBZGQgYSBuZXcgZWZmZWN0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gY29uZmlnIC0gbmV3IGVmZmVjdCBjb25maWdcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRWZmZWN0KFxuICBjb25maWc6IEVmZmVjdFByb3BzUGFydGlhbFxuKTogTWVyZ2U8QWRkRWZmZWN0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5BRERfRUZGRUNUfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFERF9FRkZFQ1QsXG4gICAgY29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlb3JkZXJFZmZlY3RVcGRhdGVyQWN0aW9uID0ge1xuICBvcmRlcjogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIFJlb3JkZXIgZWZmZWN0c1xuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIG9yZGVyIGFuIGFycmF5IG9mIGVmZmVjdCBpZHNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVvcmRlckVmZmVjdChcbiAgb3JkZXI6IHN0cmluZ1tdXG4pOiBNZXJnZTxSZW9yZGVyRWZmZWN0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU9SREVSX0VGRkVDVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU9SREVSX0VGRkVDVCxcbiAgICBvcmRlclxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW1vdmVFZmZlY3RVcGRhdGVyQWN0aW9uID0ge1xuICBpZDogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gZWZmZWN0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgaWR4IG9mIHRoZSBlZmZlY3QgdG8gYmUgcmVtb3ZlZFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFZmZlY3QoXG4gIGlkOiBzdHJpbmdcbik6IE1lcmdlPFJlbW92ZUVmZmVjdFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX0VGRkVDVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU1PVkVfRUZGRUNULFxuICAgIGlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUVmZmVjdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHByb3BzOiBFZmZlY3RQcm9wc1BhcnRpYWw7XG59O1xuXG4vKipcbiAqIFVwZGF0ZSBhbiBlZmZlY3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwcm9wcyBpZHggb2YgdGhlIGVmZmVjdCB0byBiZSB1cGRhdGVkIHdpdGggc3BlY2lmaWVkIHByb3BzXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUVmZmVjdChcbiAgaWQ6IHN0cmluZyxcbiAgcHJvcHM6IEVmZmVjdFByb3BzUGFydGlhbFxuKTogTWVyZ2U8VXBkYXRlRWZmZWN0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5VUERBVEVfRUZGRUNUfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlVQREFURV9FRkZFQ1QsXG4gICAgaWQsXG4gICAgcHJvcHNcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUmVtb3ZlRGF0YXNldFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZDogc3RyaW5nO1xufTtcbi8qKlxuICogUmVtb3ZlIGEgZGF0YXNldCBhbmQgYWxsIGxheWVycywgZmlsdGVycywgdG9vbHRpcCBjb25maWdzIHRoYXQgYmFzZWQgb24gaXRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBkYXRhSWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEYXRhc2V0KFxuICBkYXRhSWQ6IHN0cmluZ1xuKTogTWVyZ2U8UmVtb3ZlRGF0YXNldFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX0RBVEFTRVR9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuUkVNT1ZFX0RBVEFTRVQsXG4gICAgZGF0YUlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNob3dEYXRhc2V0VGFibGVVcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ6IHN0cmluZztcbn07XG4vKipcbiAqIERpc3BsYXkgZGF0YXNldCB0YWJsZSBpbiBhIG1vZGFsXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIGRhdGFzZXQgaWQgdG8gc2hvdyBpbiB0YWJsZVxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG93RGF0YXNldFRhYmxlKFxuICBkYXRhSWQ6IHN0cmluZ1xuKTogTWVyZ2U8U2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0hPV19EQVRBU0VUX1RBQkxFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNIT1dfREFUQVNFVF9UQUJMRSxcbiAgICBkYXRhSWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlRGF0YXNldENvbG9yVXBkYXRlciA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIG5ld0NvbG9yOiBSR0JDb2xvcjtcbn07XG4vKipcbiAqIFVwZGF0ZSBkYXRhc2V0IGNvbG9yIHRvIGN1c3RvbSBieSBtZWFucyBvZiBjb2xvciBwaWNrZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBkYXRhSWQgZGF0YXNldCBgaWRgIHRoaXMgY3VzdG9tIGNvbG9yIGlzIGFzc29jaWF0ZWQgd2l0aFxuICogQHBhcmFtIG5ld0NvbG9yIGN1c3RvbSBjb2xvciBpbiBSR0Jmb3JtYXRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVGFibGVDb2xvcihcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIG5ld0NvbG9yOiBSR0JDb2xvclxuKTogTWVyZ2U8VXBkYXRlRGF0YXNldENvbG9yVXBkYXRlciwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5VUERBVEVfVEFCTEVfQ09MT1J9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX1RBQkxFX0NPTE9SLFxuICAgIGRhdGFJZCxcbiAgICBuZXdDb2xvclxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTb3J0VGFibGVDb2x1bW5VcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ6IHN0cmluZztcbiAgY29sdW1uOiBzdHJpbmc7XG4gIG1vZGU/OiBzdHJpbmc7XG59O1xuLyoqXG4gKiBTb3J0IGRhdGFzZXQgY29sdW1uLCBmb3IgdGFibGUgZGlzcGxheVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFJZFxuICogQHBhcmFtIGNvbHVtblxuICogQHBhcmFtIG1vZGVcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFRhYmxlQ29sdW1uKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgY29sdW1uOiBzdHJpbmcsXG4gIG1vZGU/OiBzdHJpbmdcbik6IE1lcmdlPFNvcnRUYWJsZUNvbHVtblVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU09SVF9UQUJMRV9DT0xVTU59PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU09SVF9UQUJMRV9DT0xVTU4sXG4gICAgZGF0YUlkLFxuICAgIGNvbHVtbixcbiAgICBtb2RlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFBpblRhYmxlQ29sdW1uVXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIGNvbHVtbjogc3RyaW5nO1xufTtcbi8qKlxuICogUGluIGRhdGFzZXQgY29sdW1uLCBmb3IgdGFibGUgZGlzcGxheVxuICogQHBhcmFtIGRhdGFJZFxuICogQHBhcmFtIGNvbHVtblxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaW5UYWJsZUNvbHVtbihcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIGNvbHVtbjogc3RyaW5nXG4pOiBNZXJnZTxQaW5UYWJsZUNvbHVtblVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUElOX1RBQkxFX0NPTFVNTn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5QSU5fVEFCTEVfQ09MVU1OLFxuICAgIGRhdGFJZCxcbiAgICBjb2x1bW5cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ29weVRhYmxlQ29sdW1uVXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIGNvbHVtbjogc3RyaW5nO1xufTtcbi8qKlxuICogQ29weSBjb2x1bW4sIGZvciB0YWJsZSBkaXNwbGF5XG4gKiBAcGFyYW0gZGF0YUlkXG4gKiBAcGFyYW0gY29sdW1uXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlUYWJsZUNvbHVtbihcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIGNvbHVtbjogc3RyaW5nXG4pOiBNZXJnZTxDb3B5VGFibGVDb2x1bW5VcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkNPUFlfVEFCTEVfQ09MVU1OfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkNPUFlfVEFCTEVfQ09MVU1OLFxuICAgIGRhdGFJZCxcbiAgICBjb2x1bW5cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0Q29sdW1uRGlzcGxheUZvcm1hdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZDogc3RyaW5nO1xuICBmb3JtYXRzOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xufTtcblxuLyoqXG4gKiBTZXQgY29sdW1uIGRpc3BsYXkgZm9ybWF0XG4gKiBAcGFyYW0gZGF0YUlkXG4gKiBAcGFyYW0gZm9ybWF0c1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0KFxuICBkYXRhSWQ6IFNldENvbHVtbkRpc3BsYXlGb3JtYXRVcGRhdGVyQWN0aW9uWydkYXRhSWQnXSxcbiAgZm9ybWF0czogU2V0Q29sdW1uRGlzcGxheUZvcm1hdFVwZGF0ZXJBY3Rpb25bJ2Zvcm1hdHMnXVxuKTogTWVyZ2U8XG4gIFNldENvbHVtbkRpc3BsYXlGb3JtYXRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9DT0xVTU5fRElTUExBWV9GT1JNQVR9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfQ09MVU1OX0RJU1BMQVlfRk9STUFULFxuICAgIGRhdGFJZCxcbiAgICBmb3JtYXRzXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFkZERhdGFUb01hcFVwZGF0ZXJPcHRpb25zID0ge1xuICBjZW50ck1hcD86IGJvb2xlYW47XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAga2VlcEV4aXN0aW5nQ29uZmlnPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZVZpc0RhdGFVcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhc2V0czogQWRkRGF0YVRvTWFwUGF5bG9hZFsnZGF0YXNldHMnXTtcbiAgb3B0aW9uczogQWRkRGF0YVRvTWFwUGF5bG9hZFsnb3B0aW9ucyddO1xuICBjb25maWc/OiBQYXJzZWRDb25maWc7XG59O1xuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvLmlkIC0gaWQgb2YgdGhpcyBkYXRhc2V0LiBJZiBjb25maWcgaXMgZGVmaW5lZCwgYGlkYCBzaG91bGQgbWF0Y2hlcyB0aGUgYGRhdGFJZGAgaW4gY29uZmlnLlxuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvLmxhYmVsIC0gQSBkaXNwbGF5IG5hbWUgb2YgdGhpcyBkYXRhc2V0XG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEuZmllbGRzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiBmaWVsZHMsXG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEuZmllbGRzLm5hbWUgLSAqKipyZXF1aXJlZCoqIE5hbWUgb2YgdGhlIGZpZWxkLFxuLy8gKiBAcGFyYW0gZGF0YXNldC5kYXRhLnJvd3MgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIHJvd3MsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCBgZmllbGRzYCBhbmQgYHJvd3NgXG4vKipcbiAqIEFkZCBuZXcgZGF0YXNldCB0byBgdmlzU3RhdGVgLCB3aXRoIG9wdGlvbiB0byBsb2FkIGEgbWFwIGNvbmZpZyBhbG9uZyB3aXRoIHRoZSBkYXRhc2V0c1xuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFzZXRzIC0gKioqcmVxdWlyZWQqKiBkYXRhc2V0cyBjYW4gYmUgYSBkYXRhc2V0IG9yIGFuIGFycmF5IG9mIGRhdGFzZXRzXG4gKiBFYWNoIGRhdGFzZXQgb2JqZWN0IG5lZWRzIHRvIGhhdmUgYGluZm9gIGFuZCBgZGF0YWAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIG9wdGlvbnMuY2VudGVyTWFwIGBkZWZhdWx0OiB0cnVlYCBpZiBgY2VudGVyTWFwYCBpcyBzZXQgdG8gYHRydWVgIGtlcGxlci5nbCB3aWxsXG4gKiBwbGFjZSB0aGUgbWFwIHZpZXcgd2l0aGluIHRoZSBkYXRhIHBvaW50cyBib3VuZGFyaWVzXG4gKiBAcGFyYW0gb3B0aW9ucy5yZWFkT25seSBgZGVmYXVsdDogZmFsc2VgIGlmIGByZWFkT25seWAgaXMgc2V0IHRvIGB0cnVlYFxuICogdGhlIGxlZnQgc2V0dGluZyBwYW5lbCB3aWxsIGJlIGhpZGRlblxuICogQHBhcmFtIGNvbmZpZyB0aGlzIG9iamVjdCB3aWxsIGNvbnRhaW4gdGhlIGZ1bGwga2VwbGVyLmdsIGluc3RhbmNlIGNvbmZpZ3VyYXRpb24ge21hcFN0YXRlLCBtYXBTdHlsZSwgdmlzU3RhdGV9XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpc0RhdGEoXG4gIGRhdGFzZXRzOiBBZGREYXRhVG9NYXBQYXlsb2FkWydkYXRhc2V0cyddLFxuICBvcHRpb25zOiBBZGREYXRhVG9NYXBQYXlsb2FkWydvcHRpb25zJ10sXG4gIGNvbmZpZz86IFBhcnNlZENvbmZpZ1xuKTogTWVyZ2U8VXBkYXRlVmlzRGF0YVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVVBEQVRFX1ZJU19EQVRBfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlVQREFURV9WSVNfREFUQSxcbiAgICBkYXRhc2V0cyxcbiAgICBvcHRpb25zLFxuICAgIGNvbmZpZ1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW5hbWVEYXRhc2V0VXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBSZW5hbWUgYW4gZXhpc3RpbmcgZGF0YXNldCBpbiBgdmlzU3RhdGVgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIC0gKioqcmVxdWlyZWQqKiBJZCBvZiB0aGUgZGF0YXNldCB0byB1cGRhdGVcbiAqIEBwYXJhbSBsYWJlbCAtICoqKnJlcXVpcmVkKiogTmV3IG5hbWUgZm9yIHRoZSBkYXRhc2V0XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZURhdGFzZXQoXG4gIGRhdGFJZDogc3RyaW5nLFxuICBsYWJlbDogc3RyaW5nXG4pOiBNZXJnZTxSZW5hbWVEYXRhc2V0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU5BTUVfREFUQVNFVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU5BTUVfREFUQVNFVCxcbiAgICBkYXRhSWQsXG4gICAgbGFiZWxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlRGF0YXNldFByb3BzVXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIHByb3BzOiB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBSR0JDb2xvcjtcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9O1xufTtcbi8qKlxuICogVXBkYXRlIGFuIGV4aXN0aW5nIGRhdGFzZXQgcHJvcHMgaW4gYHZpc1N0YXRlYFxuICogQHBhcmFtIGRhdGFJZCAtICoqKnJlcXVpcmVkKiogSWQgb2YgdGhlIGRhdGFzZXQgdG8gdXBkYXRlXG4gKiBAcGFyYW0gcHJvcHMgLSAqKipyZXF1aXJlZCoqIE5ldyBwcm9wcyB0byB1cGRhdGVcbiAqIEByZXR1cm5zIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRGF0YXNldFByb3BzKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgcHJvcHM6IHtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBjb2xvcj86IFJHQkNvbG9yO1xuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH1cbik6IE1lcmdlPFVwZGF0ZURhdGFzZXRQcm9wc1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVVBEQVRFX0RBVEFTRVRfUFJPUFN9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0RBVEFTRVRfUFJPUFMsXG4gICAgZGF0YUlkLFxuICAgIHByb3BzXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZUZpbHRlckFuaW1hdGlvblVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xufTtcbi8qKlxuICogU3RhcnQgYW5kIGVuZCBmaWx0ZXIgYW5pbWF0aW9uXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0ge051bWJlcn0gaWR4IG9mIGZpbHRlclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVGaWx0ZXJBbmltYXRpb24oXG4gIGlkeDogbnVtYmVyXG4pOiBNZXJnZTxUb2dnbGVGaWx0ZXJBbmltYXRpb25VcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfQU5JTUFUSU9OfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfQU5JTUFUSU9OLFxuICAgIGlkeFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGVGaWx0ZXJBbmltYXRpb25TcGVlZFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBzcGVlZDogbnVtYmVyO1xufTtcbi8qKlxuICogQ2hhbmdlIGZpbHRlciBhbmltYXRpb24gc3BlZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggLSAgYGlkeGAgb2YgZmlsdGVyXG4gKiBAcGFyYW0gc3BlZWQgLSBgc3BlZWRgIHRvIGNoYW5nZSBpdCB0by4gYHNwZWVkYCBpcyBhIG11bHRpcGxpZXJcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWQoXG4gIGlkeDogbnVtYmVyLFxuICBzcGVlZDogbnVtYmVyXG4pOiBNZXJnZTxcbiAgVXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9GSUxURVJfQU5JTUFUSU9OX1NQRUVEfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0ZJTFRFUl9BTklNQVRJT05fU1BFRUQsXG4gICAgaWR4LFxuICAgIHNwZWVkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldExheWVyQW5pbWF0aW9uVGltZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xufTtcbi8qKlxuICogUmVzZXQgYW5pbWF0aW9uXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gdmFsdWUgLSAgQ3VycmVudCB2YWx1ZSBvZiB0aGUgc2xpZGVyXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldExheWVyQW5pbWF0aW9uVGltZShcbiAgdmFsdWU6IG51bWJlclxuKTogTWVyZ2U8U2V0TGF5ZXJBbmltYXRpb25UaW1lVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfTEFZRVJfQU5JTUFUSU9OX1RJTUV9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0xBWUVSX0FOSU1BVElPTl9USU1FLFxuICAgIHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyQWN0aW9uID0ge1xuICBzcGVlZDogbnVtYmVyO1xufTtcbi8qKlxuICogdXBkYXRlIHRyaXAgbGF5ZXIgYW5pbWF0aW9uIHNwZWVkXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gc3BlZWQgLSBgc3BlZWRgIHRvIGNoYW5nZSBpdCB0by4gYHNwZWVkYCBpcyBhIG11bHRpcGxpZXJcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlTGF5ZXJBbmltYXRpb25TcGVlZChcbiAgc3BlZWQ6IG51bWJlclxuKTogTWVyZ2U8XG4gIFVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9MQVlFUl9BTklNQVRJT05fU1BFRUR9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5VUERBVEVfTEFZRVJfQU5JTUFUSU9OX1NQRUVELFxuICAgIHNwZWVkXG4gIH07XG59XG5leHBvcnQgdHlwZSBUb2dnbGVMYXllckFuaW1hdGlvblVwZGF0ZXJBY3Rpb24gPSB2b2lkO1xuLyoqXG4gKiBzdGFydCBlbmQgZW5kIGxheWVyIGFuaW1hdGlvblxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVMYXllckFuaW1hdGlvbigpOiBNZXJnZTxcbiAgVG9nZ2xlTGF5ZXJBbmltYXRpb25VcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9BTklNQVRJT059XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfQU5JTUFUSU9OXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZUxheWVyQW5pbWF0aW9uQ29udHJvbFVwZGF0ZXJBY3Rpb24gPSB2b2lkO1xuLyoqXG4gKiBoaWRlIGFuZCBzaG93IGxheWVyIGFuaW1hdGlvbiBjb250cm9sXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUxheWVyQW5pbWF0aW9uQ29udHJvbCgpOiBNZXJnZTxcbiAgVG9nZ2xlTGF5ZXJBbmltYXRpb25Db250cm9sVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfQU5JTUFUSU9OX0NPTlRST0x9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfQU5JTUFUSU9OX0NPTlRST0xcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0RmlsdGVyVmlld1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICB2aWV3OiBGaWx0ZXJbJ3ZpZXcnXTtcbn07XG4vKipcbiAqIFNob3cgbGFyZ2VyIHRpbWUgZmlsdGVyIGF0IGJvdHRvbSBmb3IgdGltZSBwbGF5YmFjayAoYXBwbHkgdG8gdGltZSBmaWx0ZXIgb25seSlcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggLSBpbmRleCBvZiBmaWx0ZXIgdG8gZW5sYXJnZVxuICogQHBhcmFtIHZpZXcgLSB0eXBlIG9mIGZpbHRlciB2aWV3XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlclZpZXcoXG4gIGlkeDogbnVtYmVyLFxuICB2aWV3OiBGaWx0ZXJbJ3ZpZXcnXVxuKTogTWVyZ2U8U2V0RmlsdGVyVmlld1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9WSUVXfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9GSUxURVJfVklFVyxcbiAgICBpZHgsXG4gICAgdmlld1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBUb2dnbGVGaWx0ZXJGZWF0dXJlVXBkYXRlckFjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG59O1xuLyoqXG4gKiBTaG93L2hpZGUgZmlsdGVyIGZlYXR1cmUgb24gbWFwXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWR4IC0gaW5kZXggb2YgZmlsdGVyIGZlYXR1cmUgdG8gc2hvdy9oaWRlXG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlRmlsdGVyRmVhdHVyZShcbiAgaWR4OiBudW1iZXJcbik6IE1lcmdlPFRvZ2dsZUZpbHRlckZlYXR1cmVVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfRkVBVFVSRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5UT0dHTEVfRklMVEVSX0ZFQVRVUkUsXG4gICAgaWR4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIE9uTGF5ZXJIb3ZlclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGluZm86IFBpY2tJbmZvPGFueT4gfCBudWxsO1xuICBtYXBJbmRleD86IG51bWJlcjtcbn07XG4vKipcbiAqIFRyaWdnZXIgbGF5ZXIgaG92ZXIgZXZlbnQgd2l0aCBob3ZlcmVkIG9iamVjdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGluZm8gLSBPYmplY3QgaG92ZXJlZCwgcmV0dXJuZWQgYnkgZGVjay5nbC5cbiAqIEBwYXJhbSBtYXBJbmRleCAtIE9wdGlvbmFsIHByb3BlcnR5IGZvciBsaW1pdGluZyB0aGUgZGlzcGxheSBvZiB0aGUgYDxNYXBQb3BvdmVyPmAgdG8gdGhlIGA8TWFwQ29udGFpbmVyPmAgdGhlIHVzZXIgaXMgaW50ZXJhY3Rpbmcgd2l0aC5cbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25MYXllckhvdmVyKFxuICBpbmZvOiBQaWNrSW5mbzxhbnk+IHwgbnVsbCxcbiAgbWFwSW5kZXg/OiBudW1iZXJcbik6IE1lcmdlPE9uTGF5ZXJIb3ZlclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfSE9WRVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfSE9WRVIsXG4gICAgaW5mbyxcbiAgICBtYXBJbmRleFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBPbkxheWVyQ2xpY2tVcGRhdGVyQWN0aW9uID0ge1xuICBpbmZvOiBQaWNrSW5mbzxhbnk+IHwgbnVsbDtcbn07XG4vKipcbiAqIFRyaWdnZXIgbGF5ZXIgY2xpY2sgZXZlbnQgd2l0aCBjbGlja2VkIG9iamVjdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGluZm8gLSBPYmplY3QgY2xpY2tlZCwgcmV0dXJuZWQgYnkgZGVjay5nbFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkxheWVyQ2xpY2soXG4gIGluZm86IFBpY2tJbmZvPGFueT4gfCBudWxsXG4pOiBNZXJnZTxPbkxheWVyQ2xpY2tVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX0NMSUNLfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX0NMSUNLLFxuICAgIGluZm9cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgT25NYXBDbGlja1VwZGF0ZXJBY3Rpb24gPSB2b2lkO1xuLyoqXG4gKiBUcmlnZ2VyIG1hcCBjbGljayBldmVudCwgdW5zZWxlY3QgY2xpY2tlZCBvYmplY3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25NYXBDbGljaygpOiBNZXJnZTxPbk1hcENsaWNrVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5NQVBfQ0xJQ0t9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTUFQX0NMSUNLXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIE9uTW91c2VNb3ZlVXBkYXRlckFjdGlvbiA9IHtcbiAgZXZ0O1xufTtcbi8qKlxuICogVHJpZ2dlciBtYXAgbW91c2UgbW92ZWV2ZW50LCBwYXlsb2FkIHdvdWxkIGJlXG4gKiBSZWFjdC1tYXAtZ2wgTWFwTGF5ZXJNb3VzZUV2ZW50XG4gKiBodHRwczovL3Zpc2dsLmdpdGh1Yi5pby9yZWFjdC1tYXAtZ2wvZG9jcy9hcGktcmVmZXJlbmNlL3R5cGVzI21hcGxheWVybW91c2VldmVudFxuICpcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBldnQgLSBNYXBMYXllck1vdXNlRXZlbnRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25Nb3VzZU1vdmUoXG4gIGV2dFxuKTogTWVyZ2U8T25Nb3VzZU1vdmVVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLk1PVVNFX01PVkV9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTU9VU0VfTU9WRSxcbiAgICBldnRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVG9nZ2xlTGF5ZXJGb3JNYXBVcGRhdGVyQWN0aW9uID0ge1xuICBtYXBJbmRleDogbnVtYmVyO1xuICBsYXllcklkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUb2dnbGUgdmlzaWJpbGl0eSBvZiBhIGxheWVyIGluIGEgc3BsaXQgbWFwXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gbWFwSW5kZXggLSBpbmRleCBvZiB0aGUgc3BsaXQgbWFwXG4gKiBAcGFyYW0gbGF5ZXJJZCAtIGlkIG9mIHRoZSBsYXllclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVMYXllckZvck1hcChcbiAgbWFwSW5kZXg6IG51bWJlcixcbiAgbGF5ZXJJZDogc3RyaW5nXG4pOiBNZXJnZTxUb2dnbGVMYXllckZvck1hcFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX0xBWUVSX0ZPUl9NQVB9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVE9HR0xFX0xBWUVSX0ZPUl9NQVAsXG4gICAgbWFwSW5kZXgsXG4gICAgbGF5ZXJJZFxuICB9O1xufVxuXG50eXBlIEZpbHRlclBsb3ROZXdQcm9wID0ge1xuICB5QXhpcz86IG51bGwgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBwbG90VHlwZT86IHt0eXBlOiBzdHJpbmd9O1xufTtcbmV4cG9ydCB0eXBlIFNldEZpbHRlclBsb3RVcGRhdGVyQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbiAgbmV3UHJvcDogRmlsdGVyUGxvdE5ld1Byb3A7XG4gIHZhbHVlSW5kZXg/OiBudW1iZXI7XG59O1xuLyoqXG4gKiBTZXQgdGhlIHByb3BlcnR5IG9mIGEgZmlsdGVyIHBsb3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHhcbiAqIEBwYXJhbSBuZXdQcm9wIGtleSB2YWx1ZSBtYXBwaW5nIG9mIG5ldyBwcm9wIGB7eUF4aXM6ICdoaXN0b2dyYW0nfWBcbiAqIEBwYXJhbSB2YWx1ZUluZGV4IGRhdGFJZCBpbmRleFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGaWx0ZXJQbG90KFxuICBpZHg6IG51bWJlcixcbiAgbmV3UHJvcDogRmlsdGVyUGxvdE5ld1Byb3AsXG4gIHZhbHVlSW5kZXg/OiBudW1iZXJcbik6IE1lcmdlPFNldEZpbHRlclBsb3RVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9GSUxURVJfUExPVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX1BMT1QsXG4gICAgaWR4LFxuICAgIG5ld1Byb3AsXG4gICAgdmFsdWVJbmRleFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRNYXBJbmZvVXBkYXRlckFjdGlvbiA9IHtcbiAgaW5mbzogYW55O1xufTtcbi8qKlxuICogU2V0IHRoZSBwcm9wZXJ0eSBvZiBhIGZpbHRlciBwbG90XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaW5mb1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRNYXBJbmZvKFxuICBpbmZvOiBhbnlcbik6IE1lcmdlPFNldE1hcEluZm9VcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9NQVBfSU5GT30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfTUFQX0lORk8sXG4gICAgaW5mb1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMb2FkRmlsZXNVcGRhdGVyQWN0aW9uID0ge1xuICBmaWxlczogRmlsZVtdO1xuICBvbkZpbmlzaD8ocmVzdWx0OiBhbnkpOiBhbnk7XG59O1xuLyoqXG4gKiBUcmlnZ2VyIGZpbGUgbG9hZGluZyBkaXNwYXRjaCBgYWRkRGF0YVRvTWFwYCBpZiBzdWNjZWVkLCBvciBgbG9hZEZpbGVzRXJyYCBpZiBmYWlsZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBmaWxlcyBhcnJheSBvZiBmaWxlYmxvYlxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRmlsZXMoXG4gIGZpbGVzOiBGaWxlW10sXG4gIG9uRmluaXNoPzogKHJlc3VsdDogYW55KSA9PiBhbnlcbik6IE1lcmdlPExvYWRGaWxlc1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTE9BRF9GSUxFU30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTLFxuICAgIGZpbGVzLFxuICAgIG9uRmluaXNoXG4gIH07XG59XG5cbi8qKlxuICogQ2FsbGVkIHdpdGggbmV4dCBmaWxlIHRvIGxvYWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZE5leHRGaWxlKCk6IHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTE9BRF9ORVhUX0ZJTEV9IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MT0FEX05FWFRfRklMRVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlckFjdGlvbiA9IHtcbiAgcmVzdWx0OiBGaWxlQ2FjaGVJdGVtW107XG59O1xuLyoqXG4gKiBjYWxsZWQgd2hlbiBhbGwgZmlsZXMgYXJlIHByb2Nlc3NlZCBhbmQgbG9hZGVkXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gcmVzdWx0XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlc1N1Y2Nlc3MoXG4gIHJlc3VsdDogRmlsZUNhY2hlSXRlbVtdXG4pOiBNZXJnZTxsb2FkRmlsZXNTdWNjZXNzVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTX1NVQ0NFU1N9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTE9BRF9GSUxFU19TVUNDRVNTLFxuICAgIHJlc3VsdFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMb2FkRmlsZVN0ZXBTdWNjZXNzQWN0aW9uID0ge1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmaWxlQ2FjaGU6IEZpbGVDYWNoZUl0ZW1bXTtcbn07XG4vKipcbiAqIGNhbGxlZCB3aGVuIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25lIGZpbGUsIHJlYWR5IHRvIG1vdmUgb24gdG8gdGhlIG5leHQgb25lXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gcmVzdWx0XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlU3RlcFN1Y2Nlc3Moe1xuICBmaWxlTmFtZSxcbiAgZmlsZUNhY2hlXG59OiB7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdO1xufSk6IE1lcmdlPExvYWRGaWxlU3RlcFN1Y2Nlc3NBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTE9BRF9GSUxFX1NURVBfU1VDQ0VTU30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVfU1RFUF9TVUNDRVNTLFxuICAgIGZpbGVOYW1lLFxuICAgIGZpbGVDYWNoZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uID0ge1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBlcnJvcjogYW55O1xufTtcbi8qKlxuICogVHJpZ2dlciBsb2FkaW5nIGZpbGUgZXJyb3JcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSAgZXJyb3JcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRmlsZXNFcnIoXG4gIGZpbGVOYW1lOiBzdHJpbmcsXG4gIGVycm9yOiBhbnlcbik6IE1lcmdlPExvYWRGaWxlc0VyclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTE9BRF9GSUxFU19FUlJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTE9BRF9GSUxFU19FUlIsXG4gICAgZmlsZU5hbWUsXG4gICAgZXJyb3JcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0RmVhdHVyZXNVcGRhdGVyQWN0aW9uID0ge1xuICBmZWF0dXJlczogRmVhdHVyZVtdO1xufTtcbi8qKlxuICogU3RvcmUgZmVhdHVyZXMgdG8gc3RhdGVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBmZWF0dXJlc1xuICogQHJldHVybnMgYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGZWF0dXJlcyhcbiAgZmVhdHVyZXM6IEZlYXR1cmVbXVxuKTogTWVyZ2U8U2V0RmVhdHVyZXNVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9GRUFUVVJFU30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRkVBVFVSRVMsXG4gICAgZmVhdHVyZXNcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0UG9seWdvbkZpbHRlckxheWVyVXBkYXRlckFjdGlvbiA9IHtcbiAgbGF5ZXI6IExheWVyO1xuICBmZWF0dXJlOiBGZWF0dXJlO1xufTtcbi8qKlxuICogSXQgd2lsbCBhcHBseSB0aGUgcHJvdmlkZSBmZWF0dXJlIGFzIGZpbHRlciB0byB0aGUgZ2l2ZW4gbGF5ZXIuXG4gKiBJZiB0aGUgZ2l2ZW4gZmVhdHVyZSBpcyBhbHJlYWR5IGFwcGxpZWQgYXMgZmlsdGVyIHRvIHRoZSBsYXllciwgaXQgd2lsbCByZW1vdmUgdGhlIGxheWVyIGZyb20gdGhlIGZpbHRlclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGxheWVyXG4gKiBAcGFyYW0gZmVhdHVyZVxuICogQHJldHVybnMgYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRQb2x5Z29uRmlsdGVyTGF5ZXIoXG4gIGxheWVyOiBMYXllcixcbiAgZmVhdHVyZTogRmVhdHVyZVxuKTogTWVyZ2U8U2V0UG9seWdvbkZpbHRlckxheWVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfUE9MWUdPTl9GSUxURVJfTEFZRVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1BPTFlHT05fRklMVEVSX0xBWUVSLFxuICAgIGxheWVyLFxuICAgIGZlYXR1cmVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0U2VsZWN0ZWRGZWF0dXJlVXBkYXRlckFjdGlvbiA9IHtcbiAgZmVhdHVyZTogRmVhdHVyZSB8IG51bGw7XG4gIHNlbGVjdGlvbkNvbnRleHQ/OiBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dDtcbn07XG5cbi8qKlxuICogU2V0IHRoZSBjdXJyZW50IGZlYXR1cmUgdG8gYmUgZWRpdGVkL2RlbGV0ZWQsXG4gKiBhbmQgdGhlIGNvbnRleHQgb2YgaG93IHRoZSBmZWF0dXJlIHdhcyBzZWxlY3RlZC5cbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBmZWF0dXJlXG4gKiBAcGFyYW0gc2VsZWN0aW9uQ29udGV4dFxuICogQHJldHVybnMgYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWxlY3RlZEZlYXR1cmUoXG4gIGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsLFxuICBzZWxlY3Rpb25Db250ZXh0PzogRmVhdHVyZVNlbGVjdGlvbkNvbnRleHRcbik6IE1lcmdlPFNldFNlbGVjdGVkRmVhdHVyZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0ZFQVRVUkV9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0ZFQVRVUkUsXG4gICAgZmVhdHVyZSxcbiAgICBzZWxlY3Rpb25Db250ZXh0XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERlbGV0ZUZlYXR1cmVVcGRhdGVyQWN0aW9uID0ge1xuICBmZWF0dXJlOiBGZWF0dXJlO1xufTtcbi8qKlxuICogRGVsZXRlIHRoZSBnaXZlbiBmZWF0dXJlXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZmVhdHVyZVxuICogQHJldHVybnMgYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVGZWF0dXJlKFxuICBmZWF0dXJlOiBGZWF0dXJlXG4pOiBNZXJnZTxEZWxldGVGZWF0dXJlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5ERUxFVEVfRkVBVFVSRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5ERUxFVEVfRkVBVFVSRSxcbiAgICBmZWF0dXJlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEVkaXRvck1vZGVVcGRhdGVyQWN0aW9uID0ge1xuICBtb2RlOiBzdHJpbmc7XG59O1xuLyoqIFNldCB0aGUgbWFwIG1vZGVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBtb2RlIG9uZSBvZiBFRElUT1JfTU9ERVNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7c2V0TWFwTW9kZX0gZnJvbSAna2VwbGVyLmdsL2FjdGlvbnMnO1xuICogaW1wb3J0IHtFRElUT1JfTU9ERVN9IGZyb20gJ2tlcGxlci5nbC9jb25zdGFudHMnO1xuICpcbiAqIHRoaXMucHJvcHMuZGlzcGF0Y2goc2V0TWFwTW9kZShFRElUT1JfTU9ERVMuRFJBV19QT0xZR09OKSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRFZGl0b3JNb2RlKFxuICBtb2RlOiBzdHJpbmdcbik6IE1lcmdlPFNldEVkaXRvck1vZGVVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FRElUT1JfTU9ERX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRURJVE9SX01PREUsXG4gICAgbW9kZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBBcHBseUNQVUZpbHRlclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZDogc3RyaW5nIHwgc3RyaW5nW107XG59O1xuLyoqXG4gKiBUcmlnZ2VyIENQVSBmaWx0ZXIgb2Ygc2VsZWN0ZWQgZGF0YXNldFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFJZCAtIHNpbmdsZSBkYXRhSWQgb3IgYW4gYXJyYXkgb2YgZGF0YUlkc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNQVUZpbHRlcihcbiAgZGF0YUlkOiBzdHJpbmcgfCBzdHJpbmdbXVxuKTogTWVyZ2U8QXBwbHlDUFVGaWx0ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFQUExZX0NQVV9GSUxURVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuQVBQTFlfQ1BVX0ZJTFRFUixcbiAgICBkYXRhSWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb24gPSB2b2lkO1xuLyoqXG4gKiBUb2dnbGUgZWRpdG9yIGxheWVyIHZpc2liaWxpdHlcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEByZXR1cm4gYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVFZGl0b3JWaXNpYmlsaXR5KCk6IE1lcmdlPFxuICBUb2dnbGVFZGl0b3JWaXNpYmlsaXR5VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfRURJVE9SX1ZJU0lCSUxJVFl9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5UT0dHTEVfRURJVE9SX1ZJU0lCSUxJVFlcbiAgfTtcbn1cblxudHlwZSBGaWxlQ29udGVudCA9IHtcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgaGVhZGVyOiBzdHJpbmdbXTtcbiAgZGF0YTogYW55O1xufTtcbmV4cG9ydCB0eXBlIE5leHRGaWxlQmF0Y2hVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbiAgICBnZW46IEFzeW5jR2VuZXJhdG9yPEZpbGVDb250ZW50PjtcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuICAgIHByb2dyZXNzPzogYW55O1xuICAgIGFjY3VtdWxhdGVkPzogYW55O1xuICAgIG9uRmluaXNoOiAocmVzdWx0OiBhbnkpID0+IGFueTtcbiAgfTtcbn07XG4vKipcbiAqIFByb2Nlc3MgdGhlIG5leHQgZmlsZSBiYXRjaFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBiYXRjaCBwYXlsb2FkXG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dEZpbGVCYXRjaChcbiAgcGF5bG9hZDogTmV4dEZpbGVCYXRjaFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKTogTWVyZ2U8TmV4dEZpbGVCYXRjaFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTkVYVF9GSUxFX0JBVENIfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLk5FWFRfRklMRV9CQVRDSCxcbiAgICBwYXlsb2FkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NGaWxlQ29udGVudFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBjb250ZW50OiBGaWxlQ29udGVudDtcbiAgICBmaWxlQ2FjaGU6IEZpbGVDYWNoZUl0ZW1bXTtcbiAgfTtcbn07XG4vKipcbiAqIFByb2Nlc3MgdGhlIGZpbGUgY29udGVudFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSB0aGUgZmlsZSBjb250ZW50XG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0ZpbGVDb250ZW50KFxuICBwYXlsb2FkOiBQcm9jZXNzRmlsZUNvbnRlbnRVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbik6IE1lcmdlPFByb2Nlc3NGaWxlQ29udGVudFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUFJPQ0VTU19GSUxFX0NPTlRFTlR9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuUFJPQ0VTU19GSUxFX0NPTlRFTlQsXG4gICAgcGF5bG9hZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRMYXllckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb24gPSB7XG4gIGNvbmZpZzoge1xuICAgIHRpbWV6b25lPzogc3RyaW5nO1xuICAgIHRpbWVGb3JtYXQ/OiBzdHJpbmc7XG4gIH07XG59O1xuLyoqXG4gKiBTZXQgbGF5ZXIgYW5pbWF0aW9uIHRpbWUgZm9ybWF0IGFuZCB0aW1lem9uZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGNvbmZpZyAtIHt0aW1lRm9ybWF0OiBzdHJpbmcsIHRpbWV6b25lOiBzdHJpbmd9XG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnKFxuICBjb25maWc6IFNldExheWVyQW5pbWF0aW9uVGltZUNvbmZpZ0FjdGlvblsnY29uZmlnJ11cbik6IE1lcmdlPFxuICBTZXRMYXllckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0xBWUVSX0FOSU1BVElPTl9USU1FX0NPTkZJR31cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9MQVlFUl9BTklNQVRJT05fVElNRV9DT05GSUcsXG4gICAgY29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBjb25maWc6IHtcbiAgICB0aW1lem9uZT86IHN0cmluZztcbiAgICB0aW1lRm9ybWF0Pzogc3RyaW5nO1xuICB9O1xufTtcbi8qKlxuICogU2V0IEZpbHRlciBhbmltYXRpb24gdGltZSBmb3JtYXQgYW5kIHRpbWV6b25lXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWR4XG4gKiBAcGFyYW0gY29uZmlnXG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyQW5pbWF0aW9uVGltZUNvbmZpZyhcbiAgaWR4OiBTZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uWydpZHgnXSxcbiAgY29uZmlnOiBTZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uWydjb25maWcnXVxuKTogTWVyZ2U8XG4gIFNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRV9DT05GSUd9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9USU1FX0NPTkZJRyxcbiAgICBpZHgsXG4gICAgY29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExheWVyRmlsdGVyZWRJdGVtc0NoYW5nZUFjdGlvbiA9IHtcbiAgZXZlbnQ6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGNvdW50OiBudW1iZXI7XG4gIH07XG4gIGxheWVyOiBMYXllcjtcbn07XG5cbi8qKlxuICogZGVjay5nbCBsYXllciBncHUgZmlsdGVyIGNhbGxiYWNrXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gbGF5ZXJcbiAqIEBwYXJhbSBldmVudFxuICogQHJldHVybiBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyRmlsdGVyZWRJdGVtc0NoYW5nZShcbiAgbGF5ZXI6IExheWVyRmlsdGVyZWRJdGVtc0NoYW5nZUFjdGlvblsnbGF5ZXInXSxcbiAgZXZlbnQ6IExheWVyRmlsdGVyZWRJdGVtc0NoYW5nZUFjdGlvblsnZXZlbnQnXVxuKTogTWVyZ2U8TGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX0ZJTFRFUkVEX0lURU1TX0NIQU5HRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9GSUxURVJFRF9JVEVNU19DSEFOR0UsXG4gICAgbGF5ZXIsXG4gICAgZXZlbnRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZUFjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG4gIGVuYWJsZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jVGltZUZpbHRlcldpdGhMYXllclRpbWVsaW5lKFxuICBpZHg6IFN5bmNUaW1lRmlsdGVyV2l0aExheWVyVGltZWxpbmVBY3Rpb25bJ2lkeCddLFxuICBlbmFibGU6IFN5bmNUaW1lRmlsdGVyV2l0aExheWVyVGltZWxpbmVBY3Rpb25bJ2VuYWJsZSddXG4pOiBNZXJnZTxcbiAgU3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZUFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TWU5DX1RJTUVfRklMVEVSX1dJVEhfTEFZRVJfVElNRUxJTkV9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TWU5DX1RJTUVfRklMVEVSX1dJVEhfTEFZRVJfVElNRUxJTkUsXG4gICAgaWR4LFxuICAgIGVuYWJsZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBzZXRUaW1lRmlsdGVyU3luY1RpbWVsaW5lTW9kZUFjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbW9kZTogU3luY1RpbWVsaW5lTW9kZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUaW1lRmlsdGVyU3luY1RpbWVsaW5lTW9kZSh7XG4gIGlkLFxuICBtb2RlXG59OiBzZXRUaW1lRmlsdGVyU3luY1RpbWVsaW5lTW9kZUFjdGlvbik6IE1lcmdlPFxuICBzZXRUaW1lRmlsdGVyU3luY1RpbWVsaW5lTW9kZUFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TWU5DX1RJTUVfRklMVEVSX1RJTUVMSU5FX01PREV9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TWU5DX1RJTUVfRklMVEVSX1RJTUVMSU5FX01PREUsXG4gICAgaWQsXG4gICAgbW9kZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVOZXdEYXRhc2V0U3VjY2Vzc1BheWxvYWQgPSB7XG4gIHJlc3VsdHM6IChQcm9taXNlRnVsZmlsbGVkUmVzdWx0PEtlcGxlclRhYmxlPGFueT4+IHwgUHJvbWlzZVJlamVjdGVkUmVzdWx0KVtdO1xuICBhZGRUb01hcE9wdGlvbnM6IEFkZERhdGFUb01hcFBheWxvYWRbJ29wdGlvbnMnXTtcbn07XG5cbi8qKlxuICogQ2FsbGVkIHdoZW4gYSBuZXcgZGF0YXNldCBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSB2aWEgYXN5bmMgdGFibGUgbWV0aG9kc1xuICogQHBhcmFtIHBheWxvYWRcbiAqIEBwYXJhbSBwYXlsb2FkLnJlc3VsdHMgLSByZXN1bHRzIG9mIHByb21pc2VzLmFsbFNldHRsdGVkXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgY3JlYXRlTmV3RGF0YXNldFN1Y2Nlc3MgPSBjcmVhdGVBY3Rpb248Q3JlYXRlTmV3RGF0YXNldFN1Y2Nlc3NQYXlsb2FkPihcbiAgQWN0aW9uVHlwZXMuQ1JFQVRFX05FV19EQVRBU0VUX1NVQ0NFU1Ncbik7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogQWN0aW9ucyBoYW5kbGVkIG1vc3RseSBieSBgdmlzU3RhdGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSBob3cgZGF0YSBpcyBwcm9jZXNzZWQsIGZpbHRlcmVkIGFuZCBkaXNwbGF5ZWQgb24gdGhlIG1hcCBieSBvcGVyYXRlcyBvbiBsYXllcnMsXG4gKiBmaWx0ZXJzIGFuZCBpbnRlcmFjdGlvbiBzZXR0aW5ncy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgdmlzU3RhdGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQSxJQUFBQSxZQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFvQkEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBekJBO0FBQ0E7O0FBRUE7O0FBeUJBO0FBQ0E7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsZ0JBQWdCQSxDQUM5QkMsVUFBa0IsRUFDbEJDLGNBQTJCLEVBQzNCQyxVQUFtQixFQUNrRTtFQUNyRixPQUFPO0lBQ0xDLElBQUksRUFBRUMsdUJBQVcsQ0FBQ0Msa0JBQWtCO0lBQ3BDTCxVQUFVLEVBQVZBLFVBQVU7SUFDVkMsY0FBYyxFQUFkQSxjQUFjO0lBQ2RDLFVBQVUsRUFBVkE7RUFDRixDQUFDO0FBQ0g7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNJLGlCQUFpQkEsQ0FDL0JDLFFBQWUsRUFDZkMsU0FBbUMsRUFDb0Q7RUFDdkYsT0FBTztJQUNMTCxJQUFJLEVBQUVDLHVCQUFXLENBQUNLLG1CQUFtQjtJQUNyQ0YsUUFBUSxFQUFSQSxRQUFRO0lBQ1JDLFNBQVMsRUFBVEE7RUFDRixDQUFDO0FBQ0g7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxvQkFBb0JBLENBQ2xDSCxRQUFlLEVBQ2ZJLEdBQW1CLEVBQ25CQyxJQUFZLEVBQ1pDLEtBQVUsRUFDb0Y7RUFDOUYsT0FBTztJQUNMVixJQUFJLEVBQUVDLHVCQUFXLENBQUNVLHVCQUF1QjtJQUN6Q1AsUUFBUSxFQUFSQSxRQUFRO0lBQ1JJLEdBQUcsRUFBSEEsR0FBRztJQUNIQyxJQUFJLEVB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
1088
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90b29sa2l0IiwiYXBwbHlMYXllckNvbmZpZyIsIm9sZExheWVySWQiLCJuZXdMYXllckNvbmZpZyIsImxheWVySW5kZXgiLCJ0eXBlIiwiQWN0aW9uVHlwZXMiLCJBUFBMWV9MQVlFUl9DT05GSUciLCJsYXllckNvbmZpZ0NoYW5nZSIsIm9sZExheWVyIiwibmV3Q29uZmlnIiwiTEFZRVJfQ09ORklHX0NIQU5HRSIsImxheWVyVGV4dExhYmVsQ2hhbmdlIiwiaWR4IiwicHJvcCIsInZhbHVlIiwiTEFZRVJfVEVYVF9MQUJFTF9DSEFOR0UiLCJsYXllclNldElzVmFsaWQiLCJpc1ZhbGlkIiwiTEFZRVJfU0VUX0lTX1ZBTElEIiwibGF5ZXJUeXBlQ2hhbmdlIiwibmV3VHlwZSIsIkxBWUVSX1RZUEVfQ0hBTkdFIiwibGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlIiwiY2hhbm5lbCIsIm5ld1Zpc0NvbmZpZyIsIkxBWUVSX1ZJU1VBTF9DSEFOTkVMX0NIQU5HRSIsImxheWVyVmlzQ29uZmlnQ2hhbmdlIiwiTEFZRVJfVklTX0NPTkZJR19DSEFOR0UiLCJsYXllckNvbG9yVUlDaGFuZ2UiLCJMQVlFUl9DT0xPUl9VSV9DSEFOR0UiLCJ1cGRhdGVMYXllckJsZW5kaW5nIiwibW9kZSIsIlVQREFURV9MQVlFUl9CTEVORElORyIsInVwZGF0ZU92ZXJsYXlCbGVuZGluZyIsIlVQREFURV9PVkVSTEFZX0JMRU5ESU5HIiwiaW50ZXJhY3Rpb25Db25maWdDaGFuZ2UiLCJjb25maWciLCJJTlRFUkFDVElPTl9DT05GSUdfQ0hBTkdFIiwic2V0RmlsdGVyIiwidmFsdWVJbmRleCIsIlNFVF9GSUxURVIiLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lIiwiU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRSIsInNldEZpbHRlckFuaW1hdGlvbldpbmRvdyIsIl9yZWYiLCJpZCIsImFuaW1hdGlvbldpbmRvdyIsIlNFVF9GSUxURVJfQU5JTUFUSU9OX1dJTkRPVyIsImFkZEZpbHRlciIsImRhdGFJZCIsIkFERF9GSUxURVIiLCJjcmVhdGVPclVwZGF0ZUZpbHRlciIsImZpZWxkIiwiQ1JFQVRFX09SX1VQREFURV9GSUxURVIiLCJhZGRMYXllciIsImRhdGFzZXRJZCIsIkFERF9MQVlFUiIsInJlb3JkZXJMYXllciIsIm9yZGVyIiwiUkVPUkRFUl9MQVlFUiIsInJlbW92ZUZpbHRlciIsIlJFTU9WRV9GSUxURVIiLCJyZW1vdmVMYXllciIsIlJFTU9WRV9MQVlFUiIsImR1cGxpY2F0ZUxheWVyIiwiRFVQTElDQVRFX0xBWUVSIiwiYWRkRWZmZWN0IiwiQUREX0VGRkVDVCIsInJlb3JkZXJFZmZlY3QiLCJSRU9SREVSX0VGRkVDVCIsInJlbW92ZUVmZmVjdCIsIlJFTU9WRV9FRkZFQ1QiLCJ1cGRhdGVFZmZlY3QiLCJwcm9wcyIsIlVQREFURV9FRkZFQ1QiLCJyZW1vdmVEYXRhc2V0IiwiUkVNT1ZFX0RBVEFTRVQiLCJzaG93RGF0YXNldFRhYmxlIiwiU0hPV19EQVRBU0VUX1RBQkxFIiwidXBkYXRlVGFibGVDb2xvciIsIm5ld0NvbG9yIiwiVVBEQVRFX1RBQkxFX0NPTE9SIiwic29ydFRhYmxlQ29sdW1uIiwiY29sdW1uIiwiU09SVF9UQUJMRV9DT0xVTU4iLCJwaW5UYWJsZUNvbHVtbiIsIlBJTl9UQUJMRV9DT0xVTU4iLCJjb3B5VGFibGVDb2x1bW4iLCJDT1BZX1RBQkxFX0NPTFVNTiIsInNldENvbHVtbkRpc3BsYXlGb3JtYXQiLCJmb3JtYXRzIiwiU0VUX0NPTFVNTl9ESVNQTEFZX0ZPUk1BVCIsInVwZGF0ZVZpc0RhdGEiLCJkYXRhc2V0cyIsIm9wdGlvbnMiLCJVUERBVEVfVklTX0RBVEEiLCJyZW5hbWVEYXRhc2V0IiwibGFiZWwiLCJSRU5BTUVfREFUQVNFVCIsInVwZGF0ZURhdGFzZXRQcm9wcyIsIlVQREFURV9EQVRBU0VUX1BST1BTIiwidG9nZ2xlRmlsdGVyQW5pbWF0aW9uIiwiVE9HR0xFX0ZJTFRFUl9BTklNQVRJT04iLCJ1cGRhdGVGaWx0ZXJBbmltYXRpb25TcGVlZCIsInNwZWVkIiwiVVBEQVRFX0ZJTFRFUl9BTklNQVRJT05fU1BFRUQiLCJzZXRMYXllckFuaW1hdGlvblRpbWUiLCJTRVRfTEFZRVJfQU5JTUFUSU9OX1RJTUUiLCJ1cGRhdGVMYXllckFuaW1hdGlvblNwZWVkIiwiVVBEQVRFX0xBWUVSX0FOSU1BVElPTl9TUEVFRCIsInRvZ2dsZUxheWVyQW5pbWF0aW9uIiwiVE9HR0xFX0xBWUVSX0FOSU1BVElPTiIsInRvZ2dsZUxheWVyQW5pbWF0aW9uQ29udHJvbCIsIlRPR0dMRV9MQVlFUl9BTklNQVRJT05fQ09OVFJPTCIsInNldEZpbHRlclZpZXciLCJ2aWV3IiwiU0VUX0ZJTFRFUl9WSUVXIiwidG9nZ2xlRmlsdGVyRmVhdHVyZSIsIlRPR0dMRV9GSUxURVJfRkVBVFVSRSIsIm9uTGF5ZXJIb3ZlciIsImluZm8iLCJtYXBJbmRleCIsIkxBWUVSX0hPVkVSIiwib25MYXllckNsaWNrIiwiTEFZRVJfQ0xJQ0siLCJvbk1hcENsaWNrIiwiTUFQX0NMSUNLIiwib25Nb3VzZU1vdmUiLCJldnQiLCJNT1VTRV9NT1ZFIiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJsYXllcklkIiwiVE9HR0xFX0xBWUVSX0ZPUl9NQVAiLCJzZXRGaWx0ZXJQbG90IiwibmV3UHJvcCIsIlNFVF9GSUxURVJfUExPVCIsInNldE1hcEluZm8iLCJTRVRfTUFQX0lORk8iLCJsb2FkRmlsZXMiLCJmaWxlcyIsIm9uRmluaXNoIiwiTE9BRF9GSUxFUyIsImxvYWROZXh0RmlsZSIsIkxPQURfTkVYVF9GSUxFIiwibG9hZEZpbGVzU3VjY2VzcyIsInJlc3VsdCIsIkxPQURfRklMRVNfU1VDQ0VTUyIsImxvYWRGaWxlU3RlcFN1Y2Nlc3MiLCJfcmVmMiIsImZpbGVOYW1lIiwiZmlsZUNhY2hlIiwiTE9BRF9GSUxFX1NURVBfU1VDQ0VTUyIsImxvYWRGaWxlc0VyciIsImVycm9yIiwiTE9BRF9GSUxFU19FUlIiLCJzZXRGZWF0dXJlcyIsImZlYXR1cmVzIiwiU0VUX0ZFQVRVUkVTIiwic2V0UG9seWdvbkZpbHRlckxheWVyIiwibGF5ZXIiLCJmZWF0dXJlIiwiU0VUX1BPTFlHT05fRklMVEVSX0xBWUVSIiwic2V0U2VsZWN0ZWRGZWF0dXJlIiwic2VsZWN0aW9uQ29udGV4dCIsIlNFVF9TRUxFQ1RFRF9GRUFUVVJFIiwiZGVsZXRlRmVhdHVyZSIsIkRFTEVURV9GRUFUVVJFIiwic2V0RWRpdG9yTW9kZSIsIlNFVF9FRElUT1JfTU9ERSIsImFwcGx5Q1BVRmlsdGVyIiwiQVBQTFlfQ1BVX0ZJTFRFUiIsInRvZ2dsZUVkaXRvclZpc2liaWxpdHkiLCJUT0dHTEVfRURJVE9SX1ZJU0lCSUxJVFkiLCJuZXh0RmlsZUJhdGNoIiwicGF5bG9hZCIsIk5FWFRfRklMRV9CQVRDSCIsInByb2Nlc3NGaWxlQ29udGVudCIsIlBST0NFU1NfRklMRV9DT05URU5UIiwic2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnIiwiU0VUX0xBWUVSX0FOSU1BVElPTl9USU1FX0NPTkZJRyIsInNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWciLCJTRVRfRklMVEVSX0FOSU1BVElPTl9USU1FX0NPTkZJRyIsImxheWVyRmlsdGVyZWRJdGVtc0NoYW5nZSIsImV2ZW50IiwiTEFZRVJfRklMVEVSRURfSVRFTVNfQ0hBTkdFIiwic3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZSIsImVuYWJsZSIsIlNZTkNfVElNRV9GSUxURVJfV0lUSF9MQVlFUl9USU1FTElORSIsInNldFRpbWVGaWx0ZXJTeW5jVGltZWxpbmVNb2RlIiwiX3JlZjMiLCJTWU5DX1RJTUVfRklMVEVSX1RJTUVMSU5FX01PREUiLCJjcmVhdGVOZXdEYXRhc2V0U3VjY2VzcyIsImV4cG9ydHMiLCJjcmVhdGVBY3Rpb24iLCJDUkVBVEVfTkVXX0RBVEFTRVRfU1VDQ0VTUyIsInZpc1N0YXRlQWN0aW9ucyJdLCJzb3VyY2VzIjpbIi4uL3NyYy92aXMtc3RhdGUtYWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyB2aXMtc3RhdGUtcmVkdWNlclxuaW1wb3J0IHtQaWNrSW5mb30gZnJvbSAnQGRlY2suZ2wvY29yZS9saWIvZGVjayc7XG5pbXBvcnQge2RlZmF1bHQgYXMgQWN0aW9uVHlwZXN9IGZyb20gJy4vYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7RmlsZUNhY2hlSXRlbX0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7TGF5ZXIsIExheWVyQmFzZUNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge1xuICBBZGREYXRhVG9NYXBQYXlsb2FkLFxuICBWYWx1ZU9mLFxuICBNZXJnZSxcbiAgUkdCQ29sb3IsXG4gIE5lc3RlZFBhcnRpYWwsXG4gIExheWVyVmlzQ29uZmlnLFxuICBDb2xvclVJLFxuICBGZWF0dXJlLFxuICBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dCxcbiAgSW50ZXJhY3Rpb25Db25maWcsXG4gIEZpbHRlcixcbiAgUGFyc2VkQ29uZmlnLFxuICBQYXJzZWRMYXllcixcbiAgRWZmZWN0UHJvcHNQYXJ0aWFsLFxuICBTeW5jVGltZWxpbmVNb2RlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtjcmVhdGVBY3Rpb259IGZyb20gJ0ByZWR1eGpzL3Rvb2xraXQnO1xuXG4vLyBUT0RPIC0gaW1wb3J0IExvYWRlck9iamVjdCB0eXBlIGZyb20gQGxvYWRlcnMuZ2wvY29yZSB3aGVuIHN1cHBvcnRlZFxuLy8gVE9ETyAtIGltcG9ydCBMb2FkT3B0aW9ucyB0eXBlIGZyb20gQGxvYWRlcnMuZ2wvY29yZSB3aGVuIHN1cHBvcnRlZFxuXG5leHBvcnQgdHlwZSBBcHBseUxheWVyQ29uZmlnVXBkYXRlckFjdGlvbiA9IHtcbiAgb2xkTGF5ZXJJZDogc3RyaW5nO1xuICBuZXdMYXllckNvbmZpZzogUGFyc2VkTGF5ZXI7XG4gIGxheWVySW5kZXg/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIFVwZGF0ZSBsYXllciBiYXNlIGNvbmZpZzogZGF0YUlkLCBsYWJlbCwgY29sdW1uLCBpc1Zpc2libGVcbiAqIEBwYXJhbSBvbGRMYXllcklkIC0gbGF5ZXIgaWQgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIG5ld0xheWVyQ29uZmlnIC0gbmV3IGxheWVyIGNvbmZpZ1xuICogQHBhcmFtIGxheWVySW5kZXggLSAoT3B0aW9uYWwpIEluZGV4IG9mIHRoZSBsYXllciB0byBiZSB1cGRhdGVkIChjYW4gYmUgdXNlZnVsIGluIHNvbWUgY2FzZXMsIGJlY2F1c2VcbiAqICAgICAgICAgICAgICAgICAgICAgdGhlIGxheWVyIGlkIG1pZ2h0IGNoYW5nZSBkdXJpbmcgdXBkYXRlLCBlLmcuIHdoZW4gdGhlIHR5cGUgb2YgdGhlIGxheWVyIGNoYW5nZXMpXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5TGF5ZXJDb25maWcoXG4gIG9sZExheWVySWQ6IHN0cmluZyxcbiAgbmV3TGF5ZXJDb25maWc6IFBhcnNlZExheWVyLFxuICBsYXllckluZGV4PzogbnVtYmVyXG4pOiBNZXJnZTxBcHBseUxheWVyQ29uZmlnVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5BUFBMWV9MQVlFUl9DT05GSUd9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuQVBQTFlfTEFZRVJfQ09ORklHLFxuICAgIG9sZExheWVySWQsXG4gICAgbmV3TGF5ZXJDb25maWcsXG4gICAgbGF5ZXJJbmRleFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMYXllckNvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9sZExheWVyOiBMYXllcjtcbiAgbmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz47XG59O1xuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgYmFzZSBjb25maWc6IGRhdGFJZCwgbGFiZWwsIGNvbHVtbiwgaXNWaXNpYmxlXG4gKiBAcGFyYW0gb2xkTGF5ZXIgLSBsYXllciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gbmV3Q29uZmlnIC0gbmV3IGNvbmZpZyB0byBiZSBtZXJnZWQgd2l0aCBvbGQgY29uZmlnXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyQ29uZmlnQ2hhbmdlKFxuICBvbGRMYXllcjogTGF5ZXIsXG4gIG5ld0NvbmZpZzogUGFydGlhbDxMYXllckJhc2VDb25maWc+XG4pOiBNZXJnZTxMYXllckNvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfQ09ORklHX0NIQU5HRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9DT05GSUdfQ0hBTkdFLFxuICAgIG9sZExheWVyLFxuICAgIG5ld0NvbmZpZ1xuICB9O1xufVxuZXhwb3J0IHR5cGUgTGF5ZXJUZXh0TGFiZWxDaGFuZ2VVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcjogTGF5ZXI7XG4gIGlkeDogbnVtYmVyIHwgJ2FsbCc7XG4gIHByb3A6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbn07XG5cbi8qKlxuICogVXBkYXRlIGxheWVyIHRleHQgbGFiZWxcbiAqIEBwYXJhbSBvbGRMYXllciAtIGxheWVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBpZHggLWBpZHhgIG9mIHRleHQgbGFiZWwgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIHByb3AgLSBgcHJvcGAgb2YgdGV4dCBsYWJlbCwgZSxnLCBgYW5jaG9yYCwgYGFsaWdubWVudGAsIGBjb2xvcmAsIGBzaXplYCwgYGZpZWxkYCwgYG91dGxpbmVXaWR0aGAsIGBvdXRsaW5lQ29sb3JgXG4gKiBAcGFyYW0gdmFsdWUgLSBuZXcgdmFsdWVcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJUZXh0TGFiZWxDaGFuZ2UoXG4gIG9sZExheWVyOiBMYXllcixcbiAgaWR4OiBudW1iZXIgfCAnYWxsJyxcbiAgcHJvcDogc3RyaW5nLFxuICB2YWx1ZTogYW55XG4pOiBNZXJnZTxMYXllclRleHRMYWJlbENoYW5nZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfVEVYVF9MQUJFTF9DSEFOR0V9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfVEVYVF9MQUJFTF9DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgaWR4LFxuICAgIHByb3AsXG4gICAgdmFsdWVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgTGF5ZXJTZXRJc1ZhbGlkVXBkYXRlckFjdGlvbiA9IHtcbiAgb2xkTGF5ZXI6IExheWVyO1xuICBpc1ZhbGlkOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBDaGFuZ2VzIHZhbHVlIG9mIGlzVmFsaWQgZmxhZyBmb3IgYSBsYXllci5cbiAqIFRoZSBhY3Rpb24gYWxzbyB1cGRhdGVzIHZpc2liaWxpdHkgb2YgdGhlIGxheWVyIGJhc2VkIG9uIGlzVmFsaWQuXG4gKiBAcGFyYW0gb2xkTGF5ZXIgLSBsYXllciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gaXNWYWxpZCAtIG5ldyB2YWx1ZSBmb3IgaXNWYWxpZCBmbGFnXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyU2V0SXNWYWxpZChcbiAgb2xkTGF5ZXI6IExheWVyLFxuICBpc1ZhbGlkOiBib29sZWFuXG4pOiBNZXJnZTxMYXllclNldElzVmFsaWRVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX1NFVF9JU19WQUxJRH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9TRVRfSVNfVkFMSUQsXG4gICAgb2xkTGF5ZXIsXG4gICAgaXNWYWxpZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMYXllclR5cGVDaGFuZ2VVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcjogTGF5ZXI7XG4gIG5ld1R5cGU6IHN0cmluZztcbn07XG4vKipcbiAqIFVwZGF0ZSBsYXllciB0eXBlLiBQcmV2aWV3cyBsYXllciBjb25maWcgd2lsbCBiZSBjb3BpZWQgaWYgYXBwbGljYWJsZS5cbiAqIEBwYXJhbSBvbGRMYXllciAtIGxheWVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBuZXdUeXBlIC0gbmV3IHR5cGVcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJUeXBlQ2hhbmdlKFxuICBvbGRMYXllcjogTGF5ZXIsXG4gIG5ld1R5cGU6IHN0cmluZ1xuKTogTWVyZ2U8TGF5ZXJUeXBlQ2hhbmdlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9UWVBFX0NIQU5HRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9UWVBFX0NIQU5HRSxcbiAgICBvbGRMYXllcixcbiAgICBuZXdUeXBlXG4gIH07XG59XG5leHBvcnQgdHlwZSBMYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcjogTGF5ZXI7XG4gIG5ld0NvbmZpZzogUGFydGlhbDxMYXllckJhc2VDb25maWc+O1xuICBjaGFubmVsOiBzdHJpbmc7XG4gIG5ld1Zpc0NvbmZpZz86IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+O1xufTtcbi8qKlxuICogVXBkYXRlIGxheWVyIHZpc3VhbCBjaGFubmVsXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gb2xkTGF5ZXIgLSBsYXllciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gbmV3Q29uZmlnIC0gbmV3IHZpc3VhbCBjaGFubmVsIGNvbmZpZ1xuICogQHBhcmFtIGNoYW5uZWwgLSBjaGFubmVsIHRvIGJlIHVwZGF0ZWRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlKFxuICBvbGRMYXllcjogTGF5ZXIsXG4gIG5ld0NvbmZpZzogUGFydGlhbDxMYXllckJhc2VDb25maWc+LFxuICBjaGFubmVsOiBzdHJpbmcsXG4gIG5ld1Zpc0NvbmZpZz86IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+XG4pOiBNZXJnZTxcbiAgTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9WSVNVQUxfQ0hBTk5FTF9DSEFOR0V9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9WSVNVQUxfQ0hBTk5FTF9DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgbmV3Q29uZmlnLFxuICAgIGNoYW5uZWwsXG4gICAgbmV3VmlzQ29uZmlnXG4gIH07XG59XG5leHBvcnQgdHlwZSBMYXllclZpc0NvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9sZExheWVyOiBMYXllcjtcbiAgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPjtcbn07XG4vKipcbiAqIFVwZGF0ZSBsYXllciBgdmlzQ29uZmlnYFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIG9sZExheWVyIC0gbGF5ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIG5ld1Zpc0NvbmZpZyAtIG5ldyB2aXNDb25maWcgYXMgYSBrZXkgdmFsdWUgbWFwOiBlLmcuIGB7b3BhY2l0eTogMC44fWBcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJWaXNDb25maWdDaGFuZ2UoXG4gIG9sZExheWVyOiBMYXllcixcbiAgbmV3VmlzQ29uZmlnOiBQYXJ0aWFsPExheWVyVmlzQ29uZmlnPlxuKTogTWVyZ2U8TGF5ZXJWaXNDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX1ZJU19DT05GSUdfQ0hBTkdFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1ZJU19DT05GSUdfQ0hBTkdFLFxuICAgIG9sZExheWVyLFxuICAgIG5ld1Zpc0NvbmZpZ1xuICB9O1xufVxuZXhwb3J0IHR5cGUgTGF5ZXJDb2xvclVJQ2hhbmdlVXBkYXRlckFjdGlvbiA9IHtcbiAgb2xkTGF5ZXI6IExheWVyO1xuICBwcm9wOiBzdHJpbmc7XG4gIG5ld0NvbmZpZzogTmVzdGVkUGFydGlhbDxDb2xvclVJPjtcbn07XG5cbi8qKlxuICogU2V0IHRoZSBjb2xvciBwYWxldHRlIHVpIGZvciBsYXllciBjb2xvclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIG9sZExheWVyIC0gbGF5ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIHByb3AgLSB3aGljaCBjb2xvciBwcm9wXG4gKiBAcGFyYW0gbmV3Q29uZmlnIC0gdG8gYmUgbWVyZ2VkXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyQ29sb3JVSUNoYW5nZShcbiAgb2xkTGF5ZXI6IExheWVyLFxuICBwcm9wOiBzdHJpbmcsXG4gIG5ld0NvbmZpZzogTmVzdGVkUGFydGlhbDxDb2xvclVJPlxuKTogTWVyZ2U8TGF5ZXJDb2xvclVJQ2hhbmdlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9DT0xPUl9VSV9DSEFOR0V9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfQ09MT1JfVUlfQ0hBTkdFLFxuICAgIG9sZExheWVyLFxuICAgIHByb3AsXG4gICAgbmV3Q29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUxheWVyQmxlbmRpbmdVcGRhdGVyQWN0aW9uID0ge1xuICBtb2RlOiAnYWRkaXRpdmUnIHwgJ25vcm1hbCcgfCAnc3VidHJhY3RpdmUnO1xufTtcbi8qKlxuICogVXBkYXRlIGxheWVyIGJsZW5kaW5nIG1vZGVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBtb2RlIG9uZSBvZiBgYWRkaXRpdmVgLCBgbm9ybWFsYCBhbmQgYHN1YnRyYWN0aXZlYFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVMYXllckJsZW5kaW5nKFxuICBtb2RlOiAnYWRkaXRpdmUnIHwgJ25vcm1hbCcgfCAnc3VidHJhY3RpdmUnXG4pOiBNZXJnZTxVcGRhdGVMYXllckJsZW5kaW5nVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5VUERBVEVfTEFZRVJfQkxFTkRJTkd9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0xBWUVSX0JMRU5ESU5HLFxuICAgIG1vZGVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlT3ZlcmxheUJsZW5kaW5nVXBkYXRlckFjdGlvbiA9IHtcbiAgbW9kZTogJ3NjcmVlbicgfCAnbm9ybWFsJyB8ICdkYXJrZW4nO1xufTtcblxuLyoqXG4gKiBVcGRhdGUgb3ZlcmxheSBibGVuZGluZyBtb2RlXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gbW9kZSBvbmUgb2YgYHNjcmVlbmAsIGBub3JtYWxgIGFuZCBgZGFya2VuYFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVPdmVybGF5QmxlbmRpbmcoXG4gIG1vZGU6ICdzY3JlZW4nIHwgJ25vcm1hbCcgfCAnZGFya2VuJ1xuKTogTWVyZ2U8VXBkYXRlT3ZlcmxheUJsZW5kaW5nVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5VUERBVEVfT1ZFUkxBWV9CTEVORElOR30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5VUERBVEVfT1ZFUkxBWV9CTEVORElORyxcbiAgICBtb2RlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEludGVyYWN0aW9uQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvbiA9IHtcbiAgY29uZmlnOiBWYWx1ZU9mPEludGVyYWN0aW9uQ29uZmlnPjtcbn07XG4vKipcbiAqIFVwZGF0ZSBgaW50ZXJhY3Rpb25Db25maWdgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gY29uZmlnIC0gbmV3IGNvbmZpZyBhcyBrZXkgdmFsdWUgbWFwOiBge3Rvb2x0aXA6IHtlbmFibGVkOiB0cnVlfX1gXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVyYWN0aW9uQ29uZmlnQ2hhbmdlKFxuICBjb25maWc6IFZhbHVlT2Y8SW50ZXJhY3Rpb25Db25maWc+XG4pOiBNZXJnZTxcbiAgSW50ZXJhY3Rpb25Db25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLklOVEVSQUNUSU9OX0NPTkZJR19DSEFOR0V9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5JTlRFUkFDVElPTl9DT05GSUdfQ0hBTkdFLFxuICAgIGNvbmZpZ1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRGaWx0ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbiAgcHJvcDogc3RyaW5nIHwgc3RyaW5nW107XG4gIHZhbHVlOiBhbnk7XG4gIHZhbHVlSW5kZXg/OiBudW1iZXI7XG59O1xuLyoqXG4gKiBVcGRhdGUgZmlsdGVyIHByb3BlcnR5XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWR4IC1gaWR4YCBvZiBmaWx0ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIHByb3AgLSBgcHJvcGAgb2YgZmlsdGVyLCBlLGcsIGBkYXRhSWRgLCBgbmFtZWAsIGB2YWx1ZWBcbiAqICAgICAgICAgICAgICAgIG9yIGFuIGFycmF5IGUuZy4gWydpZHgnLCAnbmFtZSddLiBpbiB0aGF0IGNhc2UgdGhlIHZhbHVlXG4gKiAgICAgICAgICAgICAgICBzaG91bGQgYWxzbyBiZSBhbiBhcnJheSBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgKGJ5IGluZGV4KVxuICogQHBhcmFtIHZhbHVlIC0gbmV3IHZhbHVlXG4gKiBAcGFyYW0gdmFsdWVJbmRleCAtIGRhdGFJZCBpbmRleFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGaWx0ZXIoXG4gIGlkeDogbnVtYmVyLFxuICBwcm9wOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgdmFsdWU6IGFueSxcbiAgdmFsdWVJbmRleD86IG51bWJlclxuKTogTWVyZ2U8U2V0RmlsdGVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9GSUxURVIsXG4gICAgaWR4LFxuICAgIHByb3AsXG4gICAgdmFsdWUsXG4gICAgdmFsdWVJbmRleFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRGaWx0ZXJBbmltYXRpb25UaW1lVXBkYXRlckFjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG4gIHByb3A6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgdmFsdWVJbmRleD86IG51bWJlcjtcbn07XG4vKipcbiAqIFNhbWUgYXMgVXBkYXRlIGZpbHRlclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkeCAtYGlkeGAgb2YgZmlsdGVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBwcm9wIC0gYHByb3BgIG9mIGZpbHRlciwgZSxnLCBgZGF0YUlkYCwgYG5hbWVgLCBgdmFsdWVgXG4gKiBAcGFyYW0gdmFsdWUgLSBuZXcgdmFsdWVcbiAqIEBwYXJhbSB2YWx1ZUluZGV4IC0gZGF0YUlkIGluZGV4XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlckFuaW1hdGlvblRpbWUoXG4gIGlkeDogbnVtYmVyLFxuICBwcm9wOiBzdHJpbmcsXG4gIHZhbHVlOiBhbnksXG4gIHZhbHVlSW5kZXg/OiBudW1iZXJcbik6IE1lcmdlPFxuICBTZXRGaWx0ZXJBbmltYXRpb25UaW1lVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9USU1FfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRSxcbiAgICBpZHgsXG4gICAgcHJvcCxcbiAgICB2YWx1ZSxcbiAgICB2YWx1ZUluZGV4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEZpbHRlckFuaW1hdGlvbldpbmRvd1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGFuaW1hdGlvbldpbmRvdzogc3RyaW5nO1xufTtcbi8qKlxuICogU2FtZSBhcyBVcGRhdGUgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGaWx0ZXJBbmltYXRpb25XaW5kb3coe1xuICBpZCxcbiAgYW5pbWF0aW9uV2luZG93XG59OiBTZXRGaWx0ZXJBbmltYXRpb25XaW5kb3dVcGRhdGVyQWN0aW9uKTogTWVyZ2U8XG4gIFNldEZpbHRlckFuaW1hdGlvbldpbmRvd1VwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9BTklNQVRJT05fV0lORE9XfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9BTklNQVRJT05fV0lORE9XLFxuICAgIGlkLFxuICAgIGFuaW1hdGlvbldpbmRvd1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBBZGRGaWx0ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGw7XG4gIGlkPzogc3RyaW5nO1xufTtcbi8qKlxuICogQWRkIGEgbmV3IGZpbHRlclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFJZCAtIGRhdGFzZXQgYGlkYCB0aGlzIG5ldyBmaWx0ZXIgaXMgYXNzb2NpYXRlZCB3aXRoXG4gKiBAcGFyYW0gaWQgLSBgaWRgIGZvciB0aGUgbmV3IGZpbHRlclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRGaWx0ZXIoXG4gIGRhdGFJZDogc3RyaW5nIHwgbnVsbCxcbiAgaWQ/OiBzdHJpbmdcbik6IE1lcmdlPEFkZEZpbHRlclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuQUREX0ZJTFRFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5BRERfRklMVEVSLFxuICAgIGRhdGFJZCxcbiAgICBpZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVPclVwZGF0ZUZpbHRlclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkPzogc3RyaW5nO1xuICBkYXRhSWQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgZmllbGQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdmFsdWU/OiBhbnk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBvciB1cGRhdGVzIGEgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIC0gZGF0YXNldCBgaWRgIHRoaXMgbmV3IGZpbHRlciBpcyBhc3NvY2lhdGVkIHdpdGhcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT3JVcGRhdGVGaWx0ZXIoXG4gIGlkPzogc3RyaW5nLFxuICBkYXRhSWQ/OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgZmllbGQ/OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgdmFsdWU/OiBhbnlcbik6IE1lcmdlPENyZWF0ZU9yVXBkYXRlRmlsdGVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5DUkVBVEVfT1JfVVBEQVRFX0ZJTFRFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5DUkVBVEVfT1JfVVBEQVRFX0ZJTFRFUixcbiAgICBpZCxcbiAgICBkYXRhSWQsXG4gICAgZmllbGQsXG4gICAgdmFsdWVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQWRkTGF5ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBjb25maWc/OiBvYmplY3Q7XG4gIGRhdGFzZXRJZD86IHN0cmluZztcbn07XG4vKipcbiAqIEFkZCBhIG5ldyBsYXllclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGNvbmZpZyAtIG5ldyBsYXllciBjb25maWdcbiAqIEBwYXJhbSBkYXRhc2V0SWQgLSBkYXRhc2V0IGlkIHVzZWQgZm9yIGNyZWF0aW5nIGFuIGVtcHR5IGxheWVyXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZExheWVyKFxuICBjb25maWc/OiBvYmplY3QsXG4gIGRhdGFzZXRJZD86IHN0cmluZ1xuKTogTWVyZ2U8QWRkTGF5ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9MQVlFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5BRERfTEFZRVIsXG4gICAgY29uZmlnLFxuICAgIGRhdGFzZXRJZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW9yZGVyTGF5ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBvcmRlcjogc3RyaW5nW107XG59O1xuLyoqXG4gKiBSZW9yZGVyIGxheWVyLCBvcmRlciBpcyBhbiBhcnJheSBvZiBsYXllciBpbmRleGVzLCBpbmRleCAwIHdpbGwgYmUgdGhlIG9uZSBhdCB0aGUgYm90dG9tXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gb3JkZXIgYW4gYXJyYXkgb2YgbGF5ZXIgaW5kZXhlc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGJyaW5nIGBsYXllcnNbMV1gIGJlbG93IGBsYXllcnNbMF1gLCB0aGUgc2VxdWVuY2UgbGF5ZXJzIHdpbGwgYmUgcmVuZGVyZWQgaXMgYGxheWVyc1sxXS5pZGAsIGBsYXllcnNbMF0uaWRgLCBgbGF5ZXJzWzJdLmlkYCwgYGxheWVyc1szXS5pZGAuXG4gKiBgbGF5ZXJzWzFdYCB3aWxsIGJlIGF0IHRoZSBib3R0b20sIGBsYXllcnNbMTNdYCB3aWxsIGJlIGF0IHRoZSB0b3AuXG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKHJlb3JkZXJMYXllcihbYGxheWVyc1sxXS5pZGAsIGBsYXllcnNbMF0uaWRgLCBgbGF5ZXJzWzJdLmlkYCwgYGxheWVyc1szXS5pZGBdKSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyTGF5ZXIoXG4gIG9yZGVyOiBzdHJpbmdbXVxuKTogTWVyZ2U8UmVvcmRlckxheWVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU9SREVSX0xBWUVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFT1JERVJfTEFZRVIsXG4gICAgb3JkZXJcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUmVtb3ZlRmlsdGVyVXBkYXRlckFjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG59O1xuLyoqXG4gKiBSZW1vdmUgYSBmaWx0ZXIgZnJvbSBgdmlzU3RhdGUuZmlsdGVyc2AsIG9uY2UgYSBmaWx0ZXIgaXMgcmVtb3ZlZCwgZGF0YSB3aWxsIGJlIHJlLWZpbHRlcmVkIGFuZCBsYXllciB3aWxsIGJlIHVwZGF0ZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggaWR4IG9mIGZpbHRlciB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZpbHRlcihcbiAgaWR4OiBudW1iZXJcbik6IE1lcmdlPFJlbW92ZUZpbHRlclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX0ZJTFRFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU1PVkVfRklMVEVSLFxuICAgIGlkeFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW1vdmVMYXllclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBSZW1vdmUgYSBsYXllclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkIGlkeCBvZiBsYXllciB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUxheWVyKFxuICBpZDogc3RyaW5nXG4pOiBNZXJnZTxSZW1vdmVMYXllclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX0xBWUVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTU9WRV9MQVlFUixcbiAgICBpZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBEdXBsaWNhdGVMYXllclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBEdXBsaWNhdGUgYSBsYXllclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkIGlkIG9mIGxheWVyIHRvIGJlIGR1cGxpY2F0ZWRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gZHVwbGljYXRlTGF5ZXIoXG4gIGlkOiBzdHJpbmdcbik6IE1lcmdlPER1cGxpY2F0ZUxheWVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5EVVBMSUNBVEVfTEFZRVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuRFVQTElDQVRFX0xBWUVSLFxuICAgIGlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFkZEVmZmVjdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGNvbmZpZzogRWZmZWN0UHJvcHNQYXJ0aWFsO1xufTtcblxuLyoqXG4gKiBBZGQgYSBuZXcgZWZmZWN0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gY29uZmlnIC0gbmV3IGVmZmVjdCBjb25maWdcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRWZmZWN0KFxuICBjb25maWc6IEVmZmVjdFByb3BzUGFydGlhbFxuKTogTWVyZ2U8QWRkRWZmZWN0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5BRERfRUZGRUNUfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFERF9FRkZFQ1QsXG4gICAgY29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlb3JkZXJFZmZlY3RVcGRhdGVyQWN0aW9uID0ge1xuICBvcmRlcjogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIFJlb3JkZXIgZWZmZWN0c1xuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIG9yZGVyIGFuIGFycmF5IG9mIGVmZmVjdCBpZHNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVvcmRlckVmZmVjdChcbiAgb3JkZXI6IHN0cmluZ1tdXG4pOiBNZXJnZTxSZW9yZGVyRWZmZWN0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU9SREVSX0VGRkVDVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU9SREVSX0VGRkVDVCxcbiAgICBvcmRlclxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW1vdmVFZmZlY3RVcGRhdGVyQWN0aW9uID0ge1xuICBpZDogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gZWZmZWN0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgaWR4IG9mIHRoZSBlZmZlY3QgdG8gYmUgcmVtb3ZlZFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFZmZlY3QoXG4gIGlkOiBzdHJpbmdcbik6IE1lcmdlPFJlbW92ZUVmZmVjdFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX0VGRkVDVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU1PVkVfRUZGRUNULFxuICAgIGlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUVmZmVjdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHByb3BzOiBFZmZlY3RQcm9wc1BhcnRpYWw7XG59O1xuXG4vKipcbiAqIFVwZGF0ZSBhbiBlZmZlY3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwcm9wcyBpZHggb2YgdGhlIGVmZmVjdCB0byBiZSB1cGRhdGVkIHdpdGggc3BlY2lmaWVkIHByb3BzXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUVmZmVjdChcbiAgaWQ6IHN0cmluZyxcbiAgcHJvcHM6IEVmZmVjdFByb3BzUGFydGlhbFxuKTogTWVyZ2U8VXBkYXRlRWZmZWN0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5VUERBVEVfRUZGRUNUfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlVQREFURV9FRkZFQ1QsXG4gICAgaWQsXG4gICAgcHJvcHNcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUmVtb3ZlRGF0YXNldFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZDogc3RyaW5nO1xufTtcbi8qKlxuICogUmVtb3ZlIGEgZGF0YXNldCBhbmQgYWxsIGxheWVycywgZmlsdGVycywgdG9vbHRpcCBjb25maWdzIHRoYXQgYmFzZWQgb24gaXRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBkYXRhSWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEYXRhc2V0KFxuICBkYXRhSWQ6IHN0cmluZ1xuKTogTWVyZ2U8UmVtb3ZlRGF0YXNldFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVNT1ZFX0RBVEFTRVR9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuUkVNT1ZFX0RBVEFTRVQsXG4gICAgZGF0YUlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNob3dEYXRhc2V0VGFibGVVcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ6IHN0cmluZztcbn07XG4vKipcbiAqIERpc3BsYXkgZGF0YXNldCB0YWJsZSBpbiBhIG1vZGFsXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIGRhdGFzZXQgaWQgdG8gc2hvdyBpbiB0YWJsZVxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG93RGF0YXNldFRhYmxlKFxuICBkYXRhSWQ6IHN0cmluZ1xuKTogTWVyZ2U8U2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0hPV19EQVRBU0VUX1RBQkxFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNIT1dfREFUQVNFVF9UQUJMRSxcbiAgICBkYXRhSWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlRGF0YXNldENvbG9yVXBkYXRlciA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIG5ld0NvbG9yOiBSR0JDb2xvcjtcbn07XG4vKipcbiAqIFVwZGF0ZSBkYXRhc2V0IGNvbG9yIHRvIGN1c3RvbSBieSBtZWFucyBvZiBjb2xvciBwaWNrZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBkYXRhSWQgZGF0YXNldCBgaWRgIHRoaXMgY3VzdG9tIGNvbG9yIGlzIGFzc29jaWF0ZWQgd2l0aFxuICogQHBhcmFtIG5ld0NvbG9yIGN1c3RvbSBjb2xvciBpbiBSR0Jmb3JtYXRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVGFibGVDb2xvcihcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIG5ld0NvbG9yOiBSR0JDb2xvclxuKTogTWVyZ2U8VXBkYXRlRGF0YXNldENvbG9yVXBkYXRlciwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5VUERBVEVfVEFCTEVfQ09MT1J9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX1RBQkxFX0NPTE9SLFxuICAgIGRhdGFJZCxcbiAgICBuZXdDb2xvclxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTb3J0VGFibGVDb2x1bW5VcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ6IHN0cmluZztcbiAgY29sdW1uOiBzdHJpbmc7XG4gIG1vZGU/OiBzdHJpbmc7XG59O1xuLyoqXG4gKiBTb3J0IGRhdGFzZXQgY29sdW1uLCBmb3IgdGFibGUgZGlzcGxheVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFJZFxuICogQHBhcmFtIGNvbHVtblxuICogQHBhcmFtIG1vZGVcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFRhYmxlQ29sdW1uKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgY29sdW1uOiBzdHJpbmcsXG4gIG1vZGU/OiBzdHJpbmdcbik6IE1lcmdlPFNvcnRUYWJsZUNvbHVtblVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU09SVF9UQUJMRV9DT0xVTU59PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU09SVF9UQUJMRV9DT0xVTU4sXG4gICAgZGF0YUlkLFxuICAgIGNvbHVtbixcbiAgICBtb2RlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFBpblRhYmxlQ29sdW1uVXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIGNvbHVtbjogc3RyaW5nO1xufTtcbi8qKlxuICogUGluIGRhdGFzZXQgY29sdW1uLCBmb3IgdGFibGUgZGlzcGxheVxuICogQHBhcmFtIGRhdGFJZFxuICogQHBhcmFtIGNvbHVtblxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaW5UYWJsZUNvbHVtbihcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIGNvbHVtbjogc3RyaW5nXG4pOiBNZXJnZTxQaW5UYWJsZUNvbHVtblVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUElOX1RBQkxFX0NPTFVNTn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5QSU5fVEFCTEVfQ09MVU1OLFxuICAgIGRhdGFJZCxcbiAgICBjb2x1bW5cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ29weVRhYmxlQ29sdW1uVXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIGNvbHVtbjogc3RyaW5nO1xufTtcbi8qKlxuICogQ29weSBjb2x1bW4sIGZvciB0YWJsZSBkaXNwbGF5XG4gKiBAcGFyYW0gZGF0YUlkXG4gKiBAcGFyYW0gY29sdW1uXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlUYWJsZUNvbHVtbihcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIGNvbHVtbjogc3RyaW5nXG4pOiBNZXJnZTxDb3B5VGFibGVDb2x1bW5VcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkNPUFlfVEFCTEVfQ09MVU1OfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkNPUFlfVEFCTEVfQ09MVU1OLFxuICAgIGRhdGFJZCxcbiAgICBjb2x1bW5cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0Q29sdW1uRGlzcGxheUZvcm1hdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZDogc3RyaW5nO1xuICBmb3JtYXRzOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xufTtcblxuLyoqXG4gKiBTZXQgY29sdW1uIGRpc3BsYXkgZm9ybWF0XG4gKiBAcGFyYW0gZGF0YUlkXG4gKiBAcGFyYW0gZm9ybWF0c1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0KFxuICBkYXRhSWQ6IFNldENvbHVtbkRpc3BsYXlGb3JtYXRVcGRhdGVyQWN0aW9uWydkYXRhSWQnXSxcbiAgZm9ybWF0czogU2V0Q29sdW1uRGlzcGxheUZvcm1hdFVwZGF0ZXJBY3Rpb25bJ2Zvcm1hdHMnXVxuKTogTWVyZ2U8XG4gIFNldENvbHVtbkRpc3BsYXlGb3JtYXRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9DT0xVTU5fRElTUExBWV9GT1JNQVR9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfQ09MVU1OX0RJU1BMQVlfRk9STUFULFxuICAgIGRhdGFJZCxcbiAgICBmb3JtYXRzXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFkZERhdGFUb01hcFVwZGF0ZXJPcHRpb25zID0ge1xuICBjZW50ck1hcD86IGJvb2xlYW47XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAga2VlcEV4aXN0aW5nQ29uZmlnPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZVZpc0RhdGFVcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhc2V0czogQWRkRGF0YVRvTWFwUGF5bG9hZFsnZGF0YXNldHMnXTtcbiAgb3B0aW9uczogQWRkRGF0YVRvTWFwUGF5bG9hZFsnb3B0aW9ucyddO1xuICBjb25maWc/OiBQYXJzZWRDb25maWc7XG59O1xuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvLmlkIC0gaWQgb2YgdGhpcyBkYXRhc2V0LiBJZiBjb25maWcgaXMgZGVmaW5lZCwgYGlkYCBzaG91bGQgbWF0Y2hlcyB0aGUgYGRhdGFJZGAgaW4gY29uZmlnLlxuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvLmxhYmVsIC0gQSBkaXNwbGF5IG5hbWUgb2YgdGhpcyBkYXRhc2V0XG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEuZmllbGRzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiBmaWVsZHMsXG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEuZmllbGRzLm5hbWUgLSAqKipyZXF1aXJlZCoqIE5hbWUgb2YgdGhlIGZpZWxkLFxuLy8gKiBAcGFyYW0gZGF0YXNldC5kYXRhLnJvd3MgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIHJvd3MsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCBgZmllbGRzYCBhbmQgYHJvd3NgXG4vKipcbiAqIEFkZCBuZXcgZGF0YXNldCB0byBgdmlzU3RhdGVgLCB3aXRoIG9wdGlvbiB0byBsb2FkIGEgbWFwIGNvbmZpZyBhbG9uZyB3aXRoIHRoZSBkYXRhc2V0c1xuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFzZXRzIC0gKioqcmVxdWlyZWQqKiBkYXRhc2V0cyBjYW4gYmUgYSBkYXRhc2V0IG9yIGFuIGFycmF5IG9mIGRhdGFzZXRzXG4gKiBFYWNoIGRhdGFzZXQgb2JqZWN0IG5lZWRzIHRvIGhhdmUgYGluZm9gIGFuZCBgZGF0YWAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIG9wdGlvbnMuY2VudGVyTWFwIGBkZWZhdWx0OiB0cnVlYCBpZiBgY2VudGVyTWFwYCBpcyBzZXQgdG8gYHRydWVgIGtlcGxlci5nbCB3aWxsXG4gKiBwbGFjZSB0aGUgbWFwIHZpZXcgd2l0aGluIHRoZSBkYXRhIHBvaW50cyBib3VuZGFyaWVzXG4gKiBAcGFyYW0gb3B0aW9ucy5yZWFkT25seSBgZGVmYXVsdDogZmFsc2VgIGlmIGByZWFkT25seWAgaXMgc2V0IHRvIGB0cnVlYFxuICogdGhlIGxlZnQgc2V0dGluZyBwYW5lbCB3aWxsIGJlIGhpZGRlblxuICogQHBhcmFtIGNvbmZpZyB0aGlzIG9iamVjdCB3aWxsIGNvbnRhaW4gdGhlIGZ1bGwga2VwbGVyLmdsIGluc3RhbmNlIGNvbmZpZ3VyYXRpb24ge21hcFN0YXRlLCBtYXBTdHlsZSwgdmlzU3RhdGV9XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpc0RhdGEoXG4gIGRhdGFzZXRzOiBBZGREYXRhVG9NYXBQYXlsb2FkWydkYXRhc2V0cyddLFxuICBvcHRpb25zOiBBZGREYXRhVG9NYXBQYXlsb2FkWydvcHRpb25zJ10sXG4gIGNvbmZpZz86IFBhcnNlZENvbmZpZ1xuKTogTWVyZ2U8VXBkYXRlVmlzRGF0YVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVVBEQVRFX1ZJU19EQVRBfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlVQREFURV9WSVNfREFUQSxcbiAgICBkYXRhc2V0cyxcbiAgICBvcHRpb25zLFxuICAgIGNvbmZpZ1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW5hbWVEYXRhc2V0VXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBSZW5hbWUgYW4gZXhpc3RpbmcgZGF0YXNldCBpbiBgdmlzU3RhdGVgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIC0gKioqcmVxdWlyZWQqKiBJZCBvZiB0aGUgZGF0YXNldCB0byB1cGRhdGVcbiAqIEBwYXJhbSBsYWJlbCAtICoqKnJlcXVpcmVkKiogTmV3IG5hbWUgZm9yIHRoZSBkYXRhc2V0XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZURhdGFzZXQoXG4gIGRhdGFJZDogc3RyaW5nLFxuICBsYWJlbDogc3RyaW5nXG4pOiBNZXJnZTxSZW5hbWVEYXRhc2V0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU5BTUVfREFUQVNFVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU5BTUVfREFUQVNFVCxcbiAgICBkYXRhSWQsXG4gICAgbGFiZWxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlRGF0YXNldFByb3BzVXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIHByb3BzOiB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBSR0JDb2xvcjtcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9O1xufTtcbi8qKlxuICogVXBkYXRlIGFuIGV4aXN0aW5nIGRhdGFzZXQgcHJvcHMgaW4gYHZpc1N0YXRlYFxuICogQHBhcmFtIGRhdGFJZCAtICoqKnJlcXVpcmVkKiogSWQgb2YgdGhlIGRhdGFzZXQgdG8gdXBkYXRlXG4gKiBAcGFyYW0gcHJvcHMgLSAqKipyZXF1aXJlZCoqIE5ldyBwcm9wcyB0byB1cGRhdGVcbiAqIEByZXR1cm5zIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRGF0YXNldFByb3BzKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgcHJvcHM6IHtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBjb2xvcj86IFJHQkNvbG9yO1xuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH1cbik6IE1lcmdlPFVwZGF0ZURhdGFzZXRQcm9wc1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVVBEQVRFX0RBVEFTRVRfUFJPUFN9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0RBVEFTRVRfUFJPUFMsXG4gICAgZGF0YUlkLFxuICAgIHByb3BzXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZUZpbHRlckFuaW1hdGlvblVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xufTtcbi8qKlxuICogU3RhcnQgYW5kIGVuZCBmaWx0ZXIgYW5pbWF0aW9uXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0ge051bWJlcn0gaWR4IG9mIGZpbHRlclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVGaWx0ZXJBbmltYXRpb24oXG4gIGlkeDogbnVtYmVyXG4pOiBNZXJnZTxUb2dnbGVGaWx0ZXJBbmltYXRpb25VcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfQU5JTUFUSU9OfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfQU5JTUFUSU9OLFxuICAgIGlkeFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGVGaWx0ZXJBbmltYXRpb25TcGVlZFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBzcGVlZDogbnVtYmVyO1xufTtcbi8qKlxuICogQ2hhbmdlIGZpbHRlciBhbmltYXRpb24gc3BlZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggLSAgYGlkeGAgb2YgZmlsdGVyXG4gKiBAcGFyYW0gc3BlZWQgLSBgc3BlZWRgIHRvIGNoYW5nZSBpdCB0by4gYHNwZWVkYCBpcyBhIG11bHRpcGxpZXJcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWQoXG4gIGlkeDogbnVtYmVyLFxuICBzcGVlZDogbnVtYmVyXG4pOiBNZXJnZTxcbiAgVXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9GSUxURVJfQU5JTUFUSU9OX1NQRUVEfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0ZJTFRFUl9BTklNQVRJT05fU1BFRUQsXG4gICAgaWR4LFxuICAgIHNwZWVkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldExheWVyQW5pbWF0aW9uVGltZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xufTtcbi8qKlxuICogUmVzZXQgYW5pbWF0aW9uXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gdmFsdWUgLSAgQ3VycmVudCB2YWx1ZSBvZiB0aGUgc2xpZGVyXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldExheWVyQW5pbWF0aW9uVGltZShcbiAgdmFsdWU6IG51bWJlclxuKTogTWVyZ2U8U2V0TGF5ZXJBbmltYXRpb25UaW1lVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfTEFZRVJfQU5JTUFUSU9OX1RJTUV9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0xBWUVSX0FOSU1BVElPTl9USU1FLFxuICAgIHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyQWN0aW9uID0ge1xuICBzcGVlZDogbnVtYmVyO1xufTtcbi8qKlxuICogdXBkYXRlIHRyaXAgbGF5ZXIgYW5pbWF0aW9uIHNwZWVkXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gc3BlZWQgLSBgc3BlZWRgIHRvIGNoYW5nZSBpdCB0by4gYHNwZWVkYCBpcyBhIG11bHRpcGxpZXJcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlTGF5ZXJBbmltYXRpb25TcGVlZChcbiAgc3BlZWQ6IG51bWJlclxuKTogTWVyZ2U8XG4gIFVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9MQVlFUl9BTklNQVRJT05fU1BFRUR9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5VUERBVEVfTEFZRVJfQU5JTUFUSU9OX1NQRUVELFxuICAgIHNwZWVkXG4gIH07XG59XG5leHBvcnQgdHlwZSBUb2dnbGVMYXllckFuaW1hdGlvblVwZGF0ZXJBY3Rpb24gPSB2b2lkO1xuLyoqXG4gKiBzdGFydCBlbmQgZW5kIGxheWVyIGFuaW1hdGlvblxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVMYXllckFuaW1hdGlvbigpOiBNZXJnZTxcbiAgVG9nZ2xlTGF5ZXJBbmltYXRpb25VcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9BTklNQVRJT059XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfQU5JTUFUSU9OXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZUxheWVyQW5pbWF0aW9uQ29udHJvbFVwZGF0ZXJBY3Rpb24gPSB2b2lkO1xuLyoqXG4gKiBoaWRlIGFuZCBzaG93IGxheWVyIGFuaW1hdGlvbiBjb250cm9sXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUxheWVyQW5pbWF0aW9uQ29udHJvbCgpOiBNZXJnZTxcbiAgVG9nZ2xlTGF5ZXJBbmltYXRpb25Db250cm9sVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfQU5JTUFUSU9OX0NPTlRST0x9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfQU5JTUFUSU9OX0NPTlRST0xcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0RmlsdGVyVmlld1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICB2aWV3OiBGaWx0ZXJbJ3ZpZXcnXTtcbn07XG4vKipcbiAqIFNob3cgbGFyZ2VyIHRpbWUgZmlsdGVyIGF0IGJvdHRvbSBmb3IgdGltZSBwbGF5YmFjayAoYXBwbHkgdG8gdGltZSBmaWx0ZXIgb25seSlcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggLSBpbmRleCBvZiBmaWx0ZXIgdG8gZW5sYXJnZVxuICogQHBhcmFtIHZpZXcgLSB0eXBlIG9mIGZpbHRlciB2aWV3XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlclZpZXcoXG4gIGlkeDogbnVtYmVyLFxuICB2aWV3OiBGaWx0ZXJbJ3ZpZXcnXVxuKTogTWVyZ2U8U2V0RmlsdGVyVmlld1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9WSUVXfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9GSUxURVJfVklFVyxcbiAgICBpZHgsXG4gICAgdmlld1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBUb2dnbGVGaWx0ZXJGZWF0dXJlVXBkYXRlckFjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG59O1xuLyoqXG4gKiBTaG93L2hpZGUgZmlsdGVyIGZlYXR1cmUgb24gbWFwXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWR4IC0gaW5kZXggb2YgZmlsdGVyIGZlYXR1cmUgdG8gc2hvdy9oaWRlXG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlRmlsdGVyRmVhdHVyZShcbiAgaWR4OiBudW1iZXJcbik6IE1lcmdlPFRvZ2dsZUZpbHRlckZlYXR1cmVVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfRkVBVFVSRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5UT0dHTEVfRklMVEVSX0ZFQVRVUkUsXG4gICAgaWR4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIE9uTGF5ZXJIb3ZlclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGluZm86IFBpY2tJbmZvPGFueT4gfCBudWxsO1xuICBtYXBJbmRleD86IG51bWJlcjtcbn07XG4vKipcbiAqIFRyaWdnZXIgbGF5ZXIgaG92ZXIgZXZlbnQgd2l0aCBob3ZlcmVkIG9iamVjdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGluZm8gLSBPYmplY3QgaG92ZXJlZCwgcmV0dXJuZWQgYnkgZGVjay5nbC5cbiAqIEBwYXJhbSBtYXBJbmRleCAtIE9wdGlvbmFsIHByb3BlcnR5IGZvciBsaW1pdGluZyB0aGUgZGlzcGxheSBvZiB0aGUgYDxNYXBQb3BvdmVyPmAgdG8gdGhlIGA8TWFwQ29udGFpbmVyPmAgdGhlIHVzZXIgaXMgaW50ZXJhY3Rpbmcgd2l0aC5cbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25MYXllckhvdmVyKFxuICBpbmZvOiBQaWNrSW5mbzxhbnk+IHwgbnVsbCxcbiAgbWFwSW5kZXg/OiBudW1iZXJcbik6IE1lcmdlPE9uTGF5ZXJIb3ZlclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfSE9WRVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfSE9WRVIsXG4gICAgaW5mbyxcbiAgICBtYXBJbmRleFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBPbkxheWVyQ2xpY2tVcGRhdGVyQWN0aW9uID0ge1xuICBpbmZvOiBQaWNrSW5mbzxhbnk+IHwgbnVsbDtcbn07XG4vKipcbiAqIFRyaWdnZXIgbGF5ZXIgY2xpY2sgZXZlbnQgd2l0aCBjbGlja2VkIG9iamVjdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGluZm8gLSBPYmplY3QgY2xpY2tlZCwgcmV0dXJuZWQgYnkgZGVjay5nbFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkxheWVyQ2xpY2soXG4gIGluZm86IFBpY2tJbmZvPGFueT4gfCBudWxsXG4pOiBNZXJnZTxPbkxheWVyQ2xpY2tVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX0NMSUNLfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX0NMSUNLLFxuICAgIGluZm9cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgT25NYXBDbGlja1VwZGF0ZXJBY3Rpb24gPSB2b2lkO1xuLyoqXG4gKiBUcmlnZ2VyIG1hcCBjbGljayBldmVudCwgdW5zZWxlY3QgY2xpY2tlZCBvYmplY3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25NYXBDbGljaygpOiBNZXJnZTxPbk1hcENsaWNrVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5NQVBfQ0xJQ0t9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTUFQX0NMSUNLXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIE9uTW91c2VNb3ZlVXBkYXRlckFjdGlvbiA9IHtcbiAgZXZ0O1xufTtcbi8qKlxuICogVHJpZ2dlciBtYXAgbW91c2UgbW92ZWV2ZW50LCBwYXlsb2FkIHdvdWxkIGJlXG4gKiBSZWFjdC1tYXAtZ2wgTWFwTGF5ZXJNb3VzZUV2ZW50XG4gKiBodHRwczovL3Zpc2dsLmdpdGh1Yi5pby9yZWFjdC1tYXAtZ2wvZG9jcy9hcGktcmVmZXJlbmNlL3R5cGVzI21hcGxheWVybW91c2VldmVudFxuICpcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBldnQgLSBNYXBMYXllck1vdXNlRXZlbnRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25Nb3VzZU1vdmUoXG4gIGV2dFxuKTogTWVyZ2U8T25Nb3VzZU1vdmVVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLk1PVVNFX01PVkV9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTU9VU0VfTU9WRSxcbiAgICBldnRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVG9nZ2xlTGF5ZXJGb3JNYXBVcGRhdGVyQWN0aW9uID0ge1xuICBtYXBJbmRleDogbnVtYmVyO1xuICBsYXllcklkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBUb2dnbGUgdmlzaWJpbGl0eSBvZiBhIGxheWVyIGluIGEgc3BsaXQgbWFwXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gbWFwSW5kZXggLSBpbmRleCBvZiB0aGUgc3BsaXQgbWFwXG4gKiBAcGFyYW0gbGF5ZXJJZCAtIGlkIG9mIHRoZSBsYXllclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVMYXllckZvck1hcChcbiAgbWFwSW5kZXg6IG51bWJlcixcbiAgbGF5ZXJJZDogc3RyaW5nXG4pOiBNZXJnZTxUb2dnbGVMYXllckZvck1hcFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX0xBWUVSX0ZPUl9NQVB9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVE9HR0xFX0xBWUVSX0ZPUl9NQVAsXG4gICAgbWFwSW5kZXgsXG4gICAgbGF5ZXJJZFxuICB9O1xufVxuXG50eXBlIEZpbHRlclBsb3ROZXdQcm9wID0ge1xuICB5QXhpcz86IG51bGwgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBwbG90VHlwZT86IHt0eXBlOiBzdHJpbmd9O1xufTtcbmV4cG9ydCB0eXBlIFNldEZpbHRlclBsb3RVcGRhdGVyQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbiAgbmV3UHJvcDogRmlsdGVyUGxvdE5ld1Byb3A7XG4gIHZhbHVlSW5kZXg/OiBudW1iZXI7XG59O1xuLyoqXG4gKiBTZXQgdGhlIHByb3BlcnR5IG9mIGEgZmlsdGVyIHBsb3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHhcbiAqIEBwYXJhbSBuZXdQcm9wIGtleSB2YWx1ZSBtYXBwaW5nIG9mIG5ldyBwcm9wIGB7eUF4aXM6ICdoaXN0b2dyYW0nfWBcbiAqIEBwYXJhbSB2YWx1ZUluZGV4IGRhdGFJZCBpbmRleFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGaWx0ZXJQbG90KFxuICBpZHg6IG51bWJlcixcbiAgbmV3UHJvcDogRmlsdGVyUGxvdE5ld1Byb3AsXG4gIHZhbHVlSW5kZXg/OiBudW1iZXJcbik6IE1lcmdlPFNldEZpbHRlclBsb3RVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9GSUxURVJfUExPVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX1BMT1QsXG4gICAgaWR4LFxuICAgIG5ld1Byb3AsXG4gICAgdmFsdWVJbmRleFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRNYXBJbmZvVXBkYXRlckFjdGlvbiA9IHtcbiAgaW5mbzogYW55O1xufTtcbi8qKlxuICogU2V0IHRoZSBwcm9wZXJ0eSBvZiBhIGZpbHRlciBwbG90XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaW5mb1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRNYXBJbmZvKFxuICBpbmZvOiBhbnlcbik6IE1lcmdlPFNldE1hcEluZm9VcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9NQVBfSU5GT30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfTUFQX0lORk8sXG4gICAgaW5mb1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMb2FkRmlsZXNVcGRhdGVyQWN0aW9uID0ge1xuICBmaWxlczogRmlsZVtdO1xuICBvbkZpbmlzaD8ocmVzdWx0OiBhbnkpOiBhbnk7XG59O1xuLyoqXG4gKiBUcmlnZ2VyIGZpbGUgbG9hZGluZyBkaXNwYXRjaCBgYWRkRGF0YVRvTWFwYCBpZiBzdWNjZWVkLCBvciBgbG9hZEZpbGVzRXJyYCBpZiBmYWlsZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBmaWxlcyBhcnJheSBvZiBmaWxlYmxvYlxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRmlsZXMoXG4gIGZpbGVzOiBGaWxlW10sXG4gIG9uRmluaXNoPzogKHJlc3VsdDogYW55KSA9PiBhbnlcbik6IE1lcmdlPExvYWRGaWxlc1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTE9BRF9GSUxFU30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTLFxuICAgIGZpbGVzLFxuICAgIG9uRmluaXNoXG4gIH07XG59XG5cbi8qKlxuICogQ2FsbGVkIHdpdGggbmV4dCBmaWxlIHRvIGxvYWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZE5leHRGaWxlKCk6IHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTE9BRF9ORVhUX0ZJTEV9IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MT0FEX05FWFRfRklMRVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlckFjdGlvbiA9IHtcbiAgcmVzdWx0OiBGaWxlQ2FjaGVJdGVtW107XG59O1xuLyoqXG4gKiBjYWxsZWQgd2hlbiBhbGwgZmlsZXMgYXJlIHByb2Nlc3NlZCBhbmQgbG9hZGVkXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gcmVzdWx0XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlc1N1Y2Nlc3MoXG4gIHJlc3VsdDogRmlsZUNhY2hlSXRlbVtdXG4pOiBNZXJnZTxsb2FkRmlsZXNTdWNjZXNzVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTX1NVQ0NFU1N9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTE9BRF9GSUxFU19TVUNDRVNTLFxuICAgIHJlc3VsdFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMb2FkRmlsZVN0ZXBTdWNjZXNzQWN0aW9uID0ge1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBmaWxlQ2FjaGU6IEZpbGVDYWNoZUl0ZW1bXTtcbn07XG4vKipcbiAqIGNhbGxlZCB3aGVuIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25lIGZpbGUsIHJlYWR5IHRvIG1vdmUgb24gdG8gdGhlIG5leHQgb25lXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gcmVzdWx0XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlU3RlcFN1Y2Nlc3Moe1xuICBmaWxlTmFtZSxcbiAgZmlsZUNhY2hlXG59OiB7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdO1xufSk6IE1lcmdlPExvYWRGaWxlU3RlcFN1Y2Nlc3NBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTE9BRF9GSUxFX1NURVBfU1VDQ0VTU30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVfU1RFUF9TVUNDRVNTLFxuICAgIGZpbGVOYW1lLFxuICAgIGZpbGVDYWNoZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uID0ge1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBlcnJvcjogYW55O1xufTtcbi8qKlxuICogVHJpZ2dlciBsb2FkaW5nIGZpbGUgZXJyb3JcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSAgZXJyb3JcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRmlsZXNFcnIoXG4gIGZpbGVOYW1lOiBzdHJpbmcsXG4gIGVycm9yOiBhbnlcbik6IE1lcmdlPExvYWRGaWxlc0VyclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTE9BRF9GSUxFU19FUlJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTE9BRF9GSUxFU19FUlIsXG4gICAgZmlsZU5hbWUsXG4gICAgZXJyb3JcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0RmVhdHVyZXNVcGRhdGVyQWN0aW9uID0ge1xuICBmZWF0dXJlczogRmVhdHVyZVtdO1xufTtcbi8qKlxuICogU3RvcmUgZmVhdHVyZXMgdG8gc3RhdGVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBmZWF0dXJlc1xuICogQHJldHVybnMgYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGZWF0dXJlcyhcbiAgZmVhdHVyZXM6IEZlYXR1cmVbXVxuKTogTWVyZ2U8U2V0RmVhdHVyZXNVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9GRUFUVVJFU30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRkVBVFVSRVMsXG4gICAgZmVhdHVyZXNcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0UG9seWdvbkZpbHRlckxheWVyVXBkYXRlckFjdGlvbiA9IHtcbiAgbGF5ZXI6IExheWVyO1xuICBmZWF0dXJlOiBGZWF0dXJlO1xufTtcbi8qKlxuICogSXQgd2lsbCBhcHBseSB0aGUgcHJvdmlkZSBmZWF0dXJlIGFzIGZpbHRlciB0byB0aGUgZ2l2ZW4gbGF5ZXIuXG4gKiBJZiB0aGUgZ2l2ZW4gZmVhdHVyZSBpcyBhbHJlYWR5IGFwcGxpZWQgYXMgZmlsdGVyIHRvIHRoZSBsYXllciwgaXQgd2lsbCByZW1vdmUgdGhlIGxheWVyIGZyb20gdGhlIGZpbHRlclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGxheWVyXG4gKiBAcGFyYW0gZmVhdHVyZVxuICogQHJldHVybnMgYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRQb2x5Z29uRmlsdGVyTGF5ZXIoXG4gIGxheWVyOiBMYXllcixcbiAgZmVhdHVyZTogRmVhdHVyZVxuKTogTWVyZ2U8U2V0UG9seWdvbkZpbHRlckxheWVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfUE9MWUdPTl9GSUxURVJfTEFZRVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1BPTFlHT05fRklMVEVSX0xBWUVSLFxuICAgIGxheWVyLFxuICAgIGZlYXR1cmVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0U2VsZWN0ZWRGZWF0dXJlVXBkYXRlckFjdGlvbiA9IHtcbiAgZmVhdHVyZTogRmVhdHVyZSB8IG51bGw7XG4gIHNlbGVjdGlvbkNvbnRleHQ/OiBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dDtcbn07XG5cbi8qKlxuICogU2V0IHRoZSBjdXJyZW50IGZlYXR1cmUgdG8gYmUgZWRpdGVkL2RlbGV0ZWQsXG4gKiBhbmQgdGhlIGNvbnRleHQgb2YgaG93IHRoZSBmZWF0dXJlIHdhcyBzZWxlY3RlZC5cbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBmZWF0dXJlXG4gKiBAcGFyYW0gc2VsZWN0aW9uQ29udGV4dFxuICogQHJldHVybnMgYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWxlY3RlZEZlYXR1cmUoXG4gIGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsLFxuICBzZWxlY3Rpb25Db250ZXh0PzogRmVhdHVyZVNlbGVjdGlvbkNvbnRleHRcbik6IE1lcmdlPFNldFNlbGVjdGVkRmVhdHVyZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0ZFQVRVUkV9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX1NFTEVDVEVEX0ZFQVRVUkUsXG4gICAgZmVhdHVyZSxcbiAgICBzZWxlY3Rpb25Db250ZXh0XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERlbGV0ZUZlYXR1cmVVcGRhdGVyQWN0aW9uID0ge1xuICBmZWF0dXJlOiBGZWF0dXJlO1xufTtcbi8qKlxuICogRGVsZXRlIHRoZSBnaXZlbiBmZWF0dXJlXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZmVhdHVyZVxuICogQHJldHVybnMgYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVGZWF0dXJlKFxuICBmZWF0dXJlOiBGZWF0dXJlXG4pOiBNZXJnZTxEZWxldGVGZWF0dXJlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5ERUxFVEVfRkVBVFVSRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5ERUxFVEVfRkVBVFVSRSxcbiAgICBmZWF0dXJlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEVkaXRvck1vZGVVcGRhdGVyQWN0aW9uID0ge1xuICBtb2RlOiBzdHJpbmc7XG59O1xuLyoqIFNldCB0aGUgbWFwIG1vZGVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBtb2RlIG9uZSBvZiBFRElUT1JfTU9ERVNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7c2V0TWFwTW9kZX0gZnJvbSAna2VwbGVyLmdsL2FjdGlvbnMnO1xuICogaW1wb3J0IHtFRElUT1JfTU9ERVN9IGZyb20gJ2tlcGxlci5nbC9jb25zdGFudHMnO1xuICpcbiAqIHRoaXMucHJvcHMuZGlzcGF0Y2goc2V0TWFwTW9kZShFRElUT1JfTU9ERVMuRFJBV19QT0xZR09OKSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRFZGl0b3JNb2RlKFxuICBtb2RlOiBzdHJpbmdcbik6IE1lcmdlPFNldEVkaXRvck1vZGVVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9FRElUT1JfTU9ERX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRURJVE9SX01PREUsXG4gICAgbW9kZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBBcHBseUNQVUZpbHRlclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZDogc3RyaW5nIHwgc3RyaW5nW107XG59O1xuLyoqXG4gKiBUcmlnZ2VyIENQVSBmaWx0ZXIgb2Ygc2VsZWN0ZWQgZGF0YXNldFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFJZCAtIHNpbmdsZSBkYXRhSWQgb3IgYW4gYXJyYXkgb2YgZGF0YUlkc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNQVUZpbHRlcihcbiAgZGF0YUlkOiBzdHJpbmcgfCBzdHJpbmdbXVxuKTogTWVyZ2U8QXBwbHlDUFVGaWx0ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFQUExZX0NQVV9GSUxURVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuQVBQTFlfQ1BVX0ZJTFRFUixcbiAgICBkYXRhSWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb24gPSB2b2lkO1xuLyoqXG4gKiBUb2dnbGUgZWRpdG9yIGxheWVyIHZpc2liaWxpdHlcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEByZXR1cm4gYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVFZGl0b3JWaXNpYmlsaXR5KCk6IE1lcmdlPFxuICBUb2dnbGVFZGl0b3JWaXNpYmlsaXR5VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfRURJVE9SX1ZJU0lCSUxJVFl9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5UT0dHTEVfRURJVE9SX1ZJU0lCSUxJVFlcbiAgfTtcbn1cblxudHlwZSBGaWxlQ29udGVudCA9IHtcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgaGVhZGVyOiBzdHJpbmdbXTtcbiAgZGF0YTogYW55O1xufTtcbmV4cG9ydCB0eXBlIE5leHRGaWxlQmF0Y2hVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbiAgICBnZW46IEFzeW5jR2VuZXJhdG9yPEZpbGVDb250ZW50PjtcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuICAgIHByb2dyZXNzPzogYW55O1xuICAgIGFjY3VtdWxhdGVkPzogYW55O1xuICAgIG9uRmluaXNoOiAocmVzdWx0OiBhbnkpID0+IGFueTtcbiAgfTtcbn07XG4vKipcbiAqIFByb2Nlc3MgdGhlIG5leHQgZmlsZSBiYXRjaFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSBiYXRjaCBwYXlsb2FkXG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dEZpbGVCYXRjaChcbiAgcGF5bG9hZDogTmV4dEZpbGVCYXRjaFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKTogTWVyZ2U8TmV4dEZpbGVCYXRjaFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTkVYVF9GSUxFX0JBVENIfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLk5FWFRfRklMRV9CQVRDSCxcbiAgICBwYXlsb2FkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NGaWxlQ29udGVudFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBjb250ZW50OiBGaWxlQ29udGVudDtcbiAgICBmaWxlQ2FjaGU6IEZpbGVDYWNoZUl0ZW1bXTtcbiAgfTtcbn07XG4vKipcbiAqIFByb2Nlc3MgdGhlIGZpbGUgY29udGVudFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIHBheWxvYWQgLSB0aGUgZmlsZSBjb250ZW50XG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0ZpbGVDb250ZW50KFxuICBwYXlsb2FkOiBQcm9jZXNzRmlsZUNvbnRlbnRVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbik6IE1lcmdlPFByb2Nlc3NGaWxlQ29udGVudFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuUFJPQ0VTU19GSUxFX0NPTlRFTlR9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuUFJPQ0VTU19GSUxFX0NPTlRFTlQsXG4gICAgcGF5bG9hZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRMYXllckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb24gPSB7XG4gIGNvbmZpZzoge1xuICAgIHRpbWV6b25lPzogc3RyaW5nO1xuICAgIHRpbWVGb3JtYXQ/OiBzdHJpbmc7XG4gIH07XG59O1xuLyoqXG4gKiBTZXQgbGF5ZXIgYW5pbWF0aW9uIHRpbWUgZm9ybWF0IGFuZCB0aW1lem9uZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGNvbmZpZyAtIHt0aW1lRm9ybWF0OiBzdHJpbmcsIHRpbWV6b25lOiBzdHJpbmd9XG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnKFxuICBjb25maWc6IFNldExheWVyQW5pbWF0aW9uVGltZUNvbmZpZ0FjdGlvblsnY29uZmlnJ11cbik6IE1lcmdlPFxuICBTZXRMYXllckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0xBWUVSX0FOSU1BVElPTl9USU1FX0NPTkZJR31cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9MQVlFUl9BTklNQVRJT05fVElNRV9DT05GSUcsXG4gICAgY29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBjb25maWc6IHtcbiAgICB0aW1lem9uZT86IHN0cmluZztcbiAgICB0aW1lRm9ybWF0Pzogc3RyaW5nO1xuICB9O1xufTtcbi8qKlxuICogU2V0IEZpbHRlciBhbmltYXRpb24gdGltZSBmb3JtYXQgYW5kIHRpbWV6b25lXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWR4XG4gKiBAcGFyYW0gY29uZmlnXG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyQW5pbWF0aW9uVGltZUNvbmZpZyhcbiAgaWR4OiBTZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uWydpZHgnXSxcbiAgY29uZmlnOiBTZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uWydjb25maWcnXVxuKTogTWVyZ2U8XG4gIFNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRV9DT05GSUd9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9USU1FX0NPTkZJRyxcbiAgICBpZHgsXG4gICAgY29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExheWVyRmlsdGVyZWRJdGVtc0NoYW5nZUFjdGlvbiA9IHtcbiAgZXZlbnQ6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGNvdW50OiBudW1iZXI7XG4gIH07XG4gIGxheWVyOiBMYXllcjtcbn07XG5cbi8qKlxuICogZGVjay5nbCBsYXllciBncHUgZmlsdGVyIGNhbGxiYWNrXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gbGF5ZXJcbiAqIEBwYXJhbSBldmVudFxuICogQHJldHVybiBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyRmlsdGVyZWRJdGVtc0NoYW5nZShcbiAgbGF5ZXI6IExheWVyRmlsdGVyZWRJdGVtc0NoYW5nZUFjdGlvblsnbGF5ZXInXSxcbiAgZXZlbnQ6IExheWVyRmlsdGVyZWRJdGVtc0NoYW5nZUFjdGlvblsnZXZlbnQnXVxuKTogTWVyZ2U8TGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX0ZJTFRFUkVEX0lURU1TX0NIQU5HRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9GSUxURVJFRF9JVEVNU19DSEFOR0UsXG4gICAgbGF5ZXIsXG4gICAgZXZlbnRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZUFjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG4gIGVuYWJsZTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jVGltZUZpbHRlcldpdGhMYXllclRpbWVsaW5lKFxuICBpZHg6IFN5bmNUaW1lRmlsdGVyV2l0aExheWVyVGltZWxpbmVBY3Rpb25bJ2lkeCddLFxuICBlbmFibGU6IFN5bmNUaW1lRmlsdGVyV2l0aExheWVyVGltZWxpbmVBY3Rpb25bJ2VuYWJsZSddXG4pOiBNZXJnZTxcbiAgU3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZUFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TWU5DX1RJTUVfRklMVEVSX1dJVEhfTEFZRVJfVElNRUxJTkV9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TWU5DX1RJTUVfRklMVEVSX1dJVEhfTEFZRVJfVElNRUxJTkUsXG4gICAgaWR4LFxuICAgIGVuYWJsZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBzZXRUaW1lRmlsdGVyU3luY1RpbWVsaW5lTW9kZUFjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbW9kZTogU3luY1RpbWVsaW5lTW9kZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUaW1lRmlsdGVyU3luY1RpbWVsaW5lTW9kZSh7XG4gIGlkLFxuICBtb2RlXG59OiBzZXRUaW1lRmlsdGVyU3luY1RpbWVsaW5lTW9kZUFjdGlvbik6IE1lcmdlPFxuICBzZXRUaW1lRmlsdGVyU3luY1RpbWVsaW5lTW9kZUFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TWU5DX1RJTUVfRklMVEVSX1RJTUVMSU5FX01PREV9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TWU5DX1RJTUVfRklMVEVSX1RJTUVMSU5FX01PREUsXG4gICAgaWQsXG4gICAgbW9kZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVOZXdEYXRhc2V0U3VjY2Vzc1BheWxvYWQgPSB7XG4gIHJlc3VsdHM6IChQcm9taXNlRnVsZmlsbGVkUmVzdWx0PEtlcGxlclRhYmxlPiB8IFByb21pc2VSZWplY3RlZFJlc3VsdClbXTtcbiAgYWRkVG9NYXBPcHRpb25zOiBBZGREYXRhVG9NYXBQYXlsb2FkWydvcHRpb25zJ107XG59O1xuXG4vKipcbiAqIENhbGxlZCB3aGVuIGEgbmV3IGRhdGFzZXQgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkgdmlhIGFzeW5jIHRhYmxlIG1ldGhvZHNcbiAqIEBwYXJhbSBwYXlsb2FkXG4gKiBAcGFyYW0gcGF5bG9hZC5yZXN1bHRzIC0gcmVzdWx0cyBvZiBwcm9taXNlcy5hbGxTZXR0bHRlZFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZU5ld0RhdGFzZXRTdWNjZXNzID0gY3JlYXRlQWN0aW9uPENyZWF0ZU5ld0RhdGFzZXRTdWNjZXNzUGF5bG9hZD4oXG4gIEFjdGlvblR5cGVzLkNSRUFURV9ORVdfREFUQVNFVF9TVUNDRVNTXG4pO1xuXG4vKipcbiAqIFRoaXMgZGVjbGFyYXRpb24gaXMgbmVlZGVkIHRvIGdyb3VwIGFjdGlvbnMgaW4gZG9jc1xuICovXG4vKipcbiAqIEFjdGlvbnMgaGFuZGxlZCBtb3N0bHkgYnkgYHZpc1N0YXRlYCByZWR1Y2VyLlxuICogVGhleSBtYW5hZ2UgaG93IGRhdGEgaXMgcHJvY2Vzc2VkLCBmaWx0ZXJlZCBhbmQgZGlzcGxheWVkIG9uIHRoZSBtYXAgYnkgb3BlcmF0ZXMgb24gbGF5ZXJzLFxuICogZmlsdGVycyBhbmQgaW50ZXJhY3Rpb24gc2V0dGluZ3MuXG4gKlxuICogQHB1YmxpY1xuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHZpc1N0YXRlQWN0aW9ucyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBcUJBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQTFCQTtBQUNBOztBQUVBOztBQXlCQTtBQUNBOztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLGdCQUFnQkEsQ0FDOUJDLFVBQWtCLEVBQ2xCQyxjQUEyQixFQUMzQkMsVUFBbUIsRUFDa0U7RUFDckYsT0FBTztJQUNMQyxJQUFJLEVBQUVDLHVCQUFXLENBQUNDLGtCQUFrQjtJQUNwQ0wsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZDLGNBQWMsRUFBZEEsY0FBYztJQUNkQyxVQUFVLEVBQVZBO0VBQ0YsQ0FBQztBQUNIO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSSxpQkFBaUJBLENBQy9CQyxRQUFlLEVBQ2ZDLFNBQW1DLEVBQ29EO0VBQ3ZGLE9BQU87SUFDTEwsSUFBSSxFQUFFQyx1QkFBVyxDQUFDSyxtQkFBbUI7SUFDckNGLFFBQVEsRUFBUkEsUUFBUTtJQUNSQyxTQUFTLEVBQVRBO0VBQ0YsQ0FBQztBQUNIO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0Usb0JBQW9CQSxDQUNsQ0gsUUFBZSxFQUNmSSxHQUFtQixFQUNuQkMsSUFBWSxFQUNaQyxLQUFVLEVBQ29GO0VBQzlGLE9BQU87SUFDTFYsSUFBSSxFQUFFQyx1QkFBVyxDQUFDVSx1QkFBdUI7SUFDekNQLFFBQVEsRUFBUkEsUUFBUTtJQUNSSSxHQUFHLEVBQUhBLEdBQUc7SUFDSEMsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLEtBQUssRUFBTEE7RUFDRixDQUFDO0FBQ0g7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsZUFBZUEsQ0FDN0JSLFFBQWUsRUFDZlMsT0FBZ0IsRUFDb0U7RUFDcEYsT0FBTztJQUNMYixJQUFJLEVBQUVDLHVCQUFXLENBQUNhLGtCQUFrQjtJQUNwQ1YsUUFBUSxFQUFSQSxRQUFRO0lBQ1JTLE9BQU8sRUFBUEE7RUFDRixDQUFDO0FBQ0g7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLGVBQWVBLENBQzdCWCxRQUFlLEVBQ2ZZLE9BQWUsRUFDb0U7RUFDbkYsT0FBTztJQUNMaEIsSUFBSSxFQUFFQyx1QkFBVyxDQUFDZ0IsaUJBQWlCO0lBQ25DYixRQUFRLEVBQVJBLFFBQVE7SUFDUlksT0FBTyxFQUFQQTtFQUNGLENBQUM7QUFDSDtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLDhCQUE4QkEsQ0FDNUNkLFFBQWUsRUFDZkMsU0FBbUMsRUFDbkNjLE9BQWUsRUFDZkMsWUFBc0MsRUFJdEM7RUFDQSxPQUFPO0lBQ0xwQixJQUFJLEVBQUVDLHVCQUFXLENBQUNvQiwyQkFBMkI7SUFDN0NqQixRQUFRLEVBQVJBLFFBQVE7SUFDUkMsU0FBUyxFQUFUQSxTQUFTO0lBQ1RjLE9BQU8sRUFBUEEsT0FBTztJQUNQQyxZQUFZLEVBQVpBO0VBQ0YsQ0FBQztBQUNIO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLG9CQUFvQkEsQ0FDbENsQixRQUFlLEVBQ2ZnQixZQUFxQyxFQUN5RDtFQUM5RixPQUFPO0lBQ0xwQixJQUFJLEVBQUVDLHVCQUFXLENBQUNzQix1QkFBdUI7SUFDekNuQixRQUFRLEVBQVJBLFFBQVE7SUFDUmdCLFlBQVksRUFBWkE7RUFDRixDQUFDO0FBQ0g7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSSxrQkFBa0JBLENBQ2hDcEIsUUFBZSxFQUNmSyxJQUFZLEVBQ1pKLFNBQWlDLEVBQ3lEO0VBQzFGLE9BQU87SUFDTEwsSUFBSSxFQUFFQyx1QkFBVyxDQUFDd0IscUJBQXFCO0lBQ3ZDckIsUUFBUSxFQUFSQSxRQUFRO0lBQ1JLLElBQUksRUFBSkEsSUFBSTtJQUNKSixTQUFTLEVBQVRBO0VBQ0YsQ0FBQztBQUNIO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTcUIsbUJBQW1CQSxDQUNqQ0MsSUFBMkMsRUFDZ0Q7RUFDM0YsT0FBTztJQUNMM0IsSUFBSSxFQUFFQyx1QkFBVyxDQUFDMkIscUJBQXFCO0lBQ3ZDRCxJQUFJLEVBQUpBO0VBQ0YsQ0FBQztBQUNIO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxxQkFBcUJBLENBQ25DRixJQUFvQyxFQUMyRDtFQUMvRixPQUFPO0lBQ0wzQixJQUFJLEVBQUVDLHVCQUFXLENBQUM2Qix1QkFBdUI7SUFDekNILElBQUksRUFBSkE7RUFDRixDQUFDO0FBQ0g7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNJLHVCQUF1QkEsQ0FDckNDLE1BQWtDLEVBSWxDO0VBQ0EsT0FBTztJQUNMaEMsSUFBSSxFQUFFQyx1QkFBVyxDQUFDZ0MseUJBQXlCO0lBQzNDRCxNQUFNLEVBQU5BO0VBQ0YsQ0FBQztBQUNIO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsU0FBU0EsQ0FDdkIxQixHQUFXLEVBQ1hDLElBQXVCLEVBQ3ZCQyxLQUFVLEVBQ1Z5QixVQUFtQixFQUNtRDtFQUN0RSxPQUFPO0lBQ0xuQyxJQUFJLEVBQUVDLHVCQUFXLENBQUNtQyxVQUFVO0lBQzVCNUIsR0FBRyxFQUFIQSxHQUFHO0lBQ0hDLElBQUksRUFBSkEsSUFBSTtJQUNKQyxLQUFLLEVBQUxBLEtBQUs7SUFDTHlCLFVBQVUsRUFBVkE7RUFDRixDQUFDO0FBQ0g7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLHNCQUFzQkEsQ0FDcEM3QixHQUFXLEVBQ1hDLElBQVksRUFDWkMsS0FBVSxFQUNWeUIsVUFBbUIsRUFJbkI7RUFDQSxPQUFPO0lBQ0xuQyxJQUFJLEVBQUVDLHVCQUFXLENBQUNxQyx5QkFBeUI7SUFDM0M5QixHQUFHLEVBQUhBLEdBQUc7SUFDSEMsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLEtBQUssRUFBTEEsS0FBSztJQUNMeUIsVUFBVSxFQUFWQTtFQUNGLENBQUM7QUFDSDtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSSx3QkFBd0JBLENBQUFDLElBQUEsRUFNdEM7RUFBQSxJQUxBQyxFQUFFLEdBQUFELElBQUEsQ0FBRkMsRUFBRTtJQUNGQyxlQUFlLEdBQUFGLElBQUEsQ0FBZkUsZUFBZTtFQUtmLE9BQU87SUFDTDFDLElBQUksRUFBRUMsdUJBQVcsQ0FBQzBDLDJCQUEyQjtJQUM3Q0YsRUFBRSxFQUFGQSxFQUFFO0lBQ0ZDLGVBQWUsRUFBZkE7RUFDRixDQUFDO0FBQ0g7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsU0FBU0EsQ0FDdkJDLE1BQXFCLEVBQ3JCSixFQUFXLEVBQzJEO0VBQ3RFLE9BQU87SUFDTHpDLElBQUksRUFBRUMsdUJBQVcsQ0FBQzZDLFVBQVU7SUFDNUJELE1BQU0sRUFBTkEsTUFBTTtJQUNOSixFQUFFLEVBQUZBO0VBQ0YsQ0FBQztBQUNIO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTTSxvQkFBb0JBLENBQ2xDTixFQUFXLEVBQ1hJLE1BQTBCLEVBQzFCRyxLQUF5QixFQUN6QnRDLEtBQVcsRUFDbUY7RUFDOUYsT0FBTztJQUNMVixJQUFJLEVBQUVDLHVCQUFXLENBQUNnRCx1QkFBdUI7SUFDekNSLEVBQUUsRUFBRkEsRUFBRTtJQUNGSSxNQUFNLEVBQU5BLE1BQU07SUFDTkcsS0FBSyxFQUFMQSxLQUFLO0lBQ0x0QyxLQUFLLEVBQUxBO0VBQ0YsQ0FBQztBQUNIO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVN3QyxRQUFRQSxDQUN0QmxCLE1BQWUsRUFDZm1CLFNBQWtCLEVBQ2tEO0VBQ3BFLE9BQU87SUFDTG5ELElBQUksRUFBRUMsdUJBQVcsQ0FBQ21ELFNBQVM7SUFDM0JwQixNQUFNLEVBQU5BLE1BQU07SUFDTm1CLFNBQVMsRUFBVEE7RUFDRixDQUFDO0FBQ0g7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxZQUFZQSxDQUMxQkMsS0FBZSxFQUM2RDtFQUM1RSxPQUFPO0lBQ0x0RCxJQUFJLEVBQUVDLHVCQUFXLENBQUNzRCxhQUFhO0lBQy9CRCxLQUFLLEVBQUxBO0VBQ0YsQ0FBQztBQUNIO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxZQUFZQSxDQUMxQmhELEdBQVcsRUFDaUU7RUFDNUUsT0FBTztJQUNMUixJQUFJLEVBQUVDLHVCQUFXLENBQUN3RCxhQUFhO0lBQy9CakQsR0FBRyxFQUFIQTtFQUNGLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU2tELFdBQVdBLENBQ3pCakIsRUFBVSxFQUNnRTtFQUMxRSxPQUFPO0lBQ0x6QyxJQUFJLEVBQUVDLHVCQUFXLENBQUMwRCxZQUFZO0lBQzlCbEIsRUFBRSxFQUFGQTtFQUNGLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU21CLGNBQWNBLENBQzVCbkIsRUFBVSxFQUNzRTtFQUNoRixPQUFPO0lBQ0x6QyxJQUFJLEVBQUVDLHVCQUFXLENBQUM0RCxlQUFlO0lBQ2pDcEIsRUFBRSxFQUFGQTtFQUNGLENBQUM7QUFDSDtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU3FCLFNBQVNBLENBQ3ZCOUIsTUFBMEIsRUFDNEM7RUFDdEUsT0FBTztJQUNMaEMsSUFBSSxFQUFFQyx1QkFBVyxDQUFDOEQsVUFBVTtJQUM1Qi9CLE1BQU0sRUFBTkE7RUFDRixDQUFDO0FBQ0g7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNnQyxhQUFhQSxDQUMzQlYsS0FBZSxFQUMrRDtFQUM5RSxPQUFPO0lBQ0x0RCxJQUFJLEVBQUVDLHVCQUFXLENBQUNnRSxjQUFjO0lBQ2hDWCxLQUFLLEVBQUxBO0VBQ0YsQ0FBQztBQUNIO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTWSxZQUFZQSxDQUMxQnpCLEVBQVUsRUFDa0U7RUFDNUUsT0FBTztJQUNMekMsSUFBSSxFQUFFQyx1QkFBVyxDQUFDa0UsYUFBYTtJQUMvQjFCLEVBQUUsRUFBRkE7RUFDRixDQUFDO0FBQ0g7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVMyQixZQUFZQSxDQUMxQjNCLEVBQVUsRUFDVjRCLEtBQXlCLEVBQ21EO0VBQzVFLE9BQU87SUFDTHJFLElBQUksRUFBRUMsdUJBQVcsQ0FBQ3FFLGFBQWE7SUFDL0I3QixFQUFFLEVBQUZBLEVBQUU7SUFDRjRCLEtBQUssRUFBTEE7RUFDRixDQUFDO0FBQ0g7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLGFBQWFBLENBQzNCMUIsTUFBYyxFQUNnRTtFQUM5RSxPQUFPO0lBQ0w3QyxJQUFJLEVBQUVDLHVCQUFXLENBQUN1RSxjQUFjO0lBQ2hDM0IsTUFBTSxFQUFOQTtFQUNGLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBUzRCLGdCQUFnQkEsQ0FDOUI1QixNQUFjLEVBQ3VFO0VBQ3JGLE9BQU87SUFDTDdDLElBQUksRUFBRUMsdUJBQVcsQ0FBQ3lFLGtCQUFrQjtJQUNwQzdCLE1BQU0sRUFBTkE7RUFDRixDQUFDO0FBQ0g7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBUzhCLGdCQUFnQkEsQ0FDOUI5QixNQUFjLEVBQ2QrQixRQUFrQixFQUMrRDtFQUNqRixPQUFPO0lBQ0w1RSxJQUFJLEVBQUVDLHVCQUFXLENBQUM0RSxrQkFBa0I7SUFDcENoQyxNQUFNLEVBQU5BLE1BQU07SUFDTitCLFFBQVEsRUFBUkE7RUFDRixDQUFDO0FBQ0g7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxlQUFlQSxDQUM3QmpDLE1BQWMsRUFDZGtDLE1BQWMsRUFDZHBELElBQWEsRUFDc0U7RUFDbkYsT0FBTztJQUNMM0IsSUFBSSxFQUFFQyx1QkFBVyxDQUFDK0UsaUJBQWlCO0lBQ25DbkMsTUFBTSxFQUFOQSxNQUFNO0lBQ05rQyxNQUFNLEVBQU5BLE1BQU07SUFDTnBELElBQUksRUFBSkE7RUFDRixDQUFDO0FBQ0g7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNzRCxjQUFjQSxDQUM1QnBDLE1BQWMsRUFDZGtDLE1BQWMsRUFDbUU7RUFDakYsT0FBTztJQUNML0UsSUFBSSxFQUFFQyx1QkFBVyxDQUFDaUYsZ0JBQWdCO0lBQ2xDckMsTUFBTSxFQUFOQSxNQUFNO0lBQ05rQyxNQUFNLEVBQU5BO0VBQ0YsQ0FBQztBQUNIO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSSxlQUFlQSxDQUM3QnRDLE1BQWMsRUFDZGtDLE1BQWMsRUFDcUU7RUFDbkYsT0FBTztJQUNML0UsSUFBSSxFQUFFQyx1QkFBVyxDQUFDbUYsaUJBQWlCO0lBQ25DdkMsTUFBTSxFQUFOQSxNQUFNO0lBQ05rQyxNQUFNLEVBQU5BO0VBQ0YsQ0FBQztBQUNIO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTTSxzQkFBc0JBLENBQ3BDeEMsTUFBcUQsRUFDckR5QyxPQUF1RCxFQUl2RDtFQUNBLE9BQU87SUFDTHRGLElBQUksRUFBRUMsdUJBQVcsQ0FBQ3NGLHlCQUF5QjtJQUMzQzFDLE1BQU0sRUFBTkEsTUFBTTtJQUNOeUMsT0FBTyxFQUFQQTtFQUNGLENBQUM7QUFDSDtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLGFBQWFBLENBQzNCQyxRQUF5QyxFQUN6Q0MsT0FBdUMsRUFDdkMxRCxNQUFxQixFQUMwRDtFQUMvRSxPQUFPO0lBQ0xoQyxJQUFJLEVBQUVDLHVCQUFXLENBQUMwRixlQUFlO0lBQ2pDRixRQUFRLEVBQVJBLFFBQVE7SUFDUkMsT0FBTyxFQUFQQSxPQUFPO0lBQ1AxRCxNQUFNLEVBQU5BO0VBQ0YsQ0FBQztBQUNIO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVM0RCxhQUFhQSxDQUMzQi9DLE1BQWMsRUFDZGdELEtBQWEsRUFDaUU7RUFDOUUsT0FBTztJQUNMN0YsSUFBSSxFQUFFQyx1QkFBVyxDQUFDNkYsY0FBYztJQUNoQ2pELE1BQU0sRUFBTkEsTUFBTTtJQUNOZ0QsS0FBSyxFQUFMQTtFQUNGLENBQUM7QUFDSDtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLGtCQUFrQkEsQ0FDaENsRCxNQUFjLEVBQ2R3QixLQUlDLEVBQ3dGO0VBQ3pGLE9BQU87SUFDTHJFLElBQUksRUFBRUMsdUJBQVcsQ0FBQytGLG9CQUFvQjtJQUN0Q25ELE1BQU0sRUFBTkEsTUFBTTtJQUNOd0IsS0FBSyxFQUFMQTtFQUNGLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBUzRCLHFCQUFxQkEsQ0FDbkN6RixHQUFXLEVBQ29GO0VBQy9GLE9BQU87SUFDTFIsSUFBSSxFQUFFQyx1QkFBVyxDQUFDaUcsdUJBQXVCO0lBQ3pDMUYsR0FBRyxFQUFIQTtFQUNGLENBQUM7QUFDSDtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTMkYsMEJBQTBCQSxDQUN4QzNGLEdBQVcsRUFDWDRGLEtBQWEsRUFJYjtFQUNBLE9BQU87SUFDTHBHLElBQUksRUFBRUMsdUJBQVcsQ0FBQ29HLDZCQUE2QjtJQUMvQzdGLEdBQUcsRUFBSEEsR0FBRztJQUNINEYsS0FBSyxFQUFMQTtFQUNGLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UscUJBQXFCQSxDQUNuQzVGLEtBQWEsRUFDbUY7RUFDaEcsT0FBTztJQUNMVixJQUFJLEVBQUVDLHVCQUFXLENBQUNzRyx3QkFBd0I7SUFDMUM3RixLQUFLLEVBQUxBO0VBQ0YsQ0FBQztBQUNIO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTOEYseUJBQXlCQSxDQUN2Q0osS0FBYSxFQUliO0VBQ0EsT0FBTztJQUNMcEcsSUFBSSxFQUFFQyx1QkFBVyxDQUFDd0csNEJBQTRCO0lBQzlDTCxLQUFLLEVBQUxBO0VBQ0YsQ0FBQztBQUNIO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU00sb0JBQW9CQSxDQUFBLEVBR2xDO0VBQ0EsT0FBTztJQUNMMUcsSUFBSSxFQUFFQyx1QkFBVyxDQUFDMEc7RUFDcEIsQ0FBQztBQUNIO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsMkJBQTJCQSxDQUFBLEVBR3pDO0VBQ0EsT0FBTztJQUNMNUcsSUFBSSxFQUFFQyx1QkFBVyxDQUFDNEc7RUFDcEIsQ0FBQztBQUNIO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGFBQWFBLENBQzNCdEcsR0FBVyxFQUNYdUcsSUFBb0IsRUFDMkQ7RUFDL0UsT0FBTztJQUNML0csSUFBSSxFQUFFQyx1QkFBVyxDQUFDK0csZUFBZTtJQUNqQ3hHLEdBQUcsRUFBSEEsR0FBRztJQUNIdUcsSUFBSSxFQUFKQTtFQUNGLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLG1CQUFtQkEsQ0FDakN6RyxHQUFXLEVBQ2dGO0VBQzNGLE9BQU87SUFDTFIsSUFBSSxFQUFFQyx1QkFBVyxDQUFDaUgscUJBQXFCO0lBQ3ZDMUcsR0FBRyxFQUFIQTtFQUNGLENBQUM7QUFDSDtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTMkcsWUFBWUEsQ0FDMUJDLElBQTBCLEVBQzFCQyxRQUFpQixFQUN5RDtFQUMxRSxPQUFPO0lBQ0xySCxJQUFJLEVBQUVDLHVCQUFXLENBQUNxSCxXQUFXO0lBQzdCRixJQUFJLEVBQUpBLElBQUk7SUFDSkMsUUFBUSxFQUFSQTtFQUNGLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsWUFBWUEsQ0FDMUJILElBQTBCLEVBQ2dEO0VBQzFFLE9BQU87SUFDTHBILElBQUksRUFBRUMsdUJBQVcsQ0FBQ3VILFdBQVc7SUFDN0JKLElBQUksRUFBSkE7RUFDRixDQUFDO0FBQ0g7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSyxVQUFVQSxDQUFBLEVBQXlFO0VBQ2pHLE9BQU87SUFDTHpILElBQUksRUFBRUMsdUJBQVcsQ0FBQ3lIO0VBQ3BCLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsV0FBV0EsQ0FDekJDLEdBQUcsRUFDcUU7RUFDeEUsT0FBTztJQUNMNUgsSUFBSSxFQUFFQyx1QkFBVyxDQUFDNEgsVUFBVTtJQUM1QkQsR0FBRyxFQUFIQTtFQUNGLENBQUM7QUFDSDtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxpQkFBaUJBLENBQy9CVCxRQUFnQixFQUNoQlUsT0FBZSxFQUN5RTtFQUN4RixPQUFPO0lBQ0wvSCxJQUFJLEVBQUVDLHVCQUFXLENBQUMrSCxvQkFBb0I7SUFDdENYLFFBQVEsRUFBUkEsUUFBUTtJQUNSVSxPQUFPLEVBQVBBO0VBQ0YsQ0FBQztBQUNIO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsYUFBYUEsQ0FDM0J6SCxHQUFXLEVBQ1gwSCxPQUEwQixFQUMxQi9GLFVBQW1CLEVBQzREO0VBQy9FLE9BQU87SUFDTG5DLElBQUksRUFBRUMsdUJBQVcsQ0FBQ2tJLGVBQWU7SUFDakMzSCxHQUFHLEVBQUhBLEdBQUc7SUFDSDBILE9BQU8sRUFBUEEsT0FBTztJQUNQL0YsVUFBVSxFQUFWQTtFQUNGLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU2lHLFVBQVVBLENBQ3hCaEIsSUFBUyxFQUNnRTtFQUN6RSxPQUFPO0lBQ0xwSCxJQUFJLEVBQUVDLHVCQUFXLENBQUNvSSxZQUFZO0lBQzlCakIsSUFBSSxFQUFKQTtFQUNGLENBQUM7QUFDSDtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU2tCLFNBQVNBLENBQ3ZCQyxLQUFhLEVBQ2JDLFFBQStCLEVBQ3VDO0VBQ3RFLE9BQU87SUFDTHhJLElBQUksRUFBRUMsdUJBQVcsQ0FBQ3dJLFVBQVU7SUFDNUJGLEtBQUssRUFBTEEsS0FBSztJQUNMQyxRQUFRLEVBQVJBO0VBQ0YsQ0FBQztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLFlBQVlBLENBQUEsRUFBOEM7RUFDeEUsT0FBTztJQUNMMUksSUFBSSxFQUFFQyx1QkFBVyxDQUFDMEk7RUFDcEIsQ0FBQztBQUNIO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsZ0JBQWdCQSxDQUM5QkMsTUFBdUIsRUFDOEQ7RUFDckYsT0FBTztJQUNMN0ksSUFBSSxFQUFFQyx1QkFBVyxDQUFDNkksa0JBQWtCO0lBQ3BDRCxNQUFNLEVBQU5BO0VBQ0YsQ0FBQztBQUNIO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsbUJBQW1CQSxDQUFBQyxLQUFBLEVBTXFEO0VBQUEsSUFMdEZDLFFBQVEsR0FBQUQsS0FBQSxDQUFSQyxRQUFRO0lBQ1JDLFNBQVMsR0FBQUYsS0FBQSxDQUFURSxTQUFTO0VBS1QsT0FBTztJQUNMbEosSUFBSSxFQUFFQyx1QkFBVyxDQUFDa0osc0JBQXNCO0lBQ3hDRixRQUFRLEVBQVJBLFFBQVE7SUFDUkMsU0FBUyxFQUFUQTtFQUNGLENBQUM7QUFDSDtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPLFNBQVNFLFlBQVlBLENBQzFCSCxRQUFnQixFQUNoQkksS0FBVSxFQUNtRTtFQUM3RSxPQUFPO0lBQ0xySixJQUFJLEVBQUVDLHVCQUFXLENBQUNxSixjQUFjO0lBQ2hDTCxRQUFRLEVBQVJBLFFBQVE7SUFDUkksS0FBSyxFQUFMQTtFQUNGLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLFdBQVdBLENBQ3pCQyxRQUFtQixFQUN1RDtFQUMxRSxPQUFPO0lBQ0x4SixJQUFJLEVBQUVDLHVCQUFXLENBQUN3SixZQUFZO0lBQzlCRCxRQUFRLEVBQVJBO0VBQ0YsQ0FBQztBQUNIO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLHFCQUFxQkEsQ0FDbkNDLEtBQVksRUFDWkMsT0FBZ0IsRUFDZ0Y7RUFDaEcsT0FBTztJQUNMNUosSUFBSSxFQUFFQyx1QkFBVyxDQUFDNEosd0JBQXdCO0lBQzFDRixLQUFLLEVBQUxBLEtBQUs7SUFDTEMsT0FBTyxFQUFQQTtFQUNGLENBQUM7QUFDSDtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxrQkFBa0JBLENBQ2hDRixPQUF1QixFQUN2QkcsZ0JBQTBDLEVBQytDO0VBQ3pGLE9BQU87SUFDTC9KLElBQUksRUFBRUMsdUJBQVcsQ0FBQytKLG9CQUFvQjtJQUN0Q0osT0FBTyxFQUFQQSxPQUFPO0lBQ1BHLGdCQUFnQixFQUFoQkE7RUFDRixDQUFDO0FBQ0g7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxhQUFhQSxDQUMzQkwsT0FBZ0IsRUFDOEQ7RUFDOUUsT0FBTztJQUNMNUosSUFBSSxFQUFFQyx1QkFBVyxDQUFDaUssY0FBYztJQUNoQ04sT0FBTyxFQUFQQTtFQUNGLENBQUM7QUFDSDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTTyxhQUFhQSxDQUMzQnhJLElBQVksRUFDbUU7RUFDL0UsT0FBTztJQUNMM0IsSUFBSSxFQUFFQyx1QkFBVyxDQUFDbUssZUFBZTtJQUNqQ3pJLElBQUksRUFBSkE7RUFDRixDQUFDO0FBQ0g7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVMwSSxjQUFjQSxDQUM1QnhILE1BQXlCLEVBQ3dEO0VBQ2pGLE9BQU87SUFDTDdDLElBQUksRUFBRUMsdUJBQVcsQ0FBQ3FLLGdCQUFnQjtJQUNsQ3pILE1BQU0sRUFBTkE7RUFDRixDQUFDO0FBQ0g7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBUzBILHNCQUFzQkEsQ0FBQSxFQUdwQztFQUNBLE9BQU87SUFDTHZLLElBQUksRUFBRUMsdUJBQVcsQ0FBQ3VLO0VBQ3BCLENBQUM7QUFDSDtBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyxhQUFhQSxDQUMzQkMsT0FBOEMsRUFDaUM7RUFDL0UsT0FBTztJQUNMMUssSUFBSSxFQUFFQyx1QkFBVyxDQUFDMEssZUFBZTtJQUNqQ0QsT0FBTyxFQUFQQTtFQUNGLENBQUM7QUFDSDtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLGtCQUFrQkEsQ0FDaENGLE9BQW1ELEVBQ3NDO0VBQ3pGLE9BQU87SUFDTDFLLElBQUksRUFBRUMsdUJBQVcsQ0FBQzRLLG9CQUFvQjtJQUN0Q0gsT0FBTyxFQUFQQTtFQUNGLENBQUM7QUFDSDtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNJLDJCQUEyQkEsQ0FDekM5SSxNQUFtRCxFQUluRDtFQUNBLE9BQU87SUFDTGhDLElBQUksRUFBRUMsdUJBQVcsQ0FBQzhLLCtCQUErQjtJQUNqRC9JLE1BQU0sRUFBTkE7RUFDRixDQUFDO0FBQ0g7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNnSiw0QkFBNEJBLENBQzFDeEssR0FBOEMsRUFDOUN3QixNQUFvRCxFQUlwRDtFQUNBLE9BQU87SUFDTGhDLElBQUksRUFBRUMsdUJBQVcsQ0FBQ2dMLGdDQUFnQztJQUNsRHpLLEdBQUcsRUFBSEEsR0FBRztJQUNId0IsTUFBTSxFQUFOQTtFQUNGLENBQUM7QUFDSDtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU2tKLHdCQUF3QkEsQ0FDdEN2QixLQUE4QyxFQUM5Q3dCLEtBQThDLEVBQ2lEO0VBQy9GLE9BQU87SUFDTG5MLElBQUksRUFBRUMsdUJBQVcsQ0FBQ21MLDJCQUEyQjtJQUM3Q3pCLEtBQUssRUFBTEEsS0FBSztJQUNMd0IsS0FBSyxFQUFMQTtFQUNGLENBQUM7QUFDSDtBQU9PLFNBQVNFLCtCQUErQkEsQ0FDN0M3SyxHQUFpRCxFQUNqRDhLLE1BQXVELEVBSXZEO0VBQ0EsT0FBTztJQUNMdEwsSUFBSSxFQUFFQyx1QkFBVyxDQUFDc0wsb0NBQW9DO0lBQ3REL0ssR0FBRyxFQUFIQSxHQUFHO0lBQ0g4SyxNQUFNLEVBQU5BO0VBQ0YsQ0FBQztBQUNIO0FBT08sU0FBU0UsNkJBQTZCQSxDQUFBQyxLQUFBLEVBTTNDO0VBQUEsSUFMQWhKLEVBQUUsR0FBQWdKLEtBQUEsQ0FBRmhKLEVBQUU7SUFDRmQsSUFBSSxHQUFBOEosS0FBQSxDQUFKOUosSUFBSTtFQUtKLE9BQU87SUFDTDNCLElBQUksRUFBRUMsdUJBQVcsQ0FBQ3lMLDhCQUE4QjtJQUNoRGpKLEVBQUUsRUFBRkEsRUFBRTtJQUNGZCxJQUFJLEVBQUpBO0VBQ0YsQ0FBQztBQUNIO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTWdLLHVCQUF1QixHQUFBQyxPQUFBLENBQUFELHVCQUFBLEdBQUcsSUFBQUUscUJBQVksRUFDakQ1TCx1QkFBVyxDQUFDNkwsMEJBQ2QsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxlQUFlLEdBQUcsSUFBSTtBQUM1QiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/actions",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.0-alpha.2",
4
+ "version": "3.1.0-alpha.3",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -31,11 +31,13 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@deck.gl/core": "^8.9.27",
34
- "@kepler.gl/cloud-providers": "3.1.0-alpha.2",
35
- "@kepler.gl/constants": "3.1.0-alpha.2",
36
- "@kepler.gl/layers": "3.1.0-alpha.2",
37
- "@kepler.gl/processors": "3.1.0-alpha.2",
38
- "@kepler.gl/types": "3.1.0-alpha.2",
34
+ "@kepler.gl/cloud-providers": "3.1.0-alpha.3",
35
+ "@kepler.gl/constants": "3.1.0-alpha.3",
36
+ "@kepler.gl/layers": "3.1.0-alpha.3",
37
+ "@kepler.gl/processors": "3.1.0-alpha.3",
38
+ "@kepler.gl/table": "3.1.0-alpha.3",
39
+ "@kepler.gl/types": "3.1.0-alpha.3",
40
+ "@kepler.gl/utils": "3.1.0-alpha.3",
39
41
  "@reduxjs/toolkit": "^1.7.2",
40
42
  "@types/lodash.curry": "^4.1.7",
41
43
  "@types/react-redux": "^7.1.23",
@@ -6,6 +6,7 @@ import {PickInfo} from '@deck.gl/core/lib/deck';
6
6
  import {default as ActionTypes} from './action-types';
7
7
  import {FileCacheItem} from '@kepler.gl/processors';
8
8
  import {Layer, LayerBaseConfig} from '@kepler.gl/layers';
9
+ import {KeplerTable} from '@kepler.gl/table';
9
10
  import {
10
11
  AddDataToMapPayload,
11
12
  ValueOf,
@@ -25,7 +26,6 @@ import {
25
26
  } from '@kepler.gl/types';
26
27
  import {createAction} from '@reduxjs/toolkit';
27
28
 
28
- import {KeplerTable} from '@kepler.gl/table';
29
29
  // TODO - import LoaderObject type from @loaders.gl/core when supported
30
30
  // TODO - import LoadOptions type from @loaders.gl/core when supported
31
31
 
@@ -1598,7 +1598,7 @@ export function setTimeFilterSyncTimelineMode({
1598
1598
  }
1599
1599
 
1600
1600
  export type CreateNewDatasetSuccessPayload = {
1601
- results: (PromiseFulfilledResult<KeplerTable<any>> | PromiseRejectedResult)[];
1601
+ results: (PromiseFulfilledResult<KeplerTable> | PromiseRejectedResult)[];
1602
1602
  addToMapOptions: AddDataToMapPayload['options'];
1603
1603
  };
1604
1604