@nlabs/reaktor 1.15.0 → 1.17.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/README.md +4 -0
- package/docs/GENERATION.md +24 -4
- package/lib/actions/contentGeneration.d.ts +3 -1
- package/lib/actions/contentGeneration.js +60 -23
- package/lib/actions/contentGenerationErrors.js +1 -1
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/index.js +2 -1
- package/lib/actions/ollamaGeneration.js +12 -1
- package/lib/actions/phoneSupport.d.ts +18 -0
- package/lib/actions/phoneSupport.js +170 -0
- package/lib/config.js +3 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1516,3 +1516,7 @@ Keep durable jobs and reconciliation in the application: unknown submission outc
|
|
|
1516
1516
|
must not be automatically retried. Gemini image results include `mimeType` for PNG/JPEG.
|
|
1517
1517
|
|
|
1518
1518
|
Higgsfield generation includes a typed catalog of 80 verified image/video API variants, model-specific JSON Schema validation, allowlisted submission, and optional callbacks. See [generation](docs/GENERATION.md).
|
|
1519
|
+
|
|
1520
|
+
### Grok text and media
|
|
1521
|
+
|
|
1522
|
+
Text generation accepts `provider: "grok"`; Reaktor uses server-side `contentGeneration.grokKey` and optional `grokModel` (default `grok-4.7`) for the xAI Responses API. Owned image inputs can accompany a text prompt. Grok image/video models are available through the Higgsfield model catalog and its existing webhook transport; this integration does not add a direct xAI media polling adapter. Application code owns callback persistence, retention, and accounting.
|
package/docs/GENERATION.md
CHANGED
|
@@ -197,6 +197,9 @@ input remains supported by the TypeScript action.
|
|
|
197
197
|
Protocol references: [WebSocket mode](https://developers.openai.com/api/docs/guides/websocket-mode)
|
|
198
198
|
and [mid-turn steering](https://developers.openai.com/api/docs/guides/steering).
|
|
199
199
|
|
|
200
|
+
### Grok text and media
|
|
201
|
+
|
|
202
|
+
Text generation accepts `provider: "grok"`; Reaktor uses server-side `contentGeneration.grokKey` and optional `grokModel` (default `grok-4.7`) for the xAI Responses API. Owned image inputs can accompany a text prompt. Grok image/video models are available through the Higgsfield model catalog and its existing webhook transport; this integration does not add a direct xAI media polling adapter. Application code owns callback persistence, retention, and accounting.
|
|
200
203
|
|
|
201
204
|
### Gemini text output controls (1.13.0)
|
|
202
205
|
|
|
@@ -244,8 +247,14 @@ rewriting them. URLs must use HTTP(S), without embedded credentials, query, or
|
|
|
244
247
|
fragment. No host/model defaults, model discovery, endpoint fallback, or model
|
|
245
248
|
switching are performed. Do not pass untrusted client input as server configuration.
|
|
246
249
|
|
|
247
|
-
Input is `prompt` plus optional `system`; message arrays,
|
|
248
|
-
reasoning effort, and JSON schemas are outside this
|
|
250
|
+
Input is `prompt` plus optional `system`; message arrays, tools, search,
|
|
251
|
+
reasoning effort, and JSON schemas are outside this operation. Native `generate`
|
|
252
|
+
and `chat` also accept `images: [{bytes: Buffer, mime: "image/png"}]` for text
|
|
253
|
+
output. Image bytes must be nonempty and MIME must be an image type. They are
|
|
254
|
+
encoded as base64 in caller order, at the top level for generate or on the user
|
|
255
|
+
message for chat. Empty image arrays are omitted. Image input on `openai-chat`
|
|
256
|
+
is rejected before submission. Reaktor does not load, resize, or inspect images;
|
|
257
|
+
callers own preparation and model capability selection. Optional
|
|
249
258
|
`maxTokens` maps to native `options.num_predict` or compatible `max_tokens`.
|
|
250
259
|
Nonnegative finite `temperature` preserves zero. Omitted token/temperature controls
|
|
251
260
|
remain omitted. Explicit `json_object` output maps to native `format: 'json'` or
|
|
@@ -281,6 +290,17 @@ Omission leaves the parameter absent, including an otherwise empty options objec
|
|
|
281
290
|
Reaktor supplies no sampling default. Existing temperature, token-limit, prompt,
|
|
282
291
|
completion-validation and single-submission behavior is unchanged.
|
|
283
292
|
|
|
284
|
-
|
|
285
|
-
a server-action capability; it does not enable Ollama through GraphQL. Applications
|
|
293
|
+
Providers other than Ollama and Gemini, and image generation, reject this option
|
|
294
|
+
before submission. Gemini support was added in 1.17.0. This is a server-action capability; it does not enable Ollama through GraphQL. Applications
|
|
286
295
|
retain ownership of sampling values and writing policy.
|
|
296
|
+
|
|
297
|
+
Image protocol references: [generate](https://docs.ollama.com/api/generate) and [chat](https://docs.ollama.com/api/chat).
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
### Gemini top-p
|
|
301
|
+
|
|
302
|
+
The server action accepts optional `topP` for Gemini text generation and forwards
|
|
303
|
+
it as `generationConfig.topP`. Values must be finite numbers from 0 through 1,
|
|
304
|
+
including zero. Omission leaves the provider default untouched. Image requests
|
|
305
|
+
and unsupported providers reject it before submission. Model-specific sampling
|
|
306
|
+
policy belongs to callers; Reaktor adds no defaults or application prompts.
|
|
@@ -5,6 +5,8 @@ export interface ContentGenerationConfig {
|
|
|
5
5
|
geminiImageModel?: string;
|
|
6
6
|
geminiKey?: string;
|
|
7
7
|
geminiModel?: string;
|
|
8
|
+
grokKey?: string;
|
|
9
|
+
grokModel?: string;
|
|
8
10
|
ollama?: {
|
|
9
11
|
endpoint: string;
|
|
10
12
|
protocol: 'generate' | 'chat' | 'openai-chat';
|
|
@@ -45,7 +47,7 @@ export interface ContentGenerationInput {
|
|
|
45
47
|
modality?: 'image' | 'text';
|
|
46
48
|
model?: string;
|
|
47
49
|
prompt?: string;
|
|
48
|
-
provider: 'claude' | 'gemini' | 'ollama' | 'openai';
|
|
50
|
+
provider: 'claude' | 'gemini' | 'grok' | 'ollama' | 'openai';
|
|
49
51
|
reasoningEffort?: ContentGenerationReasoningEffort;
|
|
50
52
|
responseFormat?: ContentGenerationResponseFormat;
|
|
51
53
|
search?: boolean;
|
|
@@ -4,10 +4,16 @@ export { ContentGenerationRejectedError, ContentGenerationResponseError } from '
|
|
|
4
4
|
import { post } from '@nlabs/rip-hunter';
|
|
5
5
|
import { Config } from '../config.js';
|
|
6
6
|
const validMessageContent = (message)=>{
|
|
7
|
-
if (typeof message.content === 'string')
|
|
7
|
+
if (typeof message.content === 'string') {
|
|
8
|
+
return !!message.content.trim();
|
|
9
|
+
}
|
|
8
10
|
return Array.isArray(message.content) && message.content.length > 0 && message.content.every((part)=>{
|
|
9
|
-
if (!part)
|
|
10
|
-
|
|
11
|
+
if (!part) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
if (part.type === 'text') {
|
|
15
|
+
return typeof part.text === 'string' && !!part.text.trim();
|
|
16
|
+
}
|
|
11
17
|
return part.type === 'image' && message.role === 'user' && typeof part.url === 'string' && /^(https?:\/\/[^\s]+|data:image\/(png|jpeg|webp|gif);base64,[A-Za-z0-9+/]+={0,2})$/.test(part.url) && (part.detail === undefined || [
|
|
12
18
|
'auto',
|
|
13
19
|
'high',
|
|
@@ -19,6 +25,7 @@ const validMessageContent = (message)=>{
|
|
|
19
25
|
if (![
|
|
20
26
|
'claude',
|
|
21
27
|
'gemini',
|
|
28
|
+
'grok',
|
|
22
29
|
'ollama',
|
|
23
30
|
'openai'
|
|
24
31
|
].includes(input.provider)) {
|
|
@@ -36,8 +43,11 @@ const validMessageContent = (message)=>{
|
|
|
36
43
|
} else if (typeof input.prompt !== 'string' || !input.prompt.trim()) {
|
|
37
44
|
throw new ContentGenerationRejectedError('A non-empty prompt is required.');
|
|
38
45
|
}
|
|
39
|
-
if (input.provider !== 'openai' && (input.messages !== undefined || input.reasoningEffort !== undefined ||
|
|
40
|
-
|
|
46
|
+
if (input.provider !== 'openai' && (input.messages !== undefined || input.reasoningEffort !== undefined || [
|
|
47
|
+
'claude',
|
|
48
|
+
'grok'
|
|
49
|
+
].includes(input.provider) && input.responseFormat !== undefined)) {
|
|
50
|
+
throw new ContentGenerationRejectedError('Messages and reasoning effort require OpenAI; Claude and Grok do not support response format options.');
|
|
41
51
|
}
|
|
42
52
|
if (input.timeoutMs !== undefined && (!Number.isInteger(input.timeoutMs) || input.timeoutMs < 1 || input.timeoutMs > 2_147_483_647)) {
|
|
43
53
|
throw new ContentGenerationRejectedError('timeoutMs must be a positive 32-bit integer.');
|
|
@@ -67,8 +77,11 @@ const validMessageContent = (message)=>{
|
|
|
67
77
|
].includes(input.provider) && format !== undefined && (format.type === 'json_schema' || input.modality === 'image')) {
|
|
68
78
|
throw new ContentGenerationRejectedError('This provider supports text or json_object for text generation only.');
|
|
69
79
|
}
|
|
70
|
-
if (input.topP !== undefined && (
|
|
71
|
-
|
|
80
|
+
if (input.topP !== undefined && (![
|
|
81
|
+
'gemini',
|
|
82
|
+
'ollama'
|
|
83
|
+
].includes(input.provider) || input.modality === 'image' || !Number.isFinite(input.topP) || input.topP < 0 || input.topP > 1)) {
|
|
84
|
+
throw new ContentGenerationRejectedError('topP requires a Gemini or Ollama text request and a finite value between 0 and 1.');
|
|
72
85
|
}
|
|
73
86
|
if (input.temperature !== undefined && (![
|
|
74
87
|
'gemini',
|
|
@@ -79,7 +92,10 @@ const validMessageContent = (message)=>{
|
|
|
79
92
|
if (input.maxTokens !== undefined && (!Number.isInteger(input.maxTokens) || input.maxTokens < 1)) {
|
|
80
93
|
throw new ContentGenerationRejectedError('maxTokens must be a positive integer.');
|
|
81
94
|
}
|
|
82
|
-
if (input.provider !== 'gemini' && (input.images?.length
|
|
95
|
+
if (input.provider !== 'gemini' && (input.images?.length && ![
|
|
96
|
+
'grok',
|
|
97
|
+
'ollama'
|
|
98
|
+
].includes(input.provider) || input.modality === 'image' || input.search)) {
|
|
83
99
|
throw new ContentGenerationRejectedError('This provider operation supports text input and output only.');
|
|
84
100
|
}
|
|
85
101
|
if (input.provider === 'ollama') return generateOllamaContent(input, config);
|
|
@@ -123,12 +139,28 @@ const validMessageContent = (message)=>{
|
|
|
123
139
|
text
|
|
124
140
|
};
|
|
125
141
|
}
|
|
126
|
-
if (input.provider === 'openai') {
|
|
127
|
-
|
|
128
|
-
|
|
142
|
+
if (input.provider === 'openai' || input.provider === 'grok') {
|
|
143
|
+
const grok = input.provider === 'grok';
|
|
144
|
+
const key = grok ? config.grokKey : config.openaiKey;
|
|
145
|
+
if (!key) {
|
|
146
|
+
throw new ContentGenerationRejectedError(`${grok ? 'Grok' : 'OpenAI'} is not configured on this server.`);
|
|
129
147
|
}
|
|
130
|
-
const response = await post('https://api.openai.com/v1/responses', {
|
|
131
|
-
input:
|
|
148
|
+
const response = await post(grok ? 'https://api.x.ai/v1/responses' : 'https://api.openai.com/v1/responses', {
|
|
149
|
+
input: grok && images.length ? [
|
|
150
|
+
{
|
|
151
|
+
content: [
|
|
152
|
+
{
|
|
153
|
+
text: prompt,
|
|
154
|
+
type: 'input_text'
|
|
155
|
+
},
|
|
156
|
+
...images.map((image)=>({
|
|
157
|
+
image_url: `data:${image.mime};base64,${image.bytes.toString('base64')}`,
|
|
158
|
+
type: 'input_image'
|
|
159
|
+
}))
|
|
160
|
+
],
|
|
161
|
+
role: 'user'
|
|
162
|
+
}
|
|
163
|
+
] : input.messages?.map((message)=>({
|
|
132
164
|
content: typeof message.content === 'string' ? message.content : message.content.map((part)=>part.type === 'text' ? {
|
|
133
165
|
text: part.text,
|
|
134
166
|
type: 'input_text'
|
|
@@ -141,7 +173,7 @@ const validMessageContent = (message)=>{
|
|
|
141
173
|
})) ?? prompt,
|
|
142
174
|
instructions: input.system,
|
|
143
175
|
max_output_tokens: input.maxTokens ?? 4096,
|
|
144
|
-
model: input.model || config.openaiModel || 'gpt-6-astra',
|
|
176
|
+
model: input.model || (grok ? config.grokModel || 'grok-4.7' : config.openaiModel || 'gpt-6-astra'),
|
|
145
177
|
...input.reasoningEffort ? {
|
|
146
178
|
reasoning: {
|
|
147
179
|
effort: input.reasoningEffort
|
|
@@ -153,11 +185,13 @@ const validMessageContent = (message)=>{
|
|
|
153
185
|
format
|
|
154
186
|
}
|
|
155
187
|
} : {},
|
|
156
|
-
|
|
188
|
+
...!grok ? {
|
|
189
|
+
truncation: 'disabled'
|
|
190
|
+
} : {}
|
|
157
191
|
}, {
|
|
158
192
|
cache: false,
|
|
159
193
|
headers: new Headers({
|
|
160
|
-
Authorization: `Bearer ${
|
|
194
|
+
Authorization: `Bearer ${key}`
|
|
161
195
|
}),
|
|
162
196
|
timeout: input.timeoutMs ?? 120_000
|
|
163
197
|
});
|
|
@@ -166,23 +200,23 @@ const validMessageContent = (message)=>{
|
|
|
166
200
|
'authentication_error',
|
|
167
201
|
'permission_error'
|
|
168
202
|
].includes(response.error.type || '')) {
|
|
169
|
-
throw new ContentGenerationRejectedError('OpenAI rejected the request. Check the model and account access
|
|
203
|
+
throw new ContentGenerationRejectedError(`${grok ? 'Grok' : 'OpenAI'} rejected the request. Check the model and account access.`);
|
|
170
204
|
}
|
|
171
205
|
if (response.error || response.status !== 'completed' || response.output?.some((item)=>item.status === 'incomplete')) {
|
|
172
|
-
throw new ContentGenerationResponseError('OpenAI response could not be confirmed: generation did not complete
|
|
206
|
+
throw new ContentGenerationResponseError(`${grok ? 'Grok' : 'OpenAI'} response could not be confirmed: generation did not complete.`);
|
|
173
207
|
}
|
|
174
208
|
if (response.output?.some((item)=>item.content?.some((part)=>part.type === 'refusal'))) {
|
|
175
|
-
throw new ContentGenerationResponseError('OpenAI declined the request
|
|
209
|
+
throw new ContentGenerationResponseError(`${grok ? 'Grok' : 'OpenAI'} declined the request.`);
|
|
176
210
|
}
|
|
177
211
|
if (response.output?.some((item)=>item.type && ![
|
|
178
212
|
'message',
|
|
179
213
|
'reasoning'
|
|
180
214
|
].includes(item.type))) {
|
|
181
|
-
throw new ContentGenerationResponseError('OpenAI returned an unsupported output item
|
|
215
|
+
throw new ContentGenerationResponseError(`${grok ? 'Grok' : 'OpenAI'} returned an unsupported output item.`);
|
|
182
216
|
}
|
|
183
|
-
const text = response.output?.filter((item)=>item.type === 'message').flatMap((item)=>item.content || []).filter((part)=>part.type === 'output_text').map((part)=>part.text || '').join('').trim();
|
|
217
|
+
const text = response.output?.filter((item)=>item.type === 'message' || grok && !item.type).flatMap((item)=>item.content || []).filter((part)=>part.type === 'output_text').map((part)=>part.text || '').join('').trim();
|
|
184
218
|
if (!text) {
|
|
185
|
-
throw new ContentGenerationResponseError('OpenAI returned empty output
|
|
219
|
+
throw new ContentGenerationResponseError(`${grok ? 'Grok' : 'OpenAI'} returned empty output.`);
|
|
186
220
|
}
|
|
187
221
|
return {
|
|
188
222
|
sources: [],
|
|
@@ -240,6 +274,9 @@ const validMessageContent = (message)=>{
|
|
|
240
274
|
} : {},
|
|
241
275
|
...input.temperature !== undefined ? {
|
|
242
276
|
temperature: input.temperature
|
|
277
|
+
} : {},
|
|
278
|
+
...input.topP !== undefined ? {
|
|
279
|
+
topP: input.topP
|
|
243
280
|
} : {}
|
|
244
281
|
},
|
|
245
282
|
...input.search ? {
|
|
@@ -312,4 +349,4 @@ const validMessageContent = (message)=>{
|
|
|
312
349
|
};
|
|
313
350
|
};
|
|
314
351
|
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb250ZW50R2VuZXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dlbmVyYXRlT2xsYW1hQ29udGVudH0gZnJvbSAnLi9vbGxhbWFHZW5lcmF0aW9uLmpzJztcbmltcG9ydCB7Q29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yLCBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3J9IGZyb20gJy4vY29udGVudEdlbmVyYXRpb25FcnJvcnMuanMnO1xuZXhwb3J0IHtDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IsIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcn0gZnJvbSAnLi9jb250ZW50R2VuZXJhdGlvbkVycm9ycy5qcyc7XG5pbXBvcnQge3Bvc3R9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEdlbmVyYXRpb25Db25maWcge1xuICBjbGF1ZGVLZXk/OiBzdHJpbmc7XG4gIGNsYXVkZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlJbWFnZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlLZXk/OiBzdHJpbmc7XG4gIGdlbWluaU1vZGVsPzogc3RyaW5nO1xuICBvbGxhbWE/OiB7ZW5kcG9pbnQ6IHN0cmluZzsgcHJvdG9jb2w6ICdnZW5lcmF0ZScgfCAnY2hhdCcgfCAnb3BlbmFpLWNoYXQnfTtcbiAgb3BlbmFpS2V5Pzogc3RyaW5nO1xuICBvcGVuYWlNb2RlbD86IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIENvbnRlbnRHZW5lcmF0aW9uUGFydCA9IHt0ZXh0OiBzdHJpbmc7IHR5cGU6ICd0ZXh0J30gfCB7XG4gIGRldGFpbD86ICdhdXRvJyB8ICdoaWdoJyB8ICdsb3cnO1xuICB0eXBlOiAnaW1hZ2UnO1xuICB1cmw6IHN0cmluZztcbn07XG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRHZW5lcmF0aW9uTWVzc2FnZSB7XG4gIGNvbnRlbnQ6IHN0cmluZyB8IENvbnRlbnRHZW5lcmF0aW9uUGFydFtdO1xuICByb2xlOiAnYXNzaXN0YW50JyB8ICdkZXZlbG9wZXInIHwgJ3N5c3RlbScgfCAndXNlcic7XG59XG5leHBvcnQgdHlwZSBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRm9ybWF0ID0ge3R5cGU6ICdqc29uX29iamVjdCcgfCAndGV4dCd9IHwge1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBzY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICB0eXBlOiAnanNvbl9zY2hlbWEnO1xufTtcbmV4cG9ydCB0eXBlIENvbnRlbnRHZW5lcmF0aW9uUmVhc29uaW5nRWZmb3J0ID0gJ25vbmUnIHwgJ21pbmltYWwnIHwgJ2xvdycgfCAnbWVkaXVtJyB8ICdoaWdoJyB8ICd4aGlnaCcgfCAnbWF4JztcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50R2VuZXJhdGlvbklucHV0IHtcbiAgYXNwZWN0UmF0aW8/OiBzdHJpbmc7XG4gIGltYWdlcz86IHtieXRlczogQnVmZmVyOyBtaW1lOiBzdHJpbmd9W107XG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgbWVzc2FnZXM/OiBDb250ZW50R2VuZXJhdGlvbk1lc3NhZ2VbXTtcbiAgbW9kYWxpdHk/OiAnaW1hZ2UnIHwgJ3RleHQnO1xuICBtb2RlbD86IHN0cmluZztcbiAgcHJvbXB0Pzogc3RyaW5nO1xuICBwcm92aWRlcjogJ2NsYXVkZScgfCAnZ2VtaW5pJyB8ICdvbGxhbWEnIHwgJ29wZW5haSc7XG4gIHJlYXNvbmluZ0VmZm9ydD86IENvbnRlbnRHZW5lcmF0aW9uUmVhc29uaW5nRWZmb3J0O1xuICByZXNwb25zZUZvcm1hdD86IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VGb3JtYXQ7XG4gIHNlYXJjaD86IGJvb2xlYW47XG4gIHN5c3RlbT86IHN0cmluZztcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbiAgdG9wUD86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVkQ29udGVudCB7XG4gIGltYWdlPzoge2J5dGVzOiBCdWZmZXI7IG1pbWU6ICdpbWFnZS9qcGVnJyB8ICdpbWFnZS9wbmcnfTtcbiAgc2VhcmNoU3VnZ2VzdGlvbnNIdG1sPzogc3RyaW5nO1xuICBzb3VyY2VzOiB7dGl0bGU6IHN0cmluZzsgdXJsOiBzdHJpbmd9W107XG4gIHRleHQ6IHN0cmluZztcbn1cbmludGVyZmFjZSBHZW1pbmlQYXJ0IHtpbmxpbmVEYXRhPzoge2RhdGE6IHN0cmluZzsgbWltZVR5cGU6IHN0cmluZ307IHRleHQ/OiBzdHJpbmc7IHRob3VnaHQ/OiBib29sZWFufVxuaW50ZXJmYWNlIEdlbWluaVJlc3BvbnNlIHtcbiAgY2FuZGlkYXRlcz86IHtcbiAgICBjb250ZW50Pzoge3BhcnRzPzogR2VtaW5pUGFydFtdfTtcbiAgICBmaW5pc2hSZWFzb24/OiBzdHJpbmc7XG4gICAgZ3JvdW5kaW5nTWV0YWRhdGE/OiB7XG4gICAgICBncm91bmRpbmdDaHVua3M/OiB7d2ViPzoge3RpdGxlPzogc3RyaW5nOyB1cmk/OiBzdHJpbmd9fVtdO1xuICAgICAgc2VhcmNoRW50cnlQb2ludD86IHtyZW5kZXJlZENvbnRlbnQ/OiBzdHJpbmd9O1xuICAgIH07XG4gIH1bXTtcbiAgZXJyb3I/OiB7Y29kZT86IG51bWJlcn07XG4gIHByb21wdEZlZWRiYWNrPzoge2Jsb2NrUmVhc29uPzogc3RyaW5nfTtcbn1cblxuY29uc3QgdmFsaWRNZXNzYWdlQ29udGVudCA9IChtZXNzYWdlOiBDb250ZW50R2VuZXJhdGlvbk1lc3NhZ2UpOiBib29sZWFuID0+IHtcbiAgaWYodHlwZW9mIG1lc3NhZ2UuY29udGVudCA9PT0gJ3N0cmluZycpIHJldHVybiAhIW1lc3NhZ2UuY29udGVudC50cmltKCk7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1lc3NhZ2UuY29udGVudCkgJiYgbWVzc2FnZS5jb250ZW50Lmxlbmd0aCA+IDAgJiYgbWVzc2FnZS5jb250ZW50LmV2ZXJ5KChwYXJ0KSA9PiB7XG4gICAgaWYoIXBhcnQpIHJldHVybiBmYWxzZTtcbiAgICBpZihwYXJ0LnR5cGUgPT09ICd0ZXh0JykgcmV0dXJuIHR5cGVvZiBwYXJ0LnRleHQgPT09ICdzdHJpbmcnICYmICEhcGFydC50ZXh0LnRyaW0oKTtcbiAgICByZXR1cm4gcGFydC50eXBlID09PSAnaW1hZ2UnICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInICYmIHR5cGVvZiBwYXJ0LnVybCA9PT0gJ3N0cmluZydcbiAgICAgICYmIC9eKGh0dHBzPzpcXC9cXC9bXlxcc10rfGRhdGE6aW1hZ2VcXC8ocG5nfGpwZWd8d2VicHxnaWYpO2Jhc2U2NCxbQS1aYS16MC05Ky9dKz17MCwyfSkkLy50ZXN0KHBhcnQudXJsKVxuICAgICAgJiYgKHBhcnQuZGV0YWlsID09PSB1bmRlZmluZWQgfHwgWydhdXRvJywgJ2hpZ2gnLCAnbG93J10uaW5jbHVkZXMocGFydC5kZXRhaWwpKTtcbiAgfSk7XG59O1xuXG4vKiogU2luZ2xlIHN1Ym1pc3Npb24gdGhyb3VnaCBSaXAtSHVudGVyOyBjYWxsZXJzIG93biBkdXJhYmxlIGpvYnMgYW5kIHJlY29uY2lsaWF0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQ29udGVudCA9IGFzeW5jIChcbiAgaW5wdXQ6IENvbnRlbnRHZW5lcmF0aW9uSW5wdXQsXG4gIGNvbmZpZzogQ29udGVudEdlbmVyYXRpb25Db25maWcgPSBDb25maWcuZ2V0PENvbnRlbnRHZW5lcmF0aW9uQ29uZmlnPignY29udGVudEdlbmVyYXRpb24nKSB8fCB7fVxuKTogUHJvbWlzZTxHZW5lcmF0ZWRDb250ZW50PiA9PiB7XG4gIGlmKCFbJ2NsYXVkZScsICdnZW1pbmknLCAnb2xsYW1hJywgJ29wZW5haSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0Egc3VwcG9ydGVkIHByb3ZpZGVyIGlzIHJlcXVpcmVkLicpO1xuICB9XG4gIGlmKGlucHV0Lm1lc3NhZ2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZihpbnB1dC5wcm9tcHQgIT09IHVuZGVmaW5lZCB8fCAhQXJyYXkuaXNBcnJheShpbnB1dC5tZXNzYWdlcykgfHwgIWlucHV0Lm1lc3NhZ2VzLmxlbmd0aCB8fCBpbnB1dC5tZXNzYWdlcy5zb21lKChtZXNzYWdlKSA9PlxuICAgICAgIW1lc3NhZ2UgfHwgIVsnYXNzaXN0YW50JywgJ2RldmVsb3BlcicsICdzeXN0ZW0nLCAndXNlciddLmluY2x1ZGVzKG1lc3NhZ2Uucm9sZSkgfHwgIXZhbGlkTWVzc2FnZUNvbnRlbnQobWVzc2FnZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdTdXBwbHkgZWl0aGVyIGEgbm9uLWVtcHR5IHByb21wdCBvciBub24tZW1wdHkgdGV4dCBtZXNzYWdlcyB3aXRoIHN1cHBvcnRlZCByb2xlcy4nKTtcbiAgICB9XG4gIH0gZWxzZSBpZih0eXBlb2YgaW5wdXQucHJvbXB0ICE9PSAnc3RyaW5nJyB8fCAhaW5wdXQucHJvbXB0LnRyaW0oKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0Egbm9uLWVtcHR5IHByb21wdCBpcyByZXF1aXJlZC4nKTtcbiAgfVxuICBpZihpbnB1dC5wcm92aWRlciAhPT0gJ29wZW5haScgJiYgKGlucHV0Lm1lc3NhZ2VzICE9PSB1bmRlZmluZWQgfHwgaW5wdXQucmVhc29uaW5nRWZmb3J0ICE9PSB1bmRlZmluZWQgfHwgKGlucHV0LnByb3ZpZGVyID09PSAnY2xhdWRlJyAmJiBpbnB1dC5yZXNwb25zZUZvcm1hdCAhPT0gdW5kZWZpbmVkKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdNZXNzYWdlcyBhbmQgcmVhc29uaW5nIGVmZm9ydCByZXF1aXJlIE9wZW5BSTsgQ2xhdWRlIGRvZXMgbm90IHN1cHBvcnQgcmVzcG9uc2UgZm9ybWF0IG9wdGlvbnMuJyk7XG4gIH1cbiAgaWYoaW5wdXQudGltZW91dE1zICE9PSB1bmRlZmluZWQgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0LnRpbWVvdXRNcykgfHwgaW5wdXQudGltZW91dE1zIDwgMSB8fCBpbnB1dC50aW1lb3V0TXMgPiAyXzE0N180ODNfNjQ3KSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ3RpbWVvdXRNcyBtdXN0IGJlIGEgcG9zaXRpdmUgMzItYml0IGludGVnZXIuJyk7XG4gIH1cbiAgaWYoaW5wdXQucmVhc29uaW5nRWZmb3J0ICE9PSB1bmRlZmluZWQgJiYgIVsnbm9uZScsICdtaW5pbWFsJywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICd4aGlnaCcsICdtYXgnXS5pbmNsdWRlcyhpbnB1dC5yZWFzb25pbmdFZmZvcnQpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVW5zdXBwb3J0ZWQgcmVhc29uaW5nIGVmZm9ydC4nKTtcbiAgfVxuICBjb25zdCBmb3JtYXQgPSBpbnB1dC5yZXNwb25zZUZvcm1hdDtcbiAgaWYoZm9ybWF0ICE9PSB1bmRlZmluZWQgJiYgKCFmb3JtYXQgfHwgIVsndGV4dCcsICdqc29uX29iamVjdCcsICdqc29uX3NjaGVtYSddLmluY2x1ZGVzKGZvcm1hdC50eXBlKSB8fCAoZm9ybWF0LnR5cGUgPT09ICdqc29uX3NjaGVtYScgJiYgKFxuICAgIHR5cGVvZiBmb3JtYXQubmFtZSAhPT0gJ3N0cmluZycgfHwgIS9eW2EtekEtWjAtOV8tXXsxLDY0fSQvLnRlc3QoZm9ybWF0Lm5hbWUpIHx8ICFmb3JtYXQuc2NoZW1hIHx8IHR5cGVvZiBmb3JtYXQuc2NoZW1hICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGZvcm1hdC5zY2hlbWEpXG4gICAgfHwgKGZvcm1hdC5zdHJpY3QgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZm9ybWF0LnN0cmljdCAhPT0gJ2Jvb2xlYW4nKVxuICApKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdJbnZhbGlkIHJlc3BvbnNlIGZvcm1hdC4gSlNPTiBzY2hlbWFzIHJlcXVpcmUgYSBuYW1lIGFuZCBzY2hlbWEgb2JqZWN0LicpO1xuICB9XG4gIGlmKFsnZ2VtaW5pJywgJ29sbGFtYSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSAmJiBmb3JtYXQgIT09IHVuZGVmaW5lZCAmJiAoZm9ybWF0LnR5cGUgPT09ICdqc29uX3NjaGVtYScgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVGhpcyBwcm92aWRlciBzdXBwb3J0cyB0ZXh0IG9yIGpzb25fb2JqZWN0IGZvciB0ZXh0IGdlbmVyYXRpb24gb25seS4nKTtcbiAgfVxuICBpZihpbnB1dC50b3BQICE9PSB1bmRlZmluZWQgJiYgKGlucHV0LnByb3ZpZGVyICE9PSAnb2xsYW1hJyB8fCBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyB8fCAhTnVtYmVyLmlzRmluaXRlKGlucHV0LnRvcFApIHx8IGlucHV0LnRvcFAgPCAwIHx8IGlucHV0LnRvcFAgPiAxKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ3RvcFAgcmVxdWlyZXMgYW4gT2xsYW1hIHRleHQgcmVxdWVzdCBhbmQgYSBmaW5pdGUgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLicpO1xuICB9XG4gIGlmKGlucHV0LnRlbXBlcmF0dXJlICE9PSB1bmRlZmluZWQgJiYgKCFbJ2dlbWluaScsICdvbGxhbWEnXS5pbmNsdWRlcyhpbnB1dC5wcm92aWRlcikgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgfHwgIU51bWJlci5pc0Zpbml0ZShpbnB1dC50ZW1wZXJhdHVyZSkgfHwgaW5wdXQudGVtcGVyYXR1cmUgPCAwIHx8IChpbnB1dC5wcm92aWRlciA9PT0gJ2dlbWluaScgJiYgaW5wdXQudGVtcGVyYXR1cmUgPiAyKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCd0ZW1wZXJhdHVyZSByZXF1aXJlcyBhIG5vbm5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSBmb3IgT2xsYW1hIHRleHQgb3IgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDIgZm9yIEdlbWluaSB0ZXh0LicpO1xuICB9XG4gIGlmKGlucHV0Lm1heFRva2VucyAhPT0gdW5kZWZpbmVkICYmICghTnVtYmVyLmlzSW50ZWdlcihpbnB1dC5tYXhUb2tlbnMpIHx8IGlucHV0Lm1heFRva2VucyA8IDEpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignbWF4VG9rZW5zIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLicpO1xuICB9XG4gIGlmKGlucHV0LnByb3ZpZGVyICE9PSAnZ2VtaW5pJyAmJiAoaW5wdXQuaW1hZ2VzPy5sZW5ndGggfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgfHwgaW5wdXQuc2VhcmNoKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ1RoaXMgcHJvdmlkZXIgb3BlcmF0aW9uIHN1cHBvcnRzIHRleHQgaW5wdXQgYW5kIG91dHB1dCBvbmx5LicpO1xuICB9XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnb2xsYW1hJykgcmV0dXJuIGdlbmVyYXRlT2xsYW1hQ29udGVudChpbnB1dCwgY29uZmlnKTtcbiAgY29uc3Qge3Byb21wdCwgaW1hZ2VzID0gW119ID0gaW5wdXQ7XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnY2xhdWRlJykge1xuICAgIGlmKCFjb25maWcuY2xhdWRlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdDbGF1ZGUgaXMgbm90IGNvbmZpZ3VyZWQgb24gdGhpcyBzZXJ2ZXIuJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcG9zdCgnaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbS92MS9tZXNzYWdlcycsIHtcbiAgICAgIG1heF90b2tlbnM6IGlucHV0Lm1heFRva2VucyA/PyA0MDk2LFxuICAgICAgbWVzc2FnZXM6IFt7Y29udGVudDogcHJvbXB0LCByb2xlOiAndXNlcid9XSxcbiAgICAgIG1vZGVsOiBpbnB1dC5tb2RlbCB8fCBjb25maWcuY2xhdWRlTW9kZWwgfHwgJ2NsYXVkZS1zb25uZXQtNScsXG4gICAgICBzeXN0ZW06IGlucHV0LnN5c3RlbVxuICAgIH0sIHtjYWNoZTogZmFsc2UsIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHsnYW50aHJvcGljLXZlcnNpb24nOiAnMjAyMy0wNi0wMScsICd4LWFwaS1rZXknOiBjb25maWcuY2xhdWRlS2V5fSksIHRpbWVvdXQ6IGlucHV0LnRpbWVvdXRNcyA/PyAxMjBfMDAwfSkgYXMge1xuICAgICAgY29udGVudD86IHt0ZXh0Pzogc3RyaW5nOyB0eXBlPzogc3RyaW5nfVtdO1xuICAgICAgZXJyb3I/OiB7dHlwZT86IHN0cmluZ307XG4gICAgICBzdG9wX3JlYXNvbj86IHN0cmluZztcbiAgICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBpZihyZXNwb25zZS5lcnJvciAmJiBbJ2F1dGhlbnRpY2F0aW9uX2Vycm9yJywgJ2ludmFsaWRfcmVxdWVzdF9lcnJvcicsICdub3RfZm91bmRfZXJyb3InLCAncGVybWlzc2lvbl9lcnJvciddLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLnR5cGUgfHwgJycpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdDbGF1ZGUgcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSBtb2RlbCBhbmQgYWNjb3VudCBhY2Nlc3MuJyk7XG4gICAgfVxuICAgIGNvbnN0IHRleHQgPSByZXNwb25zZS5jb250ZW50Py5maWx0ZXIoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3RleHQnKS5tYXAoKHBhcnQpID0+IHBhcnQudGV4dCB8fCAnJykuam9pbignXFxuJykudHJpbSgpO1xuICAgIGlmKHJlc3BvbnNlLmVycm9yIHx8IHJlc3BvbnNlLnR5cGUgIT09ICdtZXNzYWdlJyB8fCByZXNwb25zZS5zdG9wX3JlYXNvbiAhPT0gJ2VuZF90dXJuJyB8fCAhdGV4dCkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignQ2xhdWRlIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiB7c291cmNlczogW10sIHRleHR9O1xuICB9XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnb3BlbmFpJykge1xuICAgIGlmKCFjb25maWcub3BlbmFpS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdPcGVuQUkgaXMgbm90IGNvbmZpZ3VyZWQgb24gdGhpcyBzZXJ2ZXIuJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcG9zdCgnaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MS9yZXNwb25zZXMnLCB7XG4gICAgICBpbnB1dDogaW5wdXQubWVzc2FnZXM/Lm1hcCgobWVzc2FnZSkgPT4gKHtjb250ZW50OiB0eXBlb2YgbWVzc2FnZS5jb250ZW50ID09PSAnc3RyaW5nJyA/IG1lc3NhZ2UuY29udGVudCA6IG1lc3NhZ2UuY29udGVudC5tYXAoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3RleHQnXG4gICAgICAgID8ge3RleHQ6IHBhcnQudGV4dCwgdHlwZTogJ2lucHV0X3RleHQnfSA6IHtkZXRhaWw6IHBhcnQuZGV0YWlsID8/ICdhdXRvJywgaW1hZ2VfdXJsOiBwYXJ0LnVybCwgdHlwZTogJ2lucHV0X2ltYWdlJ30pLCByb2xlOiBtZXNzYWdlLnJvbGUgPT09ICdzeXN0ZW0nID8gJ2RldmVsb3BlcicgOiBtZXNzYWdlLnJvbGV9KSkgPz8gcHJvbXB0LFxuICAgICAgaW5zdHJ1Y3Rpb25zOiBpbnB1dC5zeXN0ZW0sXG4gICAgICBtYXhfb3V0cHV0X3Rva2VuczogaW5wdXQubWF4VG9rZW5zID8/IDQwOTYsXG4gICAgICBtb2RlbDogaW5wdXQubW9kZWwgfHwgY29uZmlnLm9wZW5haU1vZGVsIHx8ICdncHQtNi1hc3RyYScsXG4gICAgICAuLi4oaW5wdXQucmVhc29uaW5nRWZmb3J0ID8ge3JlYXNvbmluZzoge2VmZm9ydDogaW5wdXQucmVhc29uaW5nRWZmb3J0fX0gOiB7fSksXG4gICAgICBzdG9yZTogZmFsc2UsXG4gICAgICAuLi4oZm9ybWF0ID8ge3RleHQ6IHtmb3JtYXR9fSA6IHt9KSxcbiAgICAgIHRydW5jYXRpb246ICdkaXNhYmxlZCdcbiAgICB9LCB7Y2FjaGU6IGZhbHNlLCBoZWFkZXJzOiBuZXcgSGVhZGVycyh7QXV0aG9yaXphdGlvbjogYEJlYXJlciAke2NvbmZpZy5vcGVuYWlLZXl9YH0pLCB0aW1lb3V0OiBpbnB1dC50aW1lb3V0TXMgPz8gMTIwXzAwMH0pIGFzIHtcbiAgICAgIGVycm9yPzoge2NvZGU/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmd9O1xuICAgICAgb3V0cHV0Pzoge2NvbnRlbnQ/OiB7dGV4dD86IHN0cmluZzsgdHlwZT86IHN0cmluZ31bXTsgc3RhdHVzPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nfVtdO1xuICAgICAgc3RhdHVzPzogc3RyaW5nO1xuICAgIH07XG4gICAgaWYocmVzcG9uc2UuZXJyb3IgJiYgWydpbnZhbGlkX3JlcXVlc3RfZXJyb3InLCAnYXV0aGVudGljYXRpb25fZXJyb3InLCAncGVybWlzc2lvbl9lcnJvciddLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLnR5cGUgfHwgJycpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdPcGVuQUkgcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSBtb2RlbCBhbmQgYWNjb3VudCBhY2Nlc3MuJyk7XG4gICAgfVxuICAgIGlmKHJlc3BvbnNlLmVycm9yIHx8IHJlc3BvbnNlLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcgfHwgcmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLnN0YXR1cyA9PT0gJ2luY29tcGxldGUnKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignT3BlbkFJIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQ6IGdlbmVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZS4nKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLmNvbnRlbnQ/LnNvbWUoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3JlZnVzYWwnKSkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ09wZW5BSSBkZWNsaW5lZCB0aGUgcmVxdWVzdC4nKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLnR5cGUgJiYgIVsnbWVzc2FnZScsICdyZWFzb25pbmcnXS5pbmNsdWRlcyhpdGVtLnR5cGUpKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignT3BlbkFJIHJldHVybmVkIGFuIHVuc3VwcG9ydGVkIG91dHB1dCBpdGVtLicpO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gcmVzcG9uc2Uub3V0cHV0Py5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gJ21lc3NhZ2UnKS5mbGF0TWFwKChpdGVtKSA9PiBpdGVtLmNvbnRlbnQgfHwgW10pXG4gICAgICAuZmlsdGVyKChwYXJ0KSA9PiBwYXJ0LnR5cGUgPT09ICdvdXRwdXRfdGV4dCcpLm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5qb2luKCcnKS50cmltKCk7XG4gICAgaWYoIXRleHQpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ09wZW5BSSByZXR1cm5lZCBlbXB0eSBvdXRwdXQuJyk7XG4gICAgfVxuICAgIHJldHVybiB7c291cmNlczogW10sIHRleHR9O1xuICB9XG4gIGlmKCFjb25maWcuZ2VtaW5pS2V5KSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignR2VtaW5pIGlzIG5vdCBjb25maWd1cmVkIG9uIHRoaXMgc2VydmVyLicpO1xuICB9XG4gIGNvbnN0IHBhcnRzOiB1bmtub3duW10gPSBbe3RleHQ6IHByb21wdH0sIC4uLmltYWdlcy5tYXAoKGltYWdlKSA9PiAoe2lubGluZURhdGE6IHtkYXRhOiBpbWFnZS5ieXRlcy50b1N0cmluZygnYmFzZTY0JyksIG1pbWVUeXBlOiBpbWFnZS5taW1lfX0pKV07XG4gIGNvbnN0IG1vZGVsID0gaW5wdXQubW9kZWwgfHwgKGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnID8gY29uZmlnLmdlbWluaUltYWdlTW9kZWwgfHwgJ2dlbWluaS0zLjEtZmxhc2gtaW1hZ2UnIDogY29uZmlnLmdlbWluaU1vZGVsIHx8ICdnZW1pbmktMy44LWZsYXNoJyk7XG4gIGlmKCEvXlthLXpBLVowLTkuXy1dKyQvLnRlc3QobW9kZWwpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignSW52YWxpZCBHZW1pbmkgbW9kZWwgY29uZmlndXJhdGlvbi4nKTtcbiAgfVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBvc3QoYGh0dHBzOi8vZ2VuZXJhdGl2ZWxhbmd1YWdlLmdvb2dsZWFwaXMuY29tL3YxYmV0YS9tb2RlbHMvJHttb2RlbH06Z2VuZXJhdGVDb250ZW50YCwge1xuICAgIGNvbnRlbnRzOiBbe3BhcnRzLCByb2xlOiAndXNlcid9XSxcbiAgICAuLi4oaW5wdXQuc3lzdGVtID8ge3N5c3RlbUluc3RydWN0aW9uOiB7cGFydHM6IFt7dGV4dDogaW5wdXQuc3lzdGVtfV19fSA6IHt9KSxcbiAgICBnZW5lcmF0aW9uQ29uZmlnOiBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyA/IHsuLi4oaW5wdXQuYXNwZWN0UmF0aW8gPyB7aW1hZ2VDb25maWc6IHthc3BlY3RSYXRpbzogaW5wdXQuYXNwZWN0UmF0aW99fSA6IHt9KSwgcmVzcG9uc2VNb2RhbGl0aWVzOiBbJ1RFWFQnLCAnSU1BR0UnXX0gOiB7XG4gICAgICBtYXhPdXRwdXRUb2tlbnM6IGlucHV0Lm1heFRva2VucyA/PyA0MDk2LFxuICAgICAgLi4uKGZvcm1hdCA/IHtyZXNwb25zZU1pbWVUeXBlOiBmb3JtYXQudHlwZSA9PT0gJ2pzb25fb2JqZWN0JyA/ICdhcHBsaWNhdGlvbi9qc29uJyA6ICd0ZXh0L3BsYWluJ30gOiB7fSksXG4gICAgICAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pXG4gICAgfSxcbiAgICAuLi4oaW5wdXQuc2VhcmNoID8ge3Rvb2xzOiBbe2dvb2dsZVNlYXJjaDoge319XX0gOiB7fSlcbiAgfSwge2NhY2hlOiBmYWxzZSwgaGVhZGVyczogbmV3IEhlYWRlcnMoeyd4LWdvb2ctYXBpLWtleSc6IGNvbmZpZy5nZW1pbmlLZXl9KSwgdGltZW91dDogaW5wdXQudGltZW91dE1zID8/IDEyMF8wMDB9KSBhcyBHZW1pbmlSZXNwb25zZTtcbiAgaWYocmVzcG9uc2UuZXJyb3IgJiYgWzQwMCwgNDAxLCA0MDMsIDQwNF0uaW5jbHVkZXMocmVzcG9uc2UuZXJyb3IuY29kZSB8fCAwKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0dlbWluaSByZWplY3RlZCB0aGUgcmVxdWVzdC4gQ2hlY2sgdGhlIHJlZmVyZW5jZSBmb3JtYXQgYW5kIG1vZGVsIGFjY2Vzcy4nKTtcbiAgfVxuICBpZihyZXNwb25zZS5wcm9tcHRGZWVkYmFjaz8uYmxvY2tSZWFzb24gfHwgcmVzcG9uc2UuZXJyb3IgfHwgIXJlc3BvbnNlLmNhbmRpZGF0ZXM/Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ0dlbWluaSByZXNwb25zZSBjb3VsZCBub3QgYmUgY29uZmlybWVkLicpO1xuICB9XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IHJlc3BvbnNlLmNhbmRpZGF0ZXNbMF0hO1xuICBpZihjYW5kaWRhdGUuZmluaXNoUmVhc29uICE9PSAnU1RPUCcpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdHZW1pbmkgcmVzcG9uc2UgY291bGQgbm90IGJlIGNvbmZpcm1lZDogZ2VuZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlLicpO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IChjYW5kaWRhdGUuY29udGVudD8ucGFydHMgfHwgW10pLmZpbHRlcigocGFydCkgPT4gIXBhcnQudGhvdWdodCk7XG4gIGNvbnN0IGlubGluZSA9IG91dHB1dC5maW5kKChwYXJ0KSA9PiBwYXJ0LmlubGluZURhdGEpPy5pbmxpbmVEYXRhO1xuICBsZXQgaW1hZ2U6IEdlbmVyYXRlZENvbnRlbnRbJ2ltYWdlJ107XG4gIGlmKGlubGluZSAmJiBbJ2ltYWdlL3BuZycsICdpbWFnZS9qcGVnJ10uaW5jbHVkZXMoaW5saW5lLm1pbWVUeXBlKSkge1xuICAgIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmZyb20oaW5saW5lLmRhdGEsICdiYXNlNjQnKTtcbiAgICBpZighYnl0ZXMubGVuZ3RoIHx8IGJ5dGVzLmxlbmd0aCA+IDIwICogMTAyNCAqIDEwMjQpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ0ludmFsaWQgaW1hZ2Ugb3V0cHV0LicpO1xuICAgIH1cbiAgICBpbWFnZSA9IHtieXRlcywgbWltZTogaW5saW5lLm1pbWVUeXBlIGFzICdpbWFnZS9wbmcnIHwgJ2ltYWdlL2pwZWcnfTtcbiAgfVxuICBjb25zdCB0ZXh0ID0gb3V0cHV0Lm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5qb2luKCdcXG4nKS50cmltKCk7XG4gIGlmKGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnID8gIWltYWdlIDogIXRleHQpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdUaGUgcmVxdWVzdGVkIG91dHB1dCB3YXMgbm90IHJldHVybmVkLicpO1xuICB9XG4gIGNvbnN0IHNvdXJjZXMgPSAoY2FuZGlkYXRlLmdyb3VuZGluZ01ldGFkYXRhPy5ncm91bmRpbmdDaHVua3MgfHwgW10pLmZsYXRNYXAoKHt3ZWJ9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2ViPy51cmkgfHwgJycpO1xuICAgICAgcmV0dXJuIHVybC5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyBbe3RpdGxlOiB3ZWI/LnRpdGxlIHx8IHVybC5ob3N0bmFtZSwgdXJsOiB1cmwuaHJlZn1dIDogW107XG4gICAgfSBjYXRjaHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGltYWdlLCBzZWFyY2hTdWdnZXN0aW9uc0h0bWw6IGNhbmRpZGF0ZS5ncm91bmRpbmdNZXRhZGF0YT8uc2VhcmNoRW50cnlQb2ludD8ucmVuZGVyZWRDb250ZW50LCBzb3VyY2VzLCB0ZXh0XG4gIH07XG59O1xuIl0sIm5hbWVzIjpbImdlbmVyYXRlT2xsYW1hQ29udGVudCIsIkNvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvciIsIkNvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvciIsInBvc3QiLCJDb25maWciLCJ2YWxpZE1lc3NhZ2VDb250ZW50IiwibWVzc2FnZSIsImNvbnRlbnQiLCJ0cmltIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiZXZlcnkiLCJwYXJ0IiwidHlwZSIsInRleHQiLCJyb2xlIiwidXJsIiwidGVzdCIsImRldGFpbCIsInVuZGVmaW5lZCIsImluY2x1ZGVzIiwiZ2VuZXJhdGVDb250ZW50IiwiaW5wdXQiLCJjb25maWciLCJnZXQiLCJwcm92aWRlciIsIm1lc3NhZ2VzIiwicHJvbXB0Iiwic29tZSIsInJlYXNvbmluZ0VmZm9ydCIsInJlc3BvbnNlRm9ybWF0IiwidGltZW91dE1zIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwiZm9ybWF0IiwibmFtZSIsInNjaGVtYSIsInN0cmljdCIsIm1vZGFsaXR5IiwidG9wUCIsImlzRmluaXRlIiwidGVtcGVyYXR1cmUiLCJtYXhUb2tlbnMiLCJpbWFnZXMiLCJzZWFyY2giLCJjbGF1ZGVLZXkiLCJyZXNwb25zZSIsIm1heF90b2tlbnMiLCJtb2RlbCIsImNsYXVkZU1vZGVsIiwic3lzdGVtIiwiY2FjaGUiLCJoZWFkZXJzIiwiSGVhZGVycyIsInRpbWVvdXQiLCJlcnJvciIsImZpbHRlciIsIm1hcCIsImpvaW4iLCJzdG9wX3JlYXNvbiIsInNvdXJjZXMiLCJvcGVuYWlLZXkiLCJpbWFnZV91cmwiLCJpbnN0cnVjdGlvbnMiLCJtYXhfb3V0cHV0X3Rva2VucyIsIm9wZW5haU1vZGVsIiwicmVhc29uaW5nIiwiZWZmb3J0Iiwic3RvcmUiLCJ0cnVuY2F0aW9uIiwiQXV0aG9yaXphdGlvbiIsInN0YXR1cyIsIm91dHB1dCIsIml0ZW0iLCJmbGF0TWFwIiwiZ2VtaW5pS2V5IiwicGFydHMiLCJpbWFnZSIsImlubGluZURhdGEiLCJkYXRhIiwiYnl0ZXMiLCJ0b1N0cmluZyIsIm1pbWVUeXBlIiwibWltZSIsImdlbWluaUltYWdlTW9kZWwiLCJnZW1pbmlNb2RlbCIsImNvbnRlbnRzIiwic3lzdGVtSW5zdHJ1Y3Rpb24iLCJnZW5lcmF0aW9uQ29uZmlnIiwiYXNwZWN0UmF0aW8iLCJpbWFnZUNvbmZpZyIsInJlc3BvbnNlTW9kYWxpdGllcyIsIm1heE91dHB1dFRva2VucyIsInJlc3BvbnNlTWltZVR5cGUiLCJ0b29scyIsImdvb2dsZVNlYXJjaCIsImNvZGUiLCJwcm9tcHRGZWVkYmFjayIsImJsb2NrUmVhc29uIiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZSIsImZpbmlzaFJlYXNvbiIsInRob3VnaHQiLCJpbmxpbmUiLCJmaW5kIiwiQnVmZmVyIiwiZnJvbSIsImdyb3VuZGluZ01ldGFkYXRhIiwiZ3JvdW5kaW5nQ2h1bmtzIiwid2ViIiwiVVJMIiwidXJpIiwicHJvdG9jb2wiLCJ0aXRsZSIsImhvc3RuYW1lIiwiaHJlZiIsInNlYXJjaFN1Z2dlc3Rpb25zSHRtbCIsInNlYXJjaEVudHJ5UG9pbnQiLCJyZW5kZXJlZENvbnRlbnQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLHFCQUFxQixRQUFPLHdCQUF3QjtBQUM1RCxTQUFRQyw4QkFBOEIsRUFBRUMsOEJBQThCLFFBQU8sK0JBQStCO0FBQzVHLFNBQVFELDhCQUE4QixFQUFFQyw4QkFBOEIsUUFBTywrQkFBK0I7QUFDNUcsU0FBUUMsSUFBSSxRQUFPLG9CQUFvQjtBQUV2QyxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQW1FcEMsTUFBTUMsc0JBQXNCLENBQUNDO0lBQzNCLElBQUcsT0FBT0EsUUFBUUMsT0FBTyxLQUFLLFVBQVUsT0FBTyxDQUFDLENBQUNELFFBQVFDLE9BQU8sQ0FBQ0MsSUFBSTtJQUNyRSxPQUFPQyxNQUFNQyxPQUFPLENBQUNKLFFBQVFDLE9BQU8sS0FBS0QsUUFBUUMsT0FBTyxDQUFDSSxNQUFNLEdBQUcsS0FBS0wsUUFBUUMsT0FBTyxDQUFDSyxLQUFLLENBQUMsQ0FBQ0M7UUFDNUYsSUFBRyxDQUFDQSxNQUFNLE9BQU87UUFDakIsSUFBR0Es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
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb250ZW50R2VuZXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dlbmVyYXRlT2xsYW1hQ29udGVudH0gZnJvbSAnLi9vbGxhbWFHZW5lcmF0aW9uLmpzJztcbmltcG9ydCB7Q29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yLCBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3J9IGZyb20gJy4vY29udGVudEdlbmVyYXRpb25FcnJvcnMuanMnO1xuZXhwb3J0IHtDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IsIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcn0gZnJvbSAnLi9jb250ZW50R2VuZXJhdGlvbkVycm9ycy5qcyc7XG5pbXBvcnQge3Bvc3R9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEdlbmVyYXRpb25Db25maWcge1xuICBjbGF1ZGVLZXk/OiBzdHJpbmc7XG4gIGNsYXVkZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlJbWFnZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlLZXk/OiBzdHJpbmc7XG4gIGdlbWluaU1vZGVsPzogc3RyaW5nO1xuICBncm9rS2V5Pzogc3RyaW5nO1xuICBncm9rTW9kZWw/OiBzdHJpbmc7XG4gIG9sbGFtYT86IHtlbmRwb2ludDogc3RyaW5nOyBwcm90b2NvbDogJ2dlbmVyYXRlJyB8ICdjaGF0JyB8ICdvcGVuYWktY2hhdCd9O1xuICBvcGVuYWlLZXk/OiBzdHJpbmc7XG4gIG9wZW5haU1vZGVsPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgQ29udGVudEdlbmVyYXRpb25QYXJ0ID0ge3RleHQ6IHN0cmluZzsgdHlwZTogJ3RleHQnfSB8IHtcbiAgZGV0YWlsPzogJ2F1dG8nIHwgJ2hpZ2gnIHwgJ2xvdyc7XG4gIHR5cGU6ICdpbWFnZSc7XG4gIHVybDogc3RyaW5nO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEdlbmVyYXRpb25NZXNzYWdlIHtcbiAgY29udGVudDogc3RyaW5nIHwgQ29udGVudEdlbmVyYXRpb25QYXJ0W107XG4gIHJvbGU6ICdhc3Npc3RhbnQnIHwgJ2RldmVsb3BlcicgfCAnc3lzdGVtJyB8ICd1c2VyJztcbn1cbmV4cG9ydCB0eXBlIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VGb3JtYXQgPSB7dHlwZTogJ2pzb25fb2JqZWN0JyB8ICd0ZXh0J30gfCB7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHN0cmljdD86IGJvb2xlYW47XG4gIHR5cGU6ICdqc29uX3NjaGVtYSc7XG59O1xuZXhwb3J0IHR5cGUgQ29udGVudEdlbmVyYXRpb25SZWFzb25pbmdFZmZvcnQgPSAnbm9uZScgfCAnbWluaW1hbCcgfCAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHwgJ3hoaWdoJyB8ICdtYXgnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRHZW5lcmF0aW9uSW5wdXQge1xuICBhc3BlY3RSYXRpbz86IHN0cmluZztcbiAgaW1hZ2VzPzoge2J5dGVzOiBCdWZmZXI7IG1pbWU6IHN0cmluZ31bXTtcbiAgbWF4VG9rZW5zPzogbnVtYmVyO1xuICBtZXNzYWdlcz86IENvbnRlbnRHZW5lcmF0aW9uTWVzc2FnZVtdO1xuICBtb2RhbGl0eT86ICdpbWFnZScgfCAndGV4dCc7XG4gIG1vZGVsPzogc3RyaW5nO1xuICBwcm9tcHQ/OiBzdHJpbmc7XG4gIHByb3ZpZGVyOiAnY2xhdWRlJyB8ICdnZW1pbmknIHwgJ2dyb2snIHwgJ29sbGFtYScgfCAnb3BlbmFpJztcbiAgcmVhc29uaW5nRWZmb3J0PzogQ29udGVudEdlbmVyYXRpb25SZWFzb25pbmdFZmZvcnQ7XG4gIHJlc3BvbnNlRm9ybWF0PzogQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUZvcm1hdDtcbiAgc2VhcmNoPzogYm9vbGVhbjtcbiAgc3lzdGVtPzogc3RyaW5nO1xuICB0ZW1wZXJhdHVyZT86IG51bWJlcjtcbiAgdGltZW91dE1zPzogbnVtYmVyO1xuICB0b3BQPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZWRDb250ZW50IHtcbiAgaW1hZ2U/OiB7Ynl0ZXM6IEJ1ZmZlcjsgbWltZTogJ2ltYWdlL2pwZWcnIHwgJ2ltYWdlL3BuZyd9O1xuICBzZWFyY2hTdWdnZXN0aW9uc0h0bWw/OiBzdHJpbmc7XG4gIHNvdXJjZXM6IHt0aXRsZTogc3RyaW5nOyB1cmw6IHN0cmluZ31bXTtcbiAgdGV4dDogc3RyaW5nO1xufVxuaW50ZXJmYWNlIEdlbWluaVBhcnQge2lubGluZURhdGE/OiB7ZGF0YTogc3RyaW5nOyBtaW1lVHlwZTogc3RyaW5nfTsgdGV4dD86IHN0cmluZzsgdGhvdWdodD86IGJvb2xlYW59XG5pbnRlcmZhY2UgR2VtaW5pUmVzcG9uc2Uge1xuICBjYW5kaWRhdGVzPzoge1xuICAgIGNvbnRlbnQ/OiB7cGFydHM/OiBHZW1pbmlQYXJ0W119O1xuICAgIGZpbmlzaFJlYXNvbj86IHN0cmluZztcbiAgICBncm91bmRpbmdNZXRhZGF0YT86IHtcbiAgICAgIGdyb3VuZGluZ0NodW5rcz86IHt3ZWI/OiB7dGl0bGU/OiBzdHJpbmc7IHVyaT86IHN0cmluZ319W107XG4gICAgICBzZWFyY2hFbnRyeVBvaW50Pzoge3JlbmRlcmVkQ29udGVudD86IHN0cmluZ307XG4gICAgfTtcbiAgfVtdO1xuICBlcnJvcj86IHtjb2RlPzogbnVtYmVyfTtcbiAgcHJvbXB0RmVlZGJhY2s/OiB7YmxvY2tSZWFzb24/OiBzdHJpbmd9O1xufVxuXG5jb25zdCB2YWxpZE1lc3NhZ2VDb250ZW50ID0gKG1lc3NhZ2U6IENvbnRlbnRHZW5lcmF0aW9uTWVzc2FnZSk6IGJvb2xlYW4gPT4ge1xuICBpZih0eXBlb2YgbWVzc2FnZS5jb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiAhIW1lc3NhZ2UuY29udGVudC50cmltKCk7XG4gIH1cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkobWVzc2FnZS5jb250ZW50KSAmJiBtZXNzYWdlLmNvbnRlbnQubGVuZ3RoID4gMCAmJiBtZXNzYWdlLmNvbnRlbnQuZXZlcnkoKHBhcnQpID0+IHtcbiAgICBpZighcGFydCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZihwYXJ0LnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgcmV0dXJuIHR5cGVvZiBwYXJ0LnRleHQgPT09ICdzdHJpbmcnICYmICEhcGFydC50ZXh0LnRyaW0oKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnQudHlwZSA9PT0gJ2ltYWdlJyAmJiBtZXNzYWdlLnJvbGUgPT09ICd1c2VyJyAmJiB0eXBlb2YgcGFydC51cmwgPT09ICdzdHJpbmcnXG4gICAgICAmJiAvXihodHRwcz86XFwvXFwvW15cXHNdK3xkYXRhOmltYWdlXFwvKHBuZ3xqcGVnfHdlYnB8Z2lmKTtiYXNlNjQsW0EtWmEtejAtOSsvXSs9ezAsMn0pJC8udGVzdChwYXJ0LnVybClcbiAgICAgICYmIChwYXJ0LmRldGFpbCA9PT0gdW5kZWZpbmVkIHx8IFsnYXV0bycsICdoaWdoJywgJ2xvdyddLmluY2x1ZGVzKHBhcnQuZGV0YWlsKSk7XG4gIH0pO1xufTtcblxuLyoqIFNpbmdsZSBzdWJtaXNzaW9uIHRocm91Z2ggUmlwLUh1bnRlcjsgY2FsbGVycyBvd24gZHVyYWJsZSBqb2JzIGFuZCByZWNvbmNpbGlhdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUNvbnRlbnQgPSBhc3luYyAoXG4gIGlucHV0OiBDb250ZW50R2VuZXJhdGlvbklucHV0LFxuICBjb25maWc6IENvbnRlbnRHZW5lcmF0aW9uQ29uZmlnID0gQ29uZmlnLmdldDxDb250ZW50R2VuZXJhdGlvbkNvbmZpZz4oJ2NvbnRlbnRHZW5lcmF0aW9uJykgfHwge31cbik6IFByb21pc2U8R2VuZXJhdGVkQ29udGVudD4gPT4ge1xuICBpZighWydjbGF1ZGUnLCAnZ2VtaW5pJywgJ2dyb2snLCAnb2xsYW1hJywgJ29wZW5haSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0Egc3VwcG9ydGVkIHByb3ZpZGVyIGlzIHJlcXVpcmVkLicpO1xuICB9XG4gIGlmKGlucHV0Lm1lc3NhZ2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZihpbnB1dC5wcm9tcHQgIT09IHVuZGVmaW5lZCB8fCAhQXJyYXkuaXNBcnJheShpbnB1dC5tZXNzYWdlcykgfHwgIWlucHV0Lm1lc3NhZ2VzLmxlbmd0aFxuICAgICAgfHwgaW5wdXQubWVzc2FnZXMuc29tZSgobWVzc2FnZSkgPT5cbiAgICAgICAgIW1lc3NhZ2UgfHwgIVsnYXNzaXN0YW50JywgJ2RldmVsb3BlcicsICdzeXN0ZW0nLCAndXNlciddLmluY2x1ZGVzKG1lc3NhZ2Uucm9sZSkgfHwgIXZhbGlkTWVzc2FnZUNvbnRlbnQobWVzc2FnZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdTdXBwbHkgZWl0aGVyIGEgbm9uLWVtcHR5IHByb21wdCBvciBub24tZW1wdHkgdGV4dCBtZXNzYWdlcyB3aXRoIHN1cHBvcnRlZCByb2xlcy4nKTtcbiAgICB9XG4gIH0gZWxzZSBpZih0eXBlb2YgaW5wdXQucHJvbXB0ICE9PSAnc3RyaW5nJyB8fCAhaW5wdXQucHJvbXB0LnRyaW0oKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0Egbm9uLWVtcHR5IHByb21wdCBpcyByZXF1aXJlZC4nKTtcbiAgfVxuICBpZihpbnB1dC5wcm92aWRlciAhPT0gJ29wZW5haSdcbiAgICAmJiAoaW5wdXQubWVzc2FnZXMgIT09IHVuZGVmaW5lZCB8fCBpbnB1dC5yZWFzb25pbmdFZmZvcnQgIT09IHVuZGVmaW5lZFxuICAgICAgfHwgKFsnY2xhdWRlJywgJ2dyb2snXS5pbmNsdWRlcyhpbnB1dC5wcm92aWRlcikgJiYgaW5wdXQucmVzcG9uc2VGb3JtYXQgIT09IHVuZGVmaW5lZCkpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcihcbiAgICAgICdNZXNzYWdlcyBhbmQgcmVhc29uaW5nIGVmZm9ydCByZXF1aXJlIE9wZW5BSTsgQ2xhdWRlIGFuZCBHcm9rIGRvIG5vdCBzdXBwb3J0IHJlc3BvbnNlIGZvcm1hdCBvcHRpb25zLidcbiAgICApO1xuICB9XG4gIGlmKGlucHV0LnRpbWVvdXRNcyAhPT0gdW5kZWZpbmVkXG4gICAgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0LnRpbWVvdXRNcykgfHwgaW5wdXQudGltZW91dE1zIDwgMSB8fCBpbnB1dC50aW1lb3V0TXMgPiAyXzE0N180ODNfNjQ3KSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ3RpbWVvdXRNcyBtdXN0IGJlIGEgcG9zaXRpdmUgMzItYml0IGludGVnZXIuJyk7XG4gIH1cbiAgaWYoaW5wdXQucmVhc29uaW5nRWZmb3J0ICE9PSB1bmRlZmluZWQgJiYgIVsnbm9uZScsICdtaW5pbWFsJywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICd4aGlnaCcsICdtYXgnXS5pbmNsdWRlcyhpbnB1dC5yZWFzb25pbmdFZmZvcnQpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVW5zdXBwb3J0ZWQgcmVhc29uaW5nIGVmZm9ydC4nKTtcbiAgfVxuICBjb25zdCBmb3JtYXQgPSBpbnB1dC5yZXNwb25zZUZvcm1hdDtcbiAgaWYoZm9ybWF0ICE9PSB1bmRlZmluZWQgJiYgKCFmb3JtYXQgfHwgIVsndGV4dCcsICdqc29uX29iamVjdCcsICdqc29uX3NjaGVtYSddLmluY2x1ZGVzKGZvcm1hdC50eXBlKSB8fCAoZm9ybWF0LnR5cGUgPT09ICdqc29uX3NjaGVtYScgJiYgKFxuICAgIHR5cGVvZiBmb3JtYXQubmFtZSAhPT0gJ3N0cmluZycgfHwgIS9eW2EtekEtWjAtOV8tXXsxLDY0fSQvLnRlc3QoZm9ybWF0Lm5hbWUpIHx8ICFmb3JtYXQuc2NoZW1hIHx8IHR5cGVvZiBmb3JtYXQuc2NoZW1hICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGZvcm1hdC5zY2hlbWEpXG4gICAgfHwgKGZvcm1hdC5zdHJpY3QgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZm9ybWF0LnN0cmljdCAhPT0gJ2Jvb2xlYW4nKVxuICApKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdJbnZhbGlkIHJlc3BvbnNlIGZvcm1hdC4gSlNPTiBzY2hlbWFzIHJlcXVpcmUgYSBuYW1lIGFuZCBzY2hlbWEgb2JqZWN0LicpO1xuICB9XG4gIGlmKFsnZ2VtaW5pJywgJ29sbGFtYSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSAmJiBmb3JtYXQgIT09IHVuZGVmaW5lZCAmJiAoZm9ybWF0LnR5cGUgPT09ICdqc29uX3NjaGVtYScgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVGhpcyBwcm92aWRlciBzdXBwb3J0cyB0ZXh0IG9yIGpzb25fb2JqZWN0IGZvciB0ZXh0IGdlbmVyYXRpb24gb25seS4nKTtcbiAgfVxuICBpZihpbnB1dC50b3BQICE9PSB1bmRlZmluZWQgJiYgKCFbJ2dlbWluaScsICdvbGxhbWEnXS5pbmNsdWRlcyhpbnB1dC5wcm92aWRlcikgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgfHwgIU51bWJlci5pc0Zpbml0ZShpbnB1dC50b3BQKSB8fCBpbnB1dC50b3BQIDwgMCB8fCBpbnB1dC50b3BQID4gMSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCd0b3BQIHJlcXVpcmVzIGEgR2VtaW5pIG9yIE9sbGFtYSB0ZXh0IHJlcXVlc3QgYW5kIGEgZmluaXRlIHZhbHVlIGJldHdlZW4gMCBhbmQgMS4nKTtcbiAgfVxuICBpZihpbnB1dC50ZW1wZXJhdHVyZSAhPT0gdW5kZWZpbmVkICYmICghWydnZW1pbmknLCAnb2xsYW1hJ10uaW5jbHVkZXMoaW5wdXQucHJvdmlkZXIpIHx8IGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnIHx8ICFOdW1iZXIuaXNGaW5pdGUoaW5wdXQudGVtcGVyYXR1cmUpIHx8IGlucHV0LnRlbXBlcmF0dXJlIDwgMCB8fCAoaW5wdXQucHJvdmlkZXIgPT09ICdnZW1pbmknICYmIGlucHV0LnRlbXBlcmF0dXJlID4gMikpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcigndGVtcGVyYXR1cmUgcmVxdWlyZXMgYSBub25uZWdhdGl2ZSBmaW5pdGUgdmFsdWUgZm9yIE9sbGFtYSB0ZXh0IG9yIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCAyIGZvciBHZW1pbmkgdGV4dC4nKTtcbiAgfVxuICBpZihpbnB1dC5tYXhUb2tlbnMgIT09IHVuZGVmaW5lZCAmJiAoIU51bWJlci5pc0ludGVnZXIoaW5wdXQubWF4VG9rZW5zKSB8fCBpbnB1dC5tYXhUb2tlbnMgPCAxKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ21heFRva2VucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4nKTtcbiAgfVxuICBpZihpbnB1dC5wcm92aWRlciAhPT0gJ2dlbWluaSdcbiAgICAmJiAoKGlucHV0LmltYWdlcz8ubGVuZ3RoICYmICFbJ2dyb2snLCAnb2xsYW1hJ10uaW5jbHVkZXMoaW5wdXQucHJvdmlkZXIpKSB8fCBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyB8fCBpbnB1dC5zZWFyY2gpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVGhpcyBwcm92aWRlciBvcGVyYXRpb24gc3VwcG9ydHMgdGV4dCBpbnB1dCBhbmQgb3V0cHV0IG9ubHkuJyk7XG4gIH1cbiAgaWYoaW5wdXQucHJvdmlkZXIgPT09ICdvbGxhbWEnKSByZXR1cm4gZ2VuZXJhdGVPbGxhbWFDb250ZW50KGlucHV0LCBjb25maWcpO1xuICBjb25zdCB7cHJvbXB0LCBpbWFnZXMgPSBbXX0gPSBpbnB1dDtcbiAgaWYoaW5wdXQucHJvdmlkZXIgPT09ICdjbGF1ZGUnKSB7XG4gICAgaWYoIWNvbmZpZy5jbGF1ZGVLZXkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0NsYXVkZSBpcyBub3QgY29uZmlndXJlZCBvbiB0aGlzIHNlcnZlci4nKTtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwb3N0KCdodHRwczovL2FwaS5hbnRocm9waWMuY29tL3YxL21lc3NhZ2VzJywge1xuICAgICAgbWF4X3Rva2VuczogaW5wdXQubWF4VG9rZW5zID8/IDQwOTYsXG4gICAgICBtZXNzYWdlczogW3tjb250ZW50OiBwcm9tcHQsIHJvbGU6ICd1c2VyJ31dLFxuICAgICAgbW9kZWw6IGlucHV0Lm1vZGVsIHx8IGNvbmZpZy5jbGF1ZGVNb2RlbCB8fCAnY2xhdWRlLXNvbm5ldC01JyxcbiAgICAgIHN5c3RlbTogaW5wdXQuc3lzdGVtXG4gICAgfSwge2NhY2hlOiBmYWxzZSwgaGVhZGVyczogbmV3IEhlYWRlcnMoeydhbnRocm9waWMtdmVyc2lvbic6ICcyMDIzLTA2LTAxJywgJ3gtYXBpLWtleSc6IGNvbmZpZy5jbGF1ZGVLZXl9KSwgdGltZW91dDogaW5wdXQudGltZW91dE1zID8/IDEyMF8wMDB9KSBhcyB7XG4gICAgICBjb250ZW50Pzoge3RleHQ/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmd9W107XG4gICAgICBlcnJvcj86IHt0eXBlPzogc3RyaW5nfTtcbiAgICAgIHN0b3BfcmVhc29uPzogc3RyaW5nO1xuICAgICAgdHlwZT86IHN0cmluZztcbiAgICB9O1xuICAgIGlmKHJlc3BvbnNlLmVycm9yICYmIFsnYXV0aGVudGljYXRpb25fZXJyb3InLCAnaW52YWxpZF9yZXF1ZXN0X2Vycm9yJywgJ25vdF9mb3VuZF9lcnJvcicsICdwZXJtaXNzaW9uX2Vycm9yJ10uaW5jbHVkZXMocmVzcG9uc2UuZXJyb3IudHlwZSB8fCAnJykpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0NsYXVkZSByZWplY3RlZCB0aGUgcmVxdWVzdC4gQ2hlY2sgdGhlIG1vZGVsIGFuZCBhY2NvdW50IGFjY2Vzcy4nKTtcbiAgICB9XG4gICAgY29uc3QgdGV4dCA9IHJlc3BvbnNlLmNvbnRlbnQ/LmZpbHRlcigocGFydCkgPT4gcGFydC50eXBlID09PSAndGV4dCcpLm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5qb2luKCdcXG4nKS50cmltKCk7XG4gICAgaWYocmVzcG9uc2UuZXJyb3IgfHwgcmVzcG9uc2UudHlwZSAhPT0gJ21lc3NhZ2UnIHx8IHJlc3BvbnNlLnN0b3BfcmVhc29uICE9PSAnZW5kX3R1cm4nIHx8ICF0ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdDbGF1ZGUgcmVzcG9uc2UgY291bGQgbm90IGJlIGNvbmZpcm1lZC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtzb3VyY2VzOiBbXSwgdGV4dH07XG4gIH1cbiAgaWYoaW5wdXQucHJvdmlkZXIgPT09ICdvcGVuYWknIHx8IGlucHV0LnByb3ZpZGVyID09PSAnZ3JvaycpIHtcbiAgICBjb25zdCBncm9rID0gaW5wdXQucHJvdmlkZXIgPT09ICdncm9rJztcbiAgICBjb25zdCBrZXkgPSBncm9rID8gY29uZmlnLmdyb2tLZXkgOiBjb25maWcub3BlbmFpS2V5O1xuICAgIGlmKCFrZXkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoYCR7Z3JvayA/ICdHcm9rJyA6ICdPcGVuQUknfSBpcyBub3QgY29uZmlndXJlZCBvbiB0aGlzIHNlcnZlci5gKTtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwb3N0KGdyb2sgPyAnaHR0cHM6Ly9hcGkueC5haS92MS9yZXNwb25zZXMnIDogJ2h0dHBzOi8vYXBpLm9wZW5haS5jb20vdjEvcmVzcG9uc2VzJywge1xuICAgICAgaW5wdXQ6IGdyb2sgJiYgaW1hZ2VzLmxlbmd0aCA/IFt7Y29udGVudDogW3t0ZXh0OiBwcm9tcHQsIHR5cGU6ICdpbnB1dF90ZXh0J30sIC4uLmltYWdlcy5tYXAoKGltYWdlKSA9PiAoe2ltYWdlX3VybDogYGRhdGE6JHtpbWFnZS5taW1lfTtiYXNlNjQsJHtpbWFnZS5ieXRlcy50b1N0cmluZygnYmFzZTY0Jyl9YCwgdHlwZTogJ2lucHV0X2ltYWdlJ30pKV0sIHJvbGU6ICd1c2VyJ31dIDogaW5wdXQubWVzc2FnZXM/Lm1hcCgobWVzc2FnZSkgPT4gKHtjb250ZW50OiB0eXBlb2YgbWVzc2FnZS5jb250ZW50ID09PSAnc3RyaW5nJyA/IG1lc3NhZ2UuY29udGVudCA6IG1lc3NhZ2UuY29udGVudC5tYXAoKHBhcnQpID0+IChwYXJ0LnR5cGUgPT09ICd0ZXh0J1xuICAgICAgICA/IHt0ZXh0OiBwYXJ0LnRleHQsIHR5cGU6ICdpbnB1dF90ZXh0J30gOiB7ZGV0YWlsOiBwYXJ0LmRldGFpbCA/PyAnYXV0bycsIGltYWdlX3VybDogcGFydC51cmwsIHR5cGU6ICdpbnB1dF9pbWFnZSd9KSksIHJvbGU6IG1lc3NhZ2Uucm9sZSA9PT0gJ3N5c3RlbScgPyAnZGV2ZWxvcGVyJyA6IG1lc3NhZ2Uucm9sZX0pKSA/PyBwcm9tcHQsXG4gICAgICBpbnN0cnVjdGlvbnM6IGlucHV0LnN5c3RlbSxcbiAgICAgIG1heF9vdXRwdXRfdG9rZW5zOiBpbnB1dC5tYXhUb2tlbnMgPz8gNDA5NixcbiAgICAgIG1vZGVsOiBpbnB1dC5tb2RlbCB8fCAoZ3JvayA/IGNvbmZpZy5ncm9rTW9kZWwgfHwgJ2dyb2stNC43JyA6IGNvbmZpZy5vcGVuYWlNb2RlbCB8fCAnZ3B0LTYtYXN0cmEnKSxcbiAgICAgIC4uLihpbnB1dC5yZWFzb25pbmdFZmZvcnQgPyB7cmVhc29uaW5nOiB7ZWZmb3J0OiBpbnB1dC5yZWFzb25pbmdFZmZvcnR9fSA6IHt9KSxcbiAgICAgIHN0b3JlOiBmYWxzZSxcbiAgICAgIC4uLihmb3JtYXQgPyB7dGV4dDoge2Zvcm1hdH19IDoge30pLFxuICAgICAgLi4uKCFncm9rID8ge3RydW5jYXRpb246ICdkaXNhYmxlZCd9IDoge30pXG4gICAgfSwge2NhY2hlOiBmYWxzZSwgaGVhZGVyczogbmV3IEhlYWRlcnMoe0F1dGhvcml6YXRpb246IGBCZWFyZXIgJHtrZXl9YH0pLCB0aW1lb3V0OiBpbnB1dC50aW1lb3V0TXMgPz8gMTIwXzAwMH0pIGFzIHtcbiAgICAgIGVycm9yPzoge2NvZGU/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmd9O1xuICAgICAgb3V0cHV0Pzoge2NvbnRlbnQ/OiB7dGV4dD86IHN0cmluZzsgdHlwZT86IHN0cmluZ31bXTsgc3RhdHVzPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nfVtdO1xuICAgICAgc3RhdHVzPzogc3RyaW5nO1xuICAgIH07XG4gICAgaWYocmVzcG9uc2UuZXJyb3IgJiYgWydpbnZhbGlkX3JlcXVlc3RfZXJyb3InLCAnYXV0aGVudGljYXRpb25fZXJyb3InLCAncGVybWlzc2lvbl9lcnJvciddLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLnR5cGUgfHwgJycpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKGAke2dyb2sgPyAnR3JvaycgOiAnT3BlbkFJJ30gcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSBtb2RlbCBhbmQgYWNjb3VudCBhY2Nlc3MuYCk7XG4gICAgfVxuICAgIGlmKHJlc3BvbnNlLmVycm9yIHx8IHJlc3BvbnNlLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcgfHwgcmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLnN0YXR1cyA9PT0gJ2luY29tcGxldGUnKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcihgJHtncm9rID8gJ0dyb2snIDogJ09wZW5BSSd9IHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQ6IGdlbmVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZS5gKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLmNvbnRlbnQ/LnNvbWUoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3JlZnVzYWwnKSkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoYCR7Z3JvayA/ICdHcm9rJyA6ICdPcGVuQUknfSBkZWNsaW5lZCB0aGUgcmVxdWVzdC5gKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLnR5cGUgJiYgIVsnbWVzc2FnZScsICdyZWFzb25pbmcnXS5pbmNsdWRlcyhpdGVtLnR5cGUpKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcihgJHtncm9rID8gJ0dyb2snIDogJ09wZW5BSSd9IHJldHVybmVkIGFuIHVuc3VwcG9ydGVkIG91dHB1dCBpdGVtLmApO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gcmVzcG9uc2Uub3V0cHV0Py5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gJ21lc3NhZ2UnIHx8IChncm9rICYmICFpdGVtLnR5cGUpKS5mbGF0TWFwKChpdGVtKSA9PiBpdGVtLmNvbnRlbnQgfHwgW10pXG4gICAgICAuZmlsdGVyKChwYXJ0KSA9PiBwYXJ0LnR5cGUgPT09ICdvdXRwdXRfdGV4dCcpLm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5qb2luKCcnKS50cmltKCk7XG4gICAgaWYoIXRleHQpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoYCR7Z3JvayA/ICdHcm9rJyA6ICdPcGVuQUknfSByZXR1cm5lZCBlbXB0eSBvdXRwdXQuYCk7XG4gICAgfVxuICAgIHJldHVybiB7c291cmNlczogW10sIHRleHR9O1xuICB9XG4gIGlmKCFjb25maWcuZ2VtaW5pS2V5KSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignR2VtaW5pIGlzIG5vdCBjb25maWd1cmVkIG9uIHRoaXMgc2VydmVyLicpO1xuICB9XG4gIGNvbnN0IHBhcnRzOiB1bmtub3duW10gPSBbe3RleHQ6IHByb21wdH0sIC4uLmltYWdlcy5tYXAoKGltYWdlKSA9PiAoe2lubGluZURhdGE6IHtkYXRhOiBpbWFnZS5ieXRlcy50b1N0cmluZygnYmFzZTY0JyksIG1pbWVUeXBlOiBpbWFnZS5taW1lfX0pKV07XG4gIGNvbnN0IG1vZGVsID0gaW5wdXQubW9kZWwgfHwgKGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnID8gY29uZmlnLmdlbWluaUltYWdlTW9kZWwgfHwgJ2dlbWluaS0zLjEtZmxhc2gtaW1hZ2UnIDogY29uZmlnLmdlbWluaU1vZGVsIHx8ICdnZW1pbmktMy44LWZsYXNoJyk7XG4gIGlmKCEvXlthLXpBLVowLTkuXy1dKyQvLnRlc3QobW9kZWwpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignSW52YWxpZCBHZW1pbmkgbW9kZWwgY29uZmlndXJhdGlvbi4nKTtcbiAgfVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBvc3QoYGh0dHBzOi8vZ2VuZXJhdGl2ZWxhbmd1YWdlLmdvb2dsZWFwaXMuY29tL3YxYmV0YS9tb2RlbHMvJHttb2RlbH06Z2VuZXJhdGVDb250ZW50YCwge1xuICAgIGNvbnRlbnRzOiBbe3BhcnRzLCByb2xlOiAndXNlcid9XSxcbiAgICAuLi4oaW5wdXQuc3lzdGVtID8ge3N5c3RlbUluc3RydWN0aW9uOiB7cGFydHM6IFt7dGV4dDogaW5wdXQuc3lzdGVtfV19fSA6IHt9KSxcbiAgICBnZW5lcmF0aW9uQ29uZmlnOiBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyA/IHsuLi4oaW5wdXQuYXNwZWN0UmF0aW8gPyB7aW1hZ2VDb25maWc6IHthc3BlY3RSYXRpbzogaW5wdXQuYXNwZWN0UmF0aW99fSA6IHt9KSwgcmVzcG9uc2VNb2RhbGl0aWVzOiBbJ1RFWFQnLCAnSU1BR0UnXX0gOiB7XG4gICAgICBtYXhPdXRwdXRUb2tlbnM6IGlucHV0Lm1heFRva2VucyA/PyA0MDk2LFxuICAgICAgLi4uKGZvcm1hdCA/IHtyZXNwb25zZU1pbWVUeXBlOiBmb3JtYXQudHlwZSA9PT0gJ2pzb25fb2JqZWN0JyA/ICdhcHBsaWNhdGlvbi9qc29uJyA6ICd0ZXh0L3BsYWluJ30gOiB7fSksXG4gICAgICAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pLFxuICAgICAgLi4uKGlucHV0LnRvcFAgIT09IHVuZGVmaW5lZCA/IHt0b3BQOiBpbnB1dC50b3BQfSA6IHt9KVxuICAgIH0sXG4gICAgLi4uKGlucHV0LnNlYXJjaCA/IHt0b29sczogW3tnb29nbGVTZWFyY2g6IHt9fV19IDoge30pXG4gIH0sIHtjYWNoZTogZmFsc2UsIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHsneC1nb29nLWFwaS1rZXknOiBjb25maWcuZ2VtaW5pS2V5fSksIHRpbWVvdXQ6IGlucHV0LnRpbWVvdXRNcyA/PyAxMjBfMDAwfSkgYXMgR2VtaW5pUmVzcG9uc2U7XG4gIGlmKHJlc3BvbnNlLmVycm9yICYmIFs0MDAsIDQwMSwgNDAzLCA0MDRdLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLmNvZGUgfHwgMCkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdHZW1pbmkgcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSByZWZlcmVuY2UgZm9ybWF0IGFuZCBtb2RlbCBhY2Nlc3MuJyk7XG4gIH1cbiAgaWYocmVzcG9uc2UucHJvbXB0RmVlZGJhY2s/LmJsb2NrUmVhc29uIHx8IHJlc3BvbnNlLmVycm9yIHx8ICFyZXNwb25zZS5jYW5kaWRhdGVzPy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdHZW1pbmkgcmVzcG9uc2UgY291bGQgbm90IGJlIGNvbmZpcm1lZC4nKTtcbiAgfVxuICBjb25zdCBjYW5kaWRhdGUgPSByZXNwb25zZS5jYW5kaWRhdGVzWzBdITtcbiAgaWYoY2FuZGlkYXRlLmZpbmlzaFJlYXNvbiAhPT0gJ1NUT1AnKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignR2VtaW5pIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQ6IGdlbmVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZS4nKTtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSAoY2FuZGlkYXRlLmNvbnRlbnQ/LnBhcnRzIHx8IFtdKS5maWx0ZXIoKHBhcnQpID0+ICFwYXJ0LnRob3VnaHQpO1xuICBjb25zdCBpbmxpbmUgPSBvdXRwdXQuZmluZCgocGFydCkgPT4gcGFydC5pbmxpbmVEYXRhKT8uaW5saW5lRGF0YTtcbiAgbGV0IGltYWdlOiBHZW5lcmF0ZWRDb250ZW50WydpbWFnZSddO1xuICBpZihpbmxpbmUgJiYgWydpbWFnZS9wbmcnLCAnaW1hZ2UvanBlZyddLmluY2x1ZGVzKGlubGluZS5taW1lVHlwZSkpIHtcbiAgICBjb25zdCBieXRlcyA9IEJ1ZmZlci5mcm9tKGlubGluZS5kYXRhLCAnYmFzZTY0Jyk7XG4gICAgaWYoIWJ5dGVzLmxlbmd0aCB8fCBieXRlcy5sZW5ndGggPiAyMCAqIDEwMjQgKiAxMDI0KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdJbnZhbGlkIGltYWdlIG91dHB1dC4nKTtcbiAgICB9XG4gICAgaW1hZ2UgPSB7Ynl0ZXMsIG1pbWU6IGlubGluZS5taW1lVHlwZSBhcyAnaW1hZ2UvcG5nJyB8ICdpbWFnZS9qcGVnJ307XG4gIH1cbiAgY29uc3QgdGV4dCA9IG91dHB1dC5tYXAoKHBhcnQpID0+IHBhcnQudGV4dCB8fCAnJykuam9pbignXFxuJykudHJpbSgpO1xuICBpZihpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyA/ICFpbWFnZSA6ICF0ZXh0KSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignVGhlIHJlcXVlc3RlZCBvdXRwdXQgd2FzIG5vdCByZXR1cm5lZC4nKTtcbiAgfVxuICBjb25zdCBzb3VyY2VzID0gKGNhbmRpZGF0ZS5ncm91bmRpbmdNZXRhZGF0YT8uZ3JvdW5kaW5nQ2h1bmtzIHx8IFtdKS5mbGF0TWFwKCh7d2VifSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdlYj8udXJpIHx8ICcnKTtcbiAgICAgIHJldHVybiB1cmwucHJvdG9jb2wgPT09ICdodHRwczonID8gW3t0aXRsZTogd2ViPy50aXRsZSB8fCB1cmwuaG9zdG5hbWUsIHVybDogdXJsLmhyZWZ9XSA6IFtdO1xuICAgIH0gY2F0Y2h7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbWFnZSwgc2VhcmNoU3VnZ2VzdGlvbnNIdG1sOiBjYW5kaWRhdGUuZ3JvdW5kaW5nTWV0YWRhdGE/LnNlYXJjaEVudHJ5UG9pbnQ/LnJlbmRlcmVkQ29udGVudCwgc291cmNlcywgdGV4dFxuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9sbGFtYUNvbnRlbnQiLCJDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IiLCJDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IiLCJwb3N0IiwiQ29uZmlnIiwidmFsaWRNZXNzYWdlQ29udGVudCIsIm1lc3NhZ2UiLCJjb250ZW50IiwidHJpbSIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImV2ZXJ5IiwicGFydCIsInR5cGUiLCJ0ZXh0Iiwicm9sZSIsInVybCIsInRlc3QiLCJkZXRhaWwiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsImdlbmVyYXRlQ29udGVudCIsImlucHV0IiwiY29uZmlnIiwiZ2V0IiwicHJvdmlkZXIiLCJtZXNzYWdlcyIsInByb21wdCIsInNvbWUiLCJyZWFzb25pbmdFZmZvcnQiLCJyZXNwb25zZUZvcm1hdCIsInRpbWVvdXRNcyIsIk51bWJlciIsImlzSW50ZWdlciIsImZvcm1hdCIsIm5hbWUiLCJzY2hlbWEiLCJzdHJpY3QiLCJtb2RhbGl0eSIsInRvcFAiLCJpc0Zpbml0ZSIsInRlbXBlcmF0dXJlIiwibWF4VG9rZW5zIiwiaW1hZ2VzIiwic2VhcmNoIiwiY2xhdWRlS2V5IiwicmVzcG9uc2UiLCJtYXhfdG9rZW5zIiwibW9kZWwiLCJjbGF1ZGVNb2RlbCIsInN5c3RlbSIsImNhY2hlIiwiaGVhZGVycyIsIkhlYWRlcnMiLCJ0aW1lb3V0IiwiZXJyb3IiLCJmaWx0ZXIiLCJtYXAiLCJqb2luIiwic3RvcF9yZWFzb24iLCJzb3VyY2VzIiwiZ3JvayIsImtleSIsImdyb2tLZXkiLCJvcGVuYWlLZXkiLCJpbWFnZSIsImltYWdlX3VybCIsIm1pbWUiLCJieXRlcyIsInRvU3RyaW5nIiwiaW5zdHJ1Y3Rpb25zIiwibWF4X291dHB1dF90b2tlbnMiLCJncm9rTW9kZWwiLCJvcGVuYWlNb2RlbCIsInJlYXNvbmluZyIsImVmZm9ydCIsInN0b3JlIiwidHJ1bmNhdGlvbiIsIkF1dGhvcml6YXRpb24iLCJzdGF0dXMiLCJvdXRwdXQiLCJpdGVtIiwiZmxhdE1hcCIsImdlbWluaUtleSIsInBhcnRzIiwiaW5saW5lRGF0YSIsImRhdGEiLCJtaW1lVHlwZSIsImdlbWluaUltYWdlTW9kZWwiLCJnZW1pbmlNb2RlbCIsImNvbnRlbnRzIiwic3lzdGVtSW5zdHJ1Y3Rpb24iLCJnZW5lcmF0aW9uQ29uZmlnIiwiYXNwZWN0UmF0aW8iLCJpbWFnZUNvbmZpZyIsInJlc3BvbnNlTW9kYWxpdGllcyIsIm1heE91dHB1dFRva2VucyIsInJlc3BvbnNlTWltZVR5cGUiLCJ0b29scyIsImdvb2dsZVNlYXJjaCIsImNvZGUiLCJwcm9tcHRGZWVkYmFjayIsImJsb2NrUmVhc29uIiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZSIsImZpbmlzaFJlYXNvbiIsInRob3VnaHQiLCJpbmxpbmUiLCJmaW5kIiwiQnVmZmVyIiwiZnJvbSIsImdyb3VuZGluZ01ldGFkYXRhIiwiZ3JvdW5kaW5nQ2h1bmtzIiwid2ViIiwiVVJMIiwidXJpIiwicHJvdG9jb2wiLCJ0aXRsZSIsImhvc3RuYW1lIiwiaHJlZiIsInNlYXJjaFN1Z2dlc3Rpb25zSHRtbCIsInNlYXJjaEVudHJ5UG9pbnQiLCJyZW5kZXJlZENvbnRlbnQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLHFCQUFxQixRQUFPLHdCQUF3QjtBQUM1RCxTQUFRQyw4QkFBOEIsRUFBRUMsOEJBQThCLFFBQU8sK0JBQStCO0FBQzVHLFNBQVFELDhCQUE4QixFQUFFQyw4QkFBOEIsUUFBTywrQkFBK0I7QUFDNUcsU0FBUUMsSUFBSSxRQUFPLG9CQUFvQjtBQUV2QyxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQXFFcEMsTUFBTUMsc0JBQXNCLENBQUNDO0lBQzNCLElBQUcsT0FBT0EsUUFBUUMsT0FBTyxLQUFLLFVBQVU7UUFDdEMsT0FBTyxDQUFDLENBQUNELFFBQVFDLE9BQU8sQ0FBQ0MsSUFBSTtJQUMvQjtJQUNBLE9BQU9DLE1BQU1DLE9BQU8sQ0FBQ0osUUFBUUMsT0FBTyxLQUFLRCxRQUFRQyxPQUFPLENBQUNJLE1BQU0sR0FBRyxLQUFLTCxRQUFRQyxPQUFPLENBQUNLLEtBQUssQ0FBQyxDQUFDQztR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
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
/** An accepted generation did not produce usable output; do not automatically resubmit it. */ export class ContentGenerationResponseError extends Error {
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb250ZW50R2VuZXJhdGlvbkVycm9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQSBjb25maXJtZWQgcmVqZWN0aW9uIGlzIGRpc3RpbmN0IGZyb20gYW4gdW5rbm93biBwYWlkIHN1Ym1pc3Npb24gb3V0Y29tZS4gKi9cbmV4cG9ydCBjbGFzcyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuLyoqIEFuIGFjY2VwdGVkIGdlbmVyYXRpb24gZGlkIG5vdCBwcm9kdWNlIHVzYWJsZSBvdXRwdXQ7IGRvIG5vdCBhdXRvbWF0aWNhbGx5IHJlc3VibWl0IGl0LiAqL1xuZXhwb3J0IGNsYXNzIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvciBleHRlbmRzIEVycm9yIHt9XG4iXSwibmFtZXMiOlsiQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yIiwiRXJyb3IiLCJDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRSxHQUMvRSxPQUFPLE1BQU1BLHVDQUF1Q0M7QUFBTztBQUMzRCw0RkFBNEYsR0FDNUYsT0FBTyxNQUFNQyx1Q0FBdUNEO0FBQU8ifQ==
|
package/lib/actions/index.d.ts
CHANGED
package/lib/actions/index.js
CHANGED
|
@@ -37,5 +37,6 @@ export * from './contentGeneration.js';
|
|
|
37
37
|
export * from './videoGeneration.js';
|
|
38
38
|
export * from './geminiVideo.js';
|
|
39
39
|
export * from './openaiResponseSession.js';
|
|
40
|
+
export * from './phoneSupport.js';
|
|
40
41
|
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9hcHBzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYW5hbHl0aWNzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29ubmVjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhYmFzZVByb3Zpc2lvbmluZ0xlYXNlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YWJhc2VBY2NvdW50cy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnNhdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jcm0uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbW9kYi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2VtYWlsLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9mbGFncy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2dyb3Vwcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2hpZ2dzZmllbGQuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9pb3MuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NhdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXltZW50cy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Bvc3RzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGVyc29uYXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWFjdGlvbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9ydW0uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zMy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Ntcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXRpc3RpY3MuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdWJzY3JpcHRpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdGFncy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXJzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlkZW9zLmpzJztcblxuZXhwb3J0ICogZnJvbSAnLi9pbWFnZUdlbmVyYXRpb24uanMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRlbnRHZW5lcmF0aW9uLmpzJztcblxuZXhwb3J0ICogZnJvbSAnLi92aWRlb0dlbmVyYXRpb24uanMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2dlbWluaVZpZGVvLmpzJztcblxuZXhwb3J0ICogZnJvbSAnLi9vcGVuYWlSZXNwb25zZVNlc3Npb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9waG9uZVN1cHBvcnQuanMnO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELGNBQWMsWUFBWTtBQUMxQixjQUFjLGlCQUFpQjtBQUMvQixjQUFjLG1CQUFtQjtBQUNqQyxjQUFjLGlDQUFpQztBQUMvQyxjQUFjLHdCQUF3QjtBQUN0QyxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLFdBQVc7QUFDekIsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyxhQUFhO0FBQzNCLGNBQWMsYUFBYTtBQUMzQixjQUFjLGFBQWE7QUFDM0IsY0FBYyxjQUFjO0FBQzVCLGNBQWMsa0JBQWtCO0FBQ2hDLGNBQWMsY0FBYztBQUM1QixjQUFjLFdBQVc7QUFDekIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyxhQUFhO0FBQzNCLGNBQWMsZ0JBQWdCO0FBQzlCLGNBQWMsaUJBQWlCO0FBQy9CLGNBQWMsV0FBVztBQUN6QixjQUFjLFVBQVU7QUFDeEIsY0FBYyxjQUFjO0FBQzVCLGNBQWMsV0FBVztBQUN6QixjQUFjLGtCQUFrQjtBQUNoQyxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLFlBQVk7QUFDMUIsY0FBYyxhQUFhO0FBQzNCLGNBQWMsY0FBYztBQUU1QixjQUFjLHVCQUF1QjtBQUVyQyxjQUFjLHlCQUF5QjtBQUV2QyxjQUFjLHVCQUF1QjtBQUVyQyxjQUFjLG1CQUFtQjtBQUVqQyxjQUFjLDZCQUE2QjtBQUMzQyxjQUFjLG9CQUFvQiJ9
|
|
@@ -48,6 +48,15 @@ const compatible = z.object({
|
|
|
48
48
|
].includes(url.protocol) || url.username || url.password || url.search || url.hash || typeof input.model !== 'string' || !input.model.trim()) {
|
|
49
49
|
throw new ContentGenerationRejectedError('Ollama requires a protocol, model, and endpoint without credentials, query, or fragment.');
|
|
50
50
|
}
|
|
51
|
+
if (input.images !== undefined && (!Array.isArray(input.images) || input.images.some((image)=>!image || !Buffer.isBuffer(image.bytes) || !image.bytes.length || typeof image.mime !== 'string' || !/^image\/[a-zA-Z0-9.+-]+$/.test(image.mime)))) {
|
|
52
|
+
throw new ContentGenerationRejectedError('Ollama images require nonempty Buffer bytes and an image MIME type.');
|
|
53
|
+
}
|
|
54
|
+
if (input.images?.length && target.protocol === 'openai-chat') {
|
|
55
|
+
throw new ContentGenerationRejectedError('Ollama image input requires the native generate or chat protocol.');
|
|
56
|
+
}
|
|
57
|
+
const images = input.images?.length ? {
|
|
58
|
+
images: input.images.map((image)=>image.bytes.toString('base64'))
|
|
59
|
+
} : {};
|
|
51
60
|
const messages = [
|
|
52
61
|
...input.system !== undefined ? [
|
|
53
62
|
{
|
|
@@ -57,6 +66,7 @@ const compatible = z.object({
|
|
|
57
66
|
] : [],
|
|
58
67
|
{
|
|
59
68
|
content: input.prompt,
|
|
69
|
+
...images,
|
|
60
70
|
role: 'user'
|
|
61
71
|
}
|
|
62
72
|
];
|
|
@@ -83,6 +93,7 @@ const compatible = z.object({
|
|
|
83
93
|
};
|
|
84
94
|
const payload = target.protocol === 'generate' ? {
|
|
85
95
|
...native,
|
|
96
|
+
...images,
|
|
86
97
|
prompt: input.prompt,
|
|
87
98
|
...input.system !== undefined ? {
|
|
88
99
|
system: input.system
|
|
@@ -125,4 +136,4 @@ const compatible = z.object({
|
|
|
125
136
|
};
|
|
126
137
|
};
|
|
127
138
|
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9vbGxhbWFHZW5lcmF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cG9zdH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuaW1wb3J0IHtDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IsIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcn0gZnJvbSAnLi9jb250ZW50R2VuZXJhdGlvbkVycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudEdlbmVyYXRpb25Db25maWcsIENvbnRlbnRHZW5lcmF0aW9uSW5wdXQsIEdlbmVyYXRlZENvbnRlbnR9IGZyb20gJy4vY29udGVudEdlbmVyYXRpb24uanMnO1xuXG5jb25zdCB0ZXh0ID0gei5zdHJpbmcoKS5yZWZpbmUoKHZhbHVlKSA9PiBCb29sZWFuKHZhbHVlLnRyaW0oKSkpO1xuY29uc3QgbWVzc2FnZSA9IHoub2JqZWN0KHtcbiAgY29udGVudDogdGV4dCxcbiAgZnVuY3Rpb25fY2FsbDogei5udWxsKCkub3B0aW9uYWwoKSxcbiAgcmVmdXNhbDogei51bmlvbihbei5udWxsKCksIHoubGl0ZXJhbCgnJyldKS5vcHRpb25hbCgpLFxuICByb2xlOiB6LmxpdGVyYWwoJ2Fzc2lzdGFudCcpLFxuICB0b29sX2NhbGxzOiB6LmFycmF5KHoudW5rbm93bigpKS5tYXgoMCkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBjb21wbGV0ZWQgPSB6Lm9iamVjdCh7ZG9uZTogei5saXRlcmFsKHRydWUpLCBkb25lX3JlYXNvbjogei5saXRlcmFsKCdzdG9wJyksIGVycm9yOiB6Lm5ldmVyKCkub3B0aW9uYWwoKX0pO1xuY29uc3QgZ2VuZXJhdGVkID0gY29tcGxldGVkLmV4dGVuZCh7cmVzcG9uc2U6IHRleHR9KTtcbmNvbnN0IGNoYXR0ZWQgPSBjb21wbGV0ZWQuZXh0ZW5kKHttZXNzYWdlfSk7XG5jb25zdCBjb21wYXRpYmxlID0gei5vYmplY3Qoe2Nob2ljZXM6IHouYXJyYXkoei5vYmplY3Qoe2ZpbmlzaF9yZWFzb246IHoubGl0ZXJhbCgnc3RvcCcpLCBtZXNzYWdlfSkpLmxlbmd0aCgxKSwgZXJyb3I6IHoubmV2ZXIoKS5vcHRpb25hbCgpfSk7XG5cbi8qKiBDYWxsZXItcmVzb2x2ZWQgZGVzdGluYXRpb24gYW5kIG1vZGVsLiBObyBkaXNjb3ZlcnksIGFsdGVybmF0ZSBlbmRwb2ludHMsIG9yIHJldHJpZXMuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVPbGxhbWFDb250ZW50ID0gYXN5bmMgKGlucHV0OiBDb250ZW50R2VuZXJhdGlvbklucHV0LCBjb25maWc6IENvbnRlbnRHZW5lcmF0aW9uQ29uZmlnKTogUHJvbWlzZTxHZW5lcmF0ZWRDb250ZW50PiA9PiB7XG4gIGNvbnN0IHRhcmdldCA9IGNvbmZpZy5vbGxhbWE7XG4gIGxldCB1cmw6IFVSTDtcbiAgdHJ5IHtcbiAgICB1cmwgPSBuZXcgVVJMKHRhcmdldD8uZW5kcG9pbnQgfHwgJycpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdPbGxhbWEgcmVxdWlyZXMgYW4gZXhwbGljaXQgSFRUUChTKSBlbmRwb2ludC4nKTtcbiAgfVxuICBpZighdGFyZ2V0IHx8ICFbJ2dlbmVyYXRlJywgJ2NoYXQnLCAnb3BlbmFpLWNoYXQnXS5pbmNsdWRlcyh0YXJnZXQucHJvdG9jb2wpIHx8ICFbJ2h0dHA6JywgJ2h0dHBzOiddLmluY2x1ZGVzKHVybC5wcm90b2NvbCkgfHwgdXJsLnVzZXJuYW1lIHx8IHVybC5wYXNzd29yZCB8fCB1cmwuc2VhcmNoIHx8IHVybC5oYXNoIHx8IHR5cGVvZiBpbnB1dC5tb2RlbCAhPT0gJ3N0cmluZycgfHwgIWlucHV0Lm1vZGVsLnRyaW0oKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ09sbGFtYSByZXF1aXJlcyBhIHByb3RvY29sLCBtb2RlbCwgYW5kIGVuZHBvaW50IHdpdGhvdXQgY3JlZGVudGlhbHMsIHF1ZXJ5LCBvciBmcmFnbWVudC4nKTtcbiAgfVxuICBjb25zdCBtZXNzYWdlcyA9IFsuLi4oaW5wdXQuc3lzdGVtICE9PSB1bmRlZmluZWQgPyBbe2NvbnRlbnQ6IGlucHV0LnN5c3RlbSwgcm9sZTogJ3N5c3RlbSd9XSA6IFtdKSwge2NvbnRlbnQ6IGlucHV0LnByb21wdCwgcm9sZTogJ3VzZXInfV07XG4gIGNvbnN0IG9wdGlvbnMgPSB7Li4uKGlucHV0Lm1heFRva2VucyAhPT0gdW5kZWZpbmVkID8ge251bV9wcmVkaWN0OiBpbnB1dC5tYXhUb2tlbnN9IDoge30pLCAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pLCAuLi4oaW5wdXQudG9wUCAhPT0gdW5kZWZpbmVkID8ge3RvcF9wOiBpbnB1dC50b3BQfSA6IHt9KX07XG4gIGNvbnN0IG5hdGl2ZSA9IHtcbiAgICAuLi4oaW5wdXQucmVzcG9uc2VGb3JtYXQ/LnR5cGUgPT09ICdqc29uX29iamVjdCcgPyB7Zm9ybWF0OiAnanNvbid9IDoge30pLFxuICAgIG1vZGVsOiBpbnB1dC5tb2RlbCxcbiAgICAuLi4oT2JqZWN0LmtleXMob3B0aW9ucykubGVuZ3RoID8ge29wdGlvbnN9IDoge30pLFxuICAgIHN0cmVhbTogZmFsc2VcbiAgfTtcbiAgY29uc3QgcGF5bG9hZCA9IHRhcmdldC5wcm90b2NvbCA9PT0gJ2dlbmVyYXRlJ1xuICAgID8gey4uLm5hdGl2ZSwgcHJvbXB0OiBpbnB1dC5wcm9tcHQsIC4uLihpbnB1dC5zeXN0ZW0gIT09IHVuZGVmaW5lZCA/IHtzeXN0ZW06IGlucHV0LnN5c3RlbX0gOiB7fSl9XG4gICAgOiB0YXJnZXQucHJvdG9jb2wgPT09ICdjaGF0JyA/IHsuLi5uYXRpdmUsIG1lc3NhZ2VzfSA6IHtcbiAgICAgIC4uLihpbnB1dC5tYXhUb2tlbnMgIT09IHVuZGVmaW5lZCA/IHttYXhfdG9rZW5zOiBpbnB1dC5tYXhUb2tlbnN9IDoge30pLFxuICAgICAgbWVzc2FnZXMsXG4gICAgICBtb2RlbDogaW5wdXQubW9kZWwsXG4gICAgICAuLi4oaW5wdXQucmVzcG9uc2VGb3JtYXQ/LnR5cGUgPT09ICdqc29uX29iamVjdCcgPyB7cmVzcG9uc2VfZm9ybWF0OiBpbnB1dC5yZXNwb25zZUZvcm1hdH0gOiB7fSksXG4gICAgICBzdHJlYW06IGZhbHNlLFxuICAgICAgLi4uKGlucHV0LnRlbXBlcmF0dXJlICE9PSB1bmRlZmluZWQgPyB7dGVtcGVyYXR1cmU6IGlucHV0LnRlbXBlcmF0dXJlfSA6IHt9KSxcbiAgICAgIC4uLihpbnB1dC50b3BQICE9PSB1bmRlZmluZWQgPyB7dG9wX3A6IGlucHV0LnRvcFB9IDoge30pXG4gICAgfTtcbiAgbGV0IHJlc3BvbnNlOiB1bmtub3duO1xuICB0cnkge1xuICAgIHJlc3BvbnNlID0gYXdhaXQgcG9zdCh1cmwudG9TdHJpbmcoKSwgcGF5bG9hZCwge2NhY2hlOiBmYWxzZSwgdGltZW91dDogaW5wdXQudGltZW91dE1zID8/IDEyMDAwMH0pO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdPbGxhbWEgc3VibWlzc2lvbiBvdXRjb21lIGlzIHVua25vd247IGRvIG5vdCBhdXRvbWF0aWNhbGx5IHJldHJ5LicpO1xuICB9XG4gIGNvbnN0IHBhcnNlZCA9ICh0YXJnZXQucHJvdG9jb2wgPT09ICdnZW5lcmF0ZScgPyBnZW5lcmF0ZWQgOiB0YXJnZXQucHJvdG9jb2wgPT09ICdjaGF0JyA/IGNoYXR0ZWQgOiBjb21wYXRpYmxlKS5zYWZlUGFyc2UocmVzcG9uc2UpO1xuICBpZighcGFyc2VkLnN1Y2Nlc3MpIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ09sbGFtYSByZXNwb25zZSBjb3VsZCBub3QgYmUgY29uZmlybWVkOyBkbyBub3QgYXV0b21hdGljYWxseSByZXRyeS4nKTtcbiAgY29uc3QgcmVzdWx0ID0gcGFyc2VkLmRhdGE7XG4gIHJldHVybiB7c291cmNlczogW10sIHRleHQ6ICdyZXNwb25zZScgaW4gcmVzdWx0ID8gcmVzdWx0LnJlc3BvbnNlIDogJ21lc3NhZ2UnIGluIHJlc3VsdCA/IHJlc3VsdC5tZXNzYWdlLmNvbnRlbnQgOiByZXN1bHQuY2hvaWNlc1swXSEubWVzc2FnZS5jb250ZW50fTtcbn07XG4iXSwibmFtZXMiOlsicG9zdCIsInoiLCJDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IiLCJDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IiLCJ0ZXh0Iiwic3RyaW5nIiwicmVmaW5lIiwidmFsdWUiLCJCb29sZWFuIiwidHJpbSIsIm1lc3NhZ2UiLCJvYmplY3QiLCJjb250ZW50IiwiZnVuY3Rpb25fY2FsbCIsIm51bGwiLCJvcHRpb25hbCIsInJlZnVzYWwiLCJ1bmlvbiIsImxpdGVyYWwiLCJyb2xlIiwidG9vbF9jYWxscyIsImFycmF5IiwidW5rbm93biIsIm1heCIsImNvbXBsZXRlZCIsImRvbmUiLCJkb25lX3JlYXNvbiIsImVycm9yIiwibmV2ZXIiLCJnZW5lcmF0ZWQiLCJleHRlbmQiLCJyZXNwb25zZSIsImNoYXR0ZWQiLCJjb21wYXRpYmxlIiwiY2hvaWNlcyIsImZpbmlzaF9yZWFzb24iLCJsZW5ndGgiLCJnZW5lcmF0ZU9sbGFtYUNvbnRlbnQiLCJpbnB1dCIsImNvbmZpZyIsInRhcmdldCIsIm9sbGFtYSIsInVybCIsIlVSTCIsImVuZHBvaW50IiwiaW5jbHVkZXMiLCJwcm90b2NvbCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJzZWFyY2giLCJoYXNoIiwibW9kZWwiLCJtZXNzYWdlcyIsInN5c3RlbSIsInVuZGVmaW5lZCIsInByb21wdCIsIm9wdGlvbnMiLCJtYXhUb2tlbnMiLCJudW1fcHJlZGljdCIsInRlbXBlcmF0dXJlIiwidG9wUCIsInRvcF9wIiwibmF0aXZlIiwicmVzcG9uc2VGb3JtYXQiLCJ0eXBlIiwiZm9ybWF0IiwiT2JqZWN0Iiwia2V5cyIsInN0cmVhbSIsInBheWxvYWQiLCJtYXhfdG9rZW5zIiwicmVzcG9uc2VfZm9ybWF0IiwidG9TdHJpbmciLCJjYWNoZSIsInRpbWVvdXQiLCJ0aW1lb3V0TXMiLCJwYXJzZWQiLCJzYWZlUGFyc2UiLCJzdWNjZXNzIiwicmVzdWx0IiwiZGF0YSIsInNvdXJjZXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLElBQUksUUFBTyxvQkFBb0I7QUFDdkMsU0FBUUMsQ0FBQyxRQUFPLE1BQU07QUFDdEIsU0FBUUMsOEJBQThCLEVBQUVDLDhCQUE4QixRQUFPLCtCQUErQjtBQUc1RyxNQUFNQyxPQUFPSCxFQUFFSSxNQUFNLEdBQUdDLE1BQU0sQ0FBQyxDQUFDQyxRQUFVQyxRQUFRRCxNQUFNRSxJQUFJO0FBQzVELE1BQU1DLFVBQVVULEVBQUVVLE1BQU0sQ0FBQztJQUN2QkMsU0FBU1I7SUFDVFMsZUFBZVosRUFBRWEsSUFBSSxHQUFHQyxRQUFRO0lBQ2hDQyxTQUFTZixFQUFFZ0IsS0FBSyxDQUFDO1FBQUNoQixFQUFFYSxJQUFJO1FBQUliLEVBQUVpQixPQUFPLENBQUM7S0FBSSxFQUFFSCxRQUFRO0lBQ3BESSxNQUFNbEIsRUFBRWlCLE9BQU8sQ0FBQztJQUNoQkUsWUFBWW5CLEVBQUVvQixLQUFLLENBQUNwQixFQUFFcUIsT0FBTyxJQUFJQyxHQUFHLENBQUMsR0FBR1IsUUFBUTtBQUNsRDtBQUNBLE1BQU1TLFlBQVl2QixFQUFFVSxNQUFNLENBQUM7SUFBQ2MsTUFBTXhCLEVBQUVpQixPQUFPLENBQUM7SUFBT1EsYUFBYXpCLEVBQUVpQixPQUFPLENBQUM7SUFBU1MsT0FBTzFCLEVBQUUyQixLQUFLLEdBQUdiLFFBQVE7QUFBRTtBQUM5RyxNQUFNYyxZQUFZTCxVQUFVTSxNQUFNLENBQUM7SUFBQ0MsVUFBVTNCO0FBQUk7QUFDbEQsTUFB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
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9vbGxhbWFHZW5lcmF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cG9zdH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuaW1wb3J0IHtDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IsIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcn0gZnJvbSAnLi9jb250ZW50R2VuZXJhdGlvbkVycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudEdlbmVyYXRpb25Db25maWcsIENvbnRlbnRHZW5lcmF0aW9uSW5wdXQsIEdlbmVyYXRlZENvbnRlbnR9IGZyb20gJy4vY29udGVudEdlbmVyYXRpb24uanMnO1xuXG5jb25zdCB0ZXh0ID0gei5zdHJpbmcoKS5yZWZpbmUoKHZhbHVlKSA9PiBCb29sZWFuKHZhbHVlLnRyaW0oKSkpO1xuY29uc3QgbWVzc2FnZSA9IHoub2JqZWN0KHtcbiAgY29udGVudDogdGV4dCxcbiAgZnVuY3Rpb25fY2FsbDogei5udWxsKCkub3B0aW9uYWwoKSxcbiAgcmVmdXNhbDogei51bmlvbihbei5udWxsKCksIHoubGl0ZXJhbCgnJyldKS5vcHRpb25hbCgpLFxuICByb2xlOiB6LmxpdGVyYWwoJ2Fzc2lzdGFudCcpLFxuICB0b29sX2NhbGxzOiB6LmFycmF5KHoudW5rbm93bigpKS5tYXgoMCkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBjb21wbGV0ZWQgPSB6Lm9iamVjdCh7ZG9uZTogei5saXRlcmFsKHRydWUpLCBkb25lX3JlYXNvbjogei5saXRlcmFsKCdzdG9wJyksIGVycm9yOiB6Lm5ldmVyKCkub3B0aW9uYWwoKX0pO1xuY29uc3QgZ2VuZXJhdGVkID0gY29tcGxldGVkLmV4dGVuZCh7cmVzcG9uc2U6IHRleHR9KTtcbmNvbnN0IGNoYXR0ZWQgPSBjb21wbGV0ZWQuZXh0ZW5kKHttZXNzYWdlfSk7XG5jb25zdCBjb21wYXRpYmxlID0gei5vYmplY3Qoe2Nob2ljZXM6IHouYXJyYXkoei5vYmplY3Qoe2ZpbmlzaF9yZWFzb246IHoubGl0ZXJhbCgnc3RvcCcpLCBtZXNzYWdlfSkpLmxlbmd0aCgxKSwgZXJyb3I6IHoubmV2ZXIoKS5vcHRpb25hbCgpfSk7XG5cbi8qKiBDYWxsZXItcmVzb2x2ZWQgZGVzdGluYXRpb24gYW5kIG1vZGVsLiBObyBkaXNjb3ZlcnksIGFsdGVybmF0ZSBlbmRwb2ludHMsIG9yIHJldHJpZXMuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVPbGxhbWFDb250ZW50ID0gYXN5bmMgKGlucHV0OiBDb250ZW50R2VuZXJhdGlvbklucHV0LCBjb25maWc6IENvbnRlbnRHZW5lcmF0aW9uQ29uZmlnKTogUHJvbWlzZTxHZW5lcmF0ZWRDb250ZW50PiA9PiB7XG4gIGNvbnN0IHRhcmdldCA9IGNvbmZpZy5vbGxhbWE7XG4gIGxldCB1cmw6IFVSTDtcbiAgdHJ5IHtcbiAgICB1cmwgPSBuZXcgVVJMKHRhcmdldD8uZW5kcG9pbnQgfHwgJycpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdPbGxhbWEgcmVxdWlyZXMgYW4gZXhwbGljaXQgSFRUUChTKSBlbmRwb2ludC4nKTtcbiAgfVxuICBpZighdGFyZ2V0IHx8ICFbJ2dlbmVyYXRlJywgJ2NoYXQnLCAnb3BlbmFpLWNoYXQnXS5pbmNsdWRlcyh0YXJnZXQucHJvdG9jb2wpIHx8ICFbJ2h0dHA6JywgJ2h0dHBzOiddLmluY2x1ZGVzKHVybC5wcm90b2NvbCkgfHwgdXJsLnVzZXJuYW1lIHx8IHVybC5wYXNzd29yZCB8fCB1cmwuc2VhcmNoIHx8IHVybC5oYXNoIHx8IHR5cGVvZiBpbnB1dC5tb2RlbCAhPT0gJ3N0cmluZycgfHwgIWlucHV0Lm1vZGVsLnRyaW0oKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ09sbGFtYSByZXF1aXJlcyBhIHByb3RvY29sLCBtb2RlbCwgYW5kIGVuZHBvaW50IHdpdGhvdXQgY3JlZGVudGlhbHMsIHF1ZXJ5LCBvciBmcmFnbWVudC4nKTtcbiAgfVxuICBpZihpbnB1dC5pbWFnZXMgIT09IHVuZGVmaW5lZCAmJiAoIUFycmF5LmlzQXJyYXkoaW5wdXQuaW1hZ2VzKSB8fCBpbnB1dC5pbWFnZXMuc29tZSgoaW1hZ2UpID0+XG4gICAgIWltYWdlIHx8ICFCdWZmZXIuaXNCdWZmZXIoaW1hZ2UuYnl0ZXMpIHx8ICFpbWFnZS5ieXRlcy5sZW5ndGggfHwgdHlwZW9mIGltYWdlLm1pbWUgIT09ICdzdHJpbmcnIHx8ICEvXmltYWdlXFwvW2EtekEtWjAtOS4rLV0rJC8udGVzdChpbWFnZS5taW1lKSkpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignT2xsYW1hIGltYWdlcyByZXF1aXJlIG5vbmVtcHR5IEJ1ZmZlciBieXRlcyBhbmQgYW4gaW1hZ2UgTUlNRSB0eXBlLicpO1xuICB9XG4gIGlmKGlucHV0LmltYWdlcz8ubGVuZ3RoICYmIHRhcmdldC5wcm90b2NvbCA9PT0gJ29wZW5haS1jaGF0Jykge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ09sbGFtYSBpbWFnZSBpbnB1dCByZXF1aXJlcyB0aGUgbmF0aXZlIGdlbmVyYXRlIG9yIGNoYXQgcHJvdG9jb2wuJyk7XG4gIH1cbiAgY29uc3QgaW1hZ2VzID0gaW5wdXQuaW1hZ2VzPy5sZW5ndGggPyB7aW1hZ2VzOiBpbnB1dC5pbWFnZXMubWFwKChpbWFnZSkgPT4gaW1hZ2UuYnl0ZXMudG9TdHJpbmcoJ2Jhc2U2NCcpKX0gOiB7fTtcbiAgY29uc3QgbWVzc2FnZXMgPSBbLi4uKGlucHV0LnN5c3RlbSAhPT0gdW5kZWZpbmVkID8gW3tjb250ZW50OiBpbnB1dC5zeXN0ZW0sIHJvbGU6ICdzeXN0ZW0nfV0gOiBbXSksIHtjb250ZW50OiBpbnB1dC5wcm9tcHQsIC4uLmltYWdlcywgcm9sZTogJ3VzZXInfV07XG4gIGNvbnN0IG9wdGlvbnMgPSB7Li4uKGlucHV0Lm1heFRva2VucyAhPT0gdW5kZWZpbmVkID8ge251bV9wcmVkaWN0OiBpbnB1dC5tYXhUb2tlbnN9IDoge30pLCAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pLCAuLi4oaW5wdXQudG9wUCAhPT0gdW5kZWZpbmVkID8ge3RvcF9wOiBpbnB1dC50b3BQfSA6IHt9KX07XG4gIGNvbnN0IG5hdGl2ZSA9IHtcbiAgICAuLi4oaW5wdXQucmVzcG9uc2VGb3JtYXQ/LnR5cGUgPT09ICdqc29uX29iamVjdCcgPyB7Zm9ybWF0OiAnanNvbid9IDoge30pLFxuICAgIG1vZGVsOiBpbnB1dC5tb2RlbCxcbiAgICAuLi4oT2JqZWN0LmtleXMob3B0aW9ucykubGVuZ3RoID8ge29wdGlvbnN9IDoge30pLFxuICAgIHN0cmVhbTogZmFsc2VcbiAgfTtcbiAgY29uc3QgcGF5bG9hZCA9IHRhcmdldC5wcm90b2NvbCA9PT0gJ2dlbmVyYXRlJ1xuICAgID8gey4uLm5hdGl2ZSwgLi4uaW1hZ2VzLCBwcm9tcHQ6IGlucHV0LnByb21wdCwgLi4uKGlucHV0LnN5c3RlbSAhPT0gdW5kZWZpbmVkID8ge3N5c3RlbTogaW5wdXQuc3lzdGVtfSA6IHt9KX1cbiAgICA6IHRhcmdldC5wcm90b2NvbCA9PT0gJ2NoYXQnID8gey4uLm5hdGl2ZSwgbWVzc2FnZXN9IDoge1xuICAgICAgLi4uKGlucHV0Lm1heFRva2VucyAhPT0gdW5kZWZpbmVkID8ge21heF90b2tlbnM6IGlucHV0Lm1heFRva2Vuc30gOiB7fSksXG4gICAgICBtZXNzYWdlcyxcbiAgICAgIG1vZGVsOiBpbnB1dC5tb2RlbCxcbiAgICAgIC4uLihpbnB1dC5yZXNwb25zZUZvcm1hdD8udHlwZSA9PT0gJ2pzb25fb2JqZWN0JyA/IHtyZXNwb25zZV9mb3JtYXQ6IGlucHV0LnJlc3BvbnNlRm9ybWF0fSA6IHt9KSxcbiAgICAgIHN0cmVhbTogZmFsc2UsXG4gICAgICAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pLFxuICAgICAgLi4uKGlucHV0LnRvcFAgIT09IHVuZGVmaW5lZCA/IHt0b3BfcDogaW5wdXQudG9wUH0gOiB7fSlcbiAgICB9O1xuICBsZXQgcmVzcG9uc2U6IHVua25vd247XG4gIHRyeSB7XG4gICAgcmVzcG9uc2UgPSBhd2FpdCBwb3N0KHVybC50b1N0cmluZygpLCBwYXlsb2FkLCB7Y2FjaGU6IGZhbHNlLCB0aW1lb3V0OiBpbnB1dC50aW1lb3V0TXMgPz8gMTIwMDAwfSk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ09sbGFtYSBzdWJtaXNzaW9uIG91dGNvbWUgaXMgdW5rbm93bjsgZG8gbm90IGF1dG9tYXRpY2FsbHkgcmV0cnkuJyk7XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gKHRhcmdldC5wcm90b2NvbCA9PT0gJ2dlbmVyYXRlJyA/IGdlbmVyYXRlZCA6IHRhcmdldC5wcm90b2NvbCA9PT0gJ2NoYXQnID8gY2hhdHRlZCA6IGNvbXBhdGlibGUpLnNhZmVQYXJzZShyZXNwb25zZSk7XG4gIGlmKCFwYXJzZWQuc3VjY2VzcykgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignT2xsYW1hIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQ7IGRvIG5vdCBhdXRvbWF0aWNhbGx5IHJldHJ5LicpO1xuICBjb25zdCByZXN1bHQgPSBwYXJzZWQuZGF0YTtcbiAgcmV0dXJuIHtzb3VyY2VzOiBbXSwgdGV4dDogJ3Jlc3BvbnNlJyBpbiByZXN1bHQgPyByZXN1bHQucmVzcG9uc2UgOiAnbWVzc2FnZScgaW4gcmVzdWx0ID8gcmVzdWx0Lm1lc3NhZ2UuY29udGVudCA6IHJlc3VsdC5jaG9pY2VzWzBdIS5tZXNzYWdlLmNvbnRlbnR9O1xufTtcbiJdLCJuYW1lcyI6WyJwb3N0IiwieiIsIkNvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvciIsIkNvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvciIsInRleHQiLCJzdHJpbmciLCJyZWZpbmUiLCJ2YWx1ZSIsIkJvb2xlYW4iLCJ0cmltIiwibWVzc2FnZSIsIm9iamVjdCIsImNvbnRlbnQiLCJmdW5jdGlvbl9jYWxsIiwibnVsbCIsIm9wdGlvbmFsIiwicmVmdXNhbCIsInVuaW9uIiwibGl0ZXJhbCIsInJvbGUiLCJ0b29sX2NhbGxzIiwiYXJyYXkiLCJ1bmtub3duIiwibWF4IiwiY29tcGxldGVkIiwiZG9uZSIsImRvbmVfcmVhc29uIiwiZXJyb3IiLCJuZXZlciIsImdlbmVyYXRlZCIsImV4dGVuZCIsInJlc3BvbnNlIiwiY2hhdHRlZCIsImNvbXBhdGlibGUiLCJjaG9pY2VzIiwiZmluaXNoX3JlYXNvbiIsImxlbmd0aCIsImdlbmVyYXRlT2xsYW1hQ29udGVudCIsImlucHV0IiwiY29uZmlnIiwidGFyZ2V0Iiwib2xsYW1hIiwidXJsIiwiVVJMIiwiZW5kcG9pbnQiLCJpbmNsdWRlcyIsInByb3RvY29sIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsInNlYXJjaCIsImhhc2giLCJtb2RlbCIsImltYWdlcyIsInVuZGVmaW5lZCIsIkFycmF5IiwiaXNBcnJheSIsInNvbWUiLCJpbWFnZSIsIkJ1ZmZlciIsImlzQnVmZmVyIiwiYnl0ZXMiLCJtaW1lIiwidGVzdCIsIm1hcCIsInRvU3RyaW5nIiwibWVzc2FnZXMiLCJzeXN0ZW0iLCJwcm9tcHQiLCJvcHRpb25zIiwibWF4VG9rZW5zIiwibnVtX3ByZWRpY3QiLCJ0ZW1wZXJhdHVyZSIsInRvcFAiLCJ0b3BfcCIsIm5hdGl2ZSIsInJlc3BvbnNlRm9ybWF0IiwidHlwZSIsImZvcm1hdCIsIk9iamVjdCIsImtleXMiLCJzdHJlYW0iLCJwYXlsb2FkIiwibWF4X3Rva2VucyIsInJlc3BvbnNlX2Zvcm1hdCIsImNhY2hlIiwidGltZW91dCIsInRpbWVvdXRNcyIsInBhcnNlZCIsInNhZmVQYXJzZSIsInN1Y2Nlc3MiLCJyZXN1bHQiLCJkYXRhIiwic291cmNlcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsSUFBSSxRQUFPLG9CQUFvQjtBQUN2QyxTQUFRQyxDQUFDLFFBQU8sTUFBTTtBQUN0QixTQUFRQyw4QkFBOEIsRUFBRUMsOEJBQThCLFFBQU8sK0JBQStCO0FBRzVHLE1BQU1DLE9BQU9ILEVBQUVJLE1BQU0sR0FBR0MsTUFBTSxDQUFDLENBQUNDLFFBQVVDLFFBQVFELE1BQU1FLElBQUk7QUFDNUQsTUFBTUMsVUFBVVQsRUFBRVUsTUFBTSxDQUFDO0lBQ3ZCQyxTQUFTUjtJQUNUUyxlQUFlWixFQUFFYSxJQUFJLEdBQUdDLFFBQVE7SUFDaENDLFNBQVNmLEVBQUVnQixLQUFLLENBQUM7UUFBQ2hCLEVBQUVhLElBQUk7UUFBSWIsRUFBRWlCLE9BQU8sQ0FBQztLQUFJLEVBQUVILFFBQVE7SUFDcERJLE1BQU1sQixFQUFFaUIsT0FBTyxDQUFDO0lBQ2hCRSxZQUFZbkIsRUFBRW9CLEtBQUssQ0FBQ3BCLEVBQUVxQixPQUFPLElBQUlDLEdBQUcsQ0FBQyxHQUFHUixRQUFRO0FBQ2xEO0FBQ0EsTUFBTVMsWUFBWXZCLEVBQUVVLE1BQU0sQ0FBQztJQUFDYyxNQUFNeEIsRUFBRWlCLE9BQU8sQ0FBQztJQUFPUSxhQUFhekIsRUFBRWlCLE9BQU8sQ0FBQztJQUFTUyxPQUFPMUIsRUFBRTJCLEtBQUssR0FBR2IsUUFBUTtBQUFFO0FBQzlHLE1BQU1jLFlBQVlMLFVBQVVNLE1BQU0sQ0FBQztJQUFDQyxVQUFVM0I7QUFBSTtBQUNsRCxNQUFNNEIsVUFBVVIsVUFBVU0sTUFBTSxDQUFDO0lBQUNwQjtBQUFPO0FBQ3pDLE1BQU11QixhQUFhaEMsRUFBRVUsTUFBTSxDQUFDO0lBQUN1QixTQUFTakMsRUFBRW9CLEtBQUssQ0FBQ3BCLEVBQUVVLE1BQU0sQ0FBQztRQUFDd0IsZUFBZWxDLEVBQUVpQixPQUFPLENBQUM7UUFBU1I7SUFBTyxJQUFJMEIsTUFBTSxDQUFDO0lBQUlULE9BQU8xQixFQUFFMkIsS0FBSyxHQUFHYixRQUFRO0FBQUU7QUFFM0ksMEZBQTBGLEdBQzFGLE9BQU8sTUFBTXNCLHdCQUF3QixPQUFPQyxPQUErQkM7SUFDekUsTUFBTUMsU0FBU0QsT0FBT0UsTUFBTTtJQUM1QixJQUFJQztJQUNKLElBQUk7UUFDRkEsTUFBTSxJQUFJQyxJQUFJSCxRQUFRSSxZQUFZO0lBQ3BDLEVBQUUsT0FBTTtRQUNOLE1BQU0sSUFBSTFDLCtCQUErQjtJQUMzQztJQUNBLElBQUcsQ0FBQ3NDLFVBQVUsQ0FBQztRQUFDO1FBQVk7UUFBUTtLQUFjLENBQUNLLFFBQVEsQ0FBQ0wsT0FBT00sUUFBUSxLQUFLLENBQUM7UUFBQztRQUFTO0tBQVMsQ0FBQ0QsUUFBUSxDQUFDSCxJQUFJSSxRQUFRLEtBQUtKLElBQUlLLFFBQVEsSUFBSUwsSUFBSU0sUUFBUSxJQUFJTixJQUFJTyxNQUFNLElBQUlQLElBQUlRLElBQUksSUFBSSxPQUFPWixNQUFNYSxLQUFLLEtBQUssWUFBWSxDQUFDYixNQUFNYSxLQUFLLENBQUMxQyxJQUFJLElBQUk7UUFDL08sTUFBTSxJQUFJUCwrQkFBK0I7SUFDM0M7SUFDQSxJQUFHb0MsTUFBTWMsTUFBTSxLQUFLQyxhQUFjLENBQUEsQ0FBQ0MsTUFBTUMsT0FBTyxDQUFDakIsTUFBTWMsTUFBTSxLQUFLZCxNQUFNYyxNQUFNLENBQUNJLElBQUksQ0FBQyxDQUFDQyxRQUNuRixDQUFDQSxTQUFTLENBQUNDLE9BQU9DLFFBQVEsQ0FBQ0YsTUFBTUcsS0FBSyxLQUFLLENBQUNILE1BQU1HLEtBQUssQ0FBQ3hCLE1BQU0sSUFBSSxPQUFPcUIsTUFBTUksSUFBSSxLQUFLLFlBQVksQ0FBQywyQkFBMkJDLElBQUksQ0FBQ0wsTUFBTUksSUFBSSxFQUFDLEdBQUk7UUFDcEosTUFBTSxJQUFJM0QsK0JBQStCO0lBQzNDO0lBQ0EsSUFBR29DLE1BQU1jLE1BQU0sRUFBRWhCLFVBQVVJLE9BQU9NLFFBQVEsS0FBSyxlQUFlO1FBQzVELE1BQU0sSUFBSTVDLCtCQUErQjtJQUMzQztJQUNBLE1BQU1rRCxTQUFTZCxNQUFNYyxNQUFNLEVBQUVoQixTQUFTO1FBQUNnQixRQUFRZCxNQUFNYyxNQUFNLENBQUNXLEdBQUcsQ0FBQyxDQUFDTixRQUFVQSxNQUFNRyxLQUFLLENBQUNJLFFBQVEsQ0FBQztJQUFVLElBQUksQ0FBQztJQUMvRyxNQUFNQyxXQUFXO1dBQUszQixNQUFNNEIsTUFBTSxLQUFLYixZQUFZO1lBQUM7Z0JBQUN6QyxTQUFTMEIsTUFBTTRCLE1BQU07Z0JBQUUvQyxNQUFNO1lBQVE7U0FBRSxHQUFHLEVBQUU7UUFBRztZQUFDUCxTQUFTMEIsTUFBTTZCLE1BQU07WUFBRSxHQUFHZixNQUFNO1lBQUVqQyxNQUFNO1FBQU07S0FBRTtJQUNySixNQUFNaUQsVUFBVTtRQUFDLEdBQUk5QixNQUFNK0IsU0FBUyxLQUFLaEIsWUFBWTtZQUFDaUIsYUFBYWhDLE1BQU0rQixTQUFTO1FBQUEsSUFBSSxDQUFDLENBQUM7UUFBRyxHQUFJL0IsTUFBTWlDLFdBQVcsS0FBS2xCLFlBQVk7WUFBQ2tCLGFBQWFqQyxNQUFNaUMsV0FBVztRQUFBLElBQUksQ0FBQyxDQUFDO1FBQUcsR0FBSWpDLE1BQU1rQyxJQUFJLEtBQUtuQixZQUFZO1lBQUNvQixPQUFPbkMsTUFBTWtDLElBQUk7UUFBQSxJQUFJLENBQUMsQ0FBQztJQUFDO0lBQ2pPLE1BQU1FLFNBQVM7UUFDYixHQUFJcEMsTUFBTXFDLGNBQWMsRUFBRUMsU0FBUyxnQkFBZ0I7WUFBQ0MsUUFBUTtRQUFNLElBQUksQ0FBQyxDQUFDO1FBQ3hFMUIsT0FBT2IsTUFBTWEsS0FBSztRQUNsQixHQUFJMkIsT0FBT0MsSUFBSSxDQUFDWCxTQUFTaEMsTUFBTSxHQUFHO1lBQUNnQztRQUFPLElBQUksQ0FBQyxDQUFDO1FBQ2hEWSxRQUFRO0lBQ1Y7SUFDQSxNQUFNQyxVQUFVekMsT0FBT00sUUFBUSxLQUFLLGFBQ2hDO1FBQUMsR0FBRzRCLE1BQU07UUFBRSxHQUFHdEIsTUFBTTtRQUFFZSxRQUFRN0IsTUFBTTZCLE1BQU07UUFBRSxHQUFJN0IsTUFBTTRCLE1BQU0sS0FBS2IsWUFBWTtZQUFDYSxRQUFRNUIsTUFBTTRCLE1BQU07UUFBQSxJQUFJLENBQUMsQ0FBQztJQUFDLElBQzFHMUIsT0FBT00sUUFBUSxLQUFLLFNBQVM7UUFBQyxHQUFHNEIsTUFBTTtRQUFFVDtJQUFRLElBQUk7UUFDckQsR0FBSTNCLE1BQU0rQixTQUFTLEtBQUtoQixZQUFZO1lBQUM2QixZQUFZNUMsTUFBTStCLFNBQVM7UUFBQSxJQUFJLENBQUMsQ0FBQztRQUN0RUo7UUFDQWQsT0FBT2IsTUFBTWEsS0FBSztRQUNsQixHQUFJYixNQUFNcUMsY0FBYyxFQUFFQyxTQUFTLGdCQUFnQjtZQUFDTyxpQkFBaUI3QyxNQUFNcUMsY0FBYztRQUFBLElBQUksQ0FBQyxDQUFDO1FBQy9GSyxRQUFRO1FBQ1IsR0FBSTFDLE1BQU1pQyxXQUFXLEtBQUtsQixZQUFZO1lBQUNrQixhQUFhakMsTUFBTWlDLFdBQVc7UUFBQSxJQUFJLENBQUMsQ0FBQztRQUMzRSxHQUFJakMsTUFBTWtDLElBQUksS0FBS25CLFlBQVk7WUFBQ29CLE9BQU9uQyxNQUFNa0MsSUFBSTtRQUFBLElBQUksQ0FBQyxDQUFDO0lBQ3pEO0lBQ0YsSUFBSXpDO0lBQ0osSUFBSTtRQUNGQSxXQUFXLE1BQU0vQixLQUFLMEMsSUFBSXNCLFFBQVEsSUFBSWlCLFNBQVM7WUFBQ0csT0FBTztZQUFPQyxTQUFTL0MsTUFBTWdELFNBQVMsSUFBSTtRQUFNO0lBQ2xHLEVBQUUsT0FBTTtRQUNOLE1BQU0sSUFBSW5GLCtCQUErQjtJQUMzQztJQUNBLE1BQU1vRixTQUFTLEFBQUMvQyxDQUFBQSxPQUFPTSxRQUFRLEtBQUssYUFBYWpCLFlBQVlXLE9BQU9NLFFBQVEsS0FBSyxTQUFTZCxVQUFVQyxVQUFTLEVBQUd1RCxTQUFTLENBQUN6RDtJQUMxSCxJQUFHLENBQUN3RCxPQUFPRSxPQUFPLEVBQUUsTUFBTSxJQUFJdEYsK0JBQStCO0lBQzdELE1BQU11RixTQUFTSCxPQUFPSSxJQUFJO0lBQzFCLE9BQU87UUFBQ0MsU0FBUyxFQUFFO1FBQUV4RixNQUFNLGNBQWNzRixTQUFTQSxPQUFPM0QsUUFBUSxHQUFHLGFBQWEyRCxTQUFTQSxPQUFPaEYsT0FBTyxDQUFDRSxPQUFPLEdBQUc4RSxPQUFPeEQsT0FBTyxDQUFDLEVBQUUsQ0FBRXhCLE9BQU8sQ0FBQ0UsT0FBTztJQUFBO0FBQ3ZKLEVBQUUifQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ApiContext } from '../types/auth.types.js';
|
|
2
|
+
export interface PhoneSupportInput {
|
|
3
|
+
readonly company?: string;
|
|
4
|
+
readonly contactId: string;
|
|
5
|
+
readonly email: string;
|
|
6
|
+
readonly firstName: string;
|
|
7
|
+
readonly lastName?: string;
|
|
8
|
+
readonly message: string;
|
|
9
|
+
readonly phone: string;
|
|
10
|
+
readonly product: string;
|
|
11
|
+
readonly source?: 'website-assistant';
|
|
12
|
+
}
|
|
13
|
+
export declare const submitPhoneSupportTicket: (context: ApiContext, input: PhoneSupportInput) => Promise<{
|
|
14
|
+
notificationStatus: string;
|
|
15
|
+
status: string;
|
|
16
|
+
supportTicketId: string;
|
|
17
|
+
ticketNumber: string;
|
|
18
|
+
}>;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { aql } from 'arangojs';
|
|
3
|
+
import { useDb } from '../utils/arangodbUtils.js';
|
|
4
|
+
import { sesSend } from './email.js';
|
|
5
|
+
const hash = (value)=>createHash('sha256').update(value).digest('hex');
|
|
6
|
+
const documents = [
|
|
7
|
+
'users',
|
|
8
|
+
'supportTickets',
|
|
9
|
+
'supportTicketEvents',
|
|
10
|
+
'supportTicketMessages'
|
|
11
|
+
];
|
|
12
|
+
const edges = [
|
|
13
|
+
'hasSupportTicket',
|
|
14
|
+
'hasSupportTicketEvent',
|
|
15
|
+
'hasSupportTicketMessage'
|
|
16
|
+
];
|
|
17
|
+
// Atomic, deterministic IDs make a retried Connect request return the original ticket.
|
|
18
|
+
export const submitPhoneSupportTicket = async (context, input)=>{
|
|
19
|
+
const db = useDb(context.databaseName);
|
|
20
|
+
for (const name of [
|
|
21
|
+
...documents,
|
|
22
|
+
...edges
|
|
23
|
+
]){
|
|
24
|
+
const target = db.collection(name);
|
|
25
|
+
if (!await target.exists()) {
|
|
26
|
+
try {
|
|
27
|
+
await target.create({
|
|
28
|
+
type: edges.includes(name) ? 3 : 2
|
|
29
|
+
});
|
|
30
|
+
} catch (error) {
|
|
31
|
+
if (!await target.exists()) throw error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const email = input.email.toLowerCase();
|
|
36
|
+
const source = input.source || 'amazon-connect';
|
|
37
|
+
const channel = input.source ? 'website' : 'phone';
|
|
38
|
+
const key = hash(`nitrogenx:${channel}:${input.contactId}`);
|
|
39
|
+
const payloadHash = hash(JSON.stringify({
|
|
40
|
+
...input,
|
|
41
|
+
email
|
|
42
|
+
}));
|
|
43
|
+
const timestamp = Date.now();
|
|
44
|
+
const ticketNumber = `NX-${key.slice(0, 12).toUpperCase()}`;
|
|
45
|
+
const tx = await db.beginTransaction({
|
|
46
|
+
exclusive: [
|
|
47
|
+
...documents,
|
|
48
|
+
...edges
|
|
49
|
+
]
|
|
50
|
+
}, {
|
|
51
|
+
lockTimeout: 10
|
|
52
|
+
});
|
|
53
|
+
let ticket;
|
|
54
|
+
try {
|
|
55
|
+
const existing = await tx.step(()=>db.query(aql`RETURN DOCUMENT('supportTickets', ${key})`)).then((cursor)=>cursor.next());
|
|
56
|
+
if (existing) {
|
|
57
|
+
if (existing.payloadHash !== payloadHash) throw new Error('contact_payload_conflict');
|
|
58
|
+
ticket = existing;
|
|
59
|
+
} else {
|
|
60
|
+
const userKey = hash(email);
|
|
61
|
+
const user = await tx.step(()=>db.query(aql`
|
|
62
|
+
UPSERT {email: ${email}}
|
|
63
|
+
INSERT ${{
|
|
64
|
+
_key: userKey,
|
|
65
|
+
active: false,
|
|
66
|
+
added: timestamp,
|
|
67
|
+
company: input.company || '',
|
|
68
|
+
crmSource: `nitrogenx-${channel}`,
|
|
69
|
+
email,
|
|
70
|
+
firstName: input.firstName,
|
|
71
|
+
lastName: input.lastName || '',
|
|
72
|
+
marketingOptIn: false,
|
|
73
|
+
modified: timestamp,
|
|
74
|
+
phone: input.phone,
|
|
75
|
+
userId: userKey
|
|
76
|
+
}}
|
|
77
|
+
UPDATE {modified: ${timestamp}} IN users RETURN NEW
|
|
78
|
+
`)).then((cursor)=>cursor.next());
|
|
79
|
+
// Caller-provided details are kept on the ticket. An unauthenticated caller cannot overwrite an existing CRM profile.
|
|
80
|
+
ticket = {
|
|
81
|
+
_key: key,
|
|
82
|
+
added: timestamp,
|
|
83
|
+
appId: 'nitrogenx',
|
|
84
|
+
caller: input,
|
|
85
|
+
description: input.message,
|
|
86
|
+
modified: timestamp,
|
|
87
|
+
notificationStatus: 'pending',
|
|
88
|
+
payloadHash,
|
|
89
|
+
priority: 'normal',
|
|
90
|
+
productId: input.product,
|
|
91
|
+
source,
|
|
92
|
+
status: 'submitted',
|
|
93
|
+
subject: `${channel} message: ${input.product}`,
|
|
94
|
+
supportTicketId: key,
|
|
95
|
+
ticketNumber,
|
|
96
|
+
type: 'general_support',
|
|
97
|
+
userId: user._key
|
|
98
|
+
};
|
|
99
|
+
await tx.step(()=>db.query(aql`INSERT ${ticket} IN supportTickets`));
|
|
100
|
+
await tx.step(()=>db.query(aql`INSERT ${{
|
|
101
|
+
_from: `users/${user._key}`,
|
|
102
|
+
_key: key,
|
|
103
|
+
_to: `supportTickets/${key}`,
|
|
104
|
+
added: timestamp,
|
|
105
|
+
status: 'submitted'
|
|
106
|
+
}} IN hasSupportTicket`));
|
|
107
|
+
await tx.step(()=>db.query(aql`INSERT ${{
|
|
108
|
+
_key: key,
|
|
109
|
+
added: timestamp,
|
|
110
|
+
eventType: 'submitted',
|
|
111
|
+
metadata: {
|
|
112
|
+
details: input.message,
|
|
113
|
+
source
|
|
114
|
+
},
|
|
115
|
+
supportTicketId: key,
|
|
116
|
+
toValue: 'submitted'
|
|
117
|
+
}} IN supportTicketEvents`));
|
|
118
|
+
await tx.step(()=>db.query(aql`INSERT ${{
|
|
119
|
+
_from: `supportTickets/${key}`,
|
|
120
|
+
_key: key,
|
|
121
|
+
_to: `supportTicketEvents/${key}`,
|
|
122
|
+
added: timestamp
|
|
123
|
+
}} IN hasSupportTicketEvent`));
|
|
124
|
+
}
|
|
125
|
+
await tx.commit();
|
|
126
|
+
} catch (error) {
|
|
127
|
+
await tx.abort();
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
// At-least-once email delivery; retries never duplicate the CRM contact or ticket.
|
|
131
|
+
if (ticket.notificationStatus !== 'sent') {
|
|
132
|
+
// An invalid legacy transcription must not prevent the internal support notification.
|
|
133
|
+
const replyable = email.length <= 254 && email.split('@')[0].length <= 64 && /^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/i.test(email);
|
|
134
|
+
const delivery = await sesSend({
|
|
135
|
+
Destination: {
|
|
136
|
+
ToAddresses: [
|
|
137
|
+
'support@nitrogenx.co'
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
Message: {
|
|
141
|
+
Body: {
|
|
142
|
+
Text: {
|
|
143
|
+
Data: `New Nitrogen ${channel} message\nTicket: ${ticketNumber}\nProduct: ${input.product}\nName: ${input.firstName} ${input.lastName || ''}\nEmail: ${email}${replyable ? '' : ' (needs correction; use callback number)'}\nPhone: ${input.phone}\nCompany: ${input.company || 'Not supplied'}\nSubmission: ${input.contactId}\n\n${input.message}`
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
Subject: {
|
|
147
|
+
Data: `[${ticketNumber}] Nitrogen ${channel} support — ${input.product}`
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
...replyable ? {
|
|
151
|
+
ReplyToAddresses: [
|
|
152
|
+
email
|
|
153
|
+
]
|
|
154
|
+
} : {},
|
|
155
|
+
Source: 'Nitrogen Support <support@nitrogenx.co>'
|
|
156
|
+
});
|
|
157
|
+
await db.query(aql`UPDATE ${key} WITH ${{
|
|
158
|
+
notificationMessageId: delivery.MessageId || null,
|
|
159
|
+
notificationStatus: 'sent'
|
|
160
|
+
}} IN supportTickets`);
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
notificationStatus: 'sent',
|
|
164
|
+
status: 'submitted',
|
|
165
|
+
supportTicketId: key,
|
|
166
|
+
ticketNumber
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9waG9uZVN1cHBvcnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjcmVhdGVIYXNofSBmcm9tICdub2RlOmNyeXB0byc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuXG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7c2VzU2VuZH0gZnJvbSAnLi9lbWFpbC5qcyc7XG5cbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBQaG9uZVN1cHBvcnRJbnB1dCB7XG4gIHJlYWRvbmx5IGNvbXBhbnk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbnRhY3RJZDogc3RyaW5nO1xuICByZWFkb25seSBlbWFpbDogc3RyaW5nO1xuICByZWFkb25seSBmaXJzdE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbGFzdE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgcGhvbmU6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvZHVjdDogc3RyaW5nO1xuICByZWFkb25seSBzb3VyY2U/OiAnd2Vic2l0ZS1hc3Npc3RhbnQnO1xufVxuXG5jb25zdCBoYXNoID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZhbHVlKS5kaWdlc3QoJ2hleCcpO1xuY29uc3QgZG9jdW1lbnRzID0gWyd1c2VycycsICdzdXBwb3J0VGlja2V0cycsICdzdXBwb3J0VGlja2V0RXZlbnRzJywgJ3N1cHBvcnRUaWNrZXRNZXNzYWdlcyddO1xuY29uc3QgZWRnZXMgPSBbJ2hhc1N1cHBvcnRUaWNrZXQnLCAnaGFzU3VwcG9ydFRpY2tldEV2ZW50JywgJ2hhc1N1cHBvcnRUaWNrZXRNZXNzYWdlJ107XG5cbi8vIEF0b21pYywgZGV0ZXJtaW5pc3RpYyBJRHMgbWFrZSBhIHJldHJpZWQgQ29ubmVjdCByZXF1ZXN0IHJldHVybiB0aGUgb3JpZ2luYWwgdGlja2V0LlxuZXhwb3J0IGNvbnN0IHN1Ym1pdFBob25lU3VwcG9ydFRpY2tldCA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCBpbnB1dDogUGhvbmVTdXBwb3J0SW5wdXQpID0+IHtcbiAgY29uc3QgZGIgPSB1c2VEYihjb250ZXh0LmRhdGFiYXNlTmFtZSk7XG4gIGZvcihjb25zdCBuYW1lIG9mIFsuLi5kb2N1bWVudHMsIC4uLmVkZ2VzXSkge1xuICAgIGNvbnN0IHRhcmdldCA9IGRiLmNvbGxlY3Rpb24obmFtZSk7XG4gICAgaWYoIWF3YWl0IHRhcmdldC5leGlzdHMoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGFyZ2V0LmNyZWF0ZSh7dHlwZTogZWRnZXMuaW5jbHVkZXMobmFtZSkgPyAzIDogMn0pO1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBpZighYXdhaXQgdGFyZ2V0LmV4aXN0cygpKSB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3QgZW1haWwgPSBpbnB1dC5lbWFpbC50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBzb3VyY2UgPSBpbnB1dC5zb3VyY2UgfHwgJ2FtYXpvbi1jb25uZWN0JztcbiAgY29uc3QgY2hhbm5lbCA9IGlucHV0LnNvdXJjZSA/ICd3ZWJzaXRlJyA6ICdwaG9uZSc7XG4gIGNvbnN0IGtleSA9IGhhc2goYG5pdHJvZ2VueDoke2NoYW5uZWx9OiR7aW5wdXQuY29udGFjdElkfWApO1xuICBjb25zdCBwYXlsb2FkSGFzaCA9IGhhc2goSlNPTi5zdHJpbmdpZnkoey4uLmlucHV0LCBlbWFpbH0pKTtcbiAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgdGlja2V0TnVtYmVyID0gYE5YLSR7a2V5LnNsaWNlKDAsIDEyKS50b1VwcGVyQ2FzZSgpfWA7XG4gIGNvbnN0IHR4ID0gYXdhaXQgZGIuYmVnaW5UcmFuc2FjdGlvbih7ZXhjbHVzaXZlOiBbLi4uZG9jdW1lbnRzLCAuLi5lZGdlc119LCB7bG9ja1RpbWVvdXQ6IDEwfSk7XG4gIGxldCB0aWNrZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB0cnkge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdHguc3RlcCgoKSA9PiBkYi5xdWVyeShhcWxgUkVUVVJOIERPQ1VNRU5UKCdzdXBwb3J0VGlja2V0cycsICR7a2V5fSlgKSkudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcbiAgICBpZihleGlzdGluZykge1xuICAgICAgaWYoZXhpc3RpbmcucGF5bG9hZEhhc2ggIT09IHBheWxvYWRIYXNoKSB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRhY3RfcGF5bG9hZF9jb25mbGljdCcpO1xuICAgICAgdGlja2V0ID0gZXhpc3Rpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVzZXJLZXkgPSBoYXNoKGVtYWlsKTtcbiAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0eC5zdGVwKCgpID0+IGRiLnF1ZXJ5KGFxbGBcbiAgICAgICAgVVBTRVJUIHtlbWFpbDogJHtlbWFpbH19XG4gICAgICAgIElOU0VSVCAke3tfa2V5OiB1c2VyS2V5LCBhY3RpdmU6IGZhbHNlLCBhZGRlZDogdGltZXN0YW1wLCBjb21wYW55OiBpbnB1dC5jb21wYW55IHx8ICcnLCBjcm1Tb3VyY2U6IGBuaXRyb2dlbngtJHtjaGFubmVsfWAsIGVtYWlsLCBmaXJzdE5hbWU6IGlucHV0LmZpcnN0TmFtZSwgbGFzdE5hbWU6IGlucHV0Lmxhc3ROYW1lIHx8ICcnLCBtYXJrZXRpbmdPcHRJbjogZmFsc2UsIG1vZGlmaWVkOiB0aW1lc3RhbXAsIHBob25lOiBpbnB1dC5waG9uZSwgdXNlcklkOiB1c2VyS2V5fX1cbiAgICAgICAgVVBEQVRFIHttb2RpZmllZDogJHt0aW1lc3RhbXB9fSBJTiB1c2VycyBSRVRVUk4gTkVXXG4gICAgICBgKSkudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcbiAgICAgIC8vIENhbGxlci1wcm92aWRlZCBkZXRhaWxzIGFyZSBrZXB0IG9uIHRoZSB0aWNrZXQuIEFuIHVuYXV0aGVudGljYXRlZCBjYWxsZXIgY2Fubm90IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBDUk0gcHJvZmlsZS5cbiAgICAgIHRpY2tldCA9IHtfa2V5OiBrZXksIGFkZGVkOiB0aW1lc3RhbXAsIGFwcElkOiAnbml0cm9nZW54JywgY2FsbGVyOiBpbnB1dCwgZGVzY3JpcHRpb246IGlucHV0Lm1lc3NhZ2UsIG1vZGlmaWVkOiB0aW1lc3RhbXAsIG5vdGlmaWNhdGlvblN0YXR1czogJ3BlbmRpbmcnLCBwYXlsb2FkSGFzaCwgcHJpb3JpdHk6ICdub3JtYWwnLCBwcm9kdWN0SWQ6IGlucHV0LnByb2R1Y3QsIHNvdXJjZSwgc3RhdHVzOiAnc3VibWl0dGVkJywgc3ViamVjdDogYCR7Y2hhbm5lbH0gbWVzc2FnZTogJHtpbnB1dC5wcm9kdWN0fWAsIHN1cHBvcnRUaWNrZXRJZDoga2V5LCB0aWNrZXROdW1iZXIsIHR5cGU6ICdnZW5lcmFsX3N1cHBvcnQnLCB1c2VySWQ6IHVzZXIuX2tleX07XG4gICAgICBhd2FpdCB0eC5zdGVwKCgpID0+IGRiLnF1ZXJ5KGFxbGBJTlNFUlQgJHt0aWNrZXR9IElOIHN1cHBvcnRUaWNrZXRzYCkpO1xuICAgICAgYXdhaXQgdHguc3RlcCgoKSA9PiBkYi5xdWVyeShhcWxgSU5TRVJUICR7e19mcm9tOiBgdXNlcnMvJHt1c2VyLl9rZXl9YCwgX2tleToga2V5LCBfdG86IGBzdXBwb3J0VGlja2V0cy8ke2tleX1gLCBhZGRlZDogdGltZXN0YW1wLCBzdGF0dXM6ICdzdWJtaXR0ZWQnfX0gSU4gaGFzU3VwcG9ydFRpY2tldGApKTtcbiAgICAgIGF3YWl0IHR4LnN0ZXAoKCkgPT4gZGIucXVlcnkoYXFsYElOU0VSVCAke3tfa2V5OiBrZXksIGFkZGVkOiB0aW1lc3RhbXAsIGV2ZW50VHlwZTogJ3N1Ym1pdHRlZCcsIG1ldGFkYXRhOiB7ZGV0YWlsczogaW5wdXQubWVzc2FnZSwgc291cmNlfSwgc3VwcG9ydFRpY2tldElkOiBrZXksIHRvVmFsdWU6ICdzdWJtaXR0ZWQnfX0gSU4gc3VwcG9ydFRpY2tldEV2ZW50c2ApKTtcbiAgICAgIGF3YWl0IHR4LnN0ZXAoKCkgPT4gZGIucXVlcnkoYXFsYElOU0VSVCAke3tfZnJvbTogYHN1cHBvcnRUaWNrZXRzLyR7a2V5fWAsIF9rZXk6IGtleSwgX3RvOiBgc3VwcG9ydFRpY2tldEV2ZW50cy8ke2tleX1gLCBhZGRlZDogdGltZXN0YW1wfX0gSU4gaGFzU3VwcG9ydFRpY2tldEV2ZW50YCkpO1xuICAgIH1cbiAgICBhd2FpdCB0eC5jb21taXQoKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGF3YWl0IHR4LmFib3J0KCk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbiAgLy8gQXQtbGVhc3Qtb25jZSBlbWFpbCBkZWxpdmVyeTsgcmV0cmllcyBuZXZlciBkdXBsaWNhdGUgdGhlIENSTSBjb250YWN0IG9yIHRpY2tldC5cbiAgaWYodGlja2V0Lm5vdGlmaWNhdGlvblN0YXR1cyAhPT0gJ3NlbnQnKSB7XG4gICAgLy8gQW4gaW52YWxpZCBsZWdhY3kgdHJhbnNjcmlwdGlvbiBtdXN0IG5vdCBwcmV2ZW50IHRoZSBpbnRlcm5hbCBzdXBwb3J0IG5vdGlmaWNhdGlvbi5cbiAgICBjb25zdCByZXBseWFibGUgPSBlbWFpbC5sZW5ndGggPD0gMjU0ICYmIGVtYWlsLnNwbGl0KCdAJylbMF0ubGVuZ3RoIDw9IDY0ICYmIC9eW2EtejAtOSEjJCUmJyorXFwvPT9eX2B7fH1+LV0rKD86XFwuW2EtejAtOSEjJCUmJyorXFwvPT9eX2B7fH1+LV0rKSpAKD86W2EtejAtOV0oPzpbYS16MC05LV17MCw2MX1bYS16MC05XSk/XFwuKStbYS16XXsyLDYzfSQvaS50ZXN0KGVtYWlsKTtcbiAgICBjb25zdCBkZWxpdmVyeSA9IGF3YWl0IHNlc1NlbmQoe1xuICAgICAgRGVzdGluYXRpb246IHtUb0FkZHJlc3NlczogWydzdXBwb3J0QG5pdHJvZ2VueC5jbyddfSxcbiAgICAgIE1lc3NhZ2U6IHtcbiAgICAgICAgQm9keToge1RleHQ6IHtEYXRhOiBgTmV3IE5pdHJvZ2VuICR7Y2hhbm5lbH0gbWVzc2FnZVxcblRpY2tldDogJHt0aWNrZXROdW1iZXJ9XFxuUHJvZHVjdDogJHtpbnB1dC5wcm9kdWN0fVxcbk5hbWU6ICR7aW5wdXQuZmlyc3ROYW1lfSAke2lucHV0Lmxhc3ROYW1lIHx8ICcnfVxcbkVtYWlsOiAke2VtYWlsfSR7cmVwbHlhYmxlID8gJycgOiAnIChuZWVkcyBjb3JyZWN0aW9uOyB1c2UgY2FsbGJhY2sgbnVtYmVyKSd9XFxuUGhvbmU6ICR7aW5wdXQucGhvbmV9XFxuQ29tcGFueTogJHtpbnB1dC5jb21wYW55IHx8ICdOb3Qgc3VwcGxpZWQnfVxcblN1Ym1pc3Npb246ICR7aW5wdXQuY29udGFjdElkfVxcblxcbiR7aW5wdXQubWVzc2FnZX1gfX0sXG4gICAgICAgIFN1YmplY3Q6IHtEYXRhOiBgWyR7dGlja2V0TnVtYmVyfV0gTml0cm9nZW4gJHtjaGFubmVsfSBzdXBwb3J0IOKAlCAke2lucHV0LnByb2R1Y3R9YH1cbiAgICAgIH0sXG4gICAgICAuLi4ocmVwbHlhYmxlID8ge1JlcGx5VG9BZGRyZXNzZXM6IFtlbWFpbF19IDoge30pLFxuICAgICAgU291cmNlOiAnTml0cm9nZW4gU3VwcG9ydCA8c3VwcG9ydEBuaXRyb2dlbnguY28+J1xuICAgIH0pO1xuICAgIGF3YWl0IGRiLnF1ZXJ5KGFxbGBVUERBVEUgJHtrZXl9IFdJVEggJHt7bm90aWZpY2F0aW9uTWVzc2FnZUlkOiBkZWxpdmVyeS5NZXNzYWdlSWQgfHwgbnVsbCwgbm90aWZpY2F0aW9uU3RhdHVzOiAnc2VudCd9fSBJTiBzdXBwb3J0VGlja2V0c2ApO1xuICB9XG4gIHJldHVybiB7bm90aWZpY2F0aW9uU3RhdHVzOiAnc2VudCcsIHN0YXR1czogJ3N1Ym1pdHRlZCcsIHN1cHBvcnRUaWNrZXRJZDoga2V5LCB0aWNrZXROdW1iZXJ9O1xufTtcbiJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwiYXFsIiwidXNlRGIiLCJzZXNTZW5kIiwiaGFzaCIsInZhbHVlIiwidXBkYXRlIiwiZGlnZXN0IiwiZG9jdW1lbnRzIiwiZWRnZXMiLCJzdWJtaXRQaG9uZVN1cHBvcnRUaWNrZXQiLCJjb250ZXh0IiwiaW5wdXQiLCJkYiIsImRhdGFiYXNlTmFtZSIsIm5hbWUiLCJ0YXJnZXQiLCJjb2xsZWN0aW9uIiwiZXhpc3RzIiwiY3JlYXRlIiwidHlwZSIsImluY2x1ZGVzIiwiZXJyb3IiLCJlbWFpbCIsInRvTG93ZXJDYXNlIiwic291cmNlIiwiY2hhbm5lbCIsImtleSIsImNvbnRhY3RJZCIsInBheWxvYWRIYXNoIiwiSlNPTiIsInN0cmluZ2lmeSIsInRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJ0aWNrZXROdW1iZXIiLCJzbGljZSIsInRvVXBwZXJDYXNlIiwidHgiLCJiZWdpblRyYW5zYWN0aW9uIiwiZXhjbHVzaXZlIiwibG9ja1RpbWVvdXQiLCJ0aWNrZXQiLCJleGlzdGluZyIsInN0ZXAiLCJxdWVyeSIsInRoZW4iLCJjdXJzb3IiLCJuZXh0IiwiRXJyb3IiLCJ1c2VyS2V5IiwidXNlciIsIl9rZXkiLCJhY3RpdmUiLCJhZGRlZCIsImNvbXBhbnkiLCJjcm1Tb3VyY2UiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsIm1hcmtldGluZ09wdEluIiwibW9kaWZpZWQiLCJwaG9uZSIsInVzZXJJZCIsImFwcElkIiwiY2FsbGVyIiwiZGVzY3JpcHRpb24iLCJtZXNzYWdlIiwibm90aWZpY2F0aW9uU3RhdHVzIiwicHJpb3JpdHkiLCJwcm9kdWN0SWQiLCJwcm9kdWN0Iiwic3RhdHVzIiwic3ViamVjdCIsInN1cHBvcnRUaWNrZXRJZCIsIl9mcm9tIiwiX3RvIiwiZXZlbnRUeXBlIiwibWV0YWRhdGEiLCJkZXRhaWxzIiwidG9WYWx1ZSIsImNvbW1pdCIsImFib3J0IiwicmVwbHlhYmxlIiwibGVuZ3RoIiwic3BsaXQiLCJ0ZXN0IiwiZGVsaXZlcnkiLCJEZXN0aW5hdGlvbiIsIlRvQWRkcmVzc2VzIiwiTWVzc2FnZSIsIkJvZHkiLCJUZXh0IiwiRGF0YSIsIlN1YmplY3QiLCJSZXBseVRvQWRkcmVzc2VzIiwiU291cmNlIiwibm90aWZpY2F0aW9uTWVzc2FnZUlkIiwiTWVzc2FnZUlkIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxVQUFVLFFBQU8sY0FBYztBQUN2QyxTQUFRQyxHQUFHLFFBQU8sV0FBVztBQUU3QixTQUFRQyxLQUFLLFFBQU8sNEJBQTRCO0FBQ2hELFNBQVFDLE9BQU8sUUFBTyxhQUFhO0FBZ0JuQyxNQUFNQyxPQUFPLENBQUNDLFFBQTBCTCxXQUFXLFVBQVVNLE1BQU0sQ0FBQ0QsT0FBT0UsTUFBTSxDQUFDO0FBQ2xGLE1BQU1DLFlBQVk7SUFBQztJQUFTO0lBQWtCO0lBQXVCO0NBQXdCO0FBQzdGLE1BQU1DLFFBQVE7SUFBQztJQUFvQjtJQUF5QjtDQUEwQjtBQUV0Rix1RkFBdUY7QUFDdkYsT0FBTyxNQUFNQywyQkFBMkIsT0FBT0MsU0FBcUJDO0lBQ2xFLE1BQU1DLEtBQUtYLE1BQU1TLFFBQVFHLFlBQVk7SUFDckMsS0FBSSxNQUFNQyxRQUFRO1dBQUlQO1dBQWNDO0tBQU0sQ0FBRTtRQUMxQyxNQUFNTyxTQUFTSCxHQUFHSSxVQUFVLENBQUNGO1FBQzdCLElBQUcsQ0FBQyxNQUFNQyxPQUFPRSxNQUFNLElBQUk7WUFDekIsSUFBSTtnQkFDRixNQUFNRixPQUFPRyxNQUFNLENBQUM7b0JBQUNDLE1BQU1YLE1BQU1ZLFFBQVEsQ0FBQ04sUUFBUSxJQUFJO2dCQUFDO1lBQ3pELEVBQUUsT0FBTU8sT0FBTztnQkFDYixJQUFHLENBQUMsTUFBTU4sT0FBT0UsTUFBTSxJQUFJLE1BQU1JO1lBQ25DO1FBQ0Y7SUFDRjtJQUNBLE1BQU1DLFFBQVFYLE1BQU1XLEtBQUssQ0FBQ0MsV0FBVztJQUNyQyxNQUFNQyxTQUFTYixNQUFNYSxNQUFNLElBQUk7SUFDL0IsTUFBTUMsVUFBVWQsTUFBTWEsTUFBTSxHQUFHLFlBQVk7SUFDM0MsTUFBTUUsTUFBTXZCLEtBQUssQ0FBQyxVQUFVLEVBQUVzQixRQUFRLENBQUMsRUFBRWQsTUFBTWdCLFNBQVMsRUFBRTtJQUMxRCxNQUFNQyxjQUFjekIsS0FBSzBCLEtBQUtDLFNBQVMsQ0FBQztRQUFDLEdBQUduQixLQUFLO1FBQUVXO0lBQUs7SUFDeEQsTUFBTVMsWUFBWUMsS0FBS0MsR0FBRztJQUMxQixNQUFNQyxlQUFlLENBQUMsR0FBRyxFQUFFUixJQUFJUyxLQUFLLENBQUMsR0FBRyxJQUFJQyxXQUFXLElBQUk7SUFDM0QsTUFBTUMsS0FBSyxNQUFNekIsR0FBRzBCLGdCQUFnQixDQUFDO1FBQUNDLFdBQVc7ZUFBSWhDO2VBQWNDO1NBQU07SUFBQSxHQUFHO1FBQUNnQyxhQUFhO0lBQUU7SUFDNUYsSUFBSUM7SUFDSixJQUFJO1FBQ0YsTUFBTUMsV0FBVyxNQUFNTCxHQUFHTSxJQUFJLENBQUMsSUFBTS9CLEdBQUdnQyxLQUFLLENBQUM1QyxHQUFHLENBQUMsa0NBQWtDLEVBQUUwQixJQUFJLENBQUMsQ0FBQyxHQUFHbUIsSUFBSSxDQUFDLENBQUNDLFNBQVdBLE9BQU9DLElBQUk7UUFDM0gsSUFBR0wsVUFBVTtZQUNYLElBQUdBLFNBQVNkLFdBQVcsS0FBS0EsYUFBYSxNQUFNLElBQUlvQixNQUFNO1lBQ3pEUCxTQUFTQztRQUNYLE9BQU87WUFDTCxNQUFNTyxVQUFVOUMsS0FBS21CO1lBQ3JCLE1BQU00QixPQUFPLE1BQU1iLEdBQUdNLElBQUksQ0FBQyxJQUFNL0IsR0FBR2dDLEtBQUssQ0FBQzVDLEdBQUcsQ0FBQzt1QkFDN0IsRUFBRXNCLE1BQU07ZUFDaEIsRUFBRTtvQkFBQzZCLE1BQU1GO29CQUFTRyxRQUFRO29CQUFPQyxPQUFPdEI7b0JBQVd1QixTQUFTM0MsTUFBTTJDLE9BQU8sSUFBSTtvQkFBSUMsV0FBVyxDQUFDLFVBQVUsRUFBRTlCLFNBQVM7b0JBQUVIO29CQUFPa0MsV0FBVzdDLE1BQU02QyxTQUFTO29CQUFFQyxVQUFVOUMsTUFBTThDLFFBQVEsSUFBSTtvQkFBSUMsZ0JBQWdCO29CQUFPQyxVQUFVNUI7b0JBQVc2QixPQUFPakQsTUFBTWlELEtBQUs7b0JBQUVDLFFBQVFaO2dCQUFPLEVBQUU7MEJBQzdQLEVBQUVsQixVQUFVO01BQ2hDLENBQUMsR0FBR2MsSUFBSSxDQUFDLENBQUNDLFNBQVdBLE9BQU9DLElBQUk7WUFDaEMsc0hBQXNIO1lBQ3RITixTQUFTO2dCQUFDVSxNQUFNekI7Z0JBQUsyQixPQUFPdEI7Z0JBQVcrQixPQUFPO2dCQUFhQyxRQUFRcEQ7Z0JBQU9xRCxhQUFhckQsTUFBTXNELE9BQU87Z0JBQUVOLFVBQVU1QjtnQkFBV21DLG9CQUFvQjtnQkFBV3RDO2dCQUFhdUMsVUFBVTtnQkFBVUMsV0FBV3pELE1BQU0wRCxPQUFPO2dCQUFFN0M7Z0JBQVE4QyxRQUFRO2dCQUFhQyxTQUFTLEdBQUc5QyxRQUFRLFVBQVUsRUFBRWQsTUFBTTBELE9BQU8sRUFBRTtnQkFBRUcsaUJBQWlCOUM7Z0JBQUtRO2dCQUFjZixNQUFNO2dCQUFtQjBDLFFBQVFYLEtBQUtDLElBQUk7WUFBQTtZQUNqWCxNQUFNZCxHQUFHTSxJQUFJLENBQUMsSUFBTS9CLEdBQUdnQyxLQUFLLENBQUM1QyxHQUFHLENBQUMsT0FBTyxFQUFFeUMsT0FBTyxrQkFBa0IsQ0FBQztZQUNwRSxNQUFNSixHQUFHTSxJQUFJLENBQUMsSUFBTS9CLEdBQUdnQyxLQUFLLENBQUM1QyxHQUFHLENBQUMsT0FBTyxFQUFFO29CQUFDeUUsT0FBTyxDQUFDLE1BQU0sRUFBRXZCLEtBQUtDLElBQUksRUFBRTtvQkFBRUEsTUFBTXpCO29CQUFLZ0QsS0FBSyxDQUFDLGVBQWUsRUFBRWhELEtBQUs7b0JBQUUyQixPQUFPdEI7b0JBQVd1QyxRQUFRO2dCQUFXLEVBQUUsb0JBQW9CLENBQUM7WUFDN0ssTUFBTWpDLEdBQUdNLElBQUksQ0FBQyxJQUFNL0IsR0FBR2dDLEtBQUssQ0FBQzVDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7b0JBQUNtRCxNQUFNekI7b0JBQUsyQixPQUFPdEI7b0JBQVc0QyxXQUFXO29CQUFhQyxVQUFVO3dCQUFDQyxTQUFTbEUsTUFBTXNELE9BQU87d0JBQUV6QztvQkFBTTtvQkFBR2dELGlCQUFpQjlDO29CQUFLb0QsU0FBUztnQkFBVyxFQUFFLHVCQUF1QixDQUFDO1lBQ2hOLE1BQU16QyxHQUFHTSxJQUFJLENBQUMsSUFBTS9CLEdBQUdnQyxLQUFLLENBQUM1QyxHQUFHLENBQUMsT0FBTyxFQUFFO29CQUFDeUUsT0FBTyxDQUFDLGVBQWUsRUFBRS9DLEtBQUs7b0JBQUV5QixNQUFNekI7b0JBQUtnRCxLQUFLLENBQUMsb0JBQW9CLEVBQUVoRCxLQUFLO29CQUFFMkIsT0FBT3RCO2dCQUFTLEVBQUUseUJBQXlCLENBQUM7UUFDdks7UUFDQSxNQUFNTSxHQUFHMEMsTUFBTTtJQUNqQixFQUFFLE9BQU0xRCxPQUFPO1FBQ2IsTUFBTWdCLEdBQUcyQyxLQUFLO1FBQ2QsTUFBTTNEO0lBQ1I7SUFDQSxtRkFBbUY7SUFDbkYsSUFBR29CLE9BQU95QixrQkFBa0IsS0FBSyxRQUFRO1FBQ3ZDLHNGQUFzRjtRQUN0RixNQUFNZSxZQUFZM0QsTUFBTTRELE1BQU0sSUFBSSxPQUFPNUQsTUFBTTZELEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDRCxNQUFNLElBQUksTUFBTSw4SEFBOEhFLElBQUksQ0FBQzlEO1FBQ2hOLE1BQU0rRCxXQUFXLE1BQU1uRixRQUFRO1lBQzdCb0YsYUFBYTtnQkFBQ0MsYUFBYTtvQkFBQztpQkFBdUI7WUFBQTtZQUNuREMsU0FBUztnQkFDUEMsTUFBTTtvQkFBQ0MsTUFBTTt3QkFBQ0MsTUFBTSxDQUFDLGFBQWEsRUFBRWxFLFFBQVEsa0JBQWtCLEVBQUVTLGFBQWEsV0FBVyxFQUFFdkIsTUFBTTBELE9BQU8sQ0FBQyxRQUFRLEVBQUUxRCxNQUFNNkMsU0FBUyxDQUFDLENBQUMsRUFBRTdDLE1BQU04QyxRQUFRLElBQUksR0FBRyxTQUFTLEVBQUVuQyxRQUFRMkQsWUFBWSxLQUFLLDJDQUEyQyxTQUFTLEVBQUV0RSxNQUFNaUQsS0FBSyxDQUFDLFdBQVcsRUFBRWpELE1BQU0yQyxPQUFPLElBQUksZUFBZSxjQUFjLEVBQUUzQyxNQUFNZ0IsU0FBUyxDQUFDLElBQUksRUFBRWhCLE1BQU1zRCxPQUFPLEVBQUU7b0JBQUE7Z0JBQUM7Z0JBQ25XMkIsU0FBUztvQkFBQ0QsTUFBTSxDQUFDLENBQUMsRUFBRXpELGFBQWEsV0FBVyxFQUFFVCxRQUFRLFdBQVcsRUFBRWQsTUFBTTBELE9BQU8sRUFBRTtnQkFBQTtZQUNwRjtZQUNBLEdBQUlZLFlBQVk7Z0JBQUNZLGtCQUFrQjtvQkFBQ3ZFO2lCQUFNO1lBQUEsSUFBSSxDQUFDLENBQUM7WUFDaER3RSxRQUFRO1FBQ1Y7UUFDQSxNQUFNbEYsR0FBR2dDLEtBQUssQ0FBQzVDLEdBQUcsQ0FBQyxPQUFPLEVBQUUwQixJQUFJLE1BQU0sRUFBRTtZQUFDcUUsdUJBQXVCVixTQUFTVyxTQUFTLElBQUk7WUFBTTlCLG9CQUFvQjtRQUFNLEVBQUUsa0JBQWtCLENBQUM7SUFDN0k7SUFDQSxPQUFPO1FBQUNBLG9CQUFvQjtRQUFRSSxRQUFRO1FBQWFFLGlCQUFpQjlDO1FBQUtRO0lBQVk7QUFDN0YsRUFBRSJ9
|
package/lib/config.js
CHANGED
|
@@ -39,7 +39,8 @@ export class Config {
|
|
|
39
39
|
aws: {
|
|
40
40
|
credentials: {
|
|
41
41
|
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
|
42
|
-
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
|
|
42
|
+
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
|
|
43
|
+
sessionToken: process.env.AWS_SESSION_TOKEN
|
|
43
44
|
},
|
|
44
45
|
maxRetries: 3,
|
|
45
46
|
region: 'us-east-1',
|
|
@@ -169,4 +170,4 @@ export class Config {
|
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
172
|
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge2dldH0gZnJvbSAnQG5sYWJzL3V0aWxzL29iamVjdHMvZ2V0JztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJ0BubGFicy91dGlscy9vYmplY3RzL21lcmdlJztcbmltcG9ydCB7cmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge2pvaW59IGZyb20gJ3BhdGgnO1xuXG5jb25zdCBwYWNrYWdlSnNvblBhdGggPSBqb2luKHByb2Nlc3MuY3dkKCksICdwYWNrYWdlLmpzb24nKTtcbmNvbnN0IGFwcFBhY2thZ2UgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhwYWNrYWdlSnNvblBhdGgsICd1dGY4JykpO1xuXG5leHBvcnQgdHlwZSBBcmFuZ29EQkNvbmZpZyA9IFJlYWRvbmx5PHtcbiAgcmVhZG9ubHkgZGF0YWJhc2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGR1bXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhc3N3b3JkPzogc3RyaW5nO1xuICByZWFkb25seSBwb3J0Pzogc3RyaW5nO1xuICByZWFkb25seSByZXN0b3JlPzogc3RyaW5nO1xuICByZWFkb25seSB1cmw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xufT47XG5cbmV4cG9ydCB0eXBlIEFwcENvbmZpZyA9IFJlYWRvbmx5PHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogYW55O1xuICByZWFkb25seSBkZXRhaWxzPzogQXBwRGV0YWlscztcbiAgcmVhZG9ubHkgYXJhbmdvZGI/OiBBcmFuZ29EQkNvbmZpZztcbiAgcmVhZG9ubHkgYXdzPzogQXdzQ29uZmlnO1xuICByZWFkb25seSBnaXBoeT86IG9iamVjdDtcbiAgcmVhZG9ubHkgZ29vZ2xlPzogb2JqZWN0O1xuICByZWFkb25seSBoaWdnc2ZpZWxkPzogSGlnZ3NmaWVsZENvbmZpZztcbiAgcmVhZG9ubHkgaW1hZ2U/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IHN0cmlwZT86IG9iamVjdDtcbiAgcmVhZG9ubHkgdHdpbGlvPzogb2JqZWN0O1xufT47XG5cbmV4cG9ydCB0eXBlIEFwcERldGFpbHMgPSBSZWFkb25seTx7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSBsb2NhbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN1cHBvcnRFbWFpbD86IHN0cmluZztcbiAgcmVhZG9ubHkgc3VwcG9ydE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbn0+O1xuXG5leHBvcnQgdHlwZSBBd3NDb25maWcgPSBSZWFkb25seTx7XG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxzPzoge1xuICAgIHJlYWRvbmx5IGFjY2Vzc0tleUlkPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHNlY3JldEFjY2Vzc0tleT86IHN0cmluZztcbiAgICByZWFkb25seSBzZXNzaW9uVG9rZW4/OiBzdHJpbmc7XG4gIH07XG4gIHJlYWRvbmx5IG1heFJldHJpZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgcnVtPzoge1xuICAgIHJlYWRvbmx5IGFwcE1vbml0b3JzPzogUmVjb3JkPHN0cmluZywgQXdzUnVtQXBwTW9uaXRvckNvbmZpZyB8IHN0cmluZz47XG4gIH07XG4gIHJlYWRvbmx5IHMzPzoge1xuICAgIHJlYWRvbmx5IEJ1Y2tldD86IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgc2lnbmF0dXJlVmVyc2lvbj86IHN0cmluZztcbn0+O1xuXG5leHBvcnQgdHlwZSBBd3NSdW1BcHBNb25pdG9yQ29uZmlnID0gUmVhZG9ubHk8e1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcbiAgcmVhZG9ubHkgZG9tYWluPzogc3RyaW5nO1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xufT47XG5cbmV4cG9ydCB0eXBlIEVudkNvbmZpZyA9IFJlYWRvbmx5PHtcbiAgcmVhZG9ubHkgbG9jYWw6IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgZGV2ZWxvcG1lbnQ6IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgcHJvZHVjdGlvbjogQXBwQ29uZmlnO1xuICByZWFkb25seSB0ZXN0OiBBcHBDb25maWc7XG59PjtcblxuZXhwb3J0IHR5cGUgR29vZ2xlQ29uZmlnID0gUmVhZG9ubHk8e1xuICByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbn0+O1xuXG5leHBvcnQgdHlwZSBIaWdnc2ZpZWxkQ29uZmlnID0gUmVhZG9ubHk8e1xuICByZWFkb25seSBrZXlJZD86IHN0cmluZztcbiAgcmVhZG9ubHkga2V5U2VjcmV0Pzogc3RyaW5nO1xufT47XG5cbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICBwcml2YXRlIHN0YXRpYyB1cGRhdGVkQ29uZmlnID0gbnVsbDtcblxuICBzdGF0aWMgdmFsdWVzKCk6IEVudkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRldmVsb3BtZW50OiB7XG4gICAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgICAgZGF0YWJhc2U6IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFIHx8ICdyZWFrdG9yJyxcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUEFTU1dPUkQgfHwgJ3Bhc3N3b3JkJyxcbiAgICAgICAgICBwb3J0OiBwcm9jZXNzLmVudi5BUkFOR09EQl9QT1JUIHx8ICc4NTI5JyxcbiAgICAgICAgICB1cmw6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VSTCB8fCAnaHR0cDovL2xvY2FsaG9zdCcsXG4gICAgICAgICAgdXNlcm5hbWU6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VTRVJOQU1FIHx8ICdyb290J1xuICAgICAgICB9LFxuICAgICAgICBhd3M6IHtcbiAgICAgICAgICBzMzoge1xuICAgICAgICAgICAgQnVja2V0OiAnZGV2LnJlYWt0b3IuaW8nXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnb29nbGU6IHtcbiAgICAgICAgICBrZXk6IHByb2Nlc3MuZW52LkdPT0dMRV9BUElfS0VZXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsb2NhbDoge1xuICAgICAgICBhcmFuZ29kYjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAncmVha3RvcicsXG4gICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BBU1NXT1JEIHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgcG9ydDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVCB8fCAnODUyOScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgYXdzOiB7XG4gICAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgIGFjY2Vzc0tleUlkOiBwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCxcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleTogcHJvY2Vzcy5lbnYuQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtYXhSZXRyaWVzOiAzLFxuICAgICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgICAgczM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogJ2Rldi5yZWFrdG9yLmlvJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2lnbmF0dXJlVmVyc2lvbjogJ3Y0J1xuICAgICAgICB9LFxuICAgICAgICBkZXRhaWxzOiB7XG4gICAgICAgICAgaWQ6ICdyZWFrdG9yJyxcbiAgICAgICAgICBsb2NhbGU6ICdlbi1VUycsXG4gICAgICAgICAgbmFtZTogJ1JlYWt0b3InLFxuICAgICAgICAgIHN1cHBvcnRFbWFpbDogJ3N1cHBvcnRAcmVha3Rvci5pbycsXG4gICAgICAgICAgc3VwcG9ydE5hbWU6ICdSZWFrdG9yIFN1cHBvcnQnLFxuICAgICAgICAgIHVybDogJ3JlYWt0b3IuaW8nLFxuICAgICAgICAgIHZlcnNpb246IGFwcFBhY2thZ2UudmVyc2lvblxuICAgICAgICB9LFxuICAgICAgICBnaXBoeToge1xuICAgICAgICAgIGtleTogcHJvY2Vzcy5lbnYuR0lQSFlfS0VZXG4gICAgICAgIH0sXG4gICAgICAgIGdvb2dsZToge1xuICAgICAgICAgIGFuYWx5dGljczoge1xuICAgICAgICAgICAgYWNjb3VudElkOiAnNzgxNTg3MTcnLFxuICAgICAgICAgICAgdHJhY2tpbmdJZDogJ1VBLTc4MTU4NzE3LTEnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZW9jb2RlOiB7XG4gICAgICAgICAgICBrZXk6IHByb2Nlc3MuZW52LkdPT0dMRV9HRU9DT0RFX0tFWSxcbiAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9nZW9jb2RlL2pzb24nXG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXk6IHByb2Nlc3MuZW52LkdPT0dMRV9BUElfS0VZXG4gICAgICAgIH0sXG4gICAgICAgIGhpZ2dzZmllbGQ6IHtcbiAgICAgICAgICBrZXlJZDogcHJvY2Vzcy5lbnYuSElHR1NGSUVMRF9LRVlfSUQsXG4gICAgICAgICAga2V5U2VjcmV0OiBwcm9jZXNzLmVudi5ISUdHU0ZJRUxEX0tFWV9TRUNSRVRcbiAgICAgICAgfSxcbiAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICBpbWdRdWFsaXR5OiA5MCxcbiAgICAgICAgICBpbWdTaXplOiAxNTAwLFxuICAgICAgICAgIHRobVF1YWxpdHk6IDgwLFxuICAgICAgICAgIHRobVNpemU6IDE1MFxuICAgICAgICB9LFxuICAgICAgICBzdHJpcGU6IHtcbiAgICAgICAgICB0b2tlbjogcHJvY2Vzcy5lbnYuU1RSSVBFX1RPS0VOXG4gICAgICAgIH0sXG4gICAgICAgIHR3aWxpbzoge1xuICAgICAgICAgIG51bWJlcjogcHJvY2Vzcy5lbnYuVFdJTElPX05VTUJFUixcbiAgICAgICAgICBzaWQ6IHByb2Nlc3MuZW52LlRXSUxJT19TSUQsXG4gICAgICAgICAgdG9rZW46IHByb2Nlc3MuZW52LlRXSUxJT19UT0tFTlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcHJvZHVjdGlvbjoge1xuICAgICAgICBhcmFuZ29kYjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAncmVha3RvcicsXG4gICAgICAgICAgZHVtcDogJy91c3IvYmluL2FyYW5nb2R1bXAnLFxuICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5BUkFOR09EQl9QQVNTV09SRCB8fCAncGFzc3dvcmQnLFxuICAgICAgICAgIHBvcnQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BPUlQgfHwgJzg1MjknLFxuICAgICAgICAgIHJlc3RvcmU6ICcvdXNyL2Jpbi9hcmFuZ29yZXN0b3JlJyxcbiAgICAgICAgICB1cmw6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VSTCB8fCAnaHR0cDovL2xvY2FsaG9zdCcsXG4gICAgICAgICAgdXNlcm5hbWU6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VTRVJOQU1FIHx8ICdyb290J1xuICAgICAgICB9LFxuICAgICAgICBhd3M6IHtcbiAgICAgICAgICBzMzoge1xuICAgICAgICAgICAgQnVja2V0OiAnYm94LnJlYWt0b3IuaW8nXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnb29nbGU6IHtcbiAgICAgICAgICBrZXk6IHByb2Nlc3MuZW52LkdPT0dMRV9BUElfS0VZXG4gICAgICAgIH0sXG4gICAgICAgIGhpZ2dzZmllbGQ6IHtcbiAgICAgICAgICBrZXlJZDogcHJvY2Vzcy5lbnYuSElHR1NGSUVMRF9LRVlfSUQsXG4gICAgICAgICAga2V5U2VjcmV0OiBwcm9jZXNzLmVudi5ISUdHU0ZJRUxEX0tFWV9TRUNSRVRcbiAgICAgICAgfSxcbiAgICAgICAgc3RyaXBlOiB7XG4gICAgICAgICAgdG9rZW46IHByb2Nlc3MuZW52LlNUUklQRV9UT0tFTlxuICAgICAgICB9LFxuICAgICAgICB0d2lsaW86IHtcbiAgICAgICAgICBudW1iZXI6IHByb2Nlc3MuZW52LlRXSUxJT19OVU1CRVIsXG4gICAgICAgICAgc2lkOiBwcm9jZXNzLmVudi5UV0lMSU9fU0lELFxuICAgICAgICAgIHRva2VuOiBwcm9jZXNzLmVudi5UV0lMSU9fVE9LRU5cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRlc3Q6IHtcbiAgICAgICAgYXJhbmdvZGI6IHtcbiAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJ3JlYWt0b3ItdGVzdCcsXG4gICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BBU1NXT1JEIHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgcG9ydDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVCB8fCAnODUyOScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgIGlkOiAncmVha3Rvci10ZXN0JyxcbiAgICAgICAgICBsb2NhbGU6ICdlbi1VUycsXG4gICAgICAgICAgbmFtZTogJ1JlYWt0b3IgVGVzdCcsXG4gICAgICAgICAgc3VwcG9ydEVtYWlsOiAnc3VwcG9ydEByZWFrdG9yLmlvJyxcbiAgICAgICAgICB1cmw6ICdyZWFrdG9yLmlvJyxcbiAgICAgICAgICB2ZXJzaW9uOiBhcHBQYWNrYWdlLnZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgc2V0KG92ZXJyaWRlOiBvYmplY3QsIGVudmlyb25tZW50Pzogc3RyaW5nKTogb2JqZWN0IHtcbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gdGhpcy5nZXQoKTtcbiAgICBjb25zdCB0YXJnZXRFbnZpcm9ubWVudCA9IGVudmlyb25tZW50IHx8IHByb2Nlc3MuZW52LnN0YWdlIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdsb2NhbCc7XG5cbiAgICBpZihvdmVycmlkZVt0YXJnZXRFbnZpcm9ubWVudF0pIHtcbiAgICAgIHRoaXMudXBkYXRlZENvbmZpZyA9IG1lcmdlKHt9LCBjdXJyZW50Q29uZmlnLCBvdmVycmlkZVt0YXJnZXRFbnZpcm9ubWVudF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZWRDb25maWcgPSBtZXJnZSh7fSwgY3VycmVudENvbmZpZywgb3ZlcnJpZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7Li4uKHRoaXMudXBkYXRlZENvbmZpZyBhcyB1bmtub3duIGFzIG9iamVjdCl9O1xuICB9XG5cbiAgc3RhdGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlZENvbmZpZyA9IG51bGw7XG4gIH1cblxuXG4gIHN0YXRpYyBnZXQ8VCA9IGFueT4ocGF0aD86IHN0cmluZyB8IHN0cmluZ1tdLCBkZWZhdWx0VmFsdWU/OiBUKTogVCB7XG4gICAgY29uc3QgYmFzZUNvbmZpZyA9IHRoaXMudXBkYXRlZENvbmZpZyB8fCB0aGlzLnZhbHVlcygpO1xuICAgIGNvbnN0IGVudmlyb25tZW50ID0gcHJvY2Vzcy5lbnYuc3RhZ2UgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ2xvY2FsJztcblxuICAgIGlmKHRoaXMudXBkYXRlZENvbmZpZykge1xuICAgICAgY29uc3Qgb3ZlcnJpZGVFbnZpcm9ubWVudENvbmZpZyA9IHRoaXMudXBkYXRlZENvbmZpZ1tlbnZpcm9ubWVudF0gfHwge307XG4gICAgICBjb25zdCBjb25maWcgPSBtZXJnZSh7fSwgYmFzZUNvbmZpZywgb3ZlcnJpZGVFbnZpcm9ubWVudENvbmZpZyk7XG5cbiAgICAgIHJldHVybiBwYXRoID8gZ2V0KGNvbmZpZywgcGF0aCwgZGVmYXVsdFZhbHVlKSA6IGNvbmZpZztcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhbENvbmZpZyA9IGJhc2VDb25maWcubG9jYWw7XG4gICAgY29uc3QgY29uZmlnID0gbWVyZ2Uoe30sIGxvY2FsQ29uZmlnLCBiYXNlQ29uZmlnW2Vudmlyb25tZW50XSB8fCB7fSk7XG5cbiAgICByZXR1cm4gcGF0aCA/IGdldChjb25maWcsIHBhdGgsIGRlZmF1bHRWYWx1ZSkgOiBjb25maWc7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJnZXQiLCJtZXJnZSIsInJlYWRGaWxlU3luYyIsImpvaW4iLCJwYWNrYWdlSnNvblBhdGgiLCJwcm9jZXNzIiwiY3dkIiwiYXBwUGFja2FnZSIsIkpTT04iLCJwYXJzZSIsIkNvbmZpZyIsInVwZGF0ZWRDb25maWciLCJ2YWx1ZXMiLCJkZXZlbG9wbWVudCIsImFyYW5nb2RiIiwiZGF0YWJhc2UiLCJlbnYiLCJBUkFOR09EQl9EQVRBQkFTRSIsInBhc3N3b3JkIiwiQVJBTkdPREJfUEFTU1dPUkQiLCJwb3J0IiwiQVJBTkdPREJfUE9SVCIsInVybCIsIkFSQU5HT0RCX1VSTCIsInVzZXJuYW1lIiwiQVJBTkdPREJfVVNFUk5BTUUiLCJhd3MiLCJzMyIsIkJ1Y2tldCIsImdvb2dsZSIsImtleSIsIkdPT0dMRV9BUElfS0VZIiwibG9jYWwiLCJjcmVkZW50aWFscyIsImFjY2Vzc0tleUlkIiwiQVdTX0FDQ0VTU19LRVlfSUQiLCJzZWNyZXRBY2Nlc3NLZXkiLCJBV1NfU0VDUkVUX0FDQ0VTU19LRVkiLCJtYXhSZXRyaWVzIiwicmVnaW9uIiwic2lnbmF0dXJlVmVyc2lvbiIsImRldGFpbHMiLCJpZCIsImxvY2FsZSIsIm5hbWUiLCJzdXBwb3J0RW1haWwiLCJzdXBwb3J0TmFtZSIsInZlcnNpb24iLCJnaXBoeSIsIkdJUEhZX0tFWSIsImFuYWx5dGljcyIsImFjY291bnRJZCIsInRyYWNraW5nSWQiLCJnZW9jb2RlIiwiR09PR0xFX0dFT0NPREVfS0VZIiwiaGlnZ3NmaWVsZCIsImtleUlkIiwiSElHR1NGSUVMRF9LRVlfSUQiLCJrZXlTZWNyZXQiLCJISUdHU0ZJRUxEX0tFWV9TRUNSRVQiLCJpbWFnZSIsImltZ1F1YWxpdHkiLCJpbWdTaXplIiwidGhtUXVhbGl0eSIsInRobVNpemUiLCJzdHJpcGUiLCJ0b2tlbiIsIlNUUklQRV9UT0tFTiIsInR3aWxpbyIsIm51bWJlciIsIlRXSUxJT19OVU1CRVIiLCJzaWQiLCJUV0lMSU9fU0lEIiwiVFdJTElPX1RPS0VOIiwicHJvZHVjdGlvbiIsImR1bXAiLCJyZXN0b3JlIiwidGVzdCIsInNldCIsIm92ZXJyaWRlIiwiZW52aXJvbm1lbnQiLCJjdXJyZW50Q29uZmlnIiwidGFyZ2V0RW52aXJvbm1lbnQiLCJzdGFnZSIsIk5PREVfRU5WIiwicmVzZXQiLCJwYXRoIiwiZGVmYXVsdFZhbHVlIiwiYmFzZUNvbmZpZyIsIm92ZXJyaWRlRW52aXJvbm1lbnRDb25maWciLCJjb25maWciLCJsb2NhbENvbmZpZyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsR0FBRyxRQUFPLDJCQUEyQjtBQUM3QyxTQUFRQyxLQUFLLFFB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
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQge2dldH0gZnJvbSAnQG5sYWJzL3V0aWxzL29iamVjdHMvZ2V0JztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJ0BubGFicy91dGlscy9vYmplY3RzL21lcmdlJztcbmltcG9ydCB7cmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge2pvaW59IGZyb20gJ3BhdGgnO1xuXG5jb25zdCBwYWNrYWdlSnNvblBhdGggPSBqb2luKHByb2Nlc3MuY3dkKCksICdwYWNrYWdlLmpzb24nKTtcbmNvbnN0IGFwcFBhY2thZ2UgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhwYWNrYWdlSnNvblBhdGgsICd1dGY4JykpO1xuXG5leHBvcnQgdHlwZSBBcmFuZ29EQkNvbmZpZyA9IFJlYWRvbmx5PHtcbiAgcmVhZG9ubHkgZGF0YWJhc2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGR1bXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhc3N3b3JkPzogc3RyaW5nO1xuICByZWFkb25seSBwb3J0Pzogc3RyaW5nO1xuICByZWFkb25seSByZXN0b3JlPzogc3RyaW5nO1xuICByZWFkb25seSB1cmw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xufT47XG5cbmV4cG9ydCB0eXBlIEFwcENvbmZpZyA9IFJlYWRvbmx5PHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogYW55O1xuICByZWFkb25seSBkZXRhaWxzPzogQXBwRGV0YWlscztcbiAgcmVhZG9ubHkgYXJhbmdvZGI/OiBBcmFuZ29EQkNvbmZpZztcbiAgcmVhZG9ubHkgYXdzPzogQXdzQ29uZmlnO1xuICByZWFkb25seSBnaXBoeT86IG9iamVjdDtcbiAgcmVhZG9ubHkgZ29vZ2xlPzogb2JqZWN0O1xuICByZWFkb25seSBoaWdnc2ZpZWxkPzogSGlnZ3NmaWVsZENvbmZpZztcbiAgcmVhZG9ubHkgaW1hZ2U/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IHN0cmlwZT86IG9iamVjdDtcbiAgcmVhZG9ubHkgdHdpbGlvPzogb2JqZWN0O1xufT47XG5cbmV4cG9ydCB0eXBlIEFwcERldGFpbHMgPSBSZWFkb25seTx7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSBsb2NhbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN1cHBvcnRFbWFpbD86IHN0cmluZztcbiAgcmVhZG9ubHkgc3VwcG9ydE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVybD86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbn0+O1xuXG5leHBvcnQgdHlwZSBBd3NDb25maWcgPSBSZWFkb25seTx7XG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxzPzoge1xuICAgIHJlYWRvbmx5IGFjY2Vzc0tleUlkPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHNlY3JldEFjY2Vzc0tleT86IHN0cmluZztcbiAgICByZWFkb25seSBzZXNzaW9uVG9rZW4/OiBzdHJpbmc7XG4gIH07XG4gIHJlYWRvbmx5IG1heFJldHJpZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgcnVtPzoge1xuICAgIHJlYWRvbmx5IGFwcE1vbml0b3JzPzogUmVjb3JkPHN0cmluZywgQXdzUnVtQXBwTW9uaXRvckNvbmZpZyB8IHN0cmluZz47XG4gIH07XG4gIHJlYWRvbmx5IHMzPzoge1xuICAgIHJlYWRvbmx5IEJ1Y2tldD86IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgc2lnbmF0dXJlVmVyc2lvbj86IHN0cmluZztcbn0+O1xuXG5leHBvcnQgdHlwZSBBd3NSdW1BcHBNb25pdG9yQ29uZmlnID0gUmVhZG9ubHk8e1xuICByZWFkb25seSBhbGlhcz86IHN0cmluZztcbiAgcmVhZG9ubHkgZG9tYWluPzogc3RyaW5nO1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xufT47XG5cbmV4cG9ydCB0eXBlIEVudkNvbmZpZyA9IFJlYWRvbmx5PHtcbiAgcmVhZG9ubHkgbG9jYWw6IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgZGV2ZWxvcG1lbnQ6IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgcHJvZHVjdGlvbjogQXBwQ29uZmlnO1xuICByZWFkb25seSB0ZXN0OiBBcHBDb25maWc7XG59PjtcblxuZXhwb3J0IHR5cGUgR29vZ2xlQ29uZmlnID0gUmVhZG9ubHk8e1xuICByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbn0+O1xuXG5leHBvcnQgdHlwZSBIaWdnc2ZpZWxkQ29uZmlnID0gUmVhZG9ubHk8e1xuICByZWFkb25seSBrZXlJZD86IHN0cmluZztcbiAgcmVhZG9ubHkga2V5U2VjcmV0Pzogc3RyaW5nO1xufT47XG5cbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICBwcml2YXRlIHN0YXRpYyB1cGRhdGVkQ29uZmlnID0gbnVsbDtcblxuICBzdGF0aWMgdmFsdWVzKCk6IEVudkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRldmVsb3BtZW50OiB7XG4gICAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgICAgZGF0YWJhc2U6IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFIHx8ICdyZWFrdG9yJyxcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUEFTU1dPUkQgfHwgJ3Bhc3N3b3JkJyxcbiAgICAgICAgICBwb3J0OiBwcm9jZXNzLmVudi5BUkFOR09EQl9QT1JUIHx8ICc4NTI5JyxcbiAgICAgICAgICB1cmw6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VSTCB8fCAnaHR0cDovL2xvY2FsaG9zdCcsXG4gICAgICAgICAgdXNlcm5hbWU6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VTRVJOQU1FIHx8ICdyb290J1xuICAgICAgICB9LFxuICAgICAgICBhd3M6IHtcbiAgICAgICAgICBzMzoge1xuICAgICAgICAgICAgQnVja2V0OiAnZGV2LnJlYWt0b3IuaW8nXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnb29nbGU6IHtcbiAgICAgICAgICBrZXk6IHByb2Nlc3MuZW52LkdPT0dMRV9BUElfS0VZXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsb2NhbDoge1xuICAgICAgICBhcmFuZ29kYjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAncmVha3RvcicsXG4gICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BBU1NXT1JEIHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgcG9ydDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVCB8fCAnODUyOScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgYXdzOiB7XG4gICAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgIGFjY2Vzc0tleUlkOiBwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCxcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleTogcHJvY2Vzcy5lbnYuQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZLFxuICAgICAgICAgICAgc2Vzc2lvblRva2VuOiBwcm9jZXNzLmVudi5BV1NfU0VTU0lPTl9UT0tFTlxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWF4UmV0cmllczogMyxcbiAgICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICAgIHMzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6ICdkZXYucmVha3Rvci5pbydcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNpZ25hdHVyZVZlcnNpb246ICd2NCdcbiAgICAgICAgfSxcbiAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgIGlkOiAncmVha3RvcicsXG4gICAgICAgICAgbG9jYWxlOiAnZW4tVVMnLFxuICAgICAgICAgIG5hbWU6ICdSZWFrdG9yJyxcbiAgICAgICAgICBzdXBwb3J0RW1haWw6ICdzdXBwb3J0QHJlYWt0b3IuaW8nLFxuICAgICAgICAgIHN1cHBvcnROYW1lOiAnUmVha3RvciBTdXBwb3J0JyxcbiAgICAgICAgICB1cmw6ICdyZWFrdG9yLmlvJyxcbiAgICAgICAgICB2ZXJzaW9uOiBhcHBQYWNrYWdlLnZlcnNpb25cbiAgICAgICAgfSxcbiAgICAgICAgZ2lwaHk6IHtcbiAgICAgICAgICBrZXk6IHByb2Nlc3MuZW52LkdJUEhZX0tFWVxuICAgICAgICB9LFxuICAgICAgICBnb29nbGU6IHtcbiAgICAgICAgICBhbmFseXRpY3M6IHtcbiAgICAgICAgICAgIGFjY291bnRJZDogJzc4MTU4NzE3JyxcbiAgICAgICAgICAgIHRyYWNraW5nSWQ6ICdVQS03ODE1ODcxNy0xJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VvY29kZToge1xuICAgICAgICAgICAga2V5OiBwcm9jZXNzLmVudi5HT09HTEVfR0VPQ09ERV9LRVksXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvZ2VvY29kZS9qc29uJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2V5OiBwcm9jZXNzLmVudi5HT09HTEVfQVBJX0tFWVxuICAgICAgICB9LFxuICAgICAgICBoaWdnc2ZpZWxkOiB7XG4gICAgICAgICAga2V5SWQ6IHByb2Nlc3MuZW52LkhJR0dTRklFTERfS0VZX0lELFxuICAgICAgICAgIGtleVNlY3JldDogcHJvY2Vzcy5lbnYuSElHR1NGSUVMRF9LRVlfU0VDUkVUXG4gICAgICAgIH0sXG4gICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgaW1nUXVhbGl0eTogOTAsXG4gICAgICAgICAgaW1nU2l6ZTogMTUwMCxcbiAgICAgICAgICB0aG1RdWFsaXR5OiA4MCxcbiAgICAgICAgICB0aG1TaXplOiAxNTBcbiAgICAgICAgfSxcbiAgICAgICAgc3RyaXBlOiB7XG4gICAgICAgICAgdG9rZW46IHByb2Nlc3MuZW52LlNUUklQRV9UT0tFTlxuICAgICAgICB9LFxuICAgICAgICB0d2lsaW86IHtcbiAgICAgICAgICBudW1iZXI6IHByb2Nlc3MuZW52LlRXSUxJT19OVU1CRVIsXG4gICAgICAgICAgc2lkOiBwcm9jZXNzLmVudi5UV0lMSU9fU0lELFxuICAgICAgICAgIHRva2VuOiBwcm9jZXNzLmVudi5UV0lMSU9fVE9LRU5cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHByb2R1Y3Rpb246IHtcbiAgICAgICAgYXJhbmdvZGI6IHtcbiAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJ3JlYWt0b3InLFxuICAgICAgICAgIGR1bXA6ICcvdXNyL2Jpbi9hcmFuZ29kdW1wJyxcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUEFTU1dPUkQgfHwgJ3Bhc3N3b3JkJyxcbiAgICAgICAgICBwb3J0OiBwcm9jZXNzLmVudi5BUkFOR09EQl9QT1JUIHx8ICc4NTI5JyxcbiAgICAgICAgICByZXN0b3JlOiAnL3Vzci9iaW4vYXJhbmdvcmVzdG9yZScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgYXdzOiB7XG4gICAgICAgICAgczM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogJ2JveC5yZWFrdG9yLmlvJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ29vZ2xlOiB7XG4gICAgICAgICAga2V5OiBwcm9jZXNzLmVudi5HT09HTEVfQVBJX0tFWVxuICAgICAgICB9LFxuICAgICAgICBoaWdnc2ZpZWxkOiB7XG4gICAgICAgICAga2V5SWQ6IHByb2Nlc3MuZW52LkhJR0dTRklFTERfS0VZX0lELFxuICAgICAgICAgIGtleVNlY3JldDogcHJvY2Vzcy5lbnYuSElHR1NGSUVMRF9LRVlfU0VDUkVUXG4gICAgICAgIH0sXG4gICAgICAgIHN0cmlwZToge1xuICAgICAgICAgIHRva2VuOiBwcm9jZXNzLmVudi5TVFJJUEVfVE9LRU5cbiAgICAgICAgfSxcbiAgICAgICAgdHdpbGlvOiB7XG4gICAgICAgICAgbnVtYmVyOiBwcm9jZXNzLmVudi5UV0lMSU9fTlVNQkVSLFxuICAgICAgICAgIHNpZDogcHJvY2Vzcy5lbnYuVFdJTElPX1NJRCxcbiAgICAgICAgICB0b2tlbjogcHJvY2Vzcy5lbnYuVFdJTElPX1RPS0VOXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0ZXN0OiB7XG4gICAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgICAgZGF0YWJhc2U6IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFIHx8ICdyZWFrdG9yLXRlc3QnLFxuICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5BUkFOR09EQl9QQVNTV09SRCB8fCAncGFzc3dvcmQnLFxuICAgICAgICAgIHBvcnQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BPUlQgfHwgJzg1MjknLFxuICAgICAgICAgIHVybDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfVVJMIHx8ICdodHRwOi8vbG9jYWxob3N0JyxcbiAgICAgICAgICB1c2VybmFtZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfVVNFUk5BTUUgfHwgJ3Jvb3QnXG4gICAgICAgIH0sXG4gICAgICAgIGRldGFpbHM6IHtcbiAgICAgICAgICBpZDogJ3JlYWt0b3ItdGVzdCcsXG4gICAgICAgICAgbG9jYWxlOiAnZW4tVVMnLFxuICAgICAgICAgIG5hbWU6ICdSZWFrdG9yIFRlc3QnLFxuICAgICAgICAgIHN1cHBvcnRFbWFpbDogJ3N1cHBvcnRAcmVha3Rvci5pbycsXG4gICAgICAgICAgdXJsOiAncmVha3Rvci5pbycsXG4gICAgICAgICAgdmVyc2lvbjogYXBwUGFja2FnZS52ZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIHNldChvdmVycmlkZTogb2JqZWN0LCBlbnZpcm9ubWVudD86IHN0cmluZyk6IG9iamVjdCB7XG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IHRoaXMuZ2V0KCk7XG4gICAgY29uc3QgdGFyZ2V0RW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudCB8fCBwcm9jZXNzLmVudi5zdGFnZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViB8fCAnbG9jYWwnO1xuXG4gICAgaWYob3ZlcnJpZGVbdGFyZ2V0RW52aXJvbm1lbnRdKSB7XG4gICAgICB0aGlzLnVwZGF0ZWRDb25maWcgPSBtZXJnZSh7fSwgY3VycmVudENvbmZpZywgb3ZlcnJpZGVbdGFyZ2V0RW52aXJvbm1lbnRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVkQ29uZmlnID0gbWVyZ2Uoe30sIGN1cnJlbnRDb25maWcsIG92ZXJyaWRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gey4uLih0aGlzLnVwZGF0ZWRDb25maWcgYXMgdW5rbm93biBhcyBvYmplY3QpfTtcbiAgfVxuXG4gIHN0YXRpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZWRDb25maWcgPSBudWxsO1xuICB9XG5cblxuICBzdGF0aWMgZ2V0PFQgPSBhbnk+KHBhdGg/OiBzdHJpbmcgfCBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlPzogVCk6IFQge1xuICAgIGNvbnN0IGJhc2VDb25maWcgPSB0aGlzLnVwZGF0ZWRDb25maWcgfHwgdGhpcy52YWx1ZXMoKTtcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IHByb2Nlc3MuZW52LnN0YWdlIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdsb2NhbCc7XG5cbiAgICBpZih0aGlzLnVwZGF0ZWRDb25maWcpIHtcbiAgICAgIGNvbnN0IG92ZXJyaWRlRW52aXJvbm1lbnRDb25maWcgPSB0aGlzLnVwZGF0ZWRDb25maWdbZW52aXJvbm1lbnRdIHx8IHt9O1xuICAgICAgY29uc3QgY29uZmlnID0gbWVyZ2Uoe30sIGJhc2VDb25maWcsIG92ZXJyaWRlRW52aXJvbm1lbnRDb25maWcpO1xuXG4gICAgICByZXR1cm4gcGF0aCA/IGdldChjb25maWcsIHBhdGgsIGRlZmF1bHRWYWx1ZSkgOiBjb25maWc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxDb25maWcgPSBiYXNlQ29uZmlnLmxvY2FsO1xuICAgIGNvbnN0IGNvbmZpZyA9IG1lcmdlKHt9LCBsb2NhbENvbmZpZywgYmFzZUNvbmZpZ1tlbnZpcm9ubWVudF0gfHwge30pO1xuXG4gICAgcmV0dXJuIHBhdGggPyBnZXQoY29uZmlnLCBwYXRoLCBkZWZhdWx0VmFsdWUpIDogY29uZmlnO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZ2V0IiwibWVyZ2UiLCJyZWFkRmlsZVN5bmMiLCJqb2luIiwicGFja2FnZUpzb25QYXRoIiwicHJvY2VzcyIsImN3ZCIsImFwcFBhY2thZ2UiLCJKU09OIiwicGFyc2UiLCJDb25maWciLCJ1cGRhdGVkQ29uZmlnIiwidmFsdWVzIiwiZGV2ZWxvcG1lbnQiLCJhcmFuZ29kYiIsImRhdGFiYXNlIiwiZW52IiwiQVJBTkdPREJfREFUQUJBU0UiLCJwYXNzd29yZCIsIkFSQU5HT0RCX1BBU1NXT1JEIiwicG9ydCIsIkFSQU5HT0RCX1BPUlQiLCJ1cmwiLCJBUkFOR09EQl9VUkwiLCJ1c2VybmFtZSIsIkFSQU5HT0RCX1VTRVJOQU1FIiwiYXdzIiwiczMiLCJCdWNrZXQiLCJnb29nbGUiLCJrZXkiLCJHT09HTEVfQVBJX0tFWSIsImxvY2FsIiwiY3JlZGVudGlhbHMiLCJhY2Nlc3NLZXlJZCIsIkFXU19BQ0NFU1NfS0VZX0lEIiwic2VjcmV0QWNjZXNzS2V5IiwiQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIiwic2Vzc2lvblRva2VuIiwiQVdTX1NFU1NJT05fVE9LRU4iLCJtYXhSZXRyaWVzIiwicmVnaW9uIiwic2lnbmF0dXJlVmVyc2lvbiIsImRldGFpbHMiLCJpZCIsImxvY2FsZSIsIm5hbWUiLCJzdXBwb3J0RW1haWwiLCJzdXBwb3J0TmFtZSIsInZlcnNpb24iLCJnaXBoeSIsIkdJUEhZX0tFWSIsImFuYWx5dGljcyIsImFjY291bnRJZCIsInRyYWNraW5nSWQiLCJnZW9jb2RlIiwiR09PR0xFX0dFT0NPREVfS0VZIiwiaGlnZ3NmaWVsZCIsImtleUlkIiwiSElHR1NGSUVMRF9LRVlfSUQiLCJrZXlTZWNyZXQiLCJISUdHU0ZJRUxEX0tFWV9TRUNSRVQiLCJpbWFnZSIsImltZ1F1YWxpdHkiLCJpbWdTaXplIiwidGhtUXVhbGl0eSIsInRobVNpemUiLCJzdHJpcGUiLCJ0b2tlbiIsIlNUUklQRV9UT0tFTiIsInR3aWxpbyIsIm51bWJlciIsIlRXSUxJT19OVU1CRVIiLCJzaWQiLCJUV0lMSU9fU0lEIiwiVFdJTElPX1RPS0VOIiwicHJvZHVjdGlvbiIsImR1bXAiLCJyZXN0b3JlIiwidGVzdCIsInNldCIsIm92ZXJyaWRlIiwiZW52aXJvbm1lbnQiLCJjdXJyZW50Q29uZmlnIiwidGFyZ2V0RW52aXJvbm1lbnQiLCJzdGFnZSIsIk5PREVfRU5WIiwicmVzZXQiLCJwYXRoIiwiZGVmYXVsdFZhbHVlIiwiYmFzZUNvbmZpZyIsIm92ZXJyaWRlRW52aXJvbm1lbnRDb25maWciLCJj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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nlabs/reaktor",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0",
|
|
4
4
|
"description": "GraphQL and ArangoDB application platform for typed actions, authentication, billing, media, messaging, and realtime services.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|