kepler.gl 3.1.0-alpha.7 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/components/src/common/data-table/index.d.ts +1 -1
- package/dist/src/components/src/common/data-table/option-dropdown.d.ts +3 -3
- package/dist/src/components/src/kepler-gl.d.ts +1 -0
- package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -0
- package/dist/src/reducers/src/vis-state.d.ts +4 -0
- package/dist/src/utils/src/application-config.d.ts +2 -0
- package/package.json +3 -2
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/dist/components/ai-assistant-config.js +66 -53
- package/src/ai-assistant/package.json +10 -9
- package/src/ai-assistant/src/components/ai-assistant-config.tsx +62 -48
- package/src/ai-assistant/src/config/models.json +32 -0
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/common/data-table/header-cell.js +10 -10
- package/src/components/dist/common/data-table/index.d.ts +1 -1
- package/src/components/dist/common/data-table/index.js +1 -1
- package/src/components/dist/common/data-table/option-dropdown.d.ts +3 -3
- package/src/components/dist/common/data-table/option-dropdown.js +5 -5
- package/src/components/dist/kepler-gl.d.ts +1 -0
- package/src/components/dist/modals/save-map-modal.js +4 -3
- package/src/components/package.json +15 -15
- package/src/components/src/common/data-table/header-cell.tsx +5 -3
- package/src/components/src/common/data-table/index.tsx +1 -1
- package/src/components/src/common/data-table/option-dropdown.tsx +7 -7
- package/src/components/src/modals/save-map-modal.tsx +6 -2
- package/src/constants/dist/default-settings.js +8 -5
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/72/80/7a7c561d7985e92aab7b9683e7baf5a0286b353a8f2609c4c71099f668d012be027929e4bbac937f9aa0c9a61be3bd4405136f582895f05aa0313c8efa42 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/f0/6e/aadf3c48345aa72e7b2fb92e8c9788d04986b55caf83daa3fbd749c37c44 +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/src/default-settings.ts +8 -3
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +1 -1
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/dist/components/preview-data-panel.js +2 -9
- package/src/duckdb/dist/components/sql-panel.js +2 -2
- package/src/duckdb/dist/plugin.js +8 -2
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/components/preview-data-panel.tsx +0 -3
- package/src/duckdb/src/components/sql-panel.tsx +1 -1
- package/src/duckdb/src/plugin.ts +7 -1
- package/src/effects/package.json +5 -5
- package/src/layers/dist/index.d.ts +3 -0
- package/src/layers/dist/index.js +6 -7
- package/src/layers/package.json +9 -9
- package/src/layers/src/index.ts +5 -5
- package/src/localization/package.json +1 -1
- package/src/processors/package.json +7 -7
- package/src/reducers/dist/vis-state-updaters.d.ts +1 -0
- package/src/reducers/dist/vis-state-updaters.js +2 -2
- package/src/reducers/dist/vis-state.d.ts +4 -0
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/vis-state-updaters.ts +5 -2
- package/src/schemas/dist/dataset-schema.js +32 -2
- package/src/schemas/package.json +8 -7
- package/src/schemas/src/dataset-schema.ts +34 -1
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/5f/aa/96c67b383dbcd2b95625113a5389c6078fd8a53e6fc73a054229709f2dac1e0a409e7117049485a569fbebf8434a319451842671398904bfe1a7f7b5991c +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c1/39/f7cd1d5947ec6e5d82bfa07041271344eb02f9e67bf5823acf2f22c2d01f +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/package.json +5 -5
- package/src/tasks/package.json +2 -2
- package/src/types/package.json +1 -1
- package/src/utils/dist/application-config.d.ts +2 -0
- package/src/utils/dist/application-config.js +4 -2
- package/src/utils/package.json +4 -4
- package/src/utils/src/application-config.ts +9 -1
- package/umd/keplergl.min.js +1151 -1149
|
@@ -63,7 +63,7 @@ export interface DataTableProps {
|
|
|
63
63
|
sortColumn: SortColumn;
|
|
64
64
|
sortTableColumn: (column: string, mode?: string) => void;
|
|
65
65
|
pinTableColumn: (column: string) => void;
|
|
66
|
-
setColumnDisplayFormat
|
|
66
|
+
setColumnDisplayFormat?: (formats: {
|
|
67
67
|
[key: string]: string;
|
|
68
68
|
}) => void;
|
|
69
69
|
copyTableColumn: (column: string) => void;
|
|
@@ -6,7 +6,7 @@ export declare type FormatterDropdownProps = {
|
|
|
6
6
|
top: number;
|
|
7
7
|
isOpened: boolean;
|
|
8
8
|
displayFormat?: string;
|
|
9
|
-
setDisplayFormat
|
|
9
|
+
setDisplayFormat?: (displayFormat: TooltipFormat) => void;
|
|
10
10
|
onClose: () => void;
|
|
11
11
|
formatLabels: TooltipFormat[];
|
|
12
12
|
};
|
|
@@ -16,10 +16,10 @@ export interface OptionDropdownProps {
|
|
|
16
16
|
column: string;
|
|
17
17
|
colMeta: ColMeta;
|
|
18
18
|
toggleMoreOptions: (column: string) => void;
|
|
19
|
-
sortTableColumn
|
|
19
|
+
sortTableColumn?: (sort: string) => void;
|
|
20
20
|
pinTableColumn: () => void;
|
|
21
21
|
copyTableColumn: () => void;
|
|
22
|
-
setDisplayFormat
|
|
22
|
+
setDisplayFormat?: (displayFormat: any) => void;
|
|
23
23
|
sortMode?: string;
|
|
24
24
|
isSorted?: string;
|
|
25
25
|
isPinned?: boolean;
|
|
@@ -82,6 +82,7 @@ export declare const sidePanelSelector: (props: KeplerGLProps, availableProvider
|
|
|
82
82
|
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
83
83
|
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
84
84
|
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
85
|
+
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
85
86
|
};
|
|
86
87
|
interactionConfig: import("@kepler.gl/types").InteractionConfig;
|
|
87
88
|
mapInfo: import("@kepler.gl/types").MapInfo;
|
|
@@ -217,6 +217,7 @@ export declare const setFilterViewUpdater: (state: VisState, action: VisStateAct
|
|
|
217
217
|
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
218
218
|
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
219
219
|
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
220
|
+
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
220
221
|
};
|
|
221
222
|
animationConfig: AnimationConfig;
|
|
222
223
|
editor: Editor;
|
|
@@ -32,6 +32,7 @@ export declare const visStateReducerFactory: (initialState?: {}) => import("redu
|
|
|
32
32
|
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
33
33
|
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
34
34
|
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
35
|
+
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
35
36
|
};
|
|
36
37
|
animationConfig: import("@kepler.gl/types").AnimationConfig;
|
|
37
38
|
editor: import("@kepler.gl/types").Editor;
|
|
@@ -84,6 +85,7 @@ export declare const visStateReducerFactory: (initialState?: {}) => import("redu
|
|
|
84
85
|
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
85
86
|
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
86
87
|
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
88
|
+
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
87
89
|
};
|
|
88
90
|
animationConfig: import("@kepler.gl/types").AnimationConfig;
|
|
89
91
|
editor: import("@kepler.gl/types").Editor;
|
|
@@ -137,6 +139,7 @@ declare const _default: import("redux-actions").ReduxCompatibleReducer<{
|
|
|
137
139
|
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
138
140
|
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
139
141
|
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
142
|
+
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
140
143
|
};
|
|
141
144
|
animationConfig: import("@kepler.gl/types").AnimationConfig;
|
|
142
145
|
editor: import("@kepler.gl/types").Editor;
|
|
@@ -189,6 +192,7 @@ declare const _default: import("redux-actions").ReduxCompatibleReducer<{
|
|
|
189
192
|
"3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
|
|
190
193
|
trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
|
|
191
194
|
s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
|
|
195
|
+
vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
|
|
192
196
|
};
|
|
193
197
|
animationConfig: import("@kepler.gl/types").AnimationConfig;
|
|
194
198
|
editor: import("@kepler.gl/types").Editor;
|
|
@@ -25,6 +25,8 @@ export declare type KeplerApplicationConfig<Map> = {
|
|
|
25
25
|
baseMapLibraryConfig?: Record<BaseMapLibraryType, BaseMapLibraryConfig>;
|
|
26
26
|
plugins?: any[];
|
|
27
27
|
table?: any;
|
|
28
|
+
useArrowProgressiveLoading?: boolean;
|
|
29
|
+
showReleaseBanner?: boolean;
|
|
28
30
|
};
|
|
29
31
|
export declare const getApplicationConfig: () => Required<KeplerApplicationConfig<mapboxgl.Map>>;
|
|
30
32
|
export declare function initApplicationConfig<M>(appConfig?: KeplerApplicationConfig<M>): void;
|
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
|
|
4
|
+
"version": "3.1.0",
|
|
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",
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
"@deck.gl/mapbox": "^8.9.27",
|
|
104
104
|
"@hubble.gl/core": "1.2.0-alpha.6",
|
|
105
105
|
"@hubble.gl/react": "1.2.0-alpha.6",
|
|
106
|
-
"@kepler.gl/components": "3.1.0
|
|
106
|
+
"@kepler.gl/components": "3.1.0",
|
|
107
107
|
"@loaders.gl/polyfills": "^4.3.2",
|
|
108
108
|
"@types/mapbox__geo-viewport": "^0.4.1",
|
|
109
109
|
"html-webpack-plugin": "^4.3.0",
|
|
@@ -211,6 +211,7 @@
|
|
|
211
211
|
"typedoc-plugin-markdown": "^3.0.11",
|
|
212
212
|
"typescript": "4.7.2",
|
|
213
213
|
"url-loader": "^4.1.1",
|
|
214
|
+
"usehooks-ts": "^3.1.0",
|
|
214
215
|
"watchify": "^3.6.1",
|
|
215
216
|
"webpack": "^4.29.0",
|
|
216
217
|
"webpack-bundle-analyzer": "^3.3.2",
|
package/src/actions/package.json
CHANGED
|
@@ -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
|
|
4
|
+
"version": "3.1.0",
|
|
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,13 +31,13 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@deck.gl/core": "^8.9.27",
|
|
34
|
-
"@kepler.gl/cloud-providers": "3.1.0
|
|
35
|
-
"@kepler.gl/constants": "3.1.0
|
|
36
|
-
"@kepler.gl/layers": "3.1.0
|
|
37
|
-
"@kepler.gl/processors": "3.1.0
|
|
38
|
-
"@kepler.gl/table": "3.1.0
|
|
39
|
-
"@kepler.gl/types": "3.1.0
|
|
40
|
-
"@kepler.gl/utils": "3.1.0
|
|
34
|
+
"@kepler.gl/cloud-providers": "3.1.0",
|
|
35
|
+
"@kepler.gl/constants": "3.1.0",
|
|
36
|
+
"@kepler.gl/layers": "3.1.0",
|
|
37
|
+
"@kepler.gl/processors": "3.1.0",
|
|
38
|
+
"@kepler.gl/table": "3.1.0",
|
|
39
|
+
"@kepler.gl/types": "3.1.0",
|
|
40
|
+
"@kepler.gl/utils": "3.1.0",
|
|
41
41
|
"@reduxjs/toolkit": "^1.7.2",
|
|
42
42
|
"@types/lodash.curry": "^4.1.7",
|
|
43
43
|
"@types/react-redux": "^7.1.23",
|
|
@@ -16,15 +16,12 @@ var _reactIntl = require("react-intl");
|
|
|
16
16
|
var _components = require("@kepler.gl/components");
|
|
17
17
|
var _apiKey = _interopRequireDefault(require("../icons/api-key"));
|
|
18
18
|
var _core = require("@openassistant/core");
|
|
19
|
+
var _models = _interopRequireDefault(require("../config/models.json"));
|
|
20
|
+
var _usehooksTs = require("usehooks-ts");
|
|
19
21
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7; // SPDX-License-Identifier: MIT
|
|
20
22
|
// Copyright contributors to the kepler.gl project
|
|
21
23
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
22
24
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
23
|
-
var PROVIDER_MODELS = {
|
|
24
|
-
openai: ['o1-mini', 'o1-preview', 'gpt-4o', 'gpt-4o-mini', 'gpt-3.5-turbo-0125', 'gpt-3.5-turbo'],
|
|
25
|
-
google: ['gemini-2.0-flash-exp', 'gemini-1.5-flash', 'gemini-1.5-pro', 'gemini-1.0-pro'],
|
|
26
|
-
ollama: ['phi4', 'qwen2.5-coder', 'qwq', 'llama3.3', 'llama3.2', 'llama3.1', 'llama3.1:70b', 'qwen2', 'llava', 'mistral', 'gemma2', 'phi3.5']
|
|
27
|
-
};
|
|
28
25
|
var SectionTitle = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n color: ", ";\n text-transform: capitalize;\n"])), function (props) {
|
|
29
26
|
return props.theme.inputFontSize;
|
|
30
27
|
}, function (props) {
|
|
@@ -60,46 +57,46 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
60
57
|
var intl = _ref.intl,
|
|
61
58
|
aiAssistantConfig = _ref.aiAssistantConfig,
|
|
62
59
|
updateAiAssistantConfig = _ref.updateAiAssistantConfig;
|
|
63
|
-
var
|
|
60
|
+
var _useLocalStorage = (0, _usehooksTs.useLocalStorage)('ai-assistant-provider', aiAssistantConfig.provider || 'openai'),
|
|
61
|
+
_useLocalStorage2 = (0, _slicedToArray2["default"])(_useLocalStorage, 2),
|
|
62
|
+
provider = _useLocalStorage2[0],
|
|
63
|
+
setProvider = _useLocalStorage2[1];
|
|
64
|
+
var _useLocalStorage3 = (0, _usehooksTs.useLocalStorage)('ai-assistant-model', aiAssistantConfig.model || _models["default"][provider][0]),
|
|
65
|
+
_useLocalStorage4 = (0, _slicedToArray2["default"])(_useLocalStorage3, 2),
|
|
66
|
+
model = _useLocalStorage4[0],
|
|
67
|
+
setModel = _useLocalStorage4[1];
|
|
68
|
+
var _useLocalStorage5 = (0, _usehooksTs.useLocalStorage)('ai-assistant-api-key', aiAssistantConfig.apiKey || ''),
|
|
69
|
+
_useLocalStorage6 = (0, _slicedToArray2["default"])(_useLocalStorage5, 2),
|
|
70
|
+
apiKey = _useLocalStorage6[0],
|
|
71
|
+
setApiKey = _useLocalStorage6[1];
|
|
72
|
+
var _useLocalStorage7 = (0, _usehooksTs.useLocalStorage)('ai-assistant-temperature', aiAssistantConfig.temperature || 0.8),
|
|
73
|
+
_useLocalStorage8 = (0, _slicedToArray2["default"])(_useLocalStorage7, 2),
|
|
74
|
+
temperature = _useLocalStorage8[0],
|
|
75
|
+
setTemperature = _useLocalStorage8[1];
|
|
76
|
+
var _useLocalStorage9 = (0, _usehooksTs.useLocalStorage)('ai-assistant-top-p', aiAssistantConfig.topP || 0.8),
|
|
77
|
+
_useLocalStorage10 = (0, _slicedToArray2["default"])(_useLocalStorage9, 2),
|
|
78
|
+
topP = _useLocalStorage10[0],
|
|
79
|
+
setTopP = _useLocalStorage10[1];
|
|
80
|
+
var _useLocalStorage11 = (0, _usehooksTs.useLocalStorage)('ai-assistant-base-url', aiAssistantConfig.baseUrl || 'http://localhost:11434'),
|
|
81
|
+
_useLocalStorage12 = (0, _slicedToArray2["default"])(_useLocalStorage11, 2),
|
|
82
|
+
baseUrl = _useLocalStorage12[0],
|
|
83
|
+
setBaseUrl = _useLocalStorage12[1];
|
|
84
|
+
var _useState = (0, _react.useState)(false),
|
|
64
85
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
var _useState3 = (0, _react.useState)(
|
|
86
|
+
connectionError = _useState2[0],
|
|
87
|
+
setConnectionError = _useState2[1];
|
|
88
|
+
var _useState3 = (0, _react.useState)(''),
|
|
68
89
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
var _useState5 = (0, _react.useState)(
|
|
90
|
+
errorMessage = _useState4[0],
|
|
91
|
+
setErrorMessage = _useState4[1];
|
|
92
|
+
var _useState5 = (0, _react.useState)(false),
|
|
72
93
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
var _useState7 = (0, _react.useState)(aiAssistantConfig.temperature || 0.8),
|
|
76
|
-
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
77
|
-
temperature = _useState8[0],
|
|
78
|
-
setTemperature = _useState8[1];
|
|
79
|
-
var _useState9 = (0, _react.useState)(aiAssistantConfig.topP || 0.8),
|
|
80
|
-
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
81
|
-
topP = _useState10[0],
|
|
82
|
-
setTopP = _useState10[1];
|
|
83
|
-
var _useState11 = (0, _react.useState)(aiAssistantConfig.baseUrl || 'http://localhost:11434'),
|
|
84
|
-
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
85
|
-
baseUrl = _useState12[0],
|
|
86
|
-
setBaseUrl = _useState12[1];
|
|
87
|
-
var _useState13 = (0, _react.useState)(false),
|
|
88
|
-
_useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
|
|
89
|
-
connectionError = _useState14[0],
|
|
90
|
-
setConnectionError = _useState14[1];
|
|
91
|
-
var _useState15 = (0, _react.useState)(''),
|
|
92
|
-
_useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
|
|
93
|
-
errorMessage = _useState16[0],
|
|
94
|
-
setErrorMessage = _useState16[1];
|
|
95
|
-
var _useState17 = (0, _react.useState)(false),
|
|
96
|
-
_useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
|
|
97
|
-
isRunning = _useState18[0],
|
|
98
|
-
setIsRunning = _useState18[1];
|
|
94
|
+
isRunning = _useState6[0],
|
|
95
|
+
setIsRunning = _useState6[1];
|
|
99
96
|
var onAiProviderSelect = function onAiProviderSelect(value) {
|
|
100
97
|
if (typeof value === 'string') {
|
|
101
98
|
setProvider(value);
|
|
102
|
-
setModel(
|
|
99
|
+
setModel(_models["default"][value][0]);
|
|
103
100
|
setConnectionError(false);
|
|
104
101
|
setErrorMessage('');
|
|
105
102
|
}
|
|
@@ -128,25 +125,31 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
128
125
|
};
|
|
129
126
|
var onStartChat = /*#__PURE__*/function () {
|
|
130
127
|
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
131
|
-
var
|
|
128
|
+
var timeoutPromise, testPromise, result, success, service, _errorMessage;
|
|
132
129
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
133
130
|
while (1) switch (_context.prev = _context.next) {
|
|
134
131
|
case 0:
|
|
135
132
|
setIsRunning(true);
|
|
136
|
-
_context.
|
|
137
|
-
|
|
133
|
+
_context.prev = 1;
|
|
134
|
+
timeoutPromise = new Promise(function (_, reject) {
|
|
135
|
+
setTimeout(function () {
|
|
136
|
+
return reject(new Error('Connection timeout after 15 seconds'));
|
|
137
|
+
}, 15000);
|
|
138
|
+
});
|
|
139
|
+
testPromise = (0, _core.testApiKey)({
|
|
138
140
|
modelProvider: provider,
|
|
139
141
|
modelName: model,
|
|
140
142
|
apiKey: apiKey,
|
|
141
143
|
baseUrl: baseUrl
|
|
142
144
|
});
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
_context.next = 6;
|
|
146
|
+
return Promise.race([testPromise, timeoutPromise]);
|
|
147
|
+
case 6:
|
|
148
|
+
result = _context.sent;
|
|
149
|
+
success = result.success, service = result.service;
|
|
150
|
+
_errorMessage = !success ? service === 'ollama' ? 'Connection failed: maybe invalid Ollama Base URL' : 'Connection failed: maybe invalid API Key' : '';
|
|
148
151
|
setConnectionError(!success);
|
|
149
|
-
setErrorMessage(
|
|
152
|
+
setErrorMessage(_errorMessage);
|
|
150
153
|
updateAiAssistantConfig({
|
|
151
154
|
provider: provider,
|
|
152
155
|
model: model,
|
|
@@ -156,12 +159,22 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
156
159
|
temperature: temperature,
|
|
157
160
|
topP: topP
|
|
158
161
|
});
|
|
162
|
+
_context.next = 18;
|
|
163
|
+
break;
|
|
164
|
+
case 14:
|
|
165
|
+
_context.prev = 14;
|
|
166
|
+
_context.t0 = _context["catch"](1);
|
|
167
|
+
setConnectionError(true);
|
|
168
|
+
setErrorMessage(_context.t0 instanceof Error ? _context.t0.message : 'Connection failed');
|
|
169
|
+
case 18:
|
|
170
|
+
_context.prev = 18;
|
|
159
171
|
setIsRunning(false);
|
|
160
|
-
|
|
172
|
+
return _context.finish(18);
|
|
173
|
+
case 21:
|
|
161
174
|
case "end":
|
|
162
175
|
return _context.stop();
|
|
163
176
|
}
|
|
164
|
-
}, _callee);
|
|
177
|
+
}, _callee, null, [[1, 14, 18, 21]]);
|
|
165
178
|
}));
|
|
166
179
|
return function onStartChat() {
|
|
167
180
|
return _ref2.apply(this, arguments);
|
|
@@ -174,7 +187,7 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
174
187
|
defaultMessage: 'Select AI Provider'
|
|
175
188
|
}))), /*#__PURE__*/_react["default"].createElement(StyledWrapper, null, /*#__PURE__*/_react["default"].createElement(StyledItemSelector, {
|
|
176
189
|
selectedItems: provider,
|
|
177
|
-
options: Object.keys(
|
|
190
|
+
options: Object.keys(_models["default"]),
|
|
178
191
|
multiSelect: false,
|
|
179
192
|
disabled: false,
|
|
180
193
|
placeholder: "aiAssistantManager.aiProvider",
|
|
@@ -193,7 +206,7 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
193
206
|
defaultMessage: 'Select LLM Model'
|
|
194
207
|
}))), /*#__PURE__*/_react["default"].createElement(StyledWrapper, null, /*#__PURE__*/_react["default"].createElement(StyledItemSelector, {
|
|
195
208
|
selectedItems: model,
|
|
196
|
-
options:
|
|
209
|
+
options: _models["default"][provider],
|
|
197
210
|
multiSelect: false,
|
|
198
211
|
disabled: false,
|
|
199
212
|
placeholder: "aiAssistantManager.llmModel.placeholder",
|
|
@@ -278,4 +291,4 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
278
291
|
return (0, _styledComponents.withTheme)((0, _reactIntl.injectIntl)(AiAssistantConfig));
|
|
279
292
|
}
|
|
280
293
|
var _default = exports["default"] = AiAssistantConfigFactory;
|
|
281
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdEludGwiLCJfY29tcG9uZW50cyIsIl9hcGlLZXkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvcmUiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJQUk9WSURFUl9NT0RFTFMiLCJvcGVuYWkiLCJnb29nbGUiLCJvbGxhbWEiLCJTZWN0aW9uVGl0bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJpbnB1dEZvbnRTaXplIiwiZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5MSIsIlN0eWxlZEFpQXNzaXN0YW50Q29uZmlnIiwicHJpbWFyeUJ0bkZvbnRTaXplRGVmYXVsdCIsImJveFNoYWRvdyIsImdlb2NvZGVySW5wdXRIZWlnaHQiLCJzdWJ0ZXh0Q29sb3IiLCJTdHlsZWRXcmFwcGVyIiwiU3R5bGVkSXRlbVNlbGVjdG9yIiwiSXRlbVNlbGVjdG9yIiwiYWN0aXZlQ29sb3IiLCJTdHlsZVNsaWRlcldyYXBwZXIiLCJTdHlsZWRCdXR0b24iLCJTdHlsZUVycm9yTWVzc2FnZSIsImVycm9yQ29sb3IiLCJlcnJvclRleHRDb2xvciIsIkFpQXNzaXN0YW50Q29uZmlnRmFjdG9yeSIsImRlcHMiLCJSYW5nZVNsaWRlckZhY3RvcnkiLCJSYW5nZVNsaWRlciIsIkFpQXNzaXN0YW50Q29uZmlnIiwiX3JlZiIsImludGwiLCJhaUFzc2lzdGFudENvbmZpZyIsInVwZGF0ZUFpQXNzaXN0YW50Q29uZmlnIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJwcm92aWRlciIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRQcm92aWRlciIsIl91c2VTdGF0ZTMiLCJtb2RlbCIsIl91c2VTdGF0ZTQiLCJzZXRNb2RlbCIsIl91c2VTdGF0ZTUiLCJhcGlLZXkiLCJfdXNlU3RhdGU2Iiwic2V0QXBpS2V5IiwiX3VzZVN0YXRlNyIsInRlbXBlcmF0dXJlIiwiX3VzZVN0YXRlOCIsInNldFRlbXBlcmF0dXJlIiwiX3VzZVN0YXRlOSIsInRvcFAiLCJfdXNlU3RhdGUxMCIsInNldFRvcFAiLCJfdXNlU3RhdGUxMSIsImJhc2VVcmwiLCJfdXNlU3RhdGUxMiIsInNldEJhc2VVcmwiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiY29ubmVjdGlvbkVycm9yIiwic2V0Q29ubmVjdGlvbkVycm9yIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImVycm9yTWVzc2FnZSIsInNldEVycm9yTWVzc2FnZSIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJpc1J1bm5pbmciLCJzZXRJc1J1bm5pbmciLCJvbkFpUHJvdmlkZXJTZWxlY3QiLCJ2YWx1ZSIsIm9uTExNTW9kZWxTZWxlY3QiLCJvbkFwaUtleUNoYW5nZSIsInRhcmdldCIsIm9uVGVtcGVyYXR1cmVDaGFuZ2UiLCJvblRvcFBDaGFuZ2UiLCJvbkJhc2VVcmxDaGFuZ2UiLCJvblN0YXJ0Q2hhdCIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJfeWllbGQkdGVzdEFwaUtleSIsInN1Y2Nlc3MiLCJzZXJ2aWNlIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInRlc3RBcGlLZXkiLCJtb2RlbFByb3ZpZGVyIiwibW9kZWxOYW1lIiwic2VudCIsImlzUmVhZHkiLCJzdG9wIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiUGFuZWxMYWJlbFdyYXBwZXIiLCJmb3JtYXRNZXNzYWdlIiwiaWQiLCJkZWZhdWx0TWVzc2FnZSIsInNlbGVjdGVkSXRlbXMiLCJvcHRpb25zIiwia2V5cyIsIm11bHRpU2VsZWN0IiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwiZmlsdGVyT3B0aW9uIiwiZ2V0T3B0aW9uVmFsdWUiLCJvcCIsImRpc3BsYXlPcHRpb24iLCJzZWFyY2hhYmxlIiwic2hvd0Fycm93IiwiRnJhZ21lbnQiLCJoZWlnaHQiLCJJbnB1dCIsInR5cGUiLCJzaG93SW5wdXQiLCJpc1JhbmdlZCIsInZhbHVlMCIsInZhbHVlMSIsInJhbmdlIiwic3RlcCIsIkJ1dHRvbiIsIm9uQ2xpY2siLCJ3aWR0aCIsIkxvYWRpbmdTcGlubmVyIiwic2l6ZSIsIndpdGhUaGVtZSIsImluamVjdEludGwiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9haS1hc3Npc3RhbnQtY29uZmlnLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZX0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtpbmplY3RJbnRsLCBXcmFwcGVkQ29tcG9uZW50UHJvcHN9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtcbiAgSW5wdXQsXG4gIFBhbmVsTGFiZWxXcmFwcGVyLFxuICBJdGVtU2VsZWN0b3IsXG4gIFJhbmdlU2xpZGVyRmFjdG9yeSxcbiAgQnV0dG9uLFxuICBMb2FkaW5nU3Bpbm5lclxufSBmcm9tICdAa2VwbGVyLmdsL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtBaUFzc2lzdGFudENvbmZpZ30gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IEFwaUtleSBmcm9tICcuLi9pY29ucy9hcGkta2V5JztcbmltcG9ydCB7dGVzdEFwaUtleX0gZnJvbSAnQG9wZW5hc3Npc3RhbnQvY29yZSc7XG5cbmNvbnN0IFBST1ZJREVSX01PREVMUyA9IHtcbiAgb3BlbmFpOiBbJ28xLW1pbmknLCAnbzEtcHJldmlldycsICdncHQtNG8nLCAnZ3B0LTRvLW1pbmknLCAnZ3B0LTMuNS10dXJiby0wMTI1JywgJ2dwdC0zLjUtdHVyYm8nXSxcbiAgZ29vZ2xlOiBbJ2dlbWluaS0yLjAtZmxhc2gtZXhwJywgJ2dlbWluaS0xLjUtZmxhc2gnLCAnZ2VtaW5pLTEuNS1wcm8nLCAnZ2VtaW5pLTEuMC1wcm8nXSxcbiAgb2xsYW1hOiBbXG4gICAgJ3BoaTQnLFxuICAgICdxd2VuMi41LWNvZGVyJyxcbiAgICAncXdxJyxcbiAgICAnbGxhbWEzLjMnLFxuICAgICdsbGFtYTMuMicsXG4gICAgJ2xsYW1hMy4xJyxcbiAgICAnbGxhbWEzLjE6NzBiJyxcbiAgICAncXdlbjInLFxuICAgICdsbGF2YScsXG4gICAgJ21pc3RyYWwnLFxuICAgICdnZW1tYTInLFxuICAgICdwaGkzLjUnXG4gIF1cbn07XG5cbnR5cGUgVGhlbWVQcm9wcyA9IHt0aGVtZTogYW55fTtcblxuZXhwb3J0IHR5cGUgQWlBc3Npc3RhbnRDb25maWdQcm9wcyA9IHtcbiAgYWlBc3Npc3RhbnRDb25maWc6IEFpQXNzaXN0YW50Q29uZmlnO1xuICB1cGRhdGVBaUFzc2lzdGFudENvbmZpZzogKGFpQXNzaXN0YW50Q29uZmlnOiBBaUFzc2lzdGFudENvbmZpZykgPT4gdm9pZDtcbn07XG5cbmNvbnN0IFNlY3Rpb25UaXRsZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEZvbnRTaXplfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5MX07XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuYDtcblxuY29uc3QgU3R5bGVkQWlBc3Npc3RhbnRDb25maWcgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAxMnB4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucHJpbWFyeUJ0bkZvbnRTaXplRGVmYXVsdH07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTJweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcblxuICAuYXBpLWtleS1pbnB1dCB7XG4gICAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ib3hTaGFkb3d9O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5hcGkta2V5LWlucHV0X19pY29uIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5nZW9jb2RlcklucHV0SGVpZ2h0fXB4O1xuICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDZweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgIHBhZGRpbmc6IDRweCAzNnB4O1xuICAgICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmdlb2NvZGVySW5wdXRIZWlnaHR9cHg7XG4gICAgICBjYXJldC1jb2xvcjogdW5zZXQ7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgU3R5bGVkSXRlbVNlbGVjdG9yID0gc3R5bGVkKEl0ZW1TZWxlY3RvcilgXG4gIC5pdGVtLXNlbGVjdG9yX19kcm9wZG93biB7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgfVxuICAuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYWN0aXZlQ29sb3J9O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMHB4IDBweCAhaW1wb3J0YW50O1xuICB9XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVTbGlkZXJXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIGhlaWdodDogMzJweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLmtnLXJhbmdlLXNsaWRlcl9faW5wdXQge1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogM3B4IDZweDtcbiAgfVxuICAua2ctc2xpZGVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDZweDtcbiAgfVxuICAua2ctcmFuZ2Utc2xpZGVyIHtcbiAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIG1hcmdpbi10b3A6IDEycHg7XG5cbiAgYnV0dG9uIGRpdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZUVycm9yTWVzc2FnZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuRm9udFNpemVEZWZhdWx0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lcnJvckNvbG9yfTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBwYWRkaW5nOiA0cHggOHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lcnJvclRleHRDb2xvcn07XG5gO1xuXG5BaUFzc2lzdGFudENvbmZpZ0ZhY3RvcnkuZGVwcyA9IFtSYW5nZVNsaWRlckZhY3RvcnldO1xuXG5mdW5jdGlvbiBBaUFzc2lzdGFudENvbmZpZ0ZhY3RvcnkoUmFuZ2VTbGlkZXI6IFJldHVyblR5cGU8dHlwZW9mIFJhbmdlU2xpZGVyRmFjdG9yeT4pIHtcbiAgY29uc3QgQWlBc3Npc3RhbnRDb25maWc6IFJlYWN0LkZDPFxuICAgIEFpQXNzaXN0YW50Q29uZmlnUHJvcHMgJiBXcmFwcGVkQ29tcG9uZW50UHJvcHMgJiBUaGVtZVByb3BzXG4gID4gPSAoe2ludGwsIGFpQXNzaXN0YW50Q29uZmlnLCB1cGRhdGVBaUFzc2lzdGFudENvbmZpZ30pID0+IHtcbiAgICBjb25zdCBbcHJvdmlkZXIsIHNldFByb3ZpZGVyXSA9IHVzZVN0YXRlKGFpQXNzaXN0YW50Q29uZmlnLnByb3ZpZGVyIHx8ICdvcGVuYWknKTtcbiAgICBjb25zdCBbbW9kZWwsIHNldE1vZGVsXSA9IHVzZVN0YXRlKGFpQXNzaXN0YW50Q29uZmlnLm1vZGVsIHx8IFBST1ZJREVSX01PREVMU1twcm92aWRlcl1bMF0pO1xuICAgIGNvbnN0IFthcGlLZXksIHNldEFwaUtleV0gPSB1c2VTdGF0ZShhaUFzc2lzdGFudENvbmZpZy5hcGlLZXkgfHwgJycpO1xuICAgIGNvbnN0IFt0ZW1wZXJhdHVyZSwgc2V0VGVtcGVyYXR1cmVdID0gdXNlU3RhdGUoYWlBc3Npc3RhbnRDb25maWcudGVtcGVyYXR1cmUgfHwgMC44KTtcbiAgICBjb25zdCBbdG9wUCwgc2V0VG9wUF0gPSB1c2VTdGF0ZShhaUFzc2lzdGFudENvbmZpZy50b3BQIHx8IDAuOCk7XG4gICAgY29uc3QgW2Jhc2VVcmwsIHNldEJhc2VVcmxdID0gdXNlU3RhdGUoYWlBc3Npc3RhbnRDb25maWcuYmFzZVVybCB8fCAnaHR0cDovL2xvY2FsaG9zdDoxMTQzNCcpO1xuICAgIGNvbnN0IFtjb25uZWN0aW9uRXJyb3IsIHNldENvbm5lY3Rpb25FcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2Vycm9yTWVzc2FnZSwgc2V0RXJyb3JNZXNzYWdlXSA9IHVzZVN0YXRlKCcnKTtcbiAgICBjb25zdCBbaXNSdW5uaW5nLCBzZXRJc1J1bm5pbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgY29uc3Qgb25BaVByb3ZpZGVyU2VsZWN0ID0gKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc2V0UHJvdmlkZXIodmFsdWUpO1xuICAgICAgICBzZXRNb2RlbChQUk9WSURFUl9NT0RFTFNbdmFsdWVdWzBdKTtcbiAgICAgICAgc2V0Q29ubmVjdGlvbkVycm9yKGZhbHNlKTtcbiAgICAgICAgc2V0RXJyb3JNZXNzYWdlKCcnKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25MTE1Nb2RlbFNlbGVjdCA9ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdCB8IG51bGwpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHNldE1vZGVsKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25BcGlLZXlDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIHNldEFwaUtleShlLnRhcmdldC52YWx1ZSk7XG4gICAgICAvLyByZXNldCBwcmV2aW91cyBrZXkgZXJyb3IgaWYgYW55XG4gICAgICBzZXRDb25uZWN0aW9uRXJyb3IoZmFsc2UpO1xuICAgICAgc2V0RXJyb3JNZXNzYWdlKCcnKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25UZW1wZXJhdHVyZUNoYW5nZSA9ICh2YWx1ZTogbnVtYmVyW10pID0+IHtcbiAgICAgIHNldFRlbXBlcmF0dXJlKHZhbHVlWzFdKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25Ub3BQQ2hhbmdlID0gKHZhbHVlOiBudW1iZXJbXSkgPT4ge1xuICAgICAgc2V0VG9wUCh2YWx1ZVsxXSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uQmFzZVVybENoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgc2V0QmFzZVVybChlLnRhcmdldC52YWx1ZSk7XG4gICAgICBzZXRDb25uZWN0aW9uRXJyb3IoZmFsc2UpO1xuICAgICAgc2V0RXJyb3JNZXNzYWdlKCcnKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25TdGFydENoYXQgPSBhc3luYyAoKSA9PiB7XG4gICAgICBzZXRJc1J1bm5pbmcodHJ1ZSk7XG4gICAgICBjb25zdCB7c3VjY2Vzcywgc2VydmljZX0gPSBhd2FpdCB0ZXN0QXBpS2V5KHtcbiAgICAgICAgbW9kZWxQcm92aWRlcjogcHJvdmlkZXIsXG4gICAgICAgIG1vZGVsTmFtZTogbW9kZWwsXG4gICAgICAgIGFwaUtleTogYXBpS2V5LFxuICAgICAgICBiYXNlVXJsOiBiYXNlVXJsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9ICFzdWNjZXNzXG4gICAgICAgID8gc2VydmljZSA9PT0gJ29sbGFtYSdcbiAgICAgICAgICA/ICdDb25uZWN0aW9uIGZhaWxlZDogbWF5YmUgaW52YWxpZCBPbGxhbWEgQmFzZSBVUkwnXG4gICAgICAgICAgOiAnQ29ubmVjdGlvbiBmYWlsZWQ6IG1heWJlIGludmFsaWQgQVBJIEtleSdcbiAgICAgICAgOiAnJztcbiAgICAgIHNldENvbm5lY3Rpb25FcnJvcighc3VjY2Vzcyk7XG4gICAgICBzZXRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTtcbiAgICAgIHVwZGF0ZUFpQXNzaXN0YW50Q29uZmlnKHtcbiAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyLFxuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICAgIGFwaUtleTogYXBpS2V5LFxuICAgICAgICBiYXNlVXJsOiBiYXNlVXJsLFxuICAgICAgICBpc1JlYWR5OiBzdWNjZXNzLFxuICAgICAgICB0ZW1wZXJhdHVyZTogdGVtcGVyYXR1cmUsXG4gICAgICAgIHRvcFA6IHRvcFBcbiAgICAgIH0pO1xuICAgICAgc2V0SXNSdW5uaW5nKGZhbHNlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRBaUFzc2lzdGFudENvbmZpZyBjbGFzc05hbWU9XCJhaS1hc3Npc3RhbnQtY29uZmlnX190eXBlXCI+XG4gICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8U2VjdGlvblRpdGxlPlxuICAgICAgICAgICAge2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLmFpUHJvdmlkZXIudGl0bGUnLFxuICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJ1NlbGVjdCBBSSBQcm92aWRlcidcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU2VjdGlvblRpdGxlPlxuICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICA8U3R5bGVkV3JhcHBlcj5cbiAgICAgICAgICA8U3R5bGVkSXRlbVNlbGVjdG9yXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXtwcm92aWRlcn1cbiAgICAgICAgICAgIG9wdGlvbnM9e09iamVjdC5rZXlzKFBST1ZJREVSX01PREVMUyl9XG4gICAgICAgICAgICBtdWx0aVNlbGVjdD17ZmFsc2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cImFpQXNzaXN0YW50TWFuYWdlci5haVByb3ZpZGVyXCJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkFpUHJvdmlkZXJTZWxlY3R9XG4gICAgICAgICAgICBmaWx0ZXJPcHRpb249XCJuYW1lXCJcbiAgICAgICAgICAgIGdldE9wdGlvblZhbHVlPXtvcCA9PiBvcH1cbiAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e29wID0+IG9wfVxuICAgICAgICAgICAgc2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICBzaG93QXJyb3c9e3RydWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRXcmFwcGVyPlxuICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgPFNlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIHtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICBpZDogJ2FpQXNzaXN0YW50TWFuYWdlci5sbG1Nb2RlbC50aXRsZScsXG4gICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnU2VsZWN0IExMTSBNb2RlbCdcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU2VjdGlvblRpdGxlPlxuICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICA8U3R5bGVkV3JhcHBlcj5cbiAgICAgICAgICA8U3R5bGVkSXRlbVNlbGVjdG9yXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXttb2RlbH1cbiAgICAgICAgICAgIG9wdGlvbnM9e1BST1ZJREVSX01PREVMU1twcm92aWRlcl19XG4gICAgICAgICAgICBtdWx0aVNlbGVjdD17ZmFsc2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cImFpQXNzaXN0YW50TWFuYWdlci5sbG1Nb2RlbC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBvbkNoYW5nZT17b25MTE1Nb2RlbFNlbGVjdH1cbiAgICAgICAgICAgIGZpbHRlck9wdGlvbj1cIm5hbWVcIlxuICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9e29wID0+IG9wfVxuICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17b3AgPT4gb3B9XG4gICAgICAgICAgICBzZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgIHNob3dBcnJvdz17dHJ1ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZFdyYXBwZXI+XG4gICAgICAgIHtwcm92aWRlciAhPT0gJ29sbGFtYScgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFNlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAgICB7aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLmFwaUtleS50aXRsZScsXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJ0VudGVyIEFQSSBLZXknXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvU2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXBpLWtleS1pbnB1dFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFwaS1rZXktaW5wdXRfX2ljb25cIj5cbiAgICAgICAgICAgICAgICA8QXBpS2V5IGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkFwaUtleUNoYW5nZX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLmFwaUtleS5wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJ0VudGVyIHlvdXIgQVBJIEtleSdcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17YXBpS2V5fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFNlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAgICB7aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLmJhc2VVcmwudGl0bGUnLFxuICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdPbGxhbWEgQmFzZSBVUkwnXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvU2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXBpLWtleS1pbnB1dFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFwaS1rZXktaW5wdXRfX2ljb25cIj5cbiAgICAgICAgICAgICAgICA8QXBpS2V5IGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkJhc2VVcmxDaGFuZ2V9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICBpZDogJ2FpQXNzaXN0YW50TWFuYWdlci5iYXNlVXJsLnBsYWNlaG9sZGVyJyxcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnRW50ZXIgT2xsYW1hIEJhc2UgVVJMJ1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtiYXNlVXJsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICAgIHtjb25uZWN0aW9uRXJyb3IgJiYgKFxuICAgICAgICAgIDxTdHlsZUVycm9yTWVzc2FnZSBjbGFzc05hbWU9XCJlcnJvci1tZXNzYWdlXCI+e2Vycm9yTWVzc2FnZX08L1N0eWxlRXJyb3JNZXNzYWdlPlxuICAgICAgICApfVxuICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgPFNlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIHtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICBpZDogJ2FpQXNzaXN0YW50TWFuYWdlci50ZW1wZXJhdHVyZS50aXRsZScsXG4gICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnVGVtcGVyYXR1cmUnXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NlY3Rpb25UaXRsZT5cbiAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgICA8UmFuZ2VTbGlkZXJcbiAgICAgICAgICAgIHNob3dJbnB1dD17dHJ1ZX1cbiAgICAgICAgICAgIGlzUmFuZ2VkPXtmYWxzZX1cbiAgICAgICAgICAgIHZhbHVlMD17MH1cbiAgICAgICAgICAgIHZhbHVlMT17dGVtcGVyYXR1cmV9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25UZW1wZXJhdHVyZUNoYW5nZX1cbiAgICAgICAgICAgIHJhbmdlPXtbMCwgMl19XG4gICAgICAgICAgICBzdGVwPXswLjF9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8U2VjdGlvblRpdGxlPlxuICAgICAgICAgICAge2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLnRvcFAudGl0bGUnLFxuICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJ1RvcCBQJ1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TZWN0aW9uVGl0bGU+XG4gICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgIDxTdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPFJhbmdlU2xpZGVyXG4gICAgICAgICAgICBzaG93SW5wdXQ9e3RydWV9XG4gICAgICAgICAgICBpc1JhbmdlZD17ZmFsc2V9XG4gICAgICAgICAgICB2YWx1ZTA9ezB9XG4gICAgICAgICAgICB2YWx1ZTE9e3RvcFB9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25Ub3BQQ2hhbmdlfVxuICAgICAgICAgICAgcmFuZ2U9e1swLCAxXX1cbiAgICAgICAgICAgIHN0ZXA9ezAuMX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZEJ1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uU3RhcnRDaGF0fSB3aWR0aD17JzEwMCUnfT5cbiAgICAgICAgICAgIHtpc1J1bm5pbmcgJiYgPExvYWRpbmdTcGlubmVyIHNpemU9ezEyfSAvPn1cbiAgICAgICAgICAgIHtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICBpZDogJ2FpQXNzaXN0YW50TWFuYWdlci5zdGFydENoYXQnLFxuICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJMZXQncyBDaGF0XCJcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1N0eWxlZEJ1dHRvbj5cbiAgICAgIDwvU3R5bGVkQWlBc3Npc3RhbnRDb25maWc+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gd2l0aFRoZW1lKGluamVjdEludGwoQWlBc3Npc3RhbnRDb25maWcpKSBhcyBSZWFjdC5GQzxBaUFzc2lzdGFudENvbmZpZ1Byb3BzPjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQWlBc3Npc3RhbnRDb25maWdGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBU0EsSUFBQUksT0FBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQU0sS0FBQSxHQUFBTixPQUFBO0FBQStDLElBQUFPLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFoQi9DO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWhCLHdCQUFBZ0IsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENB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
|
|
294
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdEludGwiLCJfY29tcG9uZW50cyIsIl9hcGlLZXkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvcmUiLCJfbW9kZWxzIiwiX3VzZWhvb2tzVHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTZWN0aW9uVGl0bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJpbnB1dEZvbnRTaXplIiwiZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5MSIsIlN0eWxlZEFpQXNzaXN0YW50Q29uZmlnIiwicHJpbWFyeUJ0bkZvbnRTaXplRGVmYXVsdCIsImJveFNoYWRvdyIsImdlb2NvZGVySW5wdXRIZWlnaHQiLCJzdWJ0ZXh0Q29sb3IiLCJTdHlsZWRXcmFwcGVyIiwiU3R5bGVkSXRlbVNlbGVjdG9yIiwiSXRlbVNlbGVjdG9yIiwiYWN0aXZlQ29sb3IiLCJTdHlsZVNsaWRlcldyYXBwZXIiLCJTdHlsZWRCdXR0b24iLCJTdHlsZUVycm9yTWVzc2FnZSIsImVycm9yQ29sb3IiLCJlcnJvclRleHRDb2xvciIsIkFpQXNzaXN0YW50Q29uZmlnRmFjdG9yeSIsImRlcHMiLCJSYW5nZVNsaWRlckZhY3RvcnkiLCJSYW5nZVNsaWRlciIsIkFpQXNzaXN0YW50Q29uZmlnIiwiX3JlZiIsImludGwiLCJhaUFzc2lzdGFudENvbmZpZyIsInVwZGF0ZUFpQXNzaXN0YW50Q29uZmlnIiwiX3VzZUxvY2FsU3RvcmFnZSIsInVzZUxvY2FsU3RvcmFnZSIsInByb3ZpZGVyIiwiX3VzZUxvY2FsU3RvcmFnZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRQcm92aWRlciIsIl91c2VMb2NhbFN0b3JhZ2UzIiwibW9kZWwiLCJQUk9WSURFUl9NT0RFTFMiLCJfdXNlTG9jYWxTdG9yYWdlNCIsInNldE1vZGVsIiwiX3VzZUxvY2FsU3RvcmFnZTUiLCJhcGlLZXkiLCJfdXNlTG9jYWxTdG9yYWdlNiIsInNldEFwaUtleSIsIl91c2VMb2NhbFN0b3JhZ2U3IiwidGVtcGVyYXR1cmUiLCJfdXNlTG9jYWxTdG9yYWdlOCIsInNldFRlbXBlcmF0dXJlIiwiX3VzZUxvY2FsU3RvcmFnZTkiLCJ0b3BQIiwiX3VzZUxvY2FsU3RvcmFnZTEwIiwic2V0VG9wUCIsIl91c2VMb2NhbFN0b3JhZ2UxMSIsImJhc2VVcmwiLCJfdXNlTG9jYWxTdG9yYWdlMTIiLCJzZXRCYXNlVXJsIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiY29ubmVjdGlvbkVycm9yIiwic2V0Q29ubmVjdGlvbkVycm9yIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJlcnJvck1lc3NhZ2UiLCJzZXRFcnJvck1lc3NhZ2UiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzUnVubmluZyIsInNldElzUnVubmluZyIsIm9uQWlQcm92aWRlclNlbGVjdCIsInZhbHVlIiwib25MTE1Nb2RlbFNlbGVjdCIsIm9uQXBpS2V5Q2hhbmdlIiwidGFyZ2V0Iiwib25UZW1wZXJhdHVyZUNoYW5nZSIsIm9uVG9wUENoYW5nZSIsIm9uQmFzZVVybENoYW5nZSIsIm9uU3RhcnRDaGF0IiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInRpbWVvdXRQcm9taXNlIiwidGVzdFByb21pc2UiLCJyZXN1bHQiLCJzdWNjZXNzIiwic2VydmljZSIsIl9lcnJvck1lc3NhZ2UiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiUHJvbWlzZSIsIl8iLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJ0ZXN0QXBpS2V5IiwibW9kZWxQcm92aWRlciIsIm1vZGVsTmFtZSIsInJhY2UiLCJzZW50IiwiaXNSZWFkeSIsInQwIiwibWVzc2FnZSIsImZpbmlzaCIsInN0b3AiLCJhcHBseSIsImFyZ3VtZW50cyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJQYW5lbExhYmVsV3JhcHBlciIsImZvcm1hdE1lc3NhZ2UiLCJpZCIsImRlZmF1bHRNZXNzYWdlIiwic2VsZWN0ZWRJdGVtcyIsIm9wdGlvbnMiLCJrZXlzIiwibXVsdGlTZWxlY3QiLCJkaXNhYmxlZCIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJmaWx0ZXJPcHRpb24iLCJnZXRPcHRpb25WYWx1ZSIsIm9wIiwiZGlzcGxheU9wdGlvbiIsInNlYXJjaGFibGUiLCJzaG93QXJyb3ciLCJGcmFnbWVudCIsImhlaWdodCIsIklucHV0IiwidHlwZSIsInNob3dJbnB1dCIsImlzUmFuZ2VkIiwidmFsdWUwIiwidmFsdWUxIiwicmFuZ2UiLCJzdGVwIiwiQnV0dG9uIiwib25DbGljayIsIndpZHRoIiwiTG9hZGluZ1NwaW5uZXIiLCJzaXplIiwid2l0aFRoZW1lIiwiaW5qZWN0SW50bCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2FpLWFzc2lzdGFudC1jb25maWcudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7d2l0aFRoZW1lfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2luamVjdEludGwsIFdyYXBwZWRDb21wb25lbnRQcm9wc30gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge1xuICBJbnB1dCxcbiAgUGFuZWxMYWJlbFdyYXBwZXIsXG4gIEl0ZW1TZWxlY3RvcixcbiAgUmFuZ2VTbGlkZXJGYWN0b3J5LFxuICBCdXR0b24sXG4gIExvYWRpbmdTcGlubmVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge0FpQXNzaXN0YW50Q29uZmlnfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgQXBpS2V5IGZyb20gJy4uL2ljb25zL2FwaS1rZXknO1xuaW1wb3J0IHt0ZXN0QXBpS2V5fSBmcm9tICdAb3BlbmFzc2lzdGFudC9jb3JlJztcbmltcG9ydCBQUk9WSURFUl9NT0RFTFMgZnJvbSAnLi4vY29uZmlnL21vZGVscy5qc29uJztcbmltcG9ydCB7dXNlTG9jYWxTdG9yYWdlfSBmcm9tICd1c2Vob29rcy10cyc7XG5cbnR5cGUgVGhlbWVQcm9wcyA9IHt0aGVtZTogYW55fTtcblxuZXhwb3J0IHR5cGUgQWlBc3Npc3RhbnRDb25maWdQcm9wcyA9IHtcbiAgYWlBc3Npc3RhbnRDb25maWc6IEFpQXNzaXN0YW50Q29uZmlnO1xuICB1cGRhdGVBaUFzc2lzdGFudENvbmZpZzogKGFpQXNzaXN0YW50Q29uZmlnOiBBaUFzc2lzdGFudENvbmZpZykgPT4gdm9pZDtcbn07XG5cbmNvbnN0IFNlY3Rpb25UaXRsZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEZvbnRTaXplfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5MX07XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuYDtcblxuY29uc3QgU3R5bGVkQWlBc3Npc3RhbnRDb25maWcgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAxMnB4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucHJpbWFyeUJ0bkZvbnRTaXplRGVmYXVsdH07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTJweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcblxuICAuYXBpLWtleS1pbnB1dCB7XG4gICAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ib3hTaGFkb3d9O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5hcGkta2V5LWlucHV0X19pY29uIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5nZW9jb2RlcklucHV0SGVpZ2h0fXB4O1xuICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDZweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgIHBhZGRpbmc6IDRweCAzNnB4O1xuICAgICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmdlb2NvZGVySW5wdXRIZWlnaHR9cHg7XG4gICAgICBjYXJldC1jb2xvcjogdW5zZXQ7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgU3R5bGVkSXRlbVNlbGVjdG9yID0gc3R5bGVkKEl0ZW1TZWxlY3RvcilgXG4gIC5pdGVtLXNlbGVjdG9yX19kcm9wZG93biB7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgfVxuICAuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYWN0aXZlQ29sb3J9O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMHB4IDBweCAhaW1wb3J0YW50O1xuICB9XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVTbGlkZXJXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIGhlaWdodDogMzJweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLmtnLXJhbmdlLXNsaWRlcl9faW5wdXQge1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogM3B4IDZweDtcbiAgfVxuICAua2ctc2xpZGVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDZweDtcbiAgfVxuICAua2ctcmFuZ2Utc2xpZGVyIHtcbiAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIG1hcmdpbi10b3A6IDEycHg7XG5cbiAgYnV0dG9uIGRpdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZUVycm9yTWVzc2FnZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuRm9udFNpemVEZWZhdWx0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lcnJvckNvbG9yfTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBwYWRkaW5nOiA0cHggOHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lcnJvclRleHRDb2xvcn07XG5gO1xuXG5BaUFzc2lzdGFudENvbmZpZ0ZhY3RvcnkuZGVwcyA9IFtSYW5nZVNsaWRlckZhY3RvcnldO1xuXG5mdW5jdGlvbiBBaUFzc2lzdGFudENvbmZpZ0ZhY3RvcnkoUmFuZ2VTbGlkZXI6IFJldHVyblR5cGU8dHlwZW9mIFJhbmdlU2xpZGVyRmFjdG9yeT4pIHtcbiAgY29uc3QgQWlBc3Npc3RhbnRDb25maWc6IFJlYWN0LkZDPFxuICAgIEFpQXNzaXN0YW50Q29uZmlnUHJvcHMgJiBXcmFwcGVkQ29tcG9uZW50UHJvcHMgJiBUaGVtZVByb3BzXG4gID4gPSAoe2ludGwsIGFpQXNzaXN0YW50Q29uZmlnLCB1cGRhdGVBaUFzc2lzdGFudENvbmZpZ30pID0+IHtcbiAgICBjb25zdCBbcHJvdmlkZXIsIHNldFByb3ZpZGVyXSA9IHVzZUxvY2FsU3RvcmFnZShcbiAgICAgICdhaS1hc3Npc3RhbnQtcHJvdmlkZXInLFxuICAgICAgYWlBc3Npc3RhbnRDb25maWcucHJvdmlkZXIgfHwgJ29wZW5haSdcbiAgICApO1xuICAgIGNvbnN0IFttb2RlbCwgc2V0TW9kZWxdID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICAgJ2FpLWFzc2lzdGFudC1tb2RlbCcsXG4gICAgICBhaUFzc2lzdGFudENvbmZpZy5tb2RlbCB8fCBQUk9WSURFUl9NT0RFTFNbcHJvdmlkZXJdWzBdXG4gICAgKTtcbiAgICBjb25zdCBbYXBpS2V5LCBzZXRBcGlLZXldID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICAgJ2FpLWFzc2lzdGFudC1hcGkta2V5JyxcbiAgICAgIGFpQXNzaXN0YW50Q29uZmlnLmFwaUtleSB8fCAnJ1xuICAgICk7XG4gICAgY29uc3QgW3RlbXBlcmF0dXJlLCBzZXRUZW1wZXJhdHVyZV0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gICAgICAnYWktYXNzaXN0YW50LXRlbXBlcmF0dXJlJyxcbiAgICAgIGFpQXNzaXN0YW50Q29uZmlnLnRlbXBlcmF0dXJlIHx8IDAuOFxuICAgICk7XG4gICAgY29uc3QgW3RvcFAsIHNldFRvcFBdID0gdXNlTG9jYWxTdG9yYWdlKCdhaS1hc3Npc3RhbnQtdG9wLXAnLCBhaUFzc2lzdGFudENvbmZpZy50b3BQIHx8IDAuOCk7XG4gICAgY29uc3QgW2Jhc2VVcmwsIHNldEJhc2VVcmxdID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICAgJ2FpLWFzc2lzdGFudC1iYXNlLXVybCcsXG4gICAgICBhaUFzc2lzdGFudENvbmZpZy5iYXNlVXJsIHx8ICdodHRwOi8vbG9jYWxob3N0OjExNDM0J1xuICAgICk7XG4gICAgY29uc3QgW2Nvbm5lY3Rpb25FcnJvciwgc2V0Q29ubmVjdGlvbkVycm9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZXJyb3JNZXNzYWdlLCBzZXRFcnJvck1lc3NhZ2VdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtpc1J1bm5pbmcsIHNldElzUnVubmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBvbkFpUHJvdmlkZXJTZWxlY3QgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCBudWxsKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBzZXRQcm92aWRlcih2YWx1ZSk7XG4gICAgICAgIHNldE1vZGVsKFBST1ZJREVSX01PREVMU1t2YWx1ZV1bMF0pO1xuICAgICAgICBzZXRDb25uZWN0aW9uRXJyb3IoZmFsc2UpO1xuICAgICAgICBzZXRFcnJvck1lc3NhZ2UoJycpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkxMTU1vZGVsU2VsZWN0ID0gKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc2V0TW9kZWwodmFsdWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkFwaUtleUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgc2V0QXBpS2V5KGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgIC8vIHJlc2V0IHByZXZpb3VzIGtleSBlcnJvciBpZiBhbnlcbiAgICAgIHNldENvbm5lY3Rpb25FcnJvcihmYWxzZSk7XG4gICAgICBzZXRFcnJvck1lc3NhZ2UoJycpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblRlbXBlcmF0dXJlQ2hhbmdlID0gKHZhbHVlOiBudW1iZXJbXSkgPT4ge1xuICAgICAgc2V0VGVtcGVyYXR1cmUodmFsdWVbMV0pO1xuICAgIH07XG5cbiAgICBjb25zdCBvblRvcFBDaGFuZ2UgPSAodmFsdWU6IG51bWJlcltdKSA9PiB7XG4gICAgICBzZXRUb3BQKHZhbHVlWzFdKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25CYXNlVXJsQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBzZXRCYXNlVXJsKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgIHNldENvbm5lY3Rpb25FcnJvcihmYWxzZSk7XG4gICAgICBzZXRFcnJvck1lc3NhZ2UoJycpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblN0YXJ0Q2hhdCA9IGFzeW5jICgpID0+IHtcbiAgICAgIHNldElzUnVubmluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignQ29ubmVjdGlvbiB0aW1lb3V0IGFmdGVyIDE1IHNlY29uZHMnKSksIDE1MDAwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdGVzdFByb21pc2UgPSB0ZXN0QXBpS2V5KHtcbiAgICAgICAgICBtb2RlbFByb3ZpZGVyOiBwcm92aWRlcixcbiAgICAgICAgICBtb2RlbE5hbWU6IG1vZGVsLFxuICAgICAgICAgIGFwaUtleTogYXBpS2V5LFxuICAgICAgICAgIGJhc2VVcmw6IGJhc2VVcmxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKGF3YWl0IFByb21pc2UucmFjZShbdGVzdFByb21pc2UsIHRpbWVvdXRQcm9taXNlXSkpIGFzIHtcbiAgICAgICAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgICAgICAgIHNlcnZpY2U6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qge3N1Y2Nlc3MsIHNlcnZpY2V9ID0gcmVzdWx0O1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSAhc3VjY2Vzc1xuICAgICAgICAgID8gc2VydmljZSA9PT0gJ29sbGFtYSdcbiAgICAgICAgICAgID8gJ0Nvbm5lY3Rpb24gZmFpbGVkOiBtYXliZSBpbnZhbGlkIE9sbGFtYSBCYXNlIFVSTCdcbiAgICAgICAgICAgIDogJ0Nvbm5lY3Rpb24gZmFpbGVkOiBtYXliZSBpbnZhbGlkIEFQSSBLZXknXG4gICAgICAgICAgOiAnJztcbiAgICAgICAgc2V0Q29ubmVjdGlvbkVycm9yKCFzdWNjZXNzKTtcbiAgICAgICAgc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIHVwZGF0ZUFpQXNzaXN0YW50Q29uZmlnKHtcbiAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXIsXG4gICAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgICAgIGFwaUtleTogYXBpS2V5LFxuICAgICAgICAgIGJhc2VVcmw6IGJhc2VVcmwsXG4gICAgICAgICAgaXNSZWFkeTogc3VjY2VzcyxcbiAgICAgICAgICB0ZW1wZXJhdHVyZTogdGVtcGVyYXR1cmUsXG4gICAgICAgICAgdG9wUDogdG9wUFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNldENvbm5lY3Rpb25FcnJvcih0cnVlKTtcbiAgICAgICAgc2V0RXJyb3JNZXNzYWdlKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0Nvbm5lY3Rpb24gZmFpbGVkJyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc1J1bm5pbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEFpQXNzaXN0YW50Q29uZmlnIGNsYXNzTmFtZT1cImFpLWFzc2lzdGFudC1jb25maWdfX3R5cGVcIj5cbiAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDxTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICB7aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIuYWlQcm92aWRlci50aXRsZScsXG4gICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnU2VsZWN0IEFJIFByb3ZpZGVyJ1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TZWN0aW9uVGl0bGU+XG4gICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRXcmFwcGVyPlxuICAgICAgICAgIDxTdHlsZWRJdGVtU2VsZWN0b3JcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3Byb3ZpZGVyfVxuICAgICAgICAgICAgb3B0aW9ucz17T2JqZWN0LmtleXMoUFJPVklERVJfTU9ERUxTKX1cbiAgICAgICAgICAgIG11bHRpU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiYWlBc3Npc3RhbnRNYW5hZ2VyLmFpUHJvdmlkZXJcIlxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQWlQcm92aWRlclNlbGVjdH1cbiAgICAgICAgICAgIGZpbHRlck9wdGlvbj1cIm5hbWVcIlxuICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9e29wID0+IG9wfVxuICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17b3AgPT4gb3B9XG4gICAgICAgICAgICBzZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgIHNob3dBcnJvdz17dHJ1ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZFdyYXBwZXI+XG4gICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8U2VjdGlvblRpdGxlPlxuICAgICAgICAgICAge2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLmxsbU1vZGVsLnRpdGxlJyxcbiAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdTZWxlY3QgTExNIE1vZGVsJ1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TZWN0aW9uVGl0bGU+XG4gICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRXcmFwcGVyPlxuICAgICAgICAgIDxTdHlsZWRJdGVtU2VsZWN0b3JcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e21vZGVsfVxuICAgICAgICAgICAgb3B0aW9ucz17UFJPVklERVJfTU9ERUxTW3Byb3ZpZGVyXX1cbiAgICAgICAgICAgIG11bHRpU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiYWlBc3Npc3RhbnRNYW5hZ2VyLmxsbU1vZGVsLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkxMTU1vZGVsU2VsZWN0fVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uPVwibmFtZVwiXG4gICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17b3AgPT4gb3B9XG4gICAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtvcCA9PiBvcH1cbiAgICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgc2hvd0Fycm93PXt0cnVlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3R5bGVkV3JhcHBlcj5cbiAgICAgICAge3Byb3ZpZGVyICE9PSAnb2xsYW1hJyA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8U2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgICAgIHtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIuYXBpS2V5LnRpdGxlJyxcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnRW50ZXIgQVBJIEtleSdcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9TZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcGkta2V5LWlucHV0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXBpLWtleS1pbnB1dF9faWNvblwiPlxuICAgICAgICAgICAgICAgIDxBcGlLZXkgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQXBpS2V5Q2hhbmdlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIuYXBpS2V5LnBsYWNlaG9sZGVyJyxcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnRW50ZXIgeW91ciBBUEkgS2V5J1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIHZhbHVlPXthcGlLZXl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8U2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgICAgIHtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIuYmFzZVVybC50aXRsZScsXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJ09sbGFtYSBCYXNlIFVSTCdcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9TZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcGkta2V5LWlucHV0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXBpLWtleS1pbnB1dF9faWNvblwiPlxuICAgICAgICAgICAgICAgIDxBcGlLZXkgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQmFzZVVybENoYW5nZX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLmJhc2VVcmwucGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdFbnRlciBPbGxhbWEgQmFzZSBVUkwnXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2Jhc2VVcmx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgICAge2Nvbm5lY3Rpb25FcnJvciAmJiAoXG4gICAgICAgICAgPFN0eWxlRXJyb3JNZXNzYWdlIGNsYXNzTmFtZT1cImVycm9yLW1lc3NhZ2VcIj57ZXJyb3JNZXNzYWdlfTwvU3R5bGVFcnJvck1lc3NhZ2U+XG4gICAgICAgICl9XG4gICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8U2VjdGlvblRpdGxlPlxuICAgICAgICAgICAge2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLnRlbXBlcmF0dXJlLnRpdGxlJyxcbiAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdUZW1wZXJhdHVyZSdcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU2VjdGlvblRpdGxlPlxuICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICA8U3R5bGVTbGlkZXJXcmFwcGVyPlxuICAgICAgICAgIDxSYW5nZVNsaWRlclxuICAgICAgICAgICAgc2hvd0lucHV0PXt0cnVlfVxuICAgICAgICAgICAgaXNSYW5nZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgdmFsdWUwPXswfVxuICAgICAgICAgICAgdmFsdWUxPXt0ZW1wZXJhdHVyZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRlbXBlcmF0dXJlQ2hhbmdlfVxuICAgICAgICAgICAgcmFuZ2U9e1swLCAyXX1cbiAgICAgICAgICAgIHN0ZXA9ezAuMX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDxTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICB7aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIudG9wUC50aXRsZScsXG4gICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnVG9wIFAnXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NlY3Rpb25UaXRsZT5cbiAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgICA8UmFuZ2VTbGlkZXJcbiAgICAgICAgICAgIHNob3dJbnB1dD17dHJ1ZX1cbiAgICAgICAgICAgIGlzUmFuZ2VkPXtmYWxzZX1cbiAgICAgICAgICAgIHZhbHVlMD17MH1cbiAgICAgICAgICAgIHZhbHVlMT17dG9wUH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRvcFBDaGFuZ2V9XG4gICAgICAgICAgICByYW5nZT17WzAsIDFdfVxuICAgICAgICAgICAgc3RlcD17MC4xfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3R5bGVTbGlkZXJXcmFwcGVyPlxuICAgICAgICA8U3R5bGVkQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b24gb25DbGljaz17b25TdGFydENoYXR9IHdpZHRoPXsnMTAwJSd9PlxuICAgICAgICAgICAge2lzUnVubmluZyAmJiA8TG9hZGluZ1NwaW5uZXIgc2l6ZT17MTJ9IC8+fVxuICAgICAgICAgICAge2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLnN0YXJ0Q2hhdCcsXG4gICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiBcIkxldCdzIENoYXRcIlxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvU3R5bGVkQnV0dG9uPlxuICAgICAgPC9TdHlsZWRBaUFzc2lzdGFudENvbmZpZz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB3aXRoVGhlbWUoaW5qZWN0SW50bChBaUFzc2lzdGFudENvbmZpZykpIGFzIFJlYWN0LkZDPEFpQXNzaXN0YW50Q29uZmlnUHJvcHM+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBBaUFzc2lzdGFudENvbmZpZ0ZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFTQSxJQUFBSSxPQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFGLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUE7QUFBNEMsSUFBQVMsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQWxCNUM7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBbEIsd0JBQUFrQixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEs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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/ai-assistant",
|
|
3
3
|
"author": "Xun Li<lixun910@gmail.com>",
|
|
4
|
-
"version": "3.1.0
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"description": "kepler.gl AI assistant",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -30,20 +30,21 @@
|
|
|
30
30
|
"umd"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kepler.gl/components": "3.1.0
|
|
34
|
-
"@kepler.gl/constants": "3.1.0
|
|
35
|
-
"@kepler.gl/layers": "3.1.0
|
|
36
|
-
"@kepler.gl/table": "3.1.0
|
|
37
|
-
"@kepler.gl/types": "3.1.0
|
|
38
|
-
"@kepler.gl/utils": "3.1.0
|
|
39
|
-
"@openassistant/core": "^0.0.
|
|
33
|
+
"@kepler.gl/components": "3.1.0",
|
|
34
|
+
"@kepler.gl/constants": "3.1.0",
|
|
35
|
+
"@kepler.gl/layers": "3.1.0",
|
|
36
|
+
"@kepler.gl/table": "3.1.0",
|
|
37
|
+
"@kepler.gl/types": "3.1.0",
|
|
38
|
+
"@kepler.gl/utils": "3.1.0",
|
|
39
|
+
"@openassistant/core": "^0.0.7",
|
|
40
40
|
"@openassistant/echarts": "^0.0.6",
|
|
41
41
|
"@openassistant/geoda": "^0.0.6",
|
|
42
42
|
"@openassistant/ui": "^0.0.7",
|
|
43
43
|
"color-interpolate": "^1.0.5",
|
|
44
44
|
"echarts": "^5.5.1",
|
|
45
45
|
"global": "^4.3.0",
|
|
46
|
-
"react-intl": "^6.3.0"
|
|
46
|
+
"react-intl": "^6.3.0",
|
|
47
|
+
"usehooks-ts": "^3.1.0"
|
|
47
48
|
},
|
|
48
49
|
"nyc": {
|
|
49
50
|
"sourceMap": false,
|