kepler.gl 3.2.0 → 3.2.1
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/ai-assistant/src/config/models.d.ts +8 -0
- package/dist/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
- package/dist/src/localization/src/translations/en.d.ts +1 -0
- package/package.json +2 -2
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/dist/components/ai-assistant-config.js +40 -24
- package/src/ai-assistant/dist/config/models.d.ts +8 -0
- package/src/ai-assistant/dist/config/models.js +16 -8
- package/src/ai-assistant/dist/localization.js +7 -7
- package/src/ai-assistant/dist/reducers/index.js +3 -2
- package/src/ai-assistant/package.json +16 -16
- package/src/ai-assistant/src/components/ai-assistant-config.tsx +39 -28
- package/src/ai-assistant/src/config/models.ts +37 -25
- package/src/ai-assistant/src/localization.ts +6 -6
- package/src/ai-assistant/src/reducers/index.ts +2 -1
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/common/color-legend.js +8 -8
- package/src/components/dist/common/data-table/index.js +13 -9
- package/src/components/dist/map/map-legend-panel.js +10 -4
- package/src/components/dist/map/map-legend.js +2 -2
- package/src/components/dist/plot-container.js +4 -2
- package/src/components/dist/side-panel/interaction-panel/interaction-panel.js +2 -2
- package/src/components/dist/side-panel/layer-panel/color-breaks-panel.js +11 -2
- package/src/components/dist/side-panel/layer-panel/color-scale-selector.js +65 -12
- package/src/components/dist/side-panel/layer-panel/custom-palette.js +18 -7
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +18 -4
- package/src/components/package.json +15 -15
- package/src/components/src/common/color-legend.tsx +15 -2
- package/src/components/src/common/data-table/index.tsx +1 -1
- package/src/components/src/map/map-legend-panel.tsx +21 -2
- package/src/components/src/map/map-legend.tsx +1 -1
- package/src/components/src/plot-container.tsx +2 -1
- package/src/components/src/side-panel/interaction-panel/interaction-panel.tsx +1 -0
- package/src/components/src/side-panel/layer-panel/color-breaks-panel.tsx +14 -3
- package/src/components/src/side-panel/layer-panel/color-scale-selector.tsx +62 -8
- package/src/components/src/side-panel/layer-panel/custom-palette.tsx +11 -5
- package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +19 -2
- package/src/constants/dist/default-settings.js +1 -1
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/b3/bd/e4f91c7af9e320b979e29ad3b9e3a4dfcd61e4a09d6e4579104c40dcace7651b443fdd6d7ff5d947ed6c9df2c0bbbcc76a2ea86d6398e4945257eeb80dd5 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/b4/c5/a43653dff3b380f7b0793080a57c980a9a136764933e79454de0fe43a5ca +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +2 -2
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/dist/table/duckdb-table-utils.js +3 -2
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/table/duckdb-table-utils.ts +5 -1
- package/src/effects/package.json +5 -5
- package/src/layers/dist/icon-layer/icon-layer.js +12 -2
- package/src/layers/dist/vector-tile/common-tile/tile-dataset.d.ts +4 -0
- package/src/layers/dist/vector-tile/common-tile/tile-dataset.js +10 -1
- package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +11 -0
- package/src/layers/dist/vector-tile/vector-tile-layer.js +113 -7
- package/src/layers/package.json +9 -9
- package/src/layers/src/icon-layer/icon-layer.ts +49 -38
- package/src/layers/src/vector-tile/common-tile/tile-dataset.ts +7 -0
- package/src/layers/src/vector-tile/vector-tile-layer.ts +110 -6
- package/src/localization/dist/translations/en.d.ts +1 -0
- package/src/localization/dist/translations/en.js +2 -1
- package/src/localization/package.json +1 -1
- package/src/localization/src/translations/en.ts +1 -0
- package/src/processors/dist/data-processor.js +15 -5
- package/src/processors/package.json +7 -7
- package/src/processors/src/data-processor.ts +19 -4
- package/src/reducers/package.json +16 -16
- package/src/schemas/package.json +7 -7
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/52/82/28cacf6fd462b779c22675964b655bf3a9f3ce9ec3c9b141a401a5bf90cb7d904ac65ab8e484570130b12771af0a0d5bab20e6976cfa773666763e046a6a +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/56/db/b5a812c56b0d1dcdcd33da37e464062a19c8752cb2296603dc72d2c54d31 +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/package.json +4 -4
- package/umd/keplergl.min.js +1366 -1333
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/ai-assistant",
|
|
3
3
|
"author": "Xun Li<lixun910@gmail.com>",
|
|
4
|
-
"version": "3.2.
|
|
4
|
+
"version": "3.2.1",
|
|
5
5
|
"description": "kepler.gl AI assistant",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -34,21 +34,21 @@
|
|
|
34
34
|
"@ai-sdk/deepseek": "^0.2.14",
|
|
35
35
|
"@ai-sdk/google": "^1.2.18",
|
|
36
36
|
"@ai-sdk/xai": "^1.2.16",
|
|
37
|
-
"@kepler.gl/components": "3.2.
|
|
38
|
-
"@kepler.gl/constants": "3.2.
|
|
39
|
-
"@kepler.gl/layers": "3.2.
|
|
40
|
-
"@kepler.gl/table": "3.2.
|
|
41
|
-
"@kepler.gl/types": "3.2.
|
|
42
|
-
"@kepler.gl/utils": "3.2.
|
|
43
|
-
"@openassistant/core": "^0.5.
|
|
44
|
-
"@openassistant/duckdb": "^0.5.
|
|
45
|
-
"@openassistant/echarts": "^0.5.
|
|
46
|
-
"@openassistant/geoda": "^0.5.
|
|
47
|
-
"@openassistant/osm": "^0.5.
|
|
48
|
-
"@openassistant/plots": "^0.5.
|
|
49
|
-
"@openassistant/tables": "^0.5.
|
|
50
|
-
"@openassistant/ui": "^0.5.
|
|
51
|
-
"@openassistant/utils": "^0.5.
|
|
37
|
+
"@kepler.gl/components": "3.2.1",
|
|
38
|
+
"@kepler.gl/constants": "3.2.1",
|
|
39
|
+
"@kepler.gl/layers": "3.2.1",
|
|
40
|
+
"@kepler.gl/table": "3.2.1",
|
|
41
|
+
"@kepler.gl/types": "3.2.1",
|
|
42
|
+
"@kepler.gl/utils": "3.2.1",
|
|
43
|
+
"@openassistant/core": "^0.5.17",
|
|
44
|
+
"@openassistant/duckdb": "^0.5.17",
|
|
45
|
+
"@openassistant/echarts": "^0.5.17",
|
|
46
|
+
"@openassistant/geoda": "^0.5.17",
|
|
47
|
+
"@openassistant/osm": "^0.5.17",
|
|
48
|
+
"@openassistant/plots": "^0.5.17",
|
|
49
|
+
"@openassistant/tables": "^0.5.17",
|
|
50
|
+
"@openassistant/ui": "^0.5.17",
|
|
51
|
+
"@openassistant/utils": "^0.5.17",
|
|
52
52
|
"color-interpolate": "^1.0.5",
|
|
53
53
|
"global": "^4.3.0",
|
|
54
54
|
"ollama-ai-provider-v2": "^0.0.5",
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
} from '@kepler.gl/components';
|
|
17
17
|
import {State} from '../index';
|
|
18
18
|
import ApiKey from '../icons/api-key';
|
|
19
|
-
import {PROVIDER_MODELS} from '../config/models';
|
|
19
|
+
import {PROVIDER_MODELS, PROVIDER_DEFAULT_BASE_URLS} from '../config/models';
|
|
20
20
|
import {useLocalStorage} from 'usehooks-ts';
|
|
21
21
|
import {GetAssistantModelByProvider} from '@openassistant/core';
|
|
22
22
|
import {updateAiAssistantConfig} from '../actions';
|
|
@@ -152,7 +152,7 @@ export function AiAssistantConfig() {
|
|
|
152
152
|
const [topP, setTopP] = useLocalStorage('ai-assistant-top-p', aiAssistantConfig.topP || 1.0);
|
|
153
153
|
const [baseUrl, setBaseUrl] = useLocalStorage(
|
|
154
154
|
'ai-assistant-base-url',
|
|
155
|
-
aiAssistantConfig.baseUrl ||
|
|
155
|
+
aiAssistantConfig.baseUrl || PROVIDER_DEFAULT_BASE_URLS[provider]
|
|
156
156
|
);
|
|
157
157
|
const [mapboxToken, setMapboxToken] = useLocalStorage(
|
|
158
158
|
'ai-assistant-mapbox-token',
|
|
@@ -168,6 +168,7 @@ export function AiAssistantConfig() {
|
|
|
168
168
|
if (typeof value === 'string') {
|
|
169
169
|
setProvider(value);
|
|
170
170
|
setModel(PROVIDER_MODELS[value][0]);
|
|
171
|
+
setBaseUrl(PROVIDER_DEFAULT_BASE_URLS[value]);
|
|
171
172
|
setConnectionError(false);
|
|
172
173
|
setErrorMessage('');
|
|
173
174
|
}
|
|
@@ -224,19 +225,32 @@ export function AiAssistantConfig() {
|
|
|
224
225
|
setTimeout(() => reject(new Error('Connection timeout after 15 seconds')), 15000);
|
|
225
226
|
});
|
|
226
227
|
|
|
227
|
-
const AssistantModel = GetAssistantModelByProvider({
|
|
228
|
+
const AssistantModel = await GetAssistantModelByProvider({
|
|
228
229
|
provider: provider
|
|
229
230
|
});
|
|
230
231
|
|
|
232
|
+
if (!AssistantModel || !AssistantModel.configure || !AssistantModel.testConnection) {
|
|
233
|
+
throw new Error('Failed to initialize AI model');
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// configure model
|
|
237
|
+
AssistantModel.configure({
|
|
238
|
+
model: model,
|
|
239
|
+
baseURL: baseUrl || PROVIDER_DEFAULT_BASE_URLS[provider],
|
|
240
|
+
apiKey: apiKey,
|
|
241
|
+
temperature: Number(temperature),
|
|
242
|
+
topP: Number(topP)
|
|
243
|
+
});
|
|
244
|
+
|
|
231
245
|
const success = (await Promise.race([
|
|
232
|
-
AssistantModel
|
|
246
|
+
AssistantModel.testConnection(apiKey, model),
|
|
233
247
|
timeoutPromise
|
|
234
248
|
])) as boolean;
|
|
235
249
|
|
|
236
250
|
const errorMessage = !success
|
|
237
251
|
? provider === 'ollama'
|
|
238
|
-
? 'Connection failed: maybe invalid
|
|
239
|
-
: 'Connection failed: maybe invalid API Key'
|
|
252
|
+
? 'Connection failed: maybe invalid Base URL'
|
|
253
|
+
: 'Connection failed: maybe invalid API Key or Base URL'
|
|
240
254
|
: '';
|
|
241
255
|
setConnectionError(!success);
|
|
242
256
|
setErrorMessage(errorMessage);
|
|
@@ -245,7 +259,7 @@ export function AiAssistantConfig() {
|
|
|
245
259
|
provider: provider,
|
|
246
260
|
model: model,
|
|
247
261
|
apiKey: apiKey,
|
|
248
|
-
baseUrl: baseUrl,
|
|
262
|
+
baseUrl: baseUrl || PROVIDER_DEFAULT_BASE_URLS[provider],
|
|
249
263
|
isReady: success,
|
|
250
264
|
temperature: temperature,
|
|
251
265
|
topP: topP,
|
|
@@ -322,11 +336,11 @@ export function AiAssistantConfig() {
|
|
|
322
336
|
/>
|
|
323
337
|
</OllamaModelInputWrapper>
|
|
324
338
|
)}
|
|
325
|
-
{provider !== 'ollama'
|
|
339
|
+
{provider !== 'ollama' && (
|
|
326
340
|
<>
|
|
327
341
|
<PanelLabelWrapper>
|
|
328
342
|
<SectionTitle>
|
|
329
|
-
<FormattedMessage id="aiAssistantManager.apiKey.
|
|
343
|
+
<FormattedMessage id="aiAssistantManager.apiKey.title" />
|
|
330
344
|
</SectionTitle>
|
|
331
345
|
</PanelLabelWrapper>
|
|
332
346
|
<div className="api-key-input">
|
|
@@ -341,26 +355,23 @@ export function AiAssistantConfig() {
|
|
|
341
355
|
/>
|
|
342
356
|
</div>
|
|
343
357
|
</>
|
|
344
|
-
) : (
|
|
345
|
-
<>
|
|
346
|
-
<PanelLabelWrapper>
|
|
347
|
-
<SectionTitle>
|
|
348
|
-
<FormattedMessage id="aiAssistantManager.baseUrl.placeholder" />
|
|
349
|
-
</SectionTitle>
|
|
350
|
-
</PanelLabelWrapper>
|
|
351
|
-
<div className="api-key-input">
|
|
352
|
-
<div className="api-key-input__icon">
|
|
353
|
-
<ApiKey height="20px" />
|
|
354
|
-
</div>
|
|
355
|
-
<Input
|
|
356
|
-
type="text"
|
|
357
|
-
onChange={onBaseUrlChange}
|
|
358
|
-
placeholder={intl.formatMessage({id: 'aiAssistantManager.baseUrl.placeholder'})}
|
|
359
|
-
value={baseUrl}
|
|
360
|
-
/>
|
|
361
|
-
</div>
|
|
362
|
-
</>
|
|
363
358
|
)}
|
|
359
|
+
<PanelLabelWrapper>
|
|
360
|
+
<SectionTitle>
|
|
361
|
+
<FormattedMessage id="aiAssistantManager.baseUrl.title" />
|
|
362
|
+
</SectionTitle>
|
|
363
|
+
</PanelLabelWrapper>
|
|
364
|
+
<div className="api-key-input">
|
|
365
|
+
<div className="api-key-input__icon">
|
|
366
|
+
<ApiKey height="20px" />
|
|
367
|
+
</div>
|
|
368
|
+
<Input
|
|
369
|
+
type="text"
|
|
370
|
+
onChange={onBaseUrlChange}
|
|
371
|
+
placeholder={PROVIDER_DEFAULT_BASE_URLS[provider]}
|
|
372
|
+
value={baseUrl}
|
|
373
|
+
/>
|
|
374
|
+
</div>
|
|
364
375
|
{connectionError && (
|
|
365
376
|
<StyleErrorMessage className="error-message">{errorMessage}</StyleErrorMessage>
|
|
366
377
|
)}
|
|
@@ -1,33 +1,45 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MIT
|
|
2
2
|
// Copyright contributors to the kepler.gl project
|
|
3
3
|
|
|
4
|
+
export const PROVIDER_DEFAULT_BASE_URLS = {
|
|
5
|
+
"openai": "https://api.openai.com/v1",
|
|
6
|
+
"anthropic": "https://api.anthropic.com/v1",
|
|
7
|
+
"google": "https://generativelanguage.googleapis.com/v1beta",
|
|
8
|
+
"deepseek": "https://api.deepseek.com/v1",
|
|
9
|
+
"xai": "https://api.x.ai/v1",
|
|
10
|
+
"ollama": "http://localhost:11434/api"
|
|
11
|
+
};
|
|
12
|
+
|
|
4
13
|
export const PROVIDER_MODELS = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
openai: [
|
|
15
|
+
'gpt-4.1',
|
|
16
|
+
'gpt-4o',
|
|
17
|
+
'gpt-4o-mini',
|
|
18
|
+
'gpt-4',
|
|
19
|
+
'gpt-3.5-turbo',
|
|
20
|
+
'o1',
|
|
21
|
+
'o1-preview',
|
|
22
|
+
'o1-mini'
|
|
14
23
|
],
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
google: [
|
|
25
|
+
'gemini-2.5-flash',
|
|
26
|
+
'gemini-2.5-pro',
|
|
27
|
+
'gemini-2.0-flash',
|
|
28
|
+
'gemini-1.5-flash',
|
|
29
|
+
'gemini-1.5-pro'
|
|
21
30
|
],
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
deepseek: ['deepseek-chat'],
|
|
32
|
+
anthropic: [
|
|
33
|
+
'claude-opus-4-1',
|
|
34
|
+
'claude-opus-4-0',
|
|
35
|
+
'claude-sonnet-4-0',
|
|
36
|
+
'claude-3.7-sonnet',
|
|
37
|
+
'claude-3.5-sonnet',
|
|
38
|
+
'claude-3.5-haiku',
|
|
39
|
+
'claude-3-opus',
|
|
40
|
+
'claude-3-sonnet',
|
|
41
|
+
'claude-3-haiku'
|
|
30
42
|
],
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
xai: ['grok-3', 'grok-3-fast', 'grok-3-mini', 'grok-3-mini-fast'],
|
|
44
|
+
ollama: ['qwen3:32b', 'gpt-oss']
|
|
33
45
|
};
|
|
@@ -21,8 +21,8 @@ export const messages = {
|
|
|
21
21
|
placeholder: 'Enter your API Key'
|
|
22
22
|
},
|
|
23
23
|
baseUrl: {
|
|
24
|
-
title: '
|
|
25
|
-
placeholder: 'Enter
|
|
24
|
+
title: 'Base URL',
|
|
25
|
+
placeholder: 'Enter Base URL'
|
|
26
26
|
},
|
|
27
27
|
temperature: {
|
|
28
28
|
title: 'Temperature'
|
|
@@ -49,8 +49,8 @@ export const messages = {
|
|
|
49
49
|
placeholder: 'Syötä API-avain'
|
|
50
50
|
},
|
|
51
51
|
baseUrl: {
|
|
52
|
-
title: '
|
|
53
|
-
placeholder: 'Syötä
|
|
52
|
+
title: 'Base URL',
|
|
53
|
+
placeholder: 'Syötä Base URL'
|
|
54
54
|
},
|
|
55
55
|
temperature: {
|
|
56
56
|
title: 'Lämpötila'
|
|
@@ -161,8 +161,8 @@ export const messages = {
|
|
|
161
161
|
placeholder: 'API キーを入力'
|
|
162
162
|
},
|
|
163
163
|
baseUrl: {
|
|
164
|
-
title: '
|
|
165
|
-
placeholder: '
|
|
164
|
+
title: 'Base URL',
|
|
165
|
+
placeholder: 'Base URL を入力'
|
|
166
166
|
},
|
|
167
167
|
temperature: {
|
|
168
168
|
title: '温度'
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
SET_MAP_BOUNDARY
|
|
11
11
|
} from '../actions';
|
|
12
12
|
import {MessageModel} from '@openassistant/core';
|
|
13
|
+
import {PROVIDER_DEFAULT_BASE_URLS} from '../config/models';
|
|
13
14
|
|
|
14
15
|
export type AiAssistantConfig = {
|
|
15
16
|
isReady: boolean;
|
|
@@ -28,7 +29,7 @@ const initialConfig: AiAssistantConfig = {
|
|
|
28
29
|
provider: 'openai',
|
|
29
30
|
model: 'gpt-4o',
|
|
30
31
|
apiKey: '',
|
|
31
|
-
baseUrl: '
|
|
32
|
+
baseUrl: PROVIDER_DEFAULT_BASE_URLS['openai'],
|
|
32
33
|
temperature: 0.0,
|
|
33
34
|
topP: 1.0
|
|
34
35
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/cloud-providers",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.2.
|
|
4
|
+
"version": "3.2.1",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"umd"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kepler.gl/types": "3.2.
|
|
33
|
+
"@kepler.gl/types": "3.2.1",
|
|
34
34
|
"react": "^18.2.0"
|
|
35
35
|
},
|
|
36
36
|
"nyc": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/common-utils",
|
|
3
3
|
"author": "Shan He <heshan0131@gmail.com>",
|
|
4
|
-
"version": "3.2.
|
|
4
|
+
"version": "3.2.1",
|
|
5
5
|
"description": "kepler.gl common utils",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"umd"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kepler.gl/constants": "3.2.
|
|
34
|
-
"@kepler.gl/types": "3.2.
|
|
33
|
+
"@kepler.gl/constants": "3.2.1",
|
|
34
|
+
"@kepler.gl/types": "3.2.1",
|
|
35
35
|
"d3-array": "^2.8.0",
|
|
36
36
|
"global": "^4.3.0",
|
|
37
37
|
"h3-js": "^3.1.0",
|
|
@@ -36,22 +36,22 @@ var stopClickPropagation = function stopClickPropagation(e) {
|
|
|
36
36
|
return e.stopPropagation();
|
|
37
37
|
};
|
|
38
38
|
var inputCss = (0, _styledComponents.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n input {\n pointer-events: none;\n }\n"])));
|
|
39
|
-
var StyledLegend = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n ", ";\n overflow: auto;\n margin-bottom: ", "px;\n display: grid;\n grid-row-gap: ", "px;\n padding: 2px 0;\n\n ", "\n"])), function (props) {
|
|
39
|
+
var StyledLegend = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n ", ";\n overflow-y: auto;\n overflow-x: hidden;\n margin-bottom: ", "px;\n display: grid;\n grid-row-gap: ", "px;\n padding: 2px 0;\n\n ", "\n"])), function (props) {
|
|
40
40
|
return props.theme.sidePanelScrollBar;
|
|
41
41
|
}, function (props) {
|
|
42
42
|
return props.isExpanded ? '' : "max-height: 156px;";
|
|
43
43
|
}, GAP, GAP, function (props) {
|
|
44
44
|
return props.disableEdit ? inputCss : '';
|
|
45
45
|
});
|
|
46
|
-
var StyledLegendRow = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n height: 20px;\n"])));
|
|
46
|
+
var StyledLegendRow = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n height: 20px;\n min-width: 0;\n"])));
|
|
47
47
|
function ResetColorLabelFactory() {
|
|
48
|
-
return (0, _styledComponents["default"])(_icons.Reset)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n cursor: pointer;\n\n &:hover {\n color: ", ";\n }\n "])), function (props) {
|
|
48
|
+
return (0, _styledComponents["default"])(_icons.Reset)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n cursor: pointer;\n flex-shrink: 0;\n margin-left: ", "px;\n\n &:hover {\n color: ", ";\n }\n "])), function (props) {
|
|
49
49
|
return props.theme.labelColorLT;
|
|
50
|
-
}, function (props) {
|
|
50
|
+
}, GAP, function (props) {
|
|
51
51
|
return props.theme.panelHeaderIconHover;
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
-
var StyleInlineInput = (0, _styledComponents["default"])(_styledComponents2.InlineInput)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 9.5px;\n line-height: ", "px;\n height: ", "px;\n color: ", ";\n width: unset;\n padding: 2px;\n flex: 1;\n margin: 0 ", "px;\n :hover {\n height: ", "px;\n }\n"])), ROW_H, ROW_H, function (props) {
|
|
54
|
+
var StyleInlineInput = (0, _styledComponents["default"])(_styledComponents2.InlineInput)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 9.5px;\n line-height: ", "px;\n height: ", "px;\n color: ", ";\n width: unset;\n padding: 2px;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0 ", "px;\n :hover {\n height: ", "px;\n }\n"])), ROW_H, ROW_H, function (props) {
|
|
55
55
|
return props.theme.textColor;
|
|
56
56
|
}, GAP, ROW_H);
|
|
57
57
|
function LegendRowEditorFactory() {
|
|
@@ -97,7 +97,7 @@ function LegendColorDisplayFactory() {
|
|
|
97
97
|
};
|
|
98
98
|
return LegendColorDisplay;
|
|
99
99
|
}
|
|
100
|
-
var StyledLabel = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 10px;\n color: ", ";\n padding-left: 2px;\n"])), function (props) {
|
|
100
|
+
var StyledLabel = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 10px;\n color: ", ";\n padding-left: 2px;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])), function (props) {
|
|
101
101
|
return props.theme.textColor;
|
|
102
102
|
});
|
|
103
103
|
LegendRowFactory.deps = [LegendColorDisplayFactory, LegendRowEditorFactory, ResetColorLabelFactory];
|
|
@@ -115,7 +115,7 @@ function LegendRowFactory(LegendColorDisplay, LegendRowEditor, ResetColorLabel)
|
|
|
115
115
|
var onReset = (0, _react.useCallback)(function () {
|
|
116
116
|
return onResetLabel && onResetLabel(color);
|
|
117
117
|
}, [color, onResetLabel]);
|
|
118
|
-
var value = displayLabel ? label
|
|
118
|
+
var value = displayLabel ? String(label !== null && label !== void 0 ? label : '') : '';
|
|
119
119
|
return /*#__PURE__*/_react["default"].createElement(StyledLegendRow, null, /*#__PURE__*/_react["default"].createElement(LegendColorDisplay, {
|
|
120
120
|
color: color
|
|
121
121
|
}), onUpdateLabel ? /*#__PURE__*/_react["default"].createElement(LegendRowEditor, {
|
|
@@ -270,4 +270,4 @@ function ColorLegendFactory(LegendRow) {
|
|
|
270
270
|
return /*#__PURE__*/_react["default"].memo(ColorLegend);
|
|
271
271
|
}
|
|
272
272
|
var _default = exports["default"] = ColorLegendFactory;
|
|
273
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfaWNvbnMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJST1dfSCIsIkdBUCIsIlJFQ1RfVyIsInN0b3BDbGlja1Byb3BhZ2F0aW9uIiwic3RvcFByb3BhZ2F0aW9uIiwiaW5wdXRDc3MiLCJjc3MiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIlN0eWxlZExlZ2VuZCIsInN0eWxlZCIsImRpdiIsInByb3BzIiwidGhlbWUiLCJzaWRlUGFuZWxTY3JvbGxCYXIiLCJpc0V4cGFuZGVkIiwiZGlzYWJsZUVkaXQiLCJTdHlsZWRMZWdlbmRSb3ciLCJSZXNldENvbG9yTGFiZWxGYWN0b3J5IiwiUmVzZXQiLCJsYWJlbENvbG9yTFQiLCJwYW5lbEhlYWRlckljb25Ib3ZlciIsIlN0eWxlSW5saW5lSW5wdXQiLCJJbmxpbmVJbnB1dCIsInRleHRDb2xvciIsIkxlZ2VuZFJvd0VkaXRvckZhY3RvcnkiLCJMZWdlbmRSb3dFZGl0b3IiLCJfcmVmIiwiY29sb3IiLCJsYWJlbCIsIm9uRWRpdCIsIl9yZWYkZGlzYWJsZWQiLCJkaXNhYmxlZCIsIm9uQ2hhbmdlIiwidXNlQ2FsbGJhY2siLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiaWQiLCJjb25jYXQiLCJkaXNwbGF5TmFtZSIsIkxlZ2VuZFJvd1N0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJMZWdlbmRDb2xvckRpc3BsYXlGYWN0b3J5IiwiTGVnZW5kQ29sb3JEaXNwbGF5IiwiX3JlZjIiLCJzdHlsZSIsInVzZU1lbW8iLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXJnaW5SaWdodCIsIlN0eWxlZExhYmVsIiwiTGVnZW5kUm93RmFjdG9yeSIsImRlcHMiLCJSZXNldENvbG9yTGFiZWwiLCJMZWdlbmRSb3ciLCJfcmVmMyIsIl9yZWYzJGxhYmVsIiwiZGlzcGxheUxhYmVsIiwib25VcGRhdGVMYWJlbCIsIm9uUmVzZXRMYWJlbCIsIm5ld0xhYmVsIiwib25SZXNldCIsInRvU3RyaW5nIiwib3ZlcnJpZGVDb2xvckxlZ2VuZHMiLCJjb2xvckxlZ2VuZHMiLCJvdmVycmlkZXMiLCJkYXRhIiwibGFiZWxzIiwibmV3Q29sb3JMZWdlbmRzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImRhdHVtIiwiaW5kZXgiLCJjdXJyZW50SW5kZXgiLCJmaW5kSW5kZXgiLCJkIiwib3ZlcnJpZGUiLCJvdmVycmlkZUJ5Q3VzdG9tTGVnZW5kIiwiX3JlZjQiLCJjdXJyZW50TGVnZW5kcyIsImlzT2JqZWN0IiwidmFsdWVzIiwidXNlTGF5ZXJDb2xvckxlZ2VuZHMiLCJsYXllciIsInNjYWxlVHlwZSIsImRvbWFpbiIsInJhbmdlIiwiaXNGaXhlZCIsImZpZWxkVHlwZSIsImxhYmVsRm9ybWF0IiwibWFwU3RhdGUiLCJzY2FsZSIsImdldExheWVyQ29sb3JTY2FsZSIsInNjYWxlQnlab29tIiwiZ2V0VmlzdWFsQ2hhbm5lbFNjYWxlQnlab29tIiwiU0NBTEVfVFlQRVMiLCJjdXN0b21PcmRpbmFsIiwiY29sb3JNYXAiLCJjb2xvckJyZWFrcyIsImNvbG9yTWFwVG9DYXRlZ29yaWNhbENvbG9yQnJlYWtzIiwibWFwIiwiY2IiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRMZWdlbmRPZlNjYWxlIiwiTGVnZW5kc1dpdGhDdXN0b21MZWdlbmRzIiwiQ29sb3JMZWdlbmRGYWN0b3J5IiwiQ29sb3JMZWdlbmQiLCJfcmVmNSIsIm9uVXBkYXRlQ29sb3JMZWdlbmQiLCJfcmVmNSRkaXNwbGF5TGFiZWwiLCJfcmVmNSRkaXNhYmxlRWRpdCIsIl9yZWY2IiwibGVnZW5kcyIsIm5ld1ZhbHVlIiwiXyIsInJlc3QiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwibGVnZW5kIiwia2V5IiwidW5kZWZpbmVkIiwiUmVhY3QiLCJtZW1vIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9jb2xvci1sZWdlbmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7Y3NzfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7U0NBTEVfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7Q29sb3JSYW5nZSwgSGV4Q29sb3IsIE1hcFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldExheWVyQ29sb3JTY2FsZSxcbiAgZ2V0TGVnZW5kT2ZTY2FsZSxcbiAgZ2V0VmlzdWFsQ2hhbm5lbFNjYWxlQnlab29tLFxuICBjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyxcbiAgaXNPYmplY3Rcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7UmVzZXR9IGZyb20gJy4vaWNvbnMnO1xuaW1wb3J0IHtJbmxpbmVJbnB1dH0gZnJvbSAnLi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmNvbnN0IFJPV19IID0gMTU7XG5jb25zdCBHQVAgPSAyO1xuY29uc3QgUkVDVF9XID0gMjA7XG5cbmNvbnN0IHN0b3BDbGlja1Byb3BhZ2F0aW9uID0gZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG5jb25zdCBpbnB1dENzcyA9IGNzc2BcbiAgaW5wdXQge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5gO1xuY29uc3QgU3R5bGVkTGVnZW5kID0gc3R5bGVkLmRpdjx7ZGlzYWJsZUVkaXQ6IGJvb2xlYW47IGlzRXhwYW5kZWQ/OiBib29sZWFufT5gXG4gICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2lkZVBhbmVsU2Nyb2xsQmFyfTtcbiAgJHtwcm9wcyA9PiAocHJvcHMuaXNFeHBhbmRlZCA/ICcnIDogYG1heC1oZWlnaHQ6IDE1NnB4O2ApfTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIG1hcmdpbi1ib3R0b206ICR7R0FQfXB4O1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXJvdy1nYXA6ICR7R0FQfXB4O1xuICBwYWRkaW5nOiAycHggMDtcblxuICAke3Byb3BzID0+IChwcm9wcy5kaXNhYmxlRWRpdCA/IGlucHV0Q3NzIDogJycpfVxuYDtcblxuY29uc3QgU3R5bGVkTGVnZW5kUm93ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgaGVpZ2h0OiAyMHB4O1xuYDtcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc2V0Q29sb3JMYWJlbEZhY3RvcnkoKSB7XG4gIHJldHVybiBzdHlsZWQoUmVzZXQpYFxuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxhYmVsQ29sb3JMVH07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEhlYWRlckljb25Ib3Zlcn07XG4gICAgfVxuICBgO1xufVxuXG5jb25zdCBTdHlsZUlubGluZUlucHV0ID0gc3R5bGVkKElubGluZUlucHV0KWBcbiAgZm9udC1zaXplOiA5LjVweDtcbiAgbGluZS1oZWlnaHQ6ICR7Uk9XX0h9cHg7XG4gIGhlaWdodDogJHtST1dfSH1weDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgd2lkdGg6IHVuc2V0O1xuICBwYWRkaW5nOiAycHg7XG4gIGZsZXg6IDE7XG4gIG1hcmdpbjogMCAke0dBUH1weDtcbiAgOmhvdmVyIHtcbiAgICBoZWlnaHQ6ICR7Uk9XX0h9cHg7XG4gIH1cbmA7XG5cbmV4cG9ydCB0eXBlIExlZ2VuZFJvd0VkaXRvclByb3BzID0ge1xuICBjb2xvcjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBjdXN0b21MYWJlbD86IHN0cmluZztcbiAgb25FZGl0OiAobmV3VmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBMZWdlbmRSb3dFZGl0b3JGYWN0b3J5KCkge1xuICBjb25zdCBMZWdlbmRSb3dFZGl0b3I6IFJlYWN0LkZDPExlZ2VuZFJvd0VkaXRvclByb3BzPiA9ICh7XG4gICAgY29sb3IsXG4gICAgbGFiZWwsXG4gICAgb25FZGl0LFxuICAgIGRpc2FibGVkID0gZmFsc2VcbiAgfSkgPT4ge1xuICAgIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4gb25FZGl0KGV2ZW50LnRhcmdldC52YWx1ZSksIFtvbkVkaXRdKTtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlSW5saW5lSW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzc05hbWU9XCJsZWdlbmRfX2xhYmVsX190aXRsZV9fZWRpdG9yXCJcbiAgICAgICAgdmFsdWU9e2xhYmVsfVxuICAgICAgICBvbkNsaWNrPXtzdG9wQ2xpY2tQcm9wYWdhdGlvbn1cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIGlkPXtgJHtjb2xvcn06aW5wdXQtbGVnZW5kLWxhYmVsYH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICBMZWdlbmRSb3dFZGl0b3IuZGlzcGxheU5hbWUgPSAnTGVnZW5kUm93RWRpdG9yJztcbiAgcmV0dXJuIExlZ2VuZFJvd0VkaXRvcjtcbn1cblxuY29uc3QgTGVnZW5kUm93U3R5bGUgPSB7XG4gIHdpZHRoOiBgJHtSRUNUX1d9cHhgLFxuICBoZWlnaHQ6IGAke1JPV19IfXB4YFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIExlZ2VuZENvbG9yRGlzcGxheUZhY3RvcnkoKSB7XG4gIGNvbnN0IExlZ2VuZENvbG9yRGlzcGxheSA9ICh7Y29sb3J9KSA9PiB7XG4gICAgY29uc3Qgc3R5bGUgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gKHsuLi5MZWdlbmRSb3dTdHlsZSwgYmFja2dyb3VuZENvbG9yOiBjb2xvciwgbWFyZ2luUmlnaHQ6IGAke0dBUH1weGB9KSxcbiAgICAgIFtjb2xvcl1cbiAgICApO1xuICAgIHJldHVybiA8ZGl2IHN0eWxlPXtzdHlsZX0gY2xhc3NOYW1lPVwibGVnZW5kLXJvdy1jb2xvclwiIC8+O1xuICB9O1xuXG4gIHJldHVybiBMZWdlbmRDb2xvckRpc3BsYXk7XG59XG5cbmNvbnN0IFN0eWxlZExhYmVsID0gc3R5bGVkLmRpdmBcbiAgZm9udC1zaXplOiAxMHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBwYWRkaW5nLWxlZnQ6IDJweDtcbmA7XG5cbmV4cG9ydCB0eXBlIExlZ2VuZFJvd1Byb3BzID0ge1xuICBsYWJlbDogc3RyaW5nO1xuICBjdXN0b21MYWJlbD86IHN0cmluZztcbiAgZGlzcGxheUxhYmVsPzogYm9vbGVhbjtcbiAgY29sb3I6IHN0cmluZztcbiAgb25VcGRhdGVMYWJlbD86IChzZWxlY3RlZENvbG9yOiBzdHJpbmcsIG5ld0xhYmVsOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uUmVzZXRMYWJlbD86IChjb2xvcjogc3RyaW5nKSA9PiB2b2lkO1xuICBkaXNhYmxlRWRpdD86IGJvb2xlYW47XG59O1xuXG5MZWdlbmRSb3dGYWN0b3J5LmRlcHMgPSBbTGVnZW5kQ29sb3JEaXNwbGF5RmFjdG9yeSwgTGVnZW5kUm93RWRpdG9yRmFjdG9yeSwgUmVzZXRDb2xvckxhYmVsRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gTGVnZW5kUm93RmFjdG9yeShcbiAgTGVnZW5kQ29sb3JEaXNwbGF5OiBSZXR1cm5UeXBlPHR5cGVvZiBMZWdlbmRDb2xvckRpc3BsYXlGYWN0b3J5PixcbiAgTGVnZW5kUm93RWRpdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBMZWdlbmRSb3dFZGl0b3JGYWN0b3J5PixcbiAgUmVzZXRDb2xvckxhYmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBSZXNldENvbG9yTGFiZWxGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IExlZ2VuZFJvdzogUmVhY3QuRkM8TGVnZW5kUm93UHJvcHM+ID0gKHtcbiAgICBsYWJlbCA9ICcnLFxuICAgIGRpc3BsYXlMYWJlbCxcbiAgICBjb2xvcixcbiAgICBvblVwZGF0ZUxhYmVsLFxuICAgIG9uUmVzZXRMYWJlbFxuICB9KSA9PiB7XG4gICAgY29uc3Qgb25FZGl0ID0gdXNlQ2FsbGJhY2soXG4gICAgICBuZXdMYWJlbCA9PiBvblVwZGF0ZUxhYmVsICYmIG9uVXBkYXRlTGFiZWwoY29sb3IsIG5ld0xhYmVsKSxcbiAgICAgIFtjb2xvciwgb25VcGRhdGVMYWJlbF1cbiAgICApO1xuICAgIGNvbnN0IG9uUmVzZXQgPSB1c2VDYWxsYmFjaygoKSA9PiBvblJlc2V0TGFiZWwgJiYgb25SZXNldExhYmVsKGNvbG9yKSwgW2NvbG9yLCBvblJlc2V0TGFiZWxdKTtcbiAgICBjb25zdCB2YWx1ZSA9IGRpc3BsYXlMYWJlbCA/IGxhYmVsLnRvU3RyaW5nKCkgOiAnJztcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZExlZ2VuZFJvdz5cbiAgICAgICAgPExlZ2VuZENvbG9yRGlzcGxheSBjb2xvcj17Y29sb3J9IC8+XG4gICAgICAgIHtvblVwZGF0ZUxhYmVsID8gKFxuICAgICAgICAgIDxMZWdlbmRSb3dFZGl0b3IgZGlzYWJsZWQ9eyFvblVwZGF0ZUxhYmVsfSBsYWJlbD17dmFsdWV9IGNvbG9yPXtjb2xvcn0gb25FZGl0PXtvbkVkaXR9IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFN0eWxlZExhYmVsPnt2YWx1ZX08L1N0eWxlZExhYmVsPlxuICAgICAgICApfVxuICAgICAgICB7b25SZXNldExhYmVsID8gPFJlc2V0Q29sb3JMYWJlbCBvbkNsaWNrPXtvblJlc2V0fSBoZWlnaHQ9XCIxNnB4XCIgLz4gOiBudWxsfVxuICAgICAgPC9TdHlsZWRMZWdlbmRSb3c+XG4gICAgKTtcbiAgfTtcbiAgTGVnZW5kUm93LmRpc3BsYXlOYW1lID0gJ0xlZ2VuZFJvdyc7XG4gIHJldHVybiBMZWdlbmRSb3c7XG59XG5cbmNvbnN0IG92ZXJyaWRlQ29sb3JMZWdlbmRzID0gKGNvbG9yTGVnZW5kcywgb3ZlcnJpZGVzKSA9PiB7XG4gIGNvbnN0IHtkYXRhLCBsYWJlbHN9ID0gb3ZlcnJpZGVzO1xuXG4gIGNvbnN0IG5ld0NvbG9yTGVnZW5kcyA9IFsuLi5jb2xvckxlZ2VuZHNdO1xuXG4gIGRhdGEuZm9yRWFjaCgoZGF0dW0sIGluZGV4KSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gY29sb3JMZWdlbmRzLmZpbmRJbmRleChkID0+IGQuZGF0YSA9PT0gZGF0dW0pO1xuICAgIGlmIChjdXJyZW50SW5kZXggIT09IC0xKSB7XG4gICAgICBuZXdDb2xvckxlZ2VuZHNbY3VycmVudEluZGV4XSA9IHtcbiAgICAgICAgbGFiZWw6IGxhYmVsc1tpbmRleF0sXG4gICAgICAgIGRhdGE6IGRhdHVtLFxuICAgICAgICBvdmVycmlkZTogdHJ1ZVxuICAgICAgfTtcbiAgICAgIG5ld0NvbG9yTGVnZW5kc1tjdXJyZW50SW5kZXhdLmxhYmVsID0gbGFiZWxzW2luZGV4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3Q29sb3JMZWdlbmRzLnB1c2goe1xuICAgICAgICBkYXRhOiBkYXR1bSxcbiAgICAgICAgbGFiZWw6IGxhYmVsc1tpbmRleF0sXG4gICAgICAgIG92ZXJyaWRlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBuZXdDb2xvckxlZ2VuZHM7XG59O1xuXG50eXBlIE92ZXJyaWRlQnlDdXN0b21MZWdlbmRPcHRpb25zID0ge1xuICAvKipcbiAgICogTGVnZW5kIHBhcmFtZXRlcnMgdG8gb3ZlcnJpZGVcbiAgICovXG4gIGNvbG9yTGVnZW5kcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8qKlxuICAgKiBPcmlnaW5hbCBMZWdlbmRzXG4gICAqL1xuICBjdXJyZW50TGVnZW5kcz86IFJldHVyblR5cGU8dHlwZW9mIGdldExlZ2VuZE9mU2NhbGU+O1xufTtcblxuLyoqXG4gKiBPdmVycmlkZXMgbGVnZW5kIGxhYmVscyB3aXRoIGNvbG9yIGxlZ2VuZHMuXG4gKiBAcGFyYW0gcGFyYW0wIExlZ2VuZCBpbmZvIGFuZCBvdmVycmlkZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgT3JpZ2luYWwgb3Igb3ZlcnJpZGVuIGxlbmVuZHMuXG4gKi9cbmZ1bmN0aW9uIG92ZXJyaWRlQnlDdXN0b21MZWdlbmQoe2NvbG9yTGVnZW5kcywgY3VycmVudExlZ2VuZHN9OiBPdmVycmlkZUJ5Q3VzdG9tTGVnZW5kT3B0aW9ucykge1xuICBpZiAoY29sb3JMZWdlbmRzICYmIGlzT2JqZWN0KGNvbG9yTGVnZW5kcykpIHtcbiAgICAvLyBvdmVycmlkZSBsYWJlbHMgd2l0aCBjb2xvciBsZWdlbmRzXG4gICAgY29uc3QgZGF0YSA9IE9iamVjdC5rZXlzKGNvbG9yTGVnZW5kcyk7XG4gICAgY29uc3QgbGFiZWxzID0gT2JqZWN0LnZhbHVlcyhjb2xvckxlZ2VuZHMpO1xuXG4gICAgcmV0dXJuIG92ZXJyaWRlQ29sb3JMZWdlbmRzKGN1cnJlbnRMZWdlbmRzLCB7ZGF0YSwgbGFiZWxzfSk7XG4gIH1cblxuICByZXR1cm4gY3VycmVudExlZ2VuZHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VMYXllckNvbG9yTGVnZW5kcyhcbiAgbGF5ZXI6IENvbG9yTGVnZW5kUHJvcHNbJ2xheWVyJ10sXG4gIHNjYWxlVHlwZTogQ29sb3JMZWdlbmRQcm9wc1snc2NhbGVUeXBlJ10sXG4gIGRvbWFpbjogQ29sb3JMZWdlbmRQcm9wc1snZG9tYWluJ10sXG4gIHJhbmdlOiBDb2xvckxlZ2VuZFByb3BzWydyYW5nZSddLFxuICBpc0ZpeGVkOiBDb2xvckxlZ2VuZFByb3BzWydpc0ZpeGVkJ10sXG4gIGZpZWxkVHlwZTogQ29sb3JMZWdlbmRQcm9wc1snZmllbGRUeXBlJ10sXG4gIGxhYmVsRm9ybWF0OiBDb2xvckxlZ2VuZFByb3BzWydsYWJlbEZvcm1hdCddLFxuICBtYXBTdGF0ZTogQ29sb3JMZWdlbmRQcm9wc1snbWFwU3RhdGUnXVxuKTogTGVnZW5kW10ge1xuICBjb25zdCBzY2FsZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0TGF5ZXJDb2xvclNjYWxlKHtyYW5nZSwgZG9tYWluLCBzY2FsZVR5cGUsIGlzRml4ZWQsIGxheWVyfSksXG4gICAgW3JhbmdlLCBkb21haW4sIHNjYWxlVHlwZSwgaXNGaXhlZCwgbGF5ZXJdXG4gICk7XG5cbiAgY29uc3Qgc2NhbGVCeVpvb20gPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSh7c2NhbGUsIGxheWVyLCBtYXBTdGF0ZX0pLFxuICAgIFtzY2FsZSwgbGF5ZXIsIG1hcFN0YXRlXVxuICApO1xuXG4gIGNvbnN0IGN1cnJlbnRMZWdlbmRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHNjYWxlVHlwZSA9PT0gU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbCAmJiByYW5nZT8uY29sb3JNYXApIHtcbiAgICAgIGNvbnN0IGNvbG9yQnJlYWtzID0gY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MocmFuZ2UuY29sb3JNYXApO1xuICAgICAgcmV0dXJuIGNvbG9yQnJlYWtzPy5tYXAoY2IgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IGNiLmRhdGEsXG4gICAgICAgICAgbGFiZWw6IEFycmF5LmlzQXJyYXkoY2IubGFiZWwpXG4gICAgICAgICAgICA/IGNiLmxhYmVsLmxlbmd0aCA+IDVcbiAgICAgICAgICAgICAgPyBgJHtjYi5sYWJlbC5sZW5ndGh9IHNlbGVjdGVkYFxuICAgICAgICAgICAgICA6IGNiLmxhYmVsXG4gICAgICAgICAgICA6IGNiLmxhYmVsIHx8ICcnXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGdldExlZ2VuZE9mU2NhbGUoe3NjYWxlOiBzY2FsZUJ5Wm9vbSwgc2NhbGVUeXBlLCBsYWJlbEZvcm1hdCwgZmllbGRUeXBlfSk7XG4gIH0sIFtyYW5nZSwgc2NhbGVCeVpvb20sIHNjYWxlVHlwZSwgbGFiZWxGb3JtYXQsIGZpZWxkVHlwZV0pO1xuXG4gIGNvbnN0IExlZ2VuZHNXaXRoQ3VzdG9tTGVnZW5kcyA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIG92ZXJyaWRlQnlDdXN0b21MZWdlbmQoe1xuICAgICAgICBjb2xvckxlZ2VuZHM6IHJhbmdlPy5jb2xvckxlZ2VuZHMsXG4gICAgICAgIGN1cnJlbnRMZWdlbmRzXG4gICAgICB9KSxcbiAgICBbcmFuZ2U/LmNvbG9yTGVnZW5kcywgY3VycmVudExlZ2VuZHNdXG4gICk7XG5cbiAgcmV0dXJuIExlZ2VuZHNXaXRoQ3VzdG9tTGVnZW5kcyB8fCBbXTtcbn1cblxuZXhwb3J0IHR5cGUgQ29sb3JMZWdlbmRQcm9wcyA9IHtcbiAgbGF5ZXI6IExheWVyO1xuICBzY2FsZVR5cGU6IHN0cmluZztcbiAgZG9tYWluOiBudW1iZXJbXSB8IHN0cmluZ1tdO1xuICBmaWVsZFR5cGU/OiBzdHJpbmcgfCBudWxsO1xuICByYW5nZT86IENvbG9yUmFuZ2UgfCBudWxsO1xuICBsYWJlbEZvcm1hdD86IChuOiBhbnkpID0+IHN0cmluZztcbiAgZGlzcGxheUxhYmVsPzogYm9vbGVhbjtcbiAgZGlzYWJsZUVkaXQ/OiBib29sZWFuO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xuICBpc0ZpeGVkPzogYm9vbGVhbjtcbiAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG4gIG9uVXBkYXRlQ29sb3JMZWdlbmQ/OiAoY29sb3JMZWdlbmRzOiB7W2tleTogSGV4Q29sb3JdOiBzdHJpbmd9KSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTGVnZW5kID0ge1xuICBkYXRhOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG92ZXJyaWRlPzogYm9vbGVhbjtcbn07XG5cbkNvbG9yTGVnZW5kRmFjdG9yeS5kZXBzID0gW0xlZ2VuZFJvd0ZhY3RvcnldO1xuZnVuY3Rpb24gQ29sb3JMZWdlbmRGYWN0b3J5KExlZ2VuZFJvdzogUmV0dXJuVHlwZTx0eXBlb2YgTGVnZW5kUm93RmFjdG9yeT4pIHtcbiAgY29uc3QgQ29sb3JMZWdlbmQ6IFJlYWN0LkZDPENvbG9yTGVnZW5kUHJvcHM+ID0gKHtcbiAgICBsYXllcixcbiAgICBpc0ZpeGVkLFxuICAgIGlzRXhwYW5kZWQsXG4gICAgZG9tYWluLFxuICAgIHJhbmdlLFxuICAgIGxhYmVsRm9ybWF0LFxuICAgIHNjYWxlVHlwZSxcbiAgICBmaWVsZFR5cGUsXG4gICAgbWFwU3RhdGUsXG4gICAgb25VcGRhdGVDb2xvckxlZ2VuZCxcbiAgICBkaXNwbGF5TGFiZWwgPSB0cnVlLFxuICAgIGRpc2FibGVFZGl0ID0gZmFsc2VcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHtjb2xvckxlZ2VuZHN9ID0gcmFuZ2UgfHwge307XG5cbiAgICBjb25zdCBsZWdlbmRzID0gdXNlTGF5ZXJDb2xvckxlZ2VuZHMoXG4gICAgICBsYXllcixcbiAgICAgIHNjYWxlVHlwZSxcbiAgICAgIGRvbWFpbixcbiAgICAgIHJhbmdlLFxuICAgICAgaXNGaXhlZCxcbiAgICAgIGZpZWxkVHlwZSxcbiAgICAgIGxhYmVsRm9ybWF0LFxuICAgICAgbWFwU3RhdGVcbiAgICApO1xuXG4gICAgY29uc3Qgb25VcGRhdGVMYWJlbCA9IHVzZUNhbGxiYWNrKFxuICAgICAgKGNvbG9yLCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBpZiAob25VcGRhdGVDb2xvckxlZ2VuZCkge1xuICAgICAgICAgIG9uVXBkYXRlQ29sb3JMZWdlbmQoe1xuICAgICAgICAgICAgLi4uY29sb3JMZWdlbmRzLFxuICAgICAgICAgICAgW2NvbG9yXTogbmV3VmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtvblVwZGF0ZUNvbG9yTGVnZW5kLCBjb2xvckxlZ2VuZHNdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uUmVzZXRMYWJlbCA9IHVzZUNhbGxiYWNrKFxuICAgICAgY29sb3IgPT4ge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHtbY29sb3JdOiBfLCAuLi5yZXN0fSA9IGNvbG9yTGVnZW5kcztcbiAgICAgICAgaWYgKG9uVXBkYXRlQ29sb3JMZWdlbmQgJiYgcmVzdCkge1xuICAgICAgICAgIG9uVXBkYXRlQ29sb3JMZWdlbmQocmVzdCk7XG4gICAgICAgIH1cbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgICAgfSxcbiAgICAgIFtvblVwZGF0ZUNvbG9yTGVnZW5kLCBjb2xvckxlZ2VuZHNdXG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkTGVnZW5kXG4gICAgICAgIGNsYXNzTmFtZT1cInN0eWxlZC1jb2xvci1sZWdlbmRcIlxuICAgICAgICBkaXNhYmxlRWRpdD17ZGlzYWJsZUVkaXR9XG4gICAgICAgIGlzRXhwYW5kZWQ9e2lzRXhwYW5kZWR9XG4gICAgICA+XG4gICAgICAgIHtsZWdlbmRzLm1hcCgobGVnZW5kLCBpKSA9PiAoXG4gICAgICAgICAgPExlZ2VuZFJvd1xuICAgICAgICAgICAga2V5PXtgJHtsZWdlbmQuZGF0YX0tJHtpfWB9XG4gICAgICAgICAgICBsYWJlbD17bGVnZW5kLmxhYmVsfVxuICAgICAgICAgICAgZGlzcGxheUxhYmVsPXtkaXNwbGF5TGFiZWx9XG4gICAgICAgICAgICBjb2xvcj17bGVnZW5kLmRhdGF9XG4gICAgICAgICAgICBvblVwZGF0ZUxhYmVsPXshZGlzYWJsZUVkaXQgPyBvblVwZGF0ZUxhYmVsIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgb25SZXNldExhYmVsPXtsZWdlbmQub3ZlcnJpZGUgJiYgIWRpc2FibGVFZGl0ID8gb25SZXNldExhYmVsIDogdW5kZWZpbmVkfVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9TdHlsZWRMZWdlbmQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gUmVhY3QubWVtbyhDb2xvckxlZ2VuZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yTGVnZW5kRmFjdG9yeTtcbiJdLCJt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
|
|
273
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfaWNvbnMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJST1dfSCIsIkdBUCIsIlJFQ1RfVyIsInN0b3BDbGlja1Byb3BhZ2F0aW9uIiwic3RvcFByb3BhZ2F0aW9uIiwiaW5wdXRDc3MiLCJjc3MiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIlN0eWxlZExlZ2VuZCIsInN0eWxlZCIsImRpdiIsInByb3BzIiwidGhlbWUiLCJzaWRlUGFuZWxTY3JvbGxCYXIiLCJpc0V4cGFuZGVkIiwiZGlzYWJsZUVkaXQiLCJTdHlsZWRMZWdlbmRSb3ciLCJSZXNldENvbG9yTGFiZWxGYWN0b3J5IiwiUmVzZXQiLCJsYWJlbENvbG9yTFQiLCJwYW5lbEhlYWRlckljb25Ib3ZlciIsIlN0eWxlSW5saW5lSW5wdXQiLCJJbmxpbmVJbnB1dCIsInRleHRDb2xvciIsIkxlZ2VuZFJvd0VkaXRvckZhY3RvcnkiLCJMZWdlbmRSb3dFZGl0b3IiLCJfcmVmIiwiY29sb3IiLCJsYWJlbCIsIm9uRWRpdCIsIl9yZWYkZGlzYWJsZWQiLCJkaXNhYmxlZCIsIm9uQ2hhbmdlIiwidXNlQ2FsbGJhY2siLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiaWQiLCJjb25jYXQiLCJkaXNwbGF5TmFtZSIsIkxlZ2VuZFJvd1N0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJMZWdlbmRDb2xvckRpc3BsYXlGYWN0b3J5IiwiTGVnZW5kQ29sb3JEaXNwbGF5IiwiX3JlZjIiLCJzdHlsZSIsInVzZU1lbW8iLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXJnaW5SaWdodCIsIlN0eWxlZExhYmVsIiwiTGVnZW5kUm93RmFjdG9yeSIsImRlcHMiLCJSZXNldENvbG9yTGFiZWwiLCJMZWdlbmRSb3ciLCJfcmVmMyIsIl9yZWYzJGxhYmVsIiwiZGlzcGxheUxhYmVsIiwib25VcGRhdGVMYWJlbCIsIm9uUmVzZXRMYWJlbCIsIm5ld0xhYmVsIiwib25SZXNldCIsIm92ZXJyaWRlQ29sb3JMZWdlbmRzIiwiY29sb3JMZWdlbmRzIiwib3ZlcnJpZGVzIiwiZGF0YSIsImxhYmVscyIsIm5ld0NvbG9yTGVnZW5kcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJkYXR1bSIsImluZGV4IiwiY3VycmVudEluZGV4IiwiZmluZEluZGV4IiwiZCIsIm92ZXJyaWRlIiwib3ZlcnJpZGVCeUN1c3RvbUxlZ2VuZCIsIl9yZWY0IiwiY3VycmVudExlZ2VuZHMiLCJpc09iamVjdCIsInZhbHVlcyIsInVzZUxheWVyQ29sb3JMZWdlbmRzIiwibGF5ZXIiLCJzY2FsZVR5cGUiLCJkb21haW4iLCJyYW5nZSIsImlzRml4ZWQiLCJmaWVsZFR5cGUiLCJsYWJlbEZvcm1hdCIsIm1hcFN0YXRlIiwic2NhbGUiLCJnZXRMYXllckNvbG9yU2NhbGUiLCJzY2FsZUJ5Wm9vbSIsImdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSIsIlNDQUxFX1RZUEVTIiwiY3VzdG9tT3JkaW5hbCIsImNvbG9yTWFwIiwiY29sb3JCcmVha3MiLCJjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyIsIm1hcCIsImNiIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0TGVnZW5kT2ZTY2FsZSIsIkxlZ2VuZHNXaXRoQ3VzdG9tTGVnZW5kcyIsIkNvbG9yTGVnZW5kRmFjdG9yeSIsIkNvbG9yTGVnZW5kIiwiX3JlZjUiLCJvblVwZGF0ZUNvbG9yTGVnZW5kIiwiX3JlZjUkZGlzcGxheUxhYmVsIiwiX3JlZjUkZGlzYWJsZUVkaXQiLCJfcmVmNiIsImxlZ2VuZHMiLCJuZXdWYWx1ZSIsIl8iLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImxlZ2VuZCIsImtleSIsInVuZGVmaW5lZCIsIlJlYWN0IiwibWVtbyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vY29sb3ItbGVnZW5kLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge2Nzc30gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge1NDQUxFX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0xheWVyfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge0NvbG9yUmFuZ2UsIEhleENvbG9yLCBNYXBTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBnZXRMYXllckNvbG9yU2NhbGUsXG4gIGdldExlZ2VuZE9mU2NhbGUsXG4gIGdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSxcbiAgY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MsXG4gIGlzT2JqZWN0XG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge1Jlc2V0fSBmcm9tICcuL2ljb25zJztcbmltcG9ydCB7SW5saW5lSW5wdXR9IGZyb20gJy4vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5jb25zdCBST1dfSCA9IDE1O1xuY29uc3QgR0FQID0gMjtcbmNvbnN0IFJFQ1RfVyA9IDIwO1xuXG5jb25zdCBzdG9wQ2xpY2tQcm9wYWdhdGlvbiA9IGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuY29uc3QgaW5wdXRDc3MgPSBjc3NgXG4gIGlucHV0IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuYDtcbmNvbnN0IFN0eWxlZExlZ2VuZCA9IHN0eWxlZC5kaXY8e2Rpc2FibGVFZGl0OiBib29sZWFuOyBpc0V4cGFuZGVkPzogYm9vbGVhbn0+YFxuICAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNpZGVQYW5lbFNjcm9sbEJhcn07XG4gICR7cHJvcHMgPT4gKHByb3BzLmlzRXhwYW5kZWQgPyAnJyA6IGBtYXgtaGVpZ2h0OiAxNTZweDtgKX07XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgbWFyZ2luLWJvdHRvbTogJHtHQVB9cHg7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtcm93LWdhcDogJHtHQVB9cHg7XG4gIHBhZGRpbmc6IDJweCAwO1xuXG4gICR7cHJvcHMgPT4gKHByb3BzLmRpc2FibGVFZGl0ID8gaW5wdXRDc3MgOiAnJyl9XG5gO1xuXG5jb25zdCBTdHlsZWRMZWdlbmRSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDIwcHg7XG4gIG1pbi13aWR0aDogMDtcbmA7XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXNldENvbG9yTGFiZWxGYWN0b3J5KCkge1xuICByZXR1cm4gc3R5bGVkKFJlc2V0KWBcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yTFR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogJHtHQVB9cHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsSGVhZGVySWNvbkhvdmVyfTtcbiAgICB9XG4gIGA7XG59XG5cbmNvbnN0IFN0eWxlSW5saW5lSW5wdXQgPSBzdHlsZWQoSW5saW5lSW5wdXQpYFxuICBmb250LXNpemU6IDkuNXB4O1xuICBsaW5lLWhlaWdodDogJHtST1dfSH1weDtcbiAgaGVpZ2h0OiAke1JPV19IfXB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICB3aWR0aDogdW5zZXQ7XG4gIHBhZGRpbmc6IDJweDtcbiAgZmxleDogMTtcbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWFyZ2luOiAwICR7R0FQfXB4O1xuICA6aG92ZXIge1xuICAgIGhlaWdodDogJHtST1dfSH1weDtcbiAgfVxuYDtcblxuZXhwb3J0IHR5cGUgTGVnZW5kUm93RWRpdG9yUHJvcHMgPSB7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGN1c3RvbUxhYmVsPzogc3RyaW5nO1xuICBvbkVkaXQ6IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59O1xuZXhwb3J0IGZ1bmN0aW9uIExlZ2VuZFJvd0VkaXRvckZhY3RvcnkoKSB7XG4gIGNvbnN0IExlZ2VuZFJvd0VkaXRvcjogUmVhY3QuRkM8TGVnZW5kUm93RWRpdG9yUHJvcHM+ID0gKHtcbiAgICBjb2xvcixcbiAgICBsYWJlbCxcbiAgICBvbkVkaXQsXG4gICAgZGlzYWJsZWQgPSBmYWxzZVxuICB9KSA9PiB7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhldmVudCA9PiBvbkVkaXQoZXZlbnQudGFyZ2V0LnZhbHVlKSwgW29uRWRpdF0pO1xuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVJbmxpbmVJbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGNsYXNzTmFtZT1cImxlZ2VuZF9fbGFiZWxfX3RpdGxlX19lZGl0b3JcIlxuICAgICAgICB2YWx1ZT17bGFiZWx9XG4gICAgICAgIG9uQ2xpY2s9e3N0b3BDbGlja1Byb3BhZ2F0aW9ufVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgaWQ9e2Ake2NvbG9yfTppbnB1dC1sZWdlbmQtbGFiZWxgfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIExlZ2VuZFJvd0VkaXRvci5kaXNwbGF5TmFtZSA9ICdMZWdlbmRSb3dFZGl0b3InO1xuICByZXR1cm4gTGVnZW5kUm93RWRpdG9yO1xufVxuXG5jb25zdCBMZWdlbmRSb3dTdHlsZSA9IHtcbiAgd2lkdGg6IGAke1JFQ1RfV31weGAsXG4gIGhlaWdodDogYCR7Uk9XX0h9cHhgXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gTGVnZW5kQ29sb3JEaXNwbGF5RmFjdG9yeSgpIHtcbiAgY29uc3QgTGVnZW5kQ29sb3JEaXNwbGF5ID0gKHtjb2xvcn0pID0+IHtcbiAgICBjb25zdCBzdHlsZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoey4uLkxlZ2VuZFJvd1N0eWxlLCBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLCBtYXJnaW5SaWdodDogYCR7R0FQfXB4YH0pLFxuICAgICAgW2NvbG9yXVxuICAgICk7XG4gICAgcmV0dXJuIDxkaXYgc3R5bGU9e3N0eWxlfSBjbGFzc05hbWU9XCJsZWdlbmQtcm93LWNvbG9yXCIgLz47XG4gIH07XG5cbiAgcmV0dXJuIExlZ2VuZENvbG9yRGlzcGxheTtcbn1cblxuY29uc3QgU3R5bGVkTGFiZWwgPSBzdHlsZWQuZGl2YFxuICBmb250LXNpemU6IDEwcHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIHBhZGRpbmctbGVmdDogMnB4O1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuYDtcblxuZXhwb3J0IHR5cGUgTGVnZW5kUm93UHJvcHMgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGN1c3RvbUxhYmVsPzogc3RyaW5nO1xuICBkaXNwbGF5TGFiZWw/OiBib29sZWFuO1xuICBjb2xvcjogc3RyaW5nO1xuICBvblVwZGF0ZUxhYmVsPzogKHNlbGVjdGVkQ29sb3I6IHN0cmluZywgbmV3TGFiZWw6IHN0cmluZykgPT4gdm9pZDtcbiAgb25SZXNldExhYmVsPzogKGNvbG9yOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGRpc2FibGVFZGl0PzogYm9vbGVhbjtcbn07XG5cbkxlZ2VuZFJvd0ZhY3RvcnkuZGVwcyA9IFtMZWdlbmRDb2xvckRpc3BsYXlGYWN0b3J5LCBMZWdlbmRSb3dFZGl0b3JGYWN0b3J5LCBSZXNldENvbG9yTGFiZWxGYWN0b3J5XTtcbmV4cG9ydCBmdW5jdGlvbiBMZWdlbmRSb3dGYWN0b3J5KFxuICBMZWdlbmRDb2xvckRpc3BsYXk6IFJldHVyblR5cGU8dHlwZW9mIExlZ2VuZENvbG9yRGlzcGxheUZhY3Rvcnk+LFxuICBMZWdlbmRSb3dFZGl0b3I6IFJldHVyblR5cGU8dHlwZW9mIExlZ2VuZFJvd0VkaXRvckZhY3Rvcnk+LFxuICBSZXNldENvbG9yTGFiZWw6IFJldHVyblR5cGU8dHlwZW9mIFJlc2V0Q29sb3JMYWJlbEZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgTGVnZW5kUm93OiBSZWFjdC5GQzxMZWdlbmRSb3dQcm9wcz4gPSAoe1xuICAgIGxhYmVsID0gJycsXG4gICAgZGlzcGxheUxhYmVsLFxuICAgIGNvbG9yLFxuICAgIG9uVXBkYXRlTGFiZWwsXG4gICAgb25SZXNldExhYmVsXG4gIH0pID0+IHtcbiAgICBjb25zdCBvbkVkaXQgPSB1c2VDYWxsYmFjayhcbiAgICAgIG5ld0xhYmVsID0+IG9uVXBkYXRlTGFiZWwgJiYgb25VcGRhdGVMYWJlbChjb2xvciwgbmV3TGFiZWwpLFxuICAgICAgW2NvbG9yLCBvblVwZGF0ZUxhYmVsXVxuICAgICk7XG4gICAgY29uc3Qgb25SZXNldCA9IHVzZUNhbGxiYWNrKCgpID0+IG9uUmVzZXRMYWJlbCAmJiBvblJlc2V0TGFiZWwoY29sb3IpLCBbY29sb3IsIG9uUmVzZXRMYWJlbF0pO1xuICAgIGNvbnN0IHZhbHVlID0gZGlzcGxheUxhYmVsID8gU3RyaW5nKGxhYmVsID8/ICcnKSA6ICcnO1xuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkTGVnZW5kUm93PlxuICAgICAgICA8TGVnZW5kQ29sb3JEaXNwbGF5IGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgICAge29uVXBkYXRlTGFiZWwgPyAoXG4gICAgICAgICAgPExlZ2VuZFJvd0VkaXRvciBkaXNhYmxlZD17IW9uVXBkYXRlTGFiZWx9IGxhYmVsPXt2YWx1ZX0gY29sb3I9e2NvbG9yfSBvbkVkaXQ9e29uRWRpdH0gLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8U3R5bGVkTGFiZWw+e3ZhbHVlfTwvU3R5bGVkTGFiZWw+XG4gICAgICAgICl9XG4gICAgICAgIHtvblJlc2V0TGFiZWwgPyA8UmVzZXRDb2xvckxhYmVsIG9uQ2xpY2s9e29uUmVzZXR9IGhlaWdodD1cIjE2cHhcIiAvPiA6IG51bGx9XG4gICAgICA8L1N0eWxlZExlZ2VuZFJvdz5cbiAgICApO1xuICB9O1xuICBMZWdlbmRSb3cuZGlzcGxheU5hbWUgPSAnTGVnZW5kUm93JztcbiAgcmV0dXJuIExlZ2VuZFJvdztcbn1cblxuY29uc3Qgb3ZlcnJpZGVDb2xvckxlZ2VuZHMgPSAoY29sb3JMZWdlbmRzLCBvdmVycmlkZXMpID0+IHtcbiAgY29uc3Qge2RhdGEsIGxhYmVsc30gPSBvdmVycmlkZXM7XG5cbiAgY29uc3QgbmV3Q29sb3JMZWdlbmRzID0gWy4uLmNvbG9yTGVnZW5kc107XG5cbiAgZGF0YS5mb3JFYWNoKChkYXR1bSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjb2xvckxlZ2VuZHMuZmluZEluZGV4KGQgPT4gZC5kYXRhID09PSBkYXR1bSk7XG4gICAgaWYgKGN1cnJlbnRJbmRleCAhPT0gLTEpIHtcbiAgICAgIG5ld0NvbG9yTGVnZW5kc1tjdXJyZW50SW5kZXhdID0ge1xuICAgICAgICBsYWJlbDogbGFiZWxzW2luZGV4XSxcbiAgICAgICAgZGF0YTogZGF0dW0sXG4gICAgICAgIG92ZXJyaWRlOiB0cnVlXG4gICAgICB9O1xuICAgICAgbmV3Q29sb3JMZWdlbmRzW2N1cnJlbnRJbmRleF0ubGFiZWwgPSBsYWJlbHNbaW5kZXhdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdDb2xvckxlZ2VuZHMucHVzaCh7XG4gICAgICAgIGRhdGE6IGRhdHVtLFxuICAgICAgICBsYWJlbDogbGFiZWxzW2luZGV4XSxcbiAgICAgICAgb3ZlcnJpZGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG5ld0NvbG9yTGVnZW5kcztcbn07XG5cbnR5cGUgT3ZlcnJpZGVCeUN1c3RvbUxlZ2VuZE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBMZWdlbmQgcGFyYW1ldGVycyB0byBvdmVycmlkZVxuICAgKi9cbiAgY29sb3JMZWdlbmRzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIE9yaWdpbmFsIExlZ2VuZHNcbiAgICovXG4gIGN1cnJlbnRMZWdlbmRzPzogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0TGVnZW5kT2ZTY2FsZT47XG59O1xuXG4vKipcbiAqIE92ZXJyaWRlcyBsZWdlbmQgbGFiZWxzIHdpdGggY29sb3IgbGVnZW5kcy5cbiAqIEBwYXJhbSBwYXJhbTAgTGVnZW5kIGluZm8gYW5kIG92ZXJyaWRlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBPcmlnaW5hbCBvciBvdmVycmlkZW4gbGVuZW5kcy5cbiAqL1xuZnVuY3Rpb24gb3ZlcnJpZGVCeUN1c3RvbUxlZ2VuZCh7Y29sb3JMZWdlbmRzLCBjdXJyZW50TGVnZW5kc306IE92ZXJyaWRlQnlDdXN0b21MZWdlbmRPcHRpb25zKSB7XG4gIGlmIChjb2xvckxlZ2VuZHMgJiYgaXNPYmplY3QoY29sb3JMZWdlbmRzKSkge1xuICAgIC8vIG92ZXJyaWRlIGxhYmVscyB3aXRoIGNvbG9yIGxlZ2VuZHNcbiAgICBjb25zdCBkYXRhID0gT2JqZWN0LmtleXMoY29sb3JMZWdlbmRzKTtcbiAgICBjb25zdCBsYWJlbHMgPSBPYmplY3QudmFsdWVzKGNvbG9yTGVnZW5kcyk7XG5cbiAgICByZXR1cm4gb3ZlcnJpZGVDb2xvckxlZ2VuZHMoY3VycmVudExlZ2VuZHMsIHtkYXRhLCBsYWJlbHN9KTtcbiAgfVxuXG4gIHJldHVybiBjdXJyZW50TGVnZW5kcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUxheWVyQ29sb3JMZWdlbmRzKFxuICBsYXllcjogQ29sb3JMZWdlbmRQcm9wc1snbGF5ZXInXSxcbiAgc2NhbGVUeXBlOiBDb2xvckxlZ2VuZFByb3BzWydzY2FsZVR5cGUnXSxcbiAgZG9tYWluOiBDb2xvckxlZ2VuZFByb3BzWydkb21haW4nXSxcbiAgcmFuZ2U6IENvbG9yTGVnZW5kUHJvcHNbJ3JhbmdlJ10sXG4gIGlzRml4ZWQ6IENvbG9yTGVnZW5kUHJvcHNbJ2lzRml4ZWQnXSxcbiAgZmllbGRUeXBlOiBDb2xvckxlZ2VuZFByb3BzWydmaWVsZFR5cGUnXSxcbiAgbGFiZWxGb3JtYXQ6IENvbG9yTGVnZW5kUHJvcHNbJ2xhYmVsRm9ybWF0J10sXG4gIG1hcFN0YXRlOiBDb2xvckxlZ2VuZFByb3BzWydtYXBTdGF0ZSddXG4pOiBMZWdlbmRbXSB7XG4gIGNvbnN0IHNjYWxlID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRMYXllckNvbG9yU2NhbGUoe3JhbmdlLCBkb21haW4sIHNjYWxlVHlwZSwgaXNGaXhlZCwgbGF5ZXJ9KSxcbiAgICBbcmFuZ2UsIGRvbWFpbiwgc2NhbGVUeXBlLCBpc0ZpeGVkLCBsYXllcl1cbiAgKTtcblxuICBjb25zdCBzY2FsZUJ5Wm9vbSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0VmlzdWFsQ2hhbm5lbFNjYWxlQnlab29tKHtzY2FsZSwgbGF5ZXIsIG1hcFN0YXRlfSksXG4gICAgW3NjYWxlLCBsYXllciwgbWFwU3RhdGVdXG4gICk7XG5cbiAgY29uc3QgY3VycmVudExlZ2VuZHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoc2NhbGVUeXBlID09PSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsICYmIHJhbmdlPy5jb2xvck1hcCkge1xuICAgICAgY29uc3QgY29sb3JCcmVha3MgPSBjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyhyYW5nZS5jb2xvck1hcCk7XG4gICAgICByZXR1cm4gY29sb3JCcmVha3M/Lm1hcChjYiA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogY2IuZGF0YSxcbiAgICAgICAgICBsYWJlbDogQXJyYXkuaXNBcnJheShjYi5sYWJlbClcbiAgICAgICAgICAgID8gY2IubGFiZWwubGVuZ3RoID4gNVxuICAgICAgICAgICAgICA/IGAke2NiLmxhYmVsLmxlbmd0aH0gc2VsZWN0ZWRgXG4gICAgICAgICAgICAgIDogY2IubGFiZWxcbiAgICAgICAgICAgIDogY2IubGFiZWwgfHwgJydcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0TGVnZW5kT2ZTY2FsZSh7c2NhbGU6IHNjYWxlQnlab29tLCBzY2FsZVR5cGUsIGxhYmVsRm9ybWF0LCBmaWVsZFR5cGV9KTtcbiAgfSwgW3JhbmdlLCBzY2FsZUJ5Wm9vbSwgc2NhbGVUeXBlLCBsYWJlbEZvcm1hdCwgZmllbGRUeXBlXSk7XG5cbiAgY29uc3QgTGVnZW5kc1dpdGhDdXN0b21MZWdlbmRzID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgb3ZlcnJpZGVCeUN1c3RvbUxlZ2VuZCh7XG4gICAgICAgIGNvbG9yTGVnZW5kczogcmFuZ2U/LmNvbG9yTGVnZW5kcyxcbiAgICAgICAgY3VycmVudExlZ2VuZHNcbiAgICAgIH0pLFxuICAgIFtyYW5nZT8uY29sb3JMZWdlbmRzLCBjdXJyZW50TGVnZW5kc11cbiAgKTtcblxuICByZXR1cm4gTGVnZW5kc1dpdGhDdXN0b21MZWdlbmRzIHx8IFtdO1xufVxuXG5leHBvcnQgdHlwZSBDb2xvckxlZ2VuZFByb3BzID0ge1xuICBsYXllcjogTGF5ZXI7XG4gIHNjYWxlVHlwZTogc3RyaW5nO1xuICBkb21haW46IG51bWJlcltdIHwgc3RyaW5nW107XG4gIGZpZWxkVHlwZT86IHN0cmluZyB8IG51bGw7XG4gIHJhbmdlPzogQ29sb3JSYW5nZSB8IG51bGw7XG4gIGxhYmVsRm9ybWF0PzogKG46IGFueSkgPT4gc3RyaW5nO1xuICBkaXNwbGF5TGFiZWw/OiBib29sZWFuO1xuICBkaXNhYmxlRWRpdD86IGJvb2xlYW47XG4gIG1hcFN0YXRlPzogTWFwU3RhdGU7XG4gIGlzRml4ZWQ/OiBib29sZWFuO1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbiAgb25VcGRhdGVDb2xvckxlZ2VuZD86IChjb2xvckxlZ2VuZHM6IHtba2V5OiBIZXhDb2xvcl06IHN0cmluZ30pID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMZWdlbmQgPSB7XG4gIGRhdGE6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgb3ZlcnJpZGU/OiBib29sZWFuO1xufTtcblxuQ29sb3JMZWdlbmRGYWN0b3J5LmRlcHMgPSBbTGVnZW5kUm93RmFjdG9yeV07XG5mdW5jdGlvbiBDb2xvckxlZ2VuZEZhY3RvcnkoTGVnZW5kUm93OiBSZXR1cm5UeXBlPHR5cGVvZiBMZWdlbmRSb3dGYWN0b3J5Pikge1xuICBjb25zdCBDb2xvckxlZ2VuZDogUmVhY3QuRkM8Q29sb3JMZWdlbmRQcm9wcz4gPSAoe1xuICAgIGxheWVyLFxuICAgIGlzRml4ZWQsXG4gICAgaXNFeHBhbmRlZCxcbiAgICBkb21haW4sXG4gICAgcmFuZ2UsXG4gICAgbGFiZWxGb3JtYXQsXG4gICAgc2NhbGVUeXBlLFxuICAgIGZpZWxkVHlwZSxcbiAgICBtYXBTdGF0ZSxcbiAgICBvblVwZGF0ZUNvbG9yTGVnZW5kLFxuICAgIGRpc3BsYXlMYWJlbCA9IHRydWUsXG4gICAgZGlzYWJsZUVkaXQgPSBmYWxzZVxuICB9KSA9PiB7XG4gICAgY29uc3Qge2NvbG9yTGVnZW5kc30gPSByYW5nZSB8fCB7fTtcblxuICAgIGNvbnN0IGxlZ2VuZHMgPSB1c2VMYXllckNvbG9yTGVnZW5kcyhcbiAgICAgIGxheWVyLFxuICAgICAgc2NhbGVUeXBlLFxuICAgICAgZG9tYWluLFxuICAgICAgcmFuZ2UsXG4gICAgICBpc0ZpeGVkLFxuICAgICAgZmllbGRUeXBlLFxuICAgICAgbGFiZWxGb3JtYXQsXG4gICAgICBtYXBTdGF0ZVxuICAgICk7XG5cbiAgICBjb25zdCBvblVwZGF0ZUxhYmVsID0gdXNlQ2FsbGJhY2soXG4gICAgICAoY29sb3IsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChvblVwZGF0ZUNvbG9yTGVnZW5kKSB7XG4gICAgICAgICAgb25VcGRhdGVDb2xvckxlZ2VuZCh7XG4gICAgICAgICAgICAuLi5jb2xvckxlZ2VuZHMsXG4gICAgICAgICAgICBbY29sb3JdOiBuZXdWYWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW29uVXBkYXRlQ29sb3JMZWdlbmQsIGNvbG9yTGVnZW5kc11cbiAgICApO1xuXG4gICAgY29uc3Qgb25SZXNldExhYmVsID0gdXNlQ2FsbGJhY2soXG4gICAgICBjb2xvciA9PiB7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3Qge1tjb2xvcl06IF8sIC4uLnJlc3R9ID0gY29sb3JMZWdlbmRzO1xuICAgICAgICBpZiAob25VcGRhdGVDb2xvckxlZ2VuZCAmJiByZXN0KSB7XG4gICAgICAgICAgb25VcGRhdGVDb2xvckxlZ2VuZChyZXN0KTtcbiAgICAgICAgfVxuICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgICB9LFxuICAgICAgW29uVXBkYXRlQ29sb3JMZWdlbmQsIGNvbG9yTGVnZW5kc11cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRMZWdlbmRcbiAgICAgICAgY2xhc3NOYW1lPVwic3R5bGVkLWNvbG9yLWxlZ2VuZFwiXG4gICAgICAgIGRpc2FibGVFZGl0PXtkaXNhYmxlRWRpdH1cbiAgICAgICAgaXNFeHBhbmRlZD17aXNFeHBhbmRlZH1cbiAgICAgID5cbiAgICAgICAge2xlZ2VuZHMubWFwKChsZWdlbmQsIGkpID0+IChcbiAgICAgICAgICA8TGVnZW5kUm93XG4gICAgICAgICAgICBrZXk9e2Ake2xlZ2VuZC5kYXRhfS0ke2l9YH1cbiAgICAgICAgICAgIGxhYmVsPXtsZWdlbmQubGFiZWx9XG4gICAgICAgICAgICBkaXNwbGF5TGFiZWw9e2Rpc3BsYXlMYWJlbH1cbiAgICAgICAgICAgIGNvbG9yPXtsZWdlbmQuZGF0YX1cbiAgICAgICAgICAgIG9uVXBkYXRlTGFiZWw9eyFkaXNhYmxlRWRpdCA/IG9uVXBkYXRlTGFiZWwgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBvblJlc2V0TGFiZWw9e2xlZ2VuZC5vdmVycmlkZSAmJiAhZGlzYWJsZUVkaXQgPyBvblJlc2V0TGFiZWwgOiB1bmRlZmluZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L1N0eWxlZExlZ2VuZD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBSZWFjdC5tZW1vKENvbG9yTGVnZW5kKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sb3JMZWdlbmRGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFHQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFRQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxrQkFBQSxHQUFBTCxPQUFBO0FBQWdELElBQUFNLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFsQmhEO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWQsd0JBQUFjLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JB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
|