payload 2.11.2 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/forms/field-types/RichText/types.d.ts +6 -1
- package/dist/admin/components/forms/field-types/RichText/types.d.ts.map +1 -1
- package/dist/admin/hooks/useThumbnail.js +2 -2
- package/dist/bin/generateTypes.js +2 -2
- package/dist/collections/config/types.d.ts +1 -1
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js +1 -1
- package/dist/exports/utilities.d.ts +1 -0
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/exports/utilities.js +5 -1
- package/dist/fields/config/schema.d.ts.map +1 -1
- package/dist/fields/config/schema.js +58 -50
- package/dist/fields/config/types.d.ts +8 -3
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js +1 -1
- package/dist/fields/validations.js +2 -2
- package/dist/globals/config/types.d.ts +1 -1
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/payload.d.ts.map +1 -1
- package/dist/payload.js +2 -3
- package/dist/preferences/operations/delete.d.ts.map +1 -1
- package/dist/preferences/operations/delete.js +1 -2
- package/dist/translations/nl.json +2 -2
- package/dist/uploads/canResizeImage.js +3 -2
- package/dist/uploads/generateFileData.js +2 -2
- package/dist/utilities/configToJSONSchema.d.ts +11 -4
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +65 -62
- package/dist/utilities/getCollectionIDFieldTypes.d.ts +13 -0
- package/dist/utilities/getCollectionIDFieldTypes.d.ts.map +1 -0
- package/dist/utilities/getCollectionIDFieldTypes.js +22 -0
- package/package.json +3 -2
- package/utilities.d.ts +1 -0
- package/utilities.js +5 -1
|
@@ -26,6 +26,7 @@ const _pluralize = require("pluralize");
|
|
|
26
26
|
const _types = require("../fields/config/types");
|
|
27
27
|
const _deepCopyObject = require("./deepCopyObject");
|
|
28
28
|
const _formatLabels = require("./formatLabels");
|
|
29
|
+
const _getCollectionIDFieldTypes = require("./getCollectionIDFieldTypes");
|
|
29
30
|
const fieldIsRequired = (field)=>{
|
|
30
31
|
const isConditional = Boolean(field?.admin && field?.admin?.condition);
|
|
31
32
|
if (isConditional) return false;
|
|
@@ -64,10 +65,10 @@ function generateEntitySchemas(entities) {
|
|
|
64
65
|
return acc;
|
|
65
66
|
}, {});
|
|
66
67
|
return {
|
|
68
|
+
type: 'object',
|
|
67
69
|
additionalProperties: false,
|
|
68
70
|
properties,
|
|
69
|
-
required: Object.keys(properties)
|
|
70
|
-
type: 'object'
|
|
71
|
+
required: Object.keys(properties)
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
74
|
function withNullableJSONSchemaType(fieldType, isRequired) {
|
|
@@ -78,9 +79,13 @@ function withNullableJSONSchemaType(fieldType, isRequired) {
|
|
|
78
79
|
fieldTypes.push('null');
|
|
79
80
|
return fieldTypes;
|
|
80
81
|
}
|
|
81
|
-
function fieldsToJSONSchema(
|
|
82
|
+
function fieldsToJSONSchema(/**
|
|
83
|
+
* Used for relationship fields, to determine whether to use a string or number type for the ID.
|
|
84
|
+
* While there is a default ID field type set by the db adapter, they can differ on a collection-level
|
|
85
|
+
* if they have custom ID fields.
|
|
86
|
+
*/ collectionIDFieldTypes, fields, /**
|
|
82
87
|
* Allows you to define new top-level interfaces that can be re-used in the output schema.
|
|
83
|
-
*/ interfaceNameDefinitions) {
|
|
88
|
+
*/ interfaceNameDefinitions, payload) {
|
|
84
89
|
const requiredFieldNames = new Set();
|
|
85
90
|
return {
|
|
86
91
|
properties: Object.fromEntries(fields.reduce((fieldSchemas, field)=>{
|
|
@@ -91,10 +96,10 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
91
96
|
case 'text':
|
|
92
97
|
if (field.hasMany === true) {
|
|
93
98
|
fieldSchema = {
|
|
99
|
+
type: withNullableJSONSchemaType('array', isRequired),
|
|
94
100
|
items: {
|
|
95
101
|
type: 'string'
|
|
96
|
-
}
|
|
97
|
-
type: withNullableJSONSchemaType('array', isRequired)
|
|
102
|
+
}
|
|
98
103
|
};
|
|
99
104
|
} else {
|
|
100
105
|
fieldSchema = {
|
|
@@ -116,10 +121,10 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
116
121
|
{
|
|
117
122
|
if (field.hasMany === true) {
|
|
118
123
|
fieldSchema = {
|
|
124
|
+
type: withNullableJSONSchemaType('array', isRequired),
|
|
119
125
|
items: {
|
|
120
126
|
type: 'number'
|
|
121
|
-
}
|
|
122
|
-
type: withNullableJSONSchemaType('array', isRequired)
|
|
127
|
+
}
|
|
123
128
|
};
|
|
124
129
|
} else {
|
|
125
130
|
fieldSchema = {
|
|
@@ -153,17 +158,19 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
153
158
|
{
|
|
154
159
|
if (field.editor.outputSchema) {
|
|
155
160
|
fieldSchema = field.editor.outputSchema({
|
|
161
|
+
collectionIDFieldTypes,
|
|
156
162
|
field,
|
|
157
163
|
interfaceNameDefinitions,
|
|
158
|
-
isRequired
|
|
164
|
+
isRequired,
|
|
165
|
+
payload
|
|
159
166
|
});
|
|
160
167
|
} else {
|
|
161
168
|
// Maintain backwards compatibility with existing rich text editors
|
|
162
169
|
fieldSchema = {
|
|
170
|
+
type: withNullableJSONSchemaType('array', isRequired),
|
|
163
171
|
items: {
|
|
164
172
|
type: 'object'
|
|
165
|
-
}
|
|
166
|
-
type: withNullableJSONSchemaType('array', isRequired)
|
|
173
|
+
}
|
|
167
174
|
};
|
|
168
175
|
}
|
|
169
176
|
break;
|
|
@@ -171,8 +178,8 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
171
178
|
case 'radio':
|
|
172
179
|
{
|
|
173
180
|
fieldSchema = {
|
|
174
|
-
|
|
175
|
-
|
|
181
|
+
type: withNullableJSONSchemaType('string', isRequired),
|
|
182
|
+
enum: buildOptionEnums(field.options)
|
|
176
183
|
};
|
|
177
184
|
break;
|
|
178
185
|
}
|
|
@@ -181,16 +188,16 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
181
188
|
const optionEnums = buildOptionEnums(field.options);
|
|
182
189
|
if (field.hasMany) {
|
|
183
190
|
fieldSchema = {
|
|
191
|
+
type: withNullableJSONSchemaType('array', isRequired),
|
|
184
192
|
items: {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}
|
|
188
|
-
type: withNullableJSONSchemaType('array', isRequired)
|
|
193
|
+
type: 'string',
|
|
194
|
+
enum: optionEnums
|
|
195
|
+
}
|
|
189
196
|
};
|
|
190
197
|
} else {
|
|
191
198
|
fieldSchema = {
|
|
192
|
-
|
|
193
|
-
|
|
199
|
+
type: withNullableJSONSchemaType('string', isRequired),
|
|
200
|
+
enum: optionEnums
|
|
194
201
|
};
|
|
195
202
|
}
|
|
196
203
|
break;
|
|
@@ -198,6 +205,7 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
198
205
|
case 'point':
|
|
199
206
|
{
|
|
200
207
|
fieldSchema = {
|
|
208
|
+
type: withNullableJSONSchemaType('array', isRequired),
|
|
201
209
|
items: [
|
|
202
210
|
{
|
|
203
211
|
type: 'number'
|
|
@@ -207,8 +215,7 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
207
215
|
}
|
|
208
216
|
],
|
|
209
217
|
maxItems: 2,
|
|
210
|
-
minItems: 2
|
|
211
|
-
type: withNullableJSONSchemaType('array', isRequired)
|
|
218
|
+
minItems: 2
|
|
212
219
|
};
|
|
213
220
|
break;
|
|
214
221
|
}
|
|
@@ -217,9 +224,11 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
217
224
|
if (Array.isArray(field.relationTo)) {
|
|
218
225
|
if (field.hasMany) {
|
|
219
226
|
fieldSchema = {
|
|
227
|
+
type: withNullableJSONSchemaType('array', isRequired),
|
|
220
228
|
items: {
|
|
221
229
|
oneOf: field.relationTo.map((relation)=>{
|
|
222
230
|
return {
|
|
231
|
+
type: 'object',
|
|
223
232
|
additionalProperties: false,
|
|
224
233
|
properties: {
|
|
225
234
|
relationTo: {
|
|
@@ -239,17 +248,16 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
239
248
|
required: [
|
|
240
249
|
'value',
|
|
241
250
|
'relationTo'
|
|
242
|
-
]
|
|
243
|
-
type: 'object'
|
|
251
|
+
]
|
|
244
252
|
};
|
|
245
253
|
})
|
|
246
|
-
}
|
|
247
|
-
type: withNullableJSONSchemaType('array', isRequired)
|
|
254
|
+
}
|
|
248
255
|
};
|
|
249
256
|
} else {
|
|
250
257
|
fieldSchema = {
|
|
251
258
|
oneOf: field.relationTo.map((relation)=>{
|
|
252
259
|
return {
|
|
260
|
+
type: withNullableJSONSchemaType('object', isRequired),
|
|
253
261
|
additionalProperties: false,
|
|
254
262
|
properties: {
|
|
255
263
|
relationTo: {
|
|
@@ -269,14 +277,14 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
269
277
|
required: [
|
|
270
278
|
'value',
|
|
271
279
|
'relationTo'
|
|
272
|
-
]
|
|
273
|
-
type: withNullableJSONSchemaType('object', isRequired)
|
|
280
|
+
]
|
|
274
281
|
};
|
|
275
282
|
})
|
|
276
283
|
};
|
|
277
284
|
}
|
|
278
285
|
} else if (field.hasMany) {
|
|
279
286
|
fieldSchema = {
|
|
287
|
+
type: withNullableJSONSchemaType('array', isRequired),
|
|
280
288
|
items: {
|
|
281
289
|
oneOf: [
|
|
282
290
|
{
|
|
@@ -286,8 +294,7 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
286
294
|
$ref: `#/definitions/${field.relationTo}`
|
|
287
295
|
}
|
|
288
296
|
]
|
|
289
|
-
}
|
|
290
|
-
type: withNullableJSONSchemaType('array', isRequired)
|
|
297
|
+
}
|
|
291
298
|
};
|
|
292
299
|
} else {
|
|
293
300
|
fieldSchema = {
|
|
@@ -323,10 +330,12 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
323
330
|
case 'blocks':
|
|
324
331
|
{
|
|
325
332
|
fieldSchema = {
|
|
333
|
+
type: withNullableJSONSchemaType('array', isRequired),
|
|
326
334
|
items: {
|
|
327
335
|
oneOf: field.blocks.map((block)=>{
|
|
328
|
-
const blockFieldSchemas = fieldsToJSONSchema(collectionIDFieldTypes, block.fields, interfaceNameDefinitions);
|
|
336
|
+
const blockFieldSchemas = fieldsToJSONSchema(collectionIDFieldTypes, block.fields, interfaceNameDefinitions, payload);
|
|
329
337
|
const blockSchema = {
|
|
338
|
+
type: 'object',
|
|
330
339
|
additionalProperties: false,
|
|
331
340
|
properties: {
|
|
332
341
|
...blockFieldSchemas.properties,
|
|
@@ -337,8 +346,7 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
337
346
|
required: [
|
|
338
347
|
'blockType',
|
|
339
348
|
...blockFieldSchemas.required
|
|
340
|
-
]
|
|
341
|
-
type: 'object'
|
|
349
|
+
]
|
|
342
350
|
};
|
|
343
351
|
if (block.interfaceName) {
|
|
344
352
|
interfaceNameDefinitions.set(block.interfaceName, blockSchema);
|
|
@@ -348,20 +356,19 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
348
356
|
}
|
|
349
357
|
return blockSchema;
|
|
350
358
|
})
|
|
351
|
-
}
|
|
352
|
-
type: withNullableJSONSchemaType('array', isRequired)
|
|
359
|
+
}
|
|
353
360
|
};
|
|
354
361
|
break;
|
|
355
362
|
}
|
|
356
363
|
case 'array':
|
|
357
364
|
{
|
|
358
365
|
fieldSchema = {
|
|
366
|
+
type: withNullableJSONSchemaType('array', isRequired),
|
|
359
367
|
items: {
|
|
360
|
-
additionalProperties: false,
|
|
361
368
|
type: 'object',
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
369
|
+
additionalProperties: false,
|
|
370
|
+
...fieldsToJSONSchema(collectionIDFieldTypes, field.fields, interfaceNameDefinitions, payload)
|
|
371
|
+
}
|
|
365
372
|
};
|
|
366
373
|
if (field.interfaceName) {
|
|
367
374
|
interfaceNameDefinitions.set(field.interfaceName, fieldSchema);
|
|
@@ -374,7 +381,7 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
374
381
|
case 'row':
|
|
375
382
|
case 'collapsible':
|
|
376
383
|
{
|
|
377
|
-
const childSchema = fieldsToJSONSchema(collectionIDFieldTypes, field.fields, interfaceNameDefinitions);
|
|
384
|
+
const childSchema = fieldsToJSONSchema(collectionIDFieldTypes, field.fields, interfaceNameDefinitions, payload);
|
|
378
385
|
Object.entries(childSchema.properties).forEach(([propName, propSchema])=>{
|
|
379
386
|
fieldSchemas.set(propName, propSchema);
|
|
380
387
|
});
|
|
@@ -386,12 +393,12 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
386
393
|
case 'tabs':
|
|
387
394
|
{
|
|
388
395
|
field.tabs.forEach((tab)=>{
|
|
389
|
-
const childSchema = fieldsToJSONSchema(collectionIDFieldTypes, tab.fields, interfaceNameDefinitions);
|
|
396
|
+
const childSchema = fieldsToJSONSchema(collectionIDFieldTypes, tab.fields, interfaceNameDefinitions, payload);
|
|
390
397
|
if ((0, _types.tabHasName)(tab)) {
|
|
391
398
|
// could have interface
|
|
392
399
|
fieldSchemas.set(tab.name, {
|
|
393
|
-
additionalProperties: false,
|
|
394
400
|
type: 'object',
|
|
401
|
+
additionalProperties: false,
|
|
395
402
|
...childSchema
|
|
396
403
|
});
|
|
397
404
|
requiredFieldNames.add(tab.name);
|
|
@@ -409,9 +416,9 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
409
416
|
case 'group':
|
|
410
417
|
{
|
|
411
418
|
fieldSchema = {
|
|
412
|
-
additionalProperties: false,
|
|
413
419
|
type: 'object',
|
|
414
|
-
|
|
420
|
+
additionalProperties: false,
|
|
421
|
+
...fieldsToJSONSchema(collectionIDFieldTypes, field.fields, interfaceNameDefinitions, payload)
|
|
415
422
|
};
|
|
416
423
|
if (field.interfaceName) {
|
|
417
424
|
interfaceNameDefinitions.set(field.interfaceName, fieldSchema);
|
|
@@ -434,13 +441,13 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, /**
|
|
|
434
441
|
required: Array.from(requiredFieldNames)
|
|
435
442
|
};
|
|
436
443
|
}
|
|
437
|
-
function entityToJSONSchema(config, incomingEntity, interfaceNameDefinitions, defaultIDType) {
|
|
444
|
+
function entityToJSONSchema(config, incomingEntity, interfaceNameDefinitions, defaultIDType, payload) {
|
|
438
445
|
const entity = (0, _deepCopyObject.deepCopyObject)(incomingEntity);
|
|
439
446
|
const title = entity.typescript?.interface ? entity.typescript.interface : (0, _pluralize.singular)((0, _formatLabels.toWords)(entity.slug, true));
|
|
440
447
|
const idField = {
|
|
441
448
|
name: 'id',
|
|
442
|
-
|
|
443
|
-
|
|
449
|
+
type: defaultIDType,
|
|
450
|
+
required: true
|
|
444
451
|
};
|
|
445
452
|
const customIdField = entity.fields.find((field)=>(0, _types.fieldAffectsData)(field) && field.name === 'id');
|
|
446
453
|
if (customIdField && customIdField.type !== 'group' && customIdField.type !== 'tab') {
|
|
@@ -466,23 +473,19 @@ function entityToJSONSchema(config, incomingEntity, interfaceNameDefinitions, de
|
|
|
466
473
|
type: 'text'
|
|
467
474
|
});
|
|
468
475
|
}
|
|
469
|
-
//
|
|
470
|
-
const collectionIDFieldTypes =
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
acc[collection.slug] = customCollectionIdField.type === 'number' ? 'number' : 'string';
|
|
475
|
-
}
|
|
476
|
-
return acc;
|
|
477
|
-
}, {});
|
|
476
|
+
// Used for relationship fields, to determine whether to use a string or number type for the ID.
|
|
477
|
+
const collectionIDFieldTypes = (0, _getCollectionIDFieldTypes.getCollectionIDFieldTypes)({
|
|
478
|
+
config,
|
|
479
|
+
defaultIDType
|
|
480
|
+
});
|
|
478
481
|
return {
|
|
482
|
+
type: 'object',
|
|
479
483
|
additionalProperties: false,
|
|
480
484
|
title,
|
|
481
|
-
|
|
482
|
-
...fieldsToJSONSchema(collectionIDFieldTypes, entity.fields, interfaceNameDefinitions)
|
|
485
|
+
...fieldsToJSONSchema(collectionIDFieldTypes, entity.fields, interfaceNameDefinitions, payload)
|
|
483
486
|
};
|
|
484
487
|
}
|
|
485
|
-
function configToJSONSchema(config, defaultIDType) {
|
|
488
|
+
function configToJSONSchema(config, defaultIDType, payload) {
|
|
486
489
|
// a mutable Map to store custom top-level `interfaceName` types. Fields with an `interfaceName` property will be moved to the top-level definitions here
|
|
487
490
|
const interfaceNameDefinitions = new Map();
|
|
488
491
|
// Collections and Globals have to be moved to the top-level definitions as well. Reason: The top-level type will be the `Config` type - we don't want all collection and global
|
|
@@ -491,7 +494,7 @@ function configToJSONSchema(config, defaultIDType) {
|
|
|
491
494
|
...config.globals,
|
|
492
495
|
...config.collections
|
|
493
496
|
].reduce((acc, entity)=>{
|
|
494
|
-
acc[entity.slug] = entityToJSONSchema(config, entity, interfaceNameDefinitions, defaultIDType);
|
|
497
|
+
acc[entity.slug] = entityToJSONSchema(config, entity, interfaceNameDefinitions, defaultIDType, payload);
|
|
495
498
|
return acc;
|
|
496
499
|
}, {});
|
|
497
500
|
return {
|
|
@@ -501,6 +504,7 @@ function configToJSONSchema(config, defaultIDType) {
|
|
|
501
504
|
...Object.fromEntries(interfaceNameDefinitions)
|
|
502
505
|
},
|
|
503
506
|
// These properties here will be very simple, as all the complexity is in the definitions. These are just the properties for the top-level `Config` type
|
|
507
|
+
type: 'object',
|
|
504
508
|
properties: {
|
|
505
509
|
collections: generateEntitySchemas(config.collections || []),
|
|
506
510
|
globals: generateEntitySchemas(config.globals || [])
|
|
@@ -509,9 +513,8 @@ function configToJSONSchema(config, defaultIDType) {
|
|
|
509
513
|
'collections',
|
|
510
514
|
'globals'
|
|
511
515
|
],
|
|
512
|
-
title: 'Config'
|
|
513
|
-
type: 'object'
|
|
516
|
+
title: 'Config'
|
|
514
517
|
};
|
|
515
518
|
}
|
|
516
519
|
|
|
517
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTQsIEpTT05TY2hlbWE0VHlwZU5hbWUgfSBmcm9tICdqc29uLXNjaGVtYSdcblxuaW1wb3J0IHsgc2luZ3VsYXIgfSBmcm9tICdwbHVyYWxpemUnXG5cbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnIH0gZnJvbSAnLi4vZXhwb3J0cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE9wdGlvbiB9IGZyb20gJy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB7IGRlZXBDb3B5T2JqZWN0IH0gZnJvbSAnLi9kZWVwQ29weU9iamVjdCdcbmltcG9ydCB7IHRvV29yZHMgfSBmcm9tICcuL2Zvcm1hdExhYmVscydcblxuY29uc3QgZmllbGRJc1JlcXVpcmVkID0gKGZpZWxkOiBGaWVsZCkgPT4ge1xuICBjb25zdCBpc0NvbmRpdGlvbmFsID0gQm9vbGVhbihmaWVsZD8uYWRtaW4gJiYgZmllbGQ/LmFkbWluPy5jb25kaXRpb24pXG4gIGlmIChpc0NvbmRpdGlvbmFsKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBpc01hcmtlZFJlcXVpcmVkID0gJ3JlcXVpcmVkJyBpbiBmaWVsZCAmJiBmaWVsZC5yZXF1aXJlZCA9PT0gdHJ1ZVxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgaXNNYXJrZWRSZXF1aXJlZCkgcmV0dXJuIHRydWVcblxuICAvLyBpZiBhbnkgc3ViZmllbGRzIGFyZSByZXF1aXJlZCwgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoJ2ZpZWxkcycgaW4gZmllbGQgJiYgZmllbGQudHlwZSAhPT0gJ2FycmF5Jykge1xuICAgIHJldHVybiBmaWVsZC5maWVsZHMuc29tZSgoc3ViRmllbGQpID0+IGZpZWxkSXNSZXF1aXJlZChzdWJGaWVsZCkpXG4gIH1cblxuICAvLyBpZiBhbnkgdGFiIHN1YmZpZWxkcyBoYXZlIHJlcXVpcmVkIGZpZWxkcywgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgcmV0dXJuIGZpZWxkLnRhYnMuc29tZSgodGFiKSA9PiB7XG4gICAgICBpZiAoJ25hbWUnIGluIHRhYikge1xuICAgICAgICByZXR1cm4gdGFiLmZpZWxkcy5zb21lKChzdWJGaWVsZCkgPT4gZmllbGRJc1JlcXVpcmVkKHN1YkZpZWxkKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYnVpbGRPcHRpb25FbnVtcyhvcHRpb25zOiBPcHRpb25bXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIG9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBvcHRpb24pIHtcbiAgICAgIHJldHVybiBvcHRpb24udmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRW50aXR5U2NoZW1hcyhcbiAgZW50aXRpZXM6IChTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgU2FuaXRpemVkR2xvYmFsQ29uZmlnKVtdLFxuKTogSlNPTlNjaGVtYTQge1xuICBjb25zdCBwcm9wZXJ0aWVzID0gWy4uLmVudGl0aWVzXS5yZWR1Y2UoKGFjYywgeyBzbHVnIH0pID0+IHtcbiAgICBhY2Nbc2x1Z10gPSB7XG4gICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3NsdWd9YCxcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9KVxuXG4gIHJldHVybiB7XG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIHByb3BlcnRpZXMsXG4gICAgcmVxdWlyZWQ6IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLFxuICAgIHR5cGU6ICdvYmplY3QnLFxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIEpTT04gU2NoZW1hIFR5cGUgd2l0aCAnbnVsbCcgYWRkZWQgaWYgdGhlIGZpZWxkIGlzIG5vdCByZXF1aXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKFxuICBmaWVsZFR5cGU6IEpTT05TY2hlbWE0VHlwZU5hbWUsXG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW4sXG4pOiBKU09OU2NoZW1hNFR5cGVOYW1lIHwgSlNPTlNjaGVtYTRUeXBlTmFtZVtdIHtcbiAgY29uc3QgZmllbGRUeXBlcyA9IFtmaWVsZFR5cGVdXG4gIGlmIChpc1JlcXVpcmVkKSByZXR1cm4gZmllbGRUeXBlXG4gIGZpZWxkVHlwZXMucHVzaCgnbnVsbCcpXG4gIHJldHVybiBmaWVsZFR5cGVzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZHNUb0pTT05TY2hlbWEoXG4gIGNvbGxlY3Rpb25JREZpZWxkVHlwZXM6IHsgW2tleTogc3RyaW5nXTogJ251bWJlcicgfCAnc3RyaW5nJyB9LFxuICBmaWVsZHM6IEZpZWxkW10sXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIGRlZmluZSBuZXcgdG9wLWxldmVsIGludGVyZmFjZXMgdGhhdCBjYW4gYmUgcmUtdXNlZCBpbiB0aGUgb3V0cHV0IHNjaGVtYS5cbiAgICovXG4gIGludGVyZmFjZU5hbWVEZWZpbml0aW9uczogTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+LFxuKToge1xuICBwcm9wZXJ0aWVzOiB7XG4gICAgW2s6IHN0cmluZ106IEpTT05TY2hlbWE0XG4gIH1cbiAgcmVxdWlyZWQ6IHN0cmluZ1tdXG59IHtcbiAgY29uc3QgcmVxdWlyZWRGaWVsZE5hbWVzID0gbmV3IFNldDxzdHJpbmc+KClcblxuICByZXR1cm4ge1xuICAgIHByb3BlcnRpZXM6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIGZpZWxkcy5yZWR1Y2UoKGZpZWxkU2NoZW1hcywgZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkSXNSZXF1aXJlZChmaWVsZClcbiAgICAgICAgaWYgKGlzUmVxdWlyZWQpIHJlcXVpcmVkRmllbGROYW1lcy5hZGQoZmllbGQubmFtZSlcblxuICAgICAgICBsZXQgZmllbGRTY2hlbWE6IEpTT05TY2hlbWE0XG4gICAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7IHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgICBjYXNlICdjb2RlJzpcbiAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgY2FzZSAnZGF0ZSc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnc3RyaW5nJywgaXNSZXF1aXJlZCkgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdudW1iZXInOiB7XG4gICAgICAgICAgICBpZiAoZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBpdGVtczogeyB0eXBlOiAnbnVtYmVyJyB9LFxuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHsgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ251bWJlcicsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnY2hlY2tib3gnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHsgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2Jvb2xlYW4nLCBpc1JlcXVpcmVkKSB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ2pzb24nOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgdHlwZTogWydvYmplY3QnLCAnYXJyYXknLCAnc3RyaW5nJywgJ251bWJlcicsICdib29sZWFuJywgJ251bGwnXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAncmljaFRleHQnOiB7XG4gICAgICAgICAgICBpZiAoZmllbGQuZWRpdG9yLm91dHB1dFNjaGVtYSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IGZpZWxkLmVkaXRvci5vdXRwdXRTY2hlbWEoe1xuICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gTWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyByaWNoIHRleHQgZWRpdG9yc1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3JhZGlvJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIGVudW06IGJ1aWxkT3B0aW9uRW51bXMoZmllbGQub3B0aW9ucyksXG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdzZWxlY3QnOiB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25FbnVtcyA9IGJ1aWxkT3B0aW9uRW51bXMoZmllbGQub3B0aW9ucylcblxuICAgICAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgIGVudW06IG9wdGlvbkVudW1zLFxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgZW51bTogb3B0aW9uRW51bXMsXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ3N0cmluZycsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAncG9pbnQnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIG1heEl0ZW1zOiAyLFxuICAgICAgICAgICAgICBtaW5JdGVtczogMixcbiAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQucmVsYXRpb25Uby5tYXAoKHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25Ubzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0OiByZWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW3JlbGF0aW9uXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7cmVsYXRpb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyd2YWx1ZScsICdyZWxhdGlvblRvJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAgIG9uZU9mOiBmaWVsZC5yZWxhdGlvblRvLm1hcCgocmVsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25Ubzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdDogcmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW3JlbGF0aW9uXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7cmVsYXRpb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ3ZhbHVlJywgJ3JlbGF0aW9uVG8nXSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnb2JqZWN0JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tmaWVsZC5yZWxhdGlvblRvXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7ZmllbGQucmVsYXRpb25Ub31gLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW2ZpZWxkLnJlbGF0aW9uVG9dLFxuICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLnJlbGF0aW9uVG99YCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3VwbG9hZCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbGxlY3Rpb25JREZpZWxkVHlwZXNbZmllbGQucmVsYXRpb25Ub10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLnJlbGF0aW9uVG99YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1JlcXVpcmVkKSBmaWVsZFNjaGVtYS5vbmVPZi5wdXNoKHsgdHlwZTogJ251bGwnIH0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgIG9uZU9mOiBmaWVsZC5ibG9ja3MubWFwKChibG9jaykgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tGaWVsZFNjaGVtYXMgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBibG9ja1NjaGVtYTogSlNPTlNjaGVtYTQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLmJsb2NrRmllbGRTY2hlbWFzLnByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgYmxvY2tUeXBlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdDogYmxvY2suc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWydibG9ja1R5cGUnLCAuLi5ibG9ja0ZpZWxkU2NoZW1hcy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoYmxvY2suaW50ZXJmYWNlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMuc2V0KGJsb2NrLmludGVyZmFjZU5hbWUsIGJsb2NrU2NoZW1hKVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtibG9jay5pbnRlcmZhY2VOYW1lfWAsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGJsb2NrU2NoZW1hXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAuLi5maWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICAgICAgZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmllbGQuaW50ZXJmYWNlTmFtZSkge1xuICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMuc2V0KGZpZWxkLmludGVyZmFjZU5hbWUsIGZpZWxkU2NoZW1hKVxuXG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7ZmllbGQuaW50ZXJmYWNlTmFtZX1gLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICAgICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZFNjaGVtYSA9IGZpZWxkc1RvSlNPTlNjaGVtYShcbiAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhjaGlsZFNjaGVtYS5wcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcE5hbWUsIHByb3BTY2hlbWFdKSA9PiB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQocHJvcE5hbWUsIHByb3BTY2hlbWEpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgY2hpbGRTY2hlbWEucmVxdWlyZWQuZm9yRWFjaCgocHJvcE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChwcm9wTmFtZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICAgICAgICBmaWVsZC50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZFNjaGVtYSA9IGZpZWxkc1RvSlNPTlNjaGVtYShcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICAgIHRhYi5maWVsZHMsXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICAgICAgICAvLyBjb3VsZCBoYXZlIGludGVyZmFjZVxuICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQodGFiLm5hbWUsIHtcbiAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgLi4uY2hpbGRTY2hlbWEsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICByZXF1aXJlZEZpZWxkTmFtZXMuYWRkKHRhYi5uYW1lKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNoaWxkU2NoZW1hLnByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wTmFtZSwgcHJvcFNjaGVtYV0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQocHJvcE5hbWUsIHByb3BTY2hlbWEpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBjaGlsZFNjaGVtYS5yZXF1aXJlZC5mb3JFYWNoKChwcm9wTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChwcm9wTmFtZSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdncm91cCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAuLi5maWVsZHNUb0pTT05TY2hlbWEoY29sbGVjdGlvbklERmllbGRUeXBlcywgZmllbGQuZmllbGRzLCBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmllbGQuaW50ZXJmYWNlTmFtZSkge1xuICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMuc2V0KGZpZWxkLmludGVyZmFjZU5hbWUsIGZpZWxkU2NoZW1hKVxuXG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7ZmllbGQuaW50ZXJmYWNlTmFtZX1gLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkU2NoZW1hICYmIGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICAgICAgZmllbGRTY2hlbWFzLnNldChmaWVsZC5uYW1lLCBmaWVsZFNjaGVtYSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZFNjaGVtYXNcbiAgICAgIH0sIG5ldyBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4oKSksXG4gICAgKSxcbiAgICByZXF1aXJlZDogQXJyYXkuZnJvbShyZXF1aXJlZEZpZWxkTmFtZXMpLFxuICB9XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgcHVibGljIEFQSSBhbmQgaXMgZXhwb3J0ZWQgdGhyb3VnaCBwYXlsb2FkL3V0aWxpdGllc1xuZXhwb3J0IGZ1bmN0aW9uIGVudGl0eVRvSlNPTlNjaGVtYShcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gIGluY29taW5nRW50aXR5OiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgU2FuaXRpemVkR2xvYmFsQ29uZmlnLFxuICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnM6IE1hcDxzdHJpbmcsIEpTT05TY2hlbWE0PixcbiAgZGVmYXVsdElEVHlwZTogJ251bWJlcicgfCAndGV4dCcsXG4pOiBKU09OU2NoZW1hNCB7XG4gIGNvbnN0IGVudGl0eTogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IFNhbml0aXplZEdsb2JhbENvbmZpZyA9IGRlZXBDb3B5T2JqZWN0KGluY29taW5nRW50aXR5KVxuICBjb25zdCB0aXRsZSA9IGVudGl0eS50eXBlc2NyaXB0Py5pbnRlcmZhY2VcbiAgICA/IGVudGl0eS50eXBlc2NyaXB0LmludGVyZmFjZVxuICAgIDogc2luZ3VsYXIodG9Xb3JkcyhlbnRpdHkuc2x1ZywgdHJ1ZSkpXG5cbiAgY29uc3QgaWRGaWVsZDogRmllbGRBZmZlY3RpbmdEYXRhID0geyBuYW1lOiAnaWQnLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogZGVmYXVsdElEVHlwZSBhcyAndGV4dCcgfVxuICBjb25zdCBjdXN0b21JZEZpZWxkID0gZW50aXR5LmZpZWxkcy5maW5kKFxuICAgIChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgKSBhcyBGaWVsZEFmZmVjdGluZ0RhdGFcblxuICBpZiAoY3VzdG9tSWRGaWVsZCAmJiBjdXN0b21JZEZpZWxkLnR5cGUgIT09ICdncm91cCcgJiYgY3VzdG9tSWRGaWVsZC50eXBlICE9PSAndGFiJykge1xuICAgIGN1c3RvbUlkRmllbGQucmVxdWlyZWQgPSB0cnVlXG4gIH0gZWxzZSB7XG4gICAgZW50aXR5LmZpZWxkcy51bnNoaWZ0KGlkRmllbGQpXG4gIH1cblxuICAvLyBtYXJrIHRpbWVzdGFtcCBmaWVsZHMgcmVxdWlyZWRcbiAgaWYgKCd0aW1lc3RhbXBzJyBpbiBlbnRpdHkgJiYgZW50aXR5LnRpbWVzdGFtcHMgIT09IGZhbHNlKSB7XG4gICAgZW50aXR5LmZpZWxkcyA9IGVudGl0eS5maWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIChmaWVsZC5uYW1lID09PSAnY3JlYXRlZEF0JyB8fCBmaWVsZC5uYW1lID09PSAndXBkYXRlZEF0JykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZpZWxkXG4gICAgfSlcbiAgfVxuXG4gIGlmICgnYXV0aCcgaW4gZW50aXR5ICYmIGVudGl0eS5hdXRoICYmICFlbnRpdHkuYXV0aD8uZGlzYWJsZUxvY2FsU3RyYXRlZ3kpIHtcbiAgICBlbnRpdHkuZmllbGRzLnB1c2goe1xuICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICB9KVxuICB9XG5cbiAgLy8gdXNlZCBmb3IgcmVsYXRpb25zaGlwIGZpZWxkcywgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gdXNlIGEgc3RyaW5nIG9yIG51bWJlciB0eXBlIGZvciB0aGUgSURcbiAgY29uc3QgY29sbGVjdGlvbklERmllbGRUeXBlczogeyBba2V5OiBzdHJpbmddOiAnbnVtYmVyJyB8ICdzdHJpbmcnIH0gPSBjb25maWcuY29sbGVjdGlvbnMucmVkdWNlKFxuICAgIChhY2MsIGNvbGxlY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUNvbGxlY3Rpb25JZEZpZWxkID0gY29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgKGZpZWxkKSA9PiAnbmFtZScgaW4gZmllbGQgJiYgZmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgICAgIClcblxuICAgICAgYWNjW2NvbGxlY3Rpb24uc2x1Z10gPSBkZWZhdWx0SURUeXBlID09PSAndGV4dCcgPyAnc3RyaW5nJyA6ICdudW1iZXInXG5cbiAgICAgIGlmIChjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCkge1xuICAgICAgICBhY2NbY29sbGVjdGlvbi5zbHVnXSA9IGN1c3RvbUNvbGxlY3Rpb25JZEZpZWxkLnR5cGUgPT09ICdudW1iZXInID8gJ251bWJlcicgOiAnc3RyaW5nJ1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSxcbiAgICB7fSxcbiAgKVxuXG4gIHJldHVybiB7XG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIHRpdGxlLFxuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIC4uLmZpZWxkc1RvSlNPTlNjaGVtYShjb2xsZWN0aW9uSURGaWVsZFR5cGVzLCBlbnRpdHkuZmllbGRzLCBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMpLFxuICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZSBUeXBlU2NyaXB0IHR5cGVzIChwYXlsb2FkLXR5cGVzLnRzKSB3aXRoIHRoZSBwYXlsb2FkIGdlbmVyYXRlOnR5cGVzIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25maWdUb0pTT05TY2hlbWEoXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICBkZWZhdWx0SURUeXBlPzogJ251bWJlcicgfCAndGV4dCcsXG4pOiBKU09OU2NoZW1hNCB7XG4gIC8vIGEgbXV0YWJsZSBNYXAgdG8gc3RvcmUgY3VzdG9tIHRvcC1sZXZlbCBgaW50ZXJmYWNlTmFtZWAgdHlwZXMuIEZpZWxkcyB3aXRoIGFuIGBpbnRlcmZhY2VOYW1lYCBwcm9wZXJ0eSB3aWxsIGJlIG1vdmVkIHRvIHRoZSB0b3AtbGV2ZWwgZGVmaW5pdGlvbnMgaGVyZVxuICBjb25zdCBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnM6IE1hcDxzdHJpbmcsIEpTT05TY2hlbWE0PiA9IG5ldyBNYXAoKVxuXG4gIC8vIENvbGxlY3Rpb25zIGFuZCBHbG9iYWxzIGhhdmUgdG8gYmUgbW92ZWQgdG8gdGhlIHRvcC1sZXZlbCBkZWZpbml0aW9ucyBhcyB3ZWxsLiBSZWFzb246IFRoZSB0b3AtbGV2ZWwgdHlwZSB3aWxsIGJlIHRoZSBgQ29uZmlnYCB0eXBlIC0gd2UgZG9uJ3Qgd2FudCBhbGwgY29sbGVjdGlvbiBhbmQgZ2xvYmFsXG4gIC8vIHR5cGVzIHRvIGJlIGlubGluZWQgaW5zaWRlIHRoZSBgQ29uZmlnYCB0eXBlXG4gIGNvbnN0IGVudGl0eURlZmluaXRpb25zOiB7IFtrOiBzdHJpbmddOiBKU09OU2NoZW1hNCB9ID0gW1xuICAgIC4uLmNvbmZpZy5nbG9iYWxzLFxuICAgIC4uLmNvbmZpZy5jb2xsZWN0aW9ucyxcbiAgXS5yZWR1Y2UoKGFjYywgZW50aXR5KSA9PiB7XG4gICAgYWNjW2VudGl0eS5zbHVnXSA9IGVudGl0eVRvSlNPTlNjaGVtYShjb25maWcsIGVudGl0eSwgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLCBkZWZhdWx0SURUeXBlKVxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgZGVmaW5pdGlvbnM6IHsgLi4uZW50aXR5RGVmaW5pdGlvbnMsIC4uLk9iamVjdC5mcm9tRW50cmllcyhpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMpIH0sXG4gICAgLy8gVGhlc2UgcHJvcGVydGllcyBoZXJlIHdpbGwgYmUgdmVyeSBzaW1wbGUsIGFzIGFsbCB0aGUgY29tcGxleGl0eSBpcyBpbiB0aGUgZGVmaW5pdGlvbnMuIFRoZXNlIGFyZSBqdXN0IHRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgdG9wLWxldmVsIGBDb25maWdgIHR5cGVcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBjb2xsZWN0aW9uczogZ2VuZXJhdGVFbnRpdHlTY2hlbWFzKGNvbmZpZy5jb2xsZWN0aW9ucyB8fCBbXSksXG4gICAgICBnbG9iYWxzOiBnZW5lcmF0ZUVudGl0eVNjaGVtYXMoY29uZmlnLmdsb2JhbHMgfHwgW10pLFxuICAgIH0sXG4gICAgcmVxdWlyZWQ6IFsnY29sbGVjdGlvbnMnLCAnZ2xvYmFscyddLFxuICAgIHRpdGxlOiAnQ29uZmlnJyxcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgfVxufVxuIl0sIm5hbWVzIjpbImNvbmZpZ1RvSlNPTlNjaGVtYSIsImVudGl0eVRvSlNPTlNjaGVtYSIsImZpZWxkc1RvSlNPTlNjaGVtYSIsIndpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlIiwiZmllbGRJc1JlcXVpcmVkIiwiZmllbGQiLCJpc0NvbmRpdGlvbmFsIiwiQm9vbGVhbiIsImFkbWluIiwiY29uZGl0aW9uIiwiaXNNYXJrZWRSZXF1aXJlZCIsInJlcXVpcmVkIiwiZmllbGRBZmZlY3RzRGF0YSIsInR5cGUiLCJmaWVsZHMiLCJzb21lIiwic3ViRmllbGQiLCJ0YWJzIiwidGFiIiwiYnVpbGRPcHRpb25FbnVtcyIsIm9wdGlvbnMiLCJtYXAiLCJvcHRpb24iLCJ2YWx1ZSIsImdlbmVyYXRlRW50aXR5U2NoZW1hcyIsImVudGl0aWVzIiwicHJvcGVydGllcyIsInJlZHVjZSIsImFjYyIsInNsdWciLCIkcmVmIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJPYmplY3QiLCJrZXlzIiwiZmllbGRUeXBlIiwiaXNSZXF1aXJlZCIsImZpZWxkVHlwZXMiLCJwdXNoIiwiY29sbGVjdGlvbklERmllbGRUeXBlcyIsImludGVyZmFjZU5hbWVEZWZpbml0aW9ucyIsInJlcXVpcmVkRmllbGROYW1lcyIsIlNldCIsImZyb21FbnRyaWVzIiwiZmllbGRTY2hlbWFzIiwiYWRkIiwibmFtZSIsImZpZWxkU2NoZW1hIiwiaGFzTWFueSIsIml0ZW1zIiwiZWRpdG9yIiwib3V0cHV0U2NoZW1hIiwiZW51bSIsIm9wdGlvbkVudW1zIiwibWF4SXRlbXMiLCJtaW5JdGVtcyIsIkFycmF5IiwiaXNBcnJheSIsInJlbGF0aW9uVG8iLCJvbmVPZiIsInJlbGF0aW9uIiwiY29uc3QiLCJibG9ja3MiLCJibG9jayIsImJsb2NrRmllbGRTY2hlbWFzIiwiYmxvY2tTY2hlbWEiLCJibG9ja1R5cGUiLCJpbnRlcmZhY2VOYW1lIiwic2V0IiwiY2hpbGRTY2hlbWEiLCJlbnRyaWVzIiwiZm9yRWFjaCIsInByb3BOYW1lIiwicHJvcFNjaGVtYSIsInRhYkhhc05hbWUiLCJNYXAiLCJmcm9tIiwiY29uZmlnIiwiaW5jb21pbmdFbnRpdHkiLCJkZWZhdWx0SURUeXBlIiwiZW50aXR5IiwiZGVlcENvcHlPYmplY3QiLCJ0aXRsZSIsInR5cGVzY3JpcHQiLCJpbnRlcmZhY2UiLCJzaW5ndWxhciIsInRvV29yZHMiLCJpZEZpZWxkIiwiY3VzdG9tSWRGaWVsZCIsImZpbmQiLCJ1bnNoaWZ0IiwidGltZXN0YW1wcyIsImF1dGgiLCJkaXNhYmxlTG9jYWxTdHJhdGVneSIsImNvbGxlY3Rpb25zIiwiY29sbGVjdGlvbiIsImN1c3RvbUNvbGxlY3Rpb25JZEZpZWxkIiwiZW50aXR5RGVmaW5pdGlvbnMiLCJnbG9iYWxzIiwiZGVmaW5pdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBOGdCZ0JBLGtCQUFrQjtlQUFsQkE7O0lBdkVBQyxrQkFBa0I7ZUFBbEJBOztJQXZYQUMsa0JBQWtCO2VBQWxCQTs7SUFWQUMsMEJBQTBCO2VBQTFCQTs7OzJCQXBFUzt1QkFPb0I7Z0NBQ2Q7OEJBQ1A7QUFFeEIsTUFBTUMsa0JBQWtCLENBQUNDO0lBQ3ZCLE1BQU1DLGdCQUFnQkMsUUFBUUYsT0FBT0csU0FBU0gsT0FBT0csT0FBT0M7SUFDNUQsSUFBSUgsZUFBZSxPQUFPO0lBRTFCLE1BQU1JLG1CQUFtQixjQUFjTCxTQUFTQSxNQUFNTSxRQUFRLEtBQUs7SUFDbkUsSUFBSUMsSUFBQUEsdUJBQWdCLEVBQUNQLFVBQVVLLGtCQUFrQixPQUFPO0lBRXhELHdEQUF3RDtJQUN4RCxJQUFJLFlBQVlMLFNBQVNBLE1BQU1RLElBQUks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
|
|
520
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTQsIEpTT05TY2hlbWE0VHlwZU5hbWUgfSBmcm9tICdqc29uLXNjaGVtYSdcblxuaW1wb3J0IHsgc2luZ3VsYXIgfSBmcm9tICdwbHVyYWxpemUnXG5cbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnIH0gZnJvbSAnLi4vZXhwb3J0cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE9wdGlvbiB9IGZyb20gJy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkIH0gZnJvbSAnLi4vcGF5bG9hZCdcblxuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgdGFiSGFzTmFtZSB9IGZyb20gJy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5pbXBvcnQgeyBkZWVwQ29weU9iamVjdCB9IGZyb20gJy4vZGVlcENvcHlPYmplY3QnXG5pbXBvcnQgeyB0b1dvcmRzIH0gZnJvbSAnLi9mb3JtYXRMYWJlbHMnXG5pbXBvcnQgeyBnZXRDb2xsZWN0aW9uSURGaWVsZFR5cGVzIH0gZnJvbSAnLi9nZXRDb2xsZWN0aW9uSURGaWVsZFR5cGVzJ1xuXG5jb25zdCBmaWVsZElzUmVxdWlyZWQgPSAoZmllbGQ6IEZpZWxkKSA9PiB7XG4gIGNvbnN0IGlzQ29uZGl0aW9uYWwgPSBCb29sZWFuKGZpZWxkPy5hZG1pbiAmJiBmaWVsZD8uYWRtaW4/LmNvbmRpdGlvbilcbiAgaWYgKGlzQ29uZGl0aW9uYWwpIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IGlzTWFya2VkUmVxdWlyZWQgPSAncmVxdWlyZWQnIGluIGZpZWxkICYmIGZpZWxkLnJlcXVpcmVkID09PSB0cnVlXG4gIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBpc01hcmtlZFJlcXVpcmVkKSByZXR1cm4gdHJ1ZVxuXG4gIC8vIGlmIGFueSBzdWJmaWVsZHMgYXJlIHJlcXVpcmVkLCB0aGlzIGZpZWxkIGlzIHJlcXVpcmVkXG4gIGlmICgnZmllbGRzJyBpbiBmaWVsZCAmJiBmaWVsZC50eXBlICE9PSAnYXJyYXknKSB7XG4gICAgcmV0dXJuIGZpZWxkLmZpZWxkcy5zb21lKChzdWJGaWVsZCkgPT4gZmllbGRJc1JlcXVpcmVkKHN1YkZpZWxkKSlcbiAgfVxuXG4gIC8vIGlmIGFueSB0YWIgc3ViZmllbGRzIGhhdmUgcmVxdWlyZWQgZmllbGRzLCB0aGlzIGZpZWxkIGlzIHJlcXVpcmVkXG4gIGlmIChmaWVsZC50eXBlID09PSAndGFicycpIHtcbiAgICByZXR1cm4gZmllbGQudGFicy5zb21lKCh0YWIpID0+IHtcbiAgICAgIGlmICgnbmFtZScgaW4gdGFiKSB7XG4gICAgICAgIHJldHVybiB0YWIuZmllbGRzLnNvbWUoKHN1YkZpZWxkKSA9PiBmaWVsZElzUmVxdWlyZWQoc3ViRmllbGQpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBidWlsZE9wdGlvbkVudW1zKG9wdGlvbnM6IE9wdGlvbltdKTogc3RyaW5nW10ge1xuICByZXR1cm4gb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiAndmFsdWUnIGluIG9wdGlvbikge1xuICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZVxuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25cbiAgfSlcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVFbnRpdHlTY2hlbWFzKFxuICBlbnRpdGllczogKFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBTYW5pdGl6ZWRHbG9iYWxDb25maWcpW10sXG4pOiBKU09OU2NoZW1hNCB7XG4gIGNvbnN0IHByb3BlcnRpZXMgPSBbLi4uZW50aXRpZXNdLnJlZHVjZSgoYWNjLCB7IHNsdWcgfSkgPT4ge1xuICAgIGFjY1tzbHVnXSA9IHtcbiAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7c2x1Z31gLFxuICAgIH1cblxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgcHJvcGVydGllcyxcbiAgICByZXF1aXJlZDogT2JqZWN0LmtleXMocHJvcGVydGllcyksXG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgSlNPTiBTY2hlbWEgVHlwZSB3aXRoICdudWxsJyBhZGRlZCBpZiB0aGUgZmllbGQgaXMgbm90IHJlcXVpcmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoXG4gIGZpZWxkVHlwZTogSlNPTlNjaGVtYTRUeXBlTmFtZSxcbiAgaXNSZXF1aXJlZDogYm9vbGVhbixcbik6IEpTT05TY2hlbWE0VHlwZU5hbWUgfCBKU09OU2NoZW1hNFR5cGVOYW1lW10ge1xuICBjb25zdCBmaWVsZFR5cGVzID0gW2ZpZWxkVHlwZV1cbiAgaWYgKGlzUmVxdWlyZWQpIHJldHVybiBmaWVsZFR5cGVcbiAgZmllbGRUeXBlcy5wdXNoKCdudWxsJylcbiAgcmV0dXJuIGZpZWxkVHlwZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkc1RvSlNPTlNjaGVtYShcbiAgLyoqXG4gICAqIFVzZWQgZm9yIHJlbGF0aW9uc2hpcCBmaWVsZHMsIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHVzZSBhIHN0cmluZyBvciBudW1iZXIgdHlwZSBmb3IgdGhlIElELlxuICAgKiBXaGlsZSB0aGVyZSBpcyBhIGRlZmF1bHQgSUQgZmllbGQgdHlwZSBzZXQgYnkgdGhlIGRiIGFkYXB0ZXIsIHRoZXkgY2FuIGRpZmZlciBvbiBhIGNvbGxlY3Rpb24tbGV2ZWxcbiAgICogaWYgdGhleSBoYXZlIGN1c3RvbSBJRCBmaWVsZHMuXG4gICAqL1xuICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzOiB7IFtrZXk6IHN0cmluZ106ICdudW1iZXInIHwgJ3N0cmluZycgfSxcbiAgZmllbGRzOiBGaWVsZFtdLFxuICAvKipcbiAgICogQWxsb3dzIHlvdSB0byBkZWZpbmUgbmV3IHRvcC1sZXZlbCBpbnRlcmZhY2VzIHRoYXQgY2FuIGJlIHJlLXVzZWQgaW4gdGhlIG91dHB1dCBzY2hlbWEuXG4gICAqL1xuICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnM6IE1hcDxzdHJpbmcsIEpTT05TY2hlbWE0PixcbiAgcGF5bG9hZD86IFBheWxvYWQsXG4pOiB7XG4gIHByb3BlcnRpZXM6IHtcbiAgICBbazogc3RyaW5nXTogSlNPTlNjaGVtYTRcbiAgfVxuICByZXF1aXJlZDogc3RyaW5nW11cbn0ge1xuICBjb25zdCByZXF1aXJlZEZpZWxkTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIHJldHVybiB7XG4gICAgcHJvcGVydGllczogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgZmllbGRzLnJlZHVjZSgoZmllbGRTY2hlbWFzLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBpc1JlcXVpcmVkID0gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGRJc1JlcXVpcmVkKGZpZWxkKVxuICAgICAgICBpZiAoaXNSZXF1aXJlZCkgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChmaWVsZC5uYW1lKVxuXG4gICAgICAgIGxldCBmaWVsZFNjaGVtYTogSlNPTlNjaGVtYTRcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgICBpZiAoZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHsgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ3N0cmluZycsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7IHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnbnVtYmVyJywgaXNSZXF1aXJlZCkgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdjaGVja2JveCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYm9vbGVhbicsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICB0eXBlOiBbJ29iamVjdCcsICdhcnJheScsICdzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnbnVsbCddLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyaWNoVGV4dCc6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5lZGl0b3Iub3V0cHV0U2NoZW1hKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0gZmllbGQuZWRpdG9yLm91dHB1dFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMsXG4gICAgICAgICAgICAgICAgaXNSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gTWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyByaWNoIHRleHQgZWRpdG9yc1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3JhZGlvJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgZW51bTogYnVpbGRPcHRpb25FbnVtcyhmaWVsZC5vcHRpb25zKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdzZWxlY3QnOiB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25FbnVtcyA9IGJ1aWxkT3B0aW9uRW51bXMoZmllbGQub3B0aW9ucylcblxuICAgICAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgICAgZW51bTogb3B0aW9uRW51bXMsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ3N0cmluZycsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIGVudW06IG9wdGlvbkVudW1zLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAncG9pbnQnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBtYXhJdGVtczogMixcbiAgICAgICAgICAgICAgbWluSXRlbXM6IDIsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIG9uZU9mOiBmaWVsZC5yZWxhdGlvblRvLm1hcCgocmVsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdDogcmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3JlbGF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsndmFsdWUnLCAncmVsYXRpb25UbyddLFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAgIG9uZU9mOiBmaWVsZC5yZWxhdGlvblRvLm1hcCgocmVsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnb2JqZWN0JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IHJlbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3JlbGF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyd2YWx1ZScsICdyZWxhdGlvblRvJ10sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tmaWVsZC5yZWxhdGlvblRvXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7ZmllbGQucmVsYXRpb25Ub31gLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW2ZpZWxkLnJlbGF0aW9uVG9dLFxuICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLnJlbGF0aW9uVG99YCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3VwbG9hZCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBvbmVPZjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbGxlY3Rpb25JREZpZWxkVHlwZXNbZmllbGQucmVsYXRpb25Ub10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLnJlbGF0aW9uVG99YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1JlcXVpcmVkKSBmaWVsZFNjaGVtYS5vbmVPZi5wdXNoKHsgdHlwZTogJ251bGwnIH0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQuYmxvY2tzLm1hcCgoYmxvY2spID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrRmllbGRTY2hlbWFzID0gZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICAgICAgICBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tTY2hlbWE6IEpTT05TY2hlbWE0ID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uYmxvY2tGaWVsZFNjaGVtYXMucHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICAgICAgICBibG9ja1R5cGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0OiBibG9jay5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbJ2Jsb2NrVHlwZScsIC4uLmJsb2NrRmllbGRTY2hlbWFzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChibG9jay5pbnRlcmZhY2VOYW1lLCBibG9ja1NjaGVtYSlcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7YmxvY2suaW50ZXJmYWNlTmFtZX1gLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBibG9ja1NjaGVtYVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgLi4uZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChmaWVsZC5pbnRlcmZhY2VOYW1lLCBmaWVsZFNjaGVtYSlcblxuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLmludGVyZmFjZU5hbWV9YCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyb3cnOlxuICAgICAgICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsXG4gICAgICAgICAgICAgIGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hpbGRTY2hlbWEucHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BOYW1lLCBwcm9wU2NoZW1hXSkgPT4ge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHByb3BOYW1lLCBwcm9wU2NoZW1hKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNoaWxkU2NoZW1hLnJlcXVpcmVkLmZvckVhY2goKHByb3BOYW1lKSA9PiB7XG4gICAgICAgICAgICAgIHJlcXVpcmVkRmllbGROYW1lcy5hZGQocHJvcE5hbWUpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICAgICAgZmllbGQudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICAgICAgICAvLyBjb3VsZCBoYXZlIGludGVyZmFjZVxuICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQodGFiLm5hbWUsIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgLi4uY2hpbGRTY2hlbWEsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICByZXF1aXJlZEZpZWxkTmFtZXMuYWRkKHRhYi5uYW1lKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNoaWxkU2NoZW1hLnByb3BlcnRpZXMpLmZvckVhY2goKFtwcm9wTmFtZSwgcHJvcFNjaGVtYV0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQocHJvcE5hbWUsIHByb3BTY2hlbWEpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBjaGlsZFNjaGVtYS5yZXF1aXJlZC5mb3JFYWNoKChwcm9wTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChwcm9wTmFtZSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdncm91cCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAuLi5maWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5pbnRlcmZhY2VOYW1lKSB7XG4gICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucy5zZXQoZmllbGQuaW50ZXJmYWNlTmFtZSwgZmllbGRTY2hlbWEpXG5cbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5pbnRlcmZhY2VOYW1lfWAsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGRTY2hlbWEgJiYgZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KGZpZWxkLm5hbWUsIGZpZWxkU2NoZW1hKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkU2NoZW1hc1xuICAgICAgfSwgbmV3IE1hcDxzdHJpbmcsIEpTT05TY2hlbWE0PigpKSxcbiAgICApLFxuICAgIHJlcXVpcmVkOiBBcnJheS5mcm9tKHJlcXVpcmVkRmllbGROYW1lcyksXG4gIH1cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGFuZCBpcyBleHBvcnRlZCB0aHJvdWdoIHBheWxvYWQvdXRpbGl0aWVzXG5leHBvcnQgZnVuY3Rpb24gZW50aXR5VG9KU09OU2NoZW1hKFxuICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgaW5jb21pbmdFbnRpdHk6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBTYW5pdGl6ZWRHbG9iYWxDb25maWcsXG4gIGludGVyZmFjZU5hbWVEZWZpbml0aW9uczogTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+LFxuICBkZWZhdWx0SURUeXBlOiAnbnVtYmVyJyB8ICd0ZXh0JyxcbiAgcGF5bG9hZD86IFBheWxvYWQsXG4pOiBKU09OU2NoZW1hNCB7XG4gIGNvbnN0IGVudGl0eTogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IFNhbml0aXplZEdsb2JhbENvbmZpZyA9IGRlZXBDb3B5T2JqZWN0KGluY29taW5nRW50aXR5KVxuICBjb25zdCB0aXRsZSA9IGVudGl0eS50eXBlc2NyaXB0Py5pbnRlcmZhY2VcbiAgICA/IGVudGl0eS50eXBlc2NyaXB0LmludGVyZmFjZVxuICAgIDogc2luZ3VsYXIodG9Xb3JkcyhlbnRpdHkuc2x1ZywgdHJ1ZSkpXG5cbiAgY29uc3QgaWRGaWVsZDogRmllbGRBZmZlY3RpbmdEYXRhID0geyBuYW1lOiAnaWQnLCB0eXBlOiBkZWZhdWx0SURUeXBlIGFzICd0ZXh0JywgcmVxdWlyZWQ6IHRydWUgfVxuICBjb25zdCBjdXN0b21JZEZpZWxkID0gZW50aXR5LmZpZWxkcy5maW5kKFxuICAgIChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgKSBhcyBGaWVsZEFmZmVjdGluZ0RhdGFcblxuICBpZiAoY3VzdG9tSWRGaWVsZCAmJiBjdXN0b21JZEZpZWxkLnR5cGUgIT09ICdncm91cCcgJiYgY3VzdG9tSWRGaWVsZC50eXBlICE9PSAndGFiJykge1xuICAgIGN1c3RvbUlkRmllbGQucmVxdWlyZWQgPSB0cnVlXG4gIH0gZWxzZSB7XG4gICAgZW50aXR5LmZpZWxkcy51bnNoaWZ0KGlkRmllbGQpXG4gIH1cblxuICAvLyBtYXJrIHRpbWVzdGFtcCBmaWVsZHMgcmVxdWlyZWRcbiAgaWYgKCd0aW1lc3RhbXBzJyBpbiBlbnRpdHkgJiYgZW50aXR5LnRpbWVzdGFtcHMgIT09IGZhbHNlKSB7XG4gICAgZW50aXR5LmZpZWxkcyA9IGVudGl0eS5maWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIChmaWVsZC5uYW1lID09PSAnY3JlYXRlZEF0JyB8fCBmaWVsZC5uYW1lID09PSAndXBkYXRlZEF0JykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZpZWxkXG4gICAgfSlcbiAgfVxuXG4gIGlmICgnYXV0aCcgaW4gZW50aXR5ICYmIGVudGl0eS5hdXRoICYmICFlbnRpdHkuYXV0aD8uZGlzYWJsZUxvY2FsU3RyYXRlZ3kpIHtcbiAgICBlbnRpdHkuZmllbGRzLnB1c2goe1xuICAgICAgbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICB9KVxuICB9XG5cbiAgLy8gIFVzZWQgZm9yIHJlbGF0aW9uc2hpcCBmaWVsZHMsIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHVzZSBhIHN0cmluZyBvciBudW1iZXIgdHlwZSBmb3IgdGhlIElELlxuICBjb25zdCBjb2xsZWN0aW9uSURGaWVsZFR5cGVzID0gZ2V0Q29sbGVjdGlvbklERmllbGRUeXBlcyh7IGNvbmZpZywgZGVmYXVsdElEVHlwZSB9KVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ29iamVjdCcsXG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIHRpdGxlLFxuICAgIC4uLmZpZWxkc1RvSlNPTlNjaGVtYShjb2xsZWN0aW9uSURGaWVsZFR5cGVzLCBlbnRpdHkuZmllbGRzLCBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMsIHBheWxvYWQpLFxuICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyB1c2VkIGZvciBnZW5lcmF0aW5nIHRoZSBUeXBlU2NyaXB0IHR5cGVzIChwYXlsb2FkLXR5cGVzLnRzKSB3aXRoIHRoZSBwYXlsb2FkIGdlbmVyYXRlOnR5cGVzIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25maWdUb0pTT05TY2hlbWEoXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICBkZWZhdWx0SURUeXBlPzogJ251bWJlcicgfCAndGV4dCcsXG4gIHBheWxvYWQ/OiBQYXlsb2FkLFxuKTogSlNPTlNjaGVtYTQge1xuICAvLyBhIG11dGFibGUgTWFwIHRvIHN0b3JlIGN1c3RvbSB0b3AtbGV2ZWwgYGludGVyZmFjZU5hbWVgIHR5cGVzLiBGaWVsZHMgd2l0aCBhbiBgaW50ZXJmYWNlTmFtZWAgcHJvcGVydHkgd2lsbCBiZSBtb3ZlZCB0byB0aGUgdG9wLWxldmVsIGRlZmluaXRpb25zIGhlcmVcbiAgY29uc3QgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4gPSBuZXcgTWFwKClcblxuICAvLyBDb2xsZWN0aW9ucyBhbmQgR2xvYmFscyBoYXZlIHRvIGJlIG1vdmVkIHRvIHRoZSB0b3AtbGV2ZWwgZGVmaW5pdGlvbnMgYXMgd2VsbC4gUmVhc29uOiBUaGUgdG9wLWxldmVsIHR5cGUgd2lsbCBiZSB0aGUgYENvbmZpZ2AgdHlwZSAtIHdlIGRvbid0IHdhbnQgYWxsIGNvbGxlY3Rpb24gYW5kIGdsb2JhbFxuICAvLyB0eXBlcyB0byBiZSBpbmxpbmVkIGluc2lkZSB0aGUgYENvbmZpZ2AgdHlwZVxuICBjb25zdCBlbnRpdHlEZWZpbml0aW9uczogeyBbazogc3RyaW5nXTogSlNPTlNjaGVtYTQgfSA9IFtcbiAgICAuLi5jb25maWcuZ2xvYmFscyxcbiAgICAuLi5jb25maWcuY29sbGVjdGlvbnMsXG4gIF0ucmVkdWNlKChhY2MsIGVudGl0eSkgPT4ge1xuICAgIGFjY1tlbnRpdHkuc2x1Z10gPSBlbnRpdHlUb0pTT05TY2hlbWEoXG4gICAgICBjb25maWcsXG4gICAgICBlbnRpdHksXG4gICAgICBpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMsXG4gICAgICBkZWZhdWx0SURUeXBlLFxuICAgICAgcGF5bG9hZCxcbiAgICApXG4gICAgcmV0dXJuIGFjY1xuICB9LCB7fSlcblxuICByZXR1cm4ge1xuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICBkZWZpbml0aW9uczogeyAuLi5lbnRpdHlEZWZpbml0aW9ucywgLi4uT2JqZWN0LmZyb21FbnRyaWVzKGludGVyZmFjZU5hbWVEZWZpbml0aW9ucykgfSxcbiAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGhlcmUgd2lsbCBiZSB2ZXJ5IHNpbXBsZSwgYXMgYWxsIHRoZSBjb21wbGV4aXR5IGlzIGluIHRoZSBkZWZpbml0aW9ucy4gVGhlc2UgYXJlIGp1c3QgdGhlIHByb3BlcnRpZXMgZm9yIHRoZSB0b3AtbGV2ZWwgYENvbmZpZ2AgdHlwZVxuICAgIHR5cGU6ICdvYmplY3QnLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIGNvbGxlY3Rpb25zOiBnZW5lcmF0ZUVudGl0eVNjaGVtYXMoY29uZmlnLmNvbGxlY3Rpb25zIHx8IFtdKSxcbiAgICAgIGdsb2JhbHM6IGdlbmVyYXRlRW50aXR5U2NoZW1hcyhjb25maWcuZ2xvYmFscyB8fCBbXSksXG4gICAgfSxcbiAgICByZXF1aXJlZDogWydjb2xsZWN0aW9ucycsICdnbG9iYWxzJ10sXG4gICAgdGl0bGU6ICdDb25maWcnLFxuICB9XG59XG4iXSwibmFtZXMiOlsiY29uZmlnVG9KU09OU2NoZW1hIiwiZW50aXR5VG9KU09OU2NoZW1hIiwiZmllbGRzVG9KU09OU2NoZW1hIiwid2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUiLCJmaWVsZElzUmVxdWlyZWQiLCJmaWVsZCIsImlzQ29uZGl0aW9uYWwiLCJCb29sZWFuIiwiYWRtaW4iLCJjb25kaXRpb24iLCJpc01hcmtlZFJlcXVpcmVkIiwicmVxdWlyZWQiLCJmaWVsZEFmZmVjdHNEYXRhIiwidHlwZSIsImZpZWxkcyIsInNvbWUiLCJzdWJGaWVsZCIsInRhYnMiLCJ0YWIiLCJidWlsZE9wdGlvbkVudW1zIiwib3B0aW9ucyIsIm1hcCIsIm9wdGlvbiIsInZhbHVlIiwiZ2VuZXJhdGVFbnRpdHlTY2hlbWFzIiwiZW50aXRpZXMiLCJwcm9wZXJ0aWVzIiwicmVkdWNlIiwiYWNjIiwic2x1ZyIsIiRyZWYiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsIk9iamVjdCIsImtleXMiLCJmaWVsZFR5cGUiLCJpc1JlcXVpcmVkIiwiZmllbGRUeXBlcyIsInB1c2giLCJjb2xsZWN0aW9uSURGaWVsZFR5cGVzIiwiaW50ZXJmYWNlTmFtZURlZmluaXRpb25zIiwicGF5bG9hZCIsInJlcXVpcmVkRmllbGROYW1lcyIsIlNldCIsImZyb21FbnRyaWVzIiwiZmllbGRTY2hlbWFzIiwiYWRkIiwibmFtZSIsImZpZWxkU2NoZW1hIiwiaGFzTWFueSIsIml0ZW1zIiwiZWRpdG9yIiwib3V0cHV0U2NoZW1hIiwiZW51bSIsIm9wdGlvbkVudW1zIiwibWF4SXRlbXMiLCJtaW5JdGVtcyIsIkFycmF5IiwiaXNBcnJheSIsInJlbGF0aW9uVG8iLCJvbmVPZiIsInJlbGF0aW9uIiwiY29uc3QiLCJibG9ja3MiLCJibG9jayIsImJsb2NrRmllbGRTY2hlbWFzIiwiYmxvY2tTY2hlbWEiLCJibG9ja1R5cGUiLCJpbnRlcmZhY2VOYW1lIiwic2V0IiwiY2hpbGRTY2hlbWEiLCJlbnRyaWVzIiwiZm9yRWFjaCIsInByb3BOYW1lIiwicHJvcFNjaGVtYSIsInRhYkhhc05hbWUiLCJNYXAiLCJmcm9tIiwiY29uZmlnIiwiaW5jb21pbmdFbnRpdHkiLCJkZWZhdWx0SURUeXBlIiwiZW50aXR5IiwiZGVlcENvcHlPYmplY3QiLCJ0aXRsZSIsInR5cGVzY3JpcHQiLCJpbnRlcmZhY2UiLCJzaW5ndWxhciIsInRvV29yZHMiLCJpZEZpZWxkIiwiY3VzdG9tSWRGaWVsZCIsImZpbmQiLCJ1bnNoaWZ0IiwidGltZXN0YW1wcyIsImF1dGgiLCJkaXNhYmxlTG9jYWxTdHJhdGVneSIsImdldENvbGxlY3Rpb25JREZpZWxkVHlwZXMiLCJlbnRpdHlEZWZpbml0aW9ucyIsImdsb2JhbHMiLCJjb2xsZWN0aW9ucyIsImRlZmluaXRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQW1oQmdCQSxrQkFBa0I7ZUFBbEJBOztJQXpEQUMsa0JBQWtCO2VBQWxCQTs7SUF4WUFDLGtCQUFrQjtlQUFsQkE7O0lBVkFDLDBCQUEwQjtlQUExQkE7OzsyQkF0RVM7dUJBUW9CO2dDQUNkOzhCQUNQOzJDQUNrQjtBQUUxQyxNQUFNQyxrQkFBa0IsQ0FBQ0M7SUFDdkIsTUFBTUMsZ0JBQWdCQyxRQUFRRixPQUFPRyxTQUFTSCxPQUFPRyxPQUFPQztJQUM1RCxJQUFJSCxlQUFlLE9BQU87SUFFMUIsTUFBTUksbUJBQW1CLGNBQWNMLFNBQVNBLE1BQU1NLFFBQVEsS0FBSztJQUNuRSxJQUFJQyxJQUFBQSx1QkFBZ0IsRUFBQ1AsVUFBVUssa0JBQWtCLE9BQU87SUFFeEQsd0RBQXdEO0lBQ3hELElBQUksWUFBWUwsU0FBU0EsTUFBTVEsSUFBSSxLQUFLLFNBQVM7UUFDL0MsT0FBT1IsTUFBTVMsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsV0FBYVosZ0JBQWdCWTtJQUN6RDtJQUVBLG9FQUFvRTtJQUNwRSxJQUFJWCxNQUFNUSxJQUFJLEtBQUssUUFBUTtRQUN6QixPQUFPUixNQUFNWSxJQUFJLENBQUNGLElBQUksQ0FBQyxDQUFDRztZQUN0QixJQUFJLFVBQVVBLEtBQUs7Z0JBQ2pCLE9BQU9BLElBQUlKLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLFdBQWFaLGdCQUFnQlk7WUFDdkQ7WUFDQSxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU87QUFDVDtBQUVBLFNBQVNHLGlCQUFpQkMsT0FBaUI7SUFDekMsT0FBT0EsUUFBUUMsR0FBRyxDQUFDLENBQUNDO1FBQ2xCLElBQUksT0FBT0EsV0FBVyxZQUFZLFdBQVdBLFFBQVE7WUFDbkQsT0FBT0EsT0FBT0MsS0FBSztRQUNyQjtRQUVBLE9BQU9EO0lBQ1Q7QUFDRjtBQUVBLFNBQVNFLHNCQUNQQyxRQUErRDtJQUUvRCxNQUFNQyxhQUFhO1dBQUlEO0tBQVMsQ0FBQ0UsTUFBTSxDQUFDLENBQUNDLEtBQUssRUFBRUMsSUFBSSxFQUFFO1FBQ3BERCxHQUFHLENBQUNDLEtBQUssR0FBRztZQUNWQyxNQUFNLENBQUMsY0FBYyxFQUFFRCxLQUFLLENBQUM7UUFDL0I7UUFFQSxPQUFPRDtJQUNULEdBQUcsQ0FBQztJQUVKLE9BQU87UUFDTGYsTUFBTTtRQUNOa0Isc0JBQXNCO1FBQ3RCTDtRQUNBZixVQUFVcUIsT0FBT0MsSUFBSSxDQUFDUDtJQUN4QjtBQUNGO0FBS08sU0FBU3ZCLDJCQUNkK0IsU0FBOEIsRUFDOUJDLFVBQW1CO0lBRW5CLE1BQU1DLGFBQWE7UUFBQ0Y7S0FBVTtJQUM5QixJQUFJQyxZQUFZLE9BQU9EO0lBQ3ZCRSxXQUFXQyxJQUFJLENBQUM7SUFDaEIsT0FBT0Q7QUFDVDtBQUVPLFNBQVNsQyxtQkFDZDs7OztHQUlDLEdBQ0RvQyxzQkFBOEQsRUFDOUR4QixNQUFlLEVBQ2Y7O0dBRUMsR0FDRHlCLHdCQUFrRCxFQUNsREMsT0FBaUI7SUFPakIsTUFBTUMscUJBQXFCLElBQUlDO0lBRS9CLE9BQU87UUFDTGhCLFlBQVlNLE9BQU9XLFdBQVcsQ0FDNUI3QixPQUFPYSxNQUFNLENBQUMsQ0FBQ2lCLGNBQWN2QztZQUMzQixNQUFNOEIsYUFBYXZCLElBQUFBLHVCQUFnQixFQUFDUCxVQUFVRCxnQkFBZ0JDO1lBQzlELElBQUk4QixZQUFZTSxtQkFBbUJJLEdBQUcsQ0FBQ3hDLE1BQU15QyxJQUFJO1lBRWpELElBQUlDO1lBQ0osT0FBUTFDLE1BQU1RLElBQUk7Z0JBQ2hCLEtBQUs7b0JBQ0gsSUFBSVIsTUFBTTJDLE9BQU8sS0FBSyxNQUFNO3dCQUMxQkQsY0FBYzs0QkFDWmxDLE1BQU1WLDJCQUEyQixTQUFTZ0M7NEJBQzFDYyxPQUFPO2dDQUFFcEMsTUFBTTs0QkFBUzt3QkFDMUI7b0JBQ0YsT0FBTzt3QkFDTGtDLGNBQWM7NEJBQUVsQyxNQUFNViwyQkFBMkIsVUFBVWdDO3dCQUFZO29CQUN6RTtvQkFDQTtnQkFDRixLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsS0FBSztnQkFDTCxLQUFLO29CQUFRO3dCQUNYWSxjQUFjOzRCQUFFbEMsTUFBTVYsMkJBQTJCLFVBQVVnQzt3QkFBWTt3QkFDdkU7b0JBQ0Y7Z0JBRUEsS0FBSztvQkFBVTt3QkFDYixJQUFJOUIsTUFBTTJDLE9BQU8sS0FBSyxNQUFNOzRCQUMxQkQsY0FBYztnQ0FDWmxDLE1BQU1WLDJCQUEyQixTQUFTZ0M7Z0NBQzFDYyxPQUFPO29DQUFFcEMsTUFBTTtnQ0FBUzs0QkFDMUI7d0JBQ0YsT0FBTzs0QkFDTGtDLGNBQWM7Z0NBQUVsQyxNQUFNViwyQkFBMkIsVUFBVWdDOzRCQUFZO3dCQUN6RTt3QkFDQTtvQkFDRjtnQkFFQSxLQUFLO29CQUFZO3dCQUNmWSxjQUFjOzRCQUFFbEMsTUFBTVYsMkJBQTJCLFdBQVdnQzt3QkFBWTt3QkFDeEU7b0JBQ0Y7Z0JBRUEsS0FBSztvQkFBUTt3QkFDWFksY0FBYzs0QkFDWmxDLE1BQU07Z0NBQUM7Z0NBQVU7Z0NBQVM7Z0NBQVU7Z0NBQVU7Z0NBQVc7NkJBQU87d0JBQ2xFO3dCQUNBO29CQUNGO2dCQUVBLEtBQUs7b0JBQVk7d0JBQ2YsSUFBSVIsTUFBTTZDLE1BQU0sQ0FBQ0MsWUFBWSxFQUFFOzRCQUM3QkosY0FBYzFDLE1BQU02QyxNQUFNLENBQUNDLFlBQVksQ0FBQztnQ0FDdENiO2dDQUNBakM7Z0NBQ0FrQztnQ0FDQUo7Z0NBQ0FLOzRCQUNGO3dCQUNGLE9BQU87NEJBQ0wsbUVBQW1FOzRCQUNuRU8sY0FBYztnQ0FDWmxDLE1BQU1WLDJCQUEyQixTQUFTZ0M7Z0NBQzFDYyxPQUFPO29DQUNMcEMsTUFBTTtnQ0FDUjs0QkFDRjt3QkFDRjt3QkFFQTtvQkFDRjtnQkFFQSxLQUFLO29CQUFTO3dCQUNaa0MsY0FBYzs0QkFDWmxDLE1BQU1WLDJCQUEyQixVQUFVZ0M7NEJBQzNDaUIsTUFBTWpDLGlCQUFpQmQsTUFBTWUsT0FBTzt3QkFDdEM7d0JBRUE7b0JBQ0Y7Z0JBRUEsS0FBSztvQkFBVTt3QkFDYixNQUFNaUMsY0FBY2xDLGlCQUFpQmQsTUFBTWUsT0FBTzt3QkFFbEQsSUFBSWYsTUFBTTJDLE9BQU8sRUFBRTs0QkFDakJELGNBQWM7Z0NBQ1psQyxNQUFNViwyQkFBMkIsU0FBU2dDO2dDQUMxQ2MsT0FBTztvQ0FDTHBDLE1BQU07b0NBQ051QyxNQUFNQztnQ0FDUjs0QkFDRjt3QkFDRixPQUFPOzRCQUNMTixjQUFjO2dDQUNabEMsTUFBTVYsMkJBQTJCLFVBQVVnQztnQ0FDM0NpQixNQUFNQzs0QkFDUjt3QkFDRjt3QkFFQTtvQkFDRjtnQkFFQSxLQUFLO29CQUFTO3dCQUNaTixjQUFjOzRCQUNabEMsTUFBTVYsMkJBQTJCLFNBQVNnQzs0QkFDMUNjLE9BQU87Z0NBQ0w7b0NBQ0VwQyxNQUFNO2dDQUNSO2dDQUNBO29DQUNFQSxNQUFNO2dDQUNSOzZCQUNEOzRCQUNEeUMsVUFBVTs0QkFDVkMsVUFBVTt3QkFDWjt3QkFDQTtvQkFDRjtnQkFFQSxLQUFLO29CQUFnQjt3QkFDbkIsSUFBSUMsTUFBTUMsT0FBTyxDQUFDcEQsTUFBTXFELFVBQVUsR0FBRzs0QkFDbkMsSUFBSXJELE1BQU0yQyxPQUFPLEVBQUU7Z0NBQ2pCRCxjQUFjO29DQUNabEMsTUFBTVYsMkJBQTJCLFNBQVNnQztvQ0FDMUNjLE9BQU87d0NBQ0xVLE9BQU90RCxNQUFNcUQsVUFBVSxDQUFDckMsR0FBRyxDQUFDLENBQUN1Qzs0Q0FDM0IsT0FBTztnREFDTC9DLE1BQU07Z0RBQ05rQixzQkFBc0I7Z0RBQ3RCTCxZQUFZO29EQUNWZ0MsWUFBWTt3REFDVkcsT0FBT0Q7b0RBQ1Q7b0RBQ0FyQyxPQUFPO3dEQUNMb0MsT0FBTzs0REFDTDtnRUFDRTlDLE1BQU15QixzQkFBc0IsQ0FBQ3NCLFNBQVM7NERBQ3hDOzREQUNBO2dFQUNFOUIsTUFBTSxDQUFDLGNBQWMsRUFBRThCLFNBQVMsQ0FBQzs0REFDbkM7eURBQ0Q7b0RBQ0g7Z0RBQ0Y7Z0RBQ0FqRCxVQUFVO29EQUFDO29EQUFTO2lEQUFhOzRDQUNuQzt3Q0FDRjtvQ0FDRjtnQ0FDRjs0QkFDRixPQUFPO2dDQUNMb0MsY0FBYztvQ0FDWlksT0FBT3RELE1BQU1xRCxVQUFVLENBQUNyQyxHQUFHLENBQUMsQ0FBQ3VDO3dDQUMzQixPQUFPOzRDQUNML0MsTUFBTVYsMkJBQTJCLFVBQVVnQzs0Q0FDM0NKLHNCQUFzQjs0Q0FDdEJMLFlBQVk7Z0RBQ1ZnQyxZQUFZO29EQUNWRyxPQUFPRDtnREFDVDtnREFDQXJDLE9BQU87b0RBQ0xvQyxPQUFPO3dEQUNMOzREQUNFOUMsTUFBTXlCLHNCQUFzQixDQUFDc0IsU0FBUzt3REFDeEM7d0RBQ0E7NERBQ0U5QixNQUFNLENBQUMsY0FBYyxFQUFFOEIsU0FBUyxDQUFDO3dEQUNuQztxREFDRDtnREFDSDs0Q0FDRjs0Q0FDQWpELFVBQVU7Z0RBQUM7Z0RBQVM7NkNBQWE7d0NBQ25DO29DQUNGO2dDQUNGOzRCQUNGO3dCQUNGLE9BQU8sSUFBSU4sTUFBTTJDLE9BQU8sRUFBRTs0QkFDeEJELGNBQWM7Z0NBQ1psQyxNQUFNViwyQkFBMkIsU0FBU2dDO2dDQUMxQ2MsT0FBTztvQ0FDTFUsT0FBTzt3Q0FDTDs0Q0FDRTlDLE1BQU15QixzQkFBc0IsQ0FBQ2pDLE1BQU1xRCxVQUFVLENBQUM7d0NBQ2hEO3dDQUNBOzRDQUNFNUIsTUFBTSxDQUFDLGNBQWMsRUFBRXpCLE1BQU1xRCxVQUFVLENBQUMsQ0FBQzt3Q0FDM0M7cUNBQ0Q7Z0NBQ0g7NEJBQ0Y7d0JBQ0YsT0FBTzs0QkFDTFgsY0FBYztnQ0FDWlksT0FBTztvQ0FDTDt3Q0FDRTlDLE1BQU1WLDJCQUNKbUMsc0JBQXNCLENBQUNqQyxNQUFNcUQsVUFBVSxDQUFDLEVBQ3hDdkI7b0NBRUo7b0NBQ0E7d0NBQ0VMLE1BQU0sQ0FBQyxjQUFjLEVBQUV6QixNQUFNcUQsVUFBVSxDQUFDLENBQUM7b0NBQzNDO2lDQUNEOzRCQUNIO3dCQUNGO3dCQUVBO29CQUNGO2dCQUVBLEtBQUs7b0JBQVU7d0JBQ2JYLGNBQWM7NEJBQ1pZLE9BQU87Z0NBQ0w7b0NBQ0U5QyxNQUFNeUIsc0JBQXNCLENBQUNqQyxNQUFNcUQsVUFBVSxDQUFDO2dDQUNoRDtnQ0FDQTtvQ0FDRTVCLE1BQU0sQ0FBQyxjQUFjLEVBQUV6QixNQUFNcUQsVUFBVSxDQUFDLENBQUM7Z0NBQzNDOzZCQUNEO3dCQUNIO3dCQUNBLElBQUksQ0FBQ3ZCLFlBQVlZLFlBQVlZLEtBQUssQ0FBQ3RCLElBQUksQ0FBQzs0QkFBRXhCLE1BQU07d0JBQU87d0JBQ3ZEO29CQUNGO2dCQUVBLEtBQUs7b0JBQVU7d0JBQ2JrQyxjQUFjOzRCQUNabEMsTUFBTVYsMkJBQTJCLFNBQVNnQzs0QkFDMUNjLE9BQU87Z0NBQ0xVLE9BQU90RCxNQUFNeUQsTUFBTSxDQUFDekMsR0FBRyxDQUFDLENBQUMwQztvQ0FDdkIsTUFBTUMsb0JBQW9COUQsbUJBQ3hCb0Msd0JBQ0F5QixNQUFNakQsTUFBTSxFQUNaeUIsMEJBQ0FDO29DQUdGLE1BQU15QixjQUEyQjt3Q0FDL0JwRCxNQUFNO3dDQUNOa0Isc0JBQXNCO3dDQUN0QkwsWUFBWTs0Q0FDVixHQUFHc0Msa0JBQWtCdEMsVUFBVTs0Q0FDL0J3QyxXQUFXO2dEQUNUTCxPQUFPRSxNQUFNbEMsSUFBSTs0Q0FDbkI7d0NBQ0Y7d0NBQ0FsQixVQUFVOzRDQUFDOytDQUFnQnFELGtCQUFrQnJELFFBQVE7eUNBQUM7b0NBQ3hEO29DQUVBLElBQUlvRCxNQUFNSSxhQUFhLEVBQUU7d0NBQ3ZCNUIseUJBQXlCNkIsR0FBRyxDQUFDTCxNQUFNSSxhQUFhLEVBQUVGO3dDQUVsRCxPQUFPOzRDQUNMbkMsTUFBTSxDQUFDLGNBQWMsRUFBRWlDLE1BQU1JLGFBQWEsQ0FBQyxDQUFDO3dDQUM5QztvQ0FDRjtvQ0FFQSxPQUFPRjtnQ0FDVDs0QkFDRjt3QkFDRjt3QkFDQTtvQkFDRjtnQkFFQSxLQUFLO29CQUFTO3dCQUNabEIsY0FBYzs0QkFDWmxDLE1BQU1WLDJCQUEyQixTQUFTZ0M7NEJBQzFDYyxPQUFPO2dDQUNMcEMsTUFBTTtnQ0FDTmtCLHNCQUFzQjtnQ0FDdEIsR0FBRzdCLG1CQUNEb0Msd0JBQ0FqQyxNQUFNUyxNQUFNLEVBQ1p5QiwwQkFDQUMsUUFDRDs0QkFDSDt3QkFDRjt3QkFFQSxJQUFJbkMsTUFBTThELGFBQWEsRUFBRTs0QkFDdkI1Qix5QkFBeUI2QixHQUFHLENBQUMvRCxNQUFNOEQsYUFBYSxFQUFFcEI7NEJBRWxEQSxjQUFjO2dDQUNaakIsTUFBTSxDQUFDLGNBQWMsRUFBRXpCLE1BQU04RCxhQUFhLENBQUMsQ0FBQzs0QkFDOUM7d0JBQ0Y7d0JBQ0E7b0JBQ0Y7Z0JBRUEsS0FBSztnQkFDTCxLQUFLO29CQUFlO3dCQUNsQixNQUFNRSxjQUFjbkUsbUJBQ2xCb0Msd0JBQ0FqQyxNQUFNUyxNQUFNLEVBQ1p5QiwwQkFDQUM7d0JBRUZSLE9BQU9zQyxPQUFPLENBQUNELFlBQVkzQyxVQUFVLEVBQUU2QyxPQUFPLENBQUMsQ0FBQyxDQUFDQyxVQUFVQyxXQUFXOzRCQUNwRTdCLGFBQWF3QixHQUFHLENBQUNJLFVBQVVDO3dCQUM3Qjt3QkFDQUosWUFBWTFELFFBQVEsQ0FBQzRELE9BQU8sQ0FBQyxDQUFDQzs0QkFDNUIvQixtQkFBbUJJLEdBQUcsQ0FBQzJCO3dCQUN6Qjt3QkFDQTtvQkFDRjtnQkFFQSxLQUFLO29CQUFRO3dCQUNYbkUsTUFBTVksSUFBSSxDQUFDc0QsT0FBTyxDQUFDLENBQUNyRDs0QkFDbEIsTUFBTW1ELGNBQWNuRSxtQkFDbEJvQyx3QkFDQXBCLElBQUlKLE1BQU0sRUFDVnlCLDBCQUNBQzs0QkFFRixJQUFJa0MsSUFBQUEsaUJBQVUsRUFBQ3hELE1BQU07Z0NBQ25CLHVCQUF1QjtnQ0FDdkIwQixhQUFhd0IsR0FBRyxDQUFDbEQsSUFBSTRCLElBQUksRUFBRTtvQ0FDekJqQyxNQUFNO29DQUNOa0Isc0JBQXNCO29DQUN0QixHQUFHc0MsV0FBVztnQ0FDaEI7Z0NBQ0E1QixtQkFBbUJJLEdBQUcsQ0FBQzNCLElBQUk0QixJQUFJOzRCQUNqQyxPQUFPO2dDQUNMZCxPQUFPc0MsT0FBTyxDQUFDRCxZQUFZM0MsVUFBVSxFQUFFNkMsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsVUFBVUMsV0FBVztvQ0FDcEU3QixhQUFhd0IsR0FBRyxDQUFDSSxVQUFVQztnQ0FDN0I7Z0NBQ0FKLFlBQVkxRCxRQUFRLENBQUM0RCxPQUFPLENBQUMsQ0FBQ0M7b0NBQzVCL0IsbUJBQW1CSSxHQUFHLENBQUMyQjtnQ0FDekI7NEJBQ0Y7d0JBQ0Y7d0JBQ0E7b0JBQ0Y7Z0JBRUEsS0FBSztvQkFBUzt3QkFDWnpCLGNBQWM7NEJBQ1psQyxNQUFNOzRCQUNOa0Isc0JBQXNCOzRCQUN0QixHQUFHN0IsbUJBQ0RvQyx3QkFDQWpDLE1BQU1TLE1BQU0sRUFDWnlCLDBCQUNBQyxRQUNEO3dCQUNIO3dCQUVBLElBQUluQyxNQUFNOEQsYUFBYSxFQUFFOzRCQUN2QjVCLHlCQUF5QjZCLEdBQUcsQ0FBQy9ELE1BQU04RCxhQUFhLEVBQUVwQjs0QkFFbERBLGNBQWM7Z0NBQ1pqQixNQUFNLENBQUMsY0FBYyxFQUFFekIsTUFBTThELGFBQWEsQ0FBQyxDQUFDOzRCQUM5Qzt3QkFDRjt3QkFDQTtvQkFDRjtnQkFFQTtvQkFBUzt3QkFDUDtvQkFDRjtZQUNGO1lBRUEsSUFBSXBCLGVBQWVuQyxJQUFBQSx1QkFBZ0IsRUFBQ1AsUUFBUTtnQkFDMUN1QyxhQUFhd0IsR0FBRyxDQUFDL0QsTUFBTXlDLElBQUksRUFBRUM7WUFDL0I7WUFFQSxPQUFPSDtRQUNULEdBQUcsSUFBSStCO1FBRVRoRSxVQUFVNkMsTUFBTW9CLElBQUksQ0FBQ25DO0lBQ3ZCO0FBQ0Y7QUFHTyxTQUFTeEMsbUJBQ2Q0RSxNQUF1QixFQUN2QkMsY0FBaUUsRUFDakV2Qyx3QkFBa0QsRUFDbER3QyxhQUFnQyxFQUNoQ3ZDLE9BQWlCO0lBRWpCLE1BQU13QyxTQUE0REMsSUFBQUEsOEJBQWMsRUFBQ0g7SUFDakYsTUFBTUksUUFBUUYsT0FBT0csVUFBVSxFQUFFQyxZQUM3QkosT0FBT0csVUFBVSxDQUFDQyxTQUFTLEdBQzNCQyxJQUFBQSxtQkFBUSxFQUFDQyxJQUFBQSxxQkFBTyxFQUFDTixPQUFPbkQsSUFBSSxFQUFFO0lBRWxDLE1BQU0wRCxVQUE4QjtRQUFFekMsTUFBTTtRQUFNakMsTUFBTWtFO1FBQXlCcEUsVUFBVTtJQUFLO0lBQ2hHLE1BQU02RSxnQkFBZ0JSLE9BQU9sRSxNQUFNLENBQUMyRSxJQUFJLENBQ3RDLENBQUNwRixRQUFVTyxJQUFBQSx1QkFBZ0IsRUFBQ1AsVUFBVUEsTUFBTXlDLElBQUksS0FBSztJQUd2RCxJQUFJMEMsaUJBQWlCQSxjQUFjM0UsSUFBSSxLQUFLLFdBQVcyRSxjQUFjM0UsSUFBSSxLQUFLLE9BQU87UUFDbkYyRSxjQUFjN0UsUUFBUSxHQUFHO0lBQzNCLE9BQU87UUFDTHFFLE9BQU9sRSxNQUFNLENBQUM0RSxPQUFPLENBQUNIO0lBQ3hCO0lBRUEsaUNBQWlDO0lBQ2pDLElBQUksZ0JBQWdCUCxVQUFVQSxPQUFPVyxVQUFVLEtBQUssT0FBTztRQUN6RFgsT0FBT2xFLE1BQU0sR0FBR2tFLE9BQU9sRSxNQUFNLENBQUNPLEdBQUcsQ0FBQyxDQUFDaEI7WUFDakMsSUFBSU8sSUFBQUEsdUJBQWdCLEVBQUNQLFVBQVdBLENBQUFBLE1BQU15QyxJQUFJLEtBQUssZUFBZXpDLE1BQU15QyxJQUFJLEtBQUssV0FBVSxHQUFJO2dCQUN6RixPQUFPO29CQUNMLEdBQUd6QyxLQUFLO29CQUNSTSxVQUFVO2dCQUNaO1lBQ0Y7WUFDQSxPQUFPTjtRQUNUO0lBQ0Y7SUFFQSxJQUFJLFVBQVUyRSxVQUFVQSxPQUFPWSxJQUFJLElBQUksQ0FBQ1osT0FBT1ksSUFBSSxFQUFFQyxzQkFBc0I7UUFDekViLE9BQU9sRSxNQUFNLENBQUN1QixJQUFJLENBQUM7WUFDakJTLE1BQU07WUFDTmpDLE1BQU07UUFDUjtJQUNGO0lBRUEsaUdBQWlHO0lBQ2pHLE1BQU15Qix5QkFBeUJ3RCxJQUFBQSxvREFBeUIsRUFBQztRQUFFakI7UUFBUUU7SUFBYztJQUVqRixPQUFPO1FBQ0xsRSxNQUFNO1FBQ05rQixzQkFBc0I7UUFDdEJtRDtRQUNBLEdBQUdoRixtQkFBbUJvQyx3QkFBd0IwQyxPQUFPbEUsTUFBTSxFQUFFeUIsMEJBQTBCQyxRQUFRO0lBQ2pHO0FBQ0Y7QUFLTyxTQUFTeEMsbUJBQ2Q2RSxNQUF1QixFQUN2QkUsYUFBaUMsRUFDakN2QyxPQUFpQjtJQUVqQix5SkFBeUo7SUFDekosTUFBTUQsMkJBQXFELElBQUlvQztJQUUvRCxnTEFBZ0w7SUFDaEwsK0NBQStDO0lBQy9DLE1BQU1vQixvQkFBa0Q7V0FDbkRsQixPQUFPbUIsT0FBTztXQUNkbkIsT0FBT29CLFdBQVc7S0FDdEIsQ0FBQ3RFLE1BQU0sQ0FBQyxDQUFDQyxLQUFLb0Q7UUFDYnBELEdBQUcsQ0FBQ29ELE9BQU9uRCxJQUFJLENBQUMsR0FBRzVCLG1CQUNqQjRFLFFBQ0FHLFFBQ0F6QywwQkFDQXdDLGVBQ0F2QztRQUVGLE9BQU9aO0lBQ1QsR0FBRyxDQUFDO0lBRUosT0FBTztRQUNMRyxzQkFBc0I7UUFDdEJtRSxhQUFhO1lBQUUsR0FBR0gsaUJBQWlCO1lBQUUsR0FBRy9ELE9BQU9XLFdBQVcsQ0FBQ0oseUJBQXlCO1FBQUM7UUFDckYsd0pBQXdKO1FBQ3hKMUIsTUFBTTtRQUNOYSxZQUFZO1lBQ1Z1RSxhQUFhekUsc0JBQXNCcUQsT0FBT29CLFdBQVcsSUFBSSxFQUFFO1lBQzNERCxTQUFTeEUsc0JBQXNCcUQsT0FBT21CLE9BQU8sSUFBSSxFQUFFO1FBQ3JEO1FBQ0FyRixVQUFVO1lBQUM7WUFBZTtTQUFVO1FBQ3BDdUUsT0FBTztJQUNUO0FBQ0YifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SanitizedConfig } from 'payload/config';
|
|
2
|
+
/**
|
|
3
|
+
* While the default ID is determined by the db adapter, it can still differ for a collection if they
|
|
4
|
+
* define a custom ID field. This builds a map of collection slugs to their ID field type.
|
|
5
|
+
* @param defaultIDType as defined by the database adapter
|
|
6
|
+
*/
|
|
7
|
+
export declare function getCollectionIDFieldTypes({ config, defaultIDType, }: {
|
|
8
|
+
config: SanitizedConfig;
|
|
9
|
+
defaultIDType: 'number' | 'text';
|
|
10
|
+
}): {
|
|
11
|
+
[key: string]: 'number' | 'string';
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=getCollectionIDFieldTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCollectionIDFieldTypes.d.ts","sourceRoot":"","sources":["../../src/utilities/getCollectionIDFieldTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,aAAa,GACd,EAAE;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAA;CACjC,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,CAczC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "getCollectionIDFieldTypes", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return getCollectionIDFieldTypes;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function getCollectionIDFieldTypes({ config, defaultIDType }) {
|
|
12
|
+
return config.collections.reduce((acc, collection)=>{
|
|
13
|
+
const customCollectionIdField = collection.fields.find((field)=>'name' in field && field.name === 'id');
|
|
14
|
+
acc[collection.slug] = defaultIDType === 'text' ? 'string' : 'number';
|
|
15
|
+
if (customCollectionIdField) {
|
|
16
|
+
acc[collection.slug] = customCollectionIdField.type === 'number' ? 'number' : 'string';
|
|
17
|
+
}
|
|
18
|
+
return acc;
|
|
19
|
+
}, {});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZ2V0Q29sbGVjdGlvbklERmllbGRUeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbmZpZyB9IGZyb20gJ3BheWxvYWQvY29uZmlnJ1xuXG4vKipcbiAqICBXaGlsZSB0aGUgZGVmYXVsdCBJRCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBkYiBhZGFwdGVyLCBpdCBjYW4gc3RpbGwgZGlmZmVyIGZvciBhIGNvbGxlY3Rpb24gaWYgdGhleVxuICogIGRlZmluZSBhIGN1c3RvbSBJRCBmaWVsZC4gVGhpcyBidWlsZHMgYSBtYXAgb2YgY29sbGVjdGlvbiBzbHVncyB0byB0aGVpciBJRCBmaWVsZCB0eXBlLlxuICogQHBhcmFtIGRlZmF1bHRJRFR5cGUgYXMgZGVmaW5lZCBieSB0aGUgZGF0YWJhc2UgYWRhcHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbklERmllbGRUeXBlcyh7XG4gIGNvbmZpZyxcbiAgZGVmYXVsdElEVHlwZSxcbn06IHtcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZGVmYXVsdElEVHlwZTogJ251bWJlcicgfCAndGV4dCdcbn0pOiB7IFtrZXk6IHN0cmluZ106ICdudW1iZXInIHwgJ3N0cmluZycgfSB7XG4gIHJldHVybiBjb25maWcuY29sbGVjdGlvbnMucmVkdWNlKChhY2MsIGNvbGxlY3Rpb24pID0+IHtcbiAgICBjb25zdCBjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCA9IGNvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAoZmllbGQpID0+ICduYW1lJyBpbiBmaWVsZCAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgIClcblxuICAgIGFjY1tjb2xsZWN0aW9uLnNsdWddID0gZGVmYXVsdElEVHlwZSA9PT0gJ3RleHQnID8gJ3N0cmluZycgOiAnbnVtYmVyJ1xuXG4gICAgaWYgKGN1c3RvbUNvbGxlY3Rpb25JZEZpZWxkKSB7XG4gICAgICBhY2NbY29sbGVjdGlvbi5zbHVnXSA9IGN1c3RvbUNvbGxlY3Rpb25JZEZpZWxkLnR5cGUgPT09ICdudW1iZXInID8gJ251bWJlcicgOiAnc3RyaW5nJ1xuICAgIH1cblxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG59XG4iXSwibmFtZXMiOlsiZ2V0Q29sbGVjdGlvbklERmllbGRUeXBlcyIsImNvbmZpZyIsImRlZmF1bHRJRFR5cGUiLCJjb2xsZWN0aW9ucyIsInJlZHVjZSIsImFjYyIsImNvbGxlY3Rpb24iLCJjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCIsImZpZWxkcyIsImZpbmQiLCJmaWVsZCIsIm5hbWUiLCJzbHVnIiwidHlwZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFPZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLDBCQUEwQixFQUN4Q0MsTUFBTSxFQUNOQyxhQUFhLEVBSWQ7SUFDQyxPQUFPRCxPQUFPRSxXQUFXLENBQUNDLE1BQU0sQ0FBQyxDQUFDQyxLQUFLQztRQUNyQyxNQUFNQywwQkFBMEJELFdBQVdFLE1BQU0sQ0FBQ0MsSUFBSSxDQUNwRCxDQUFDQyxRQUFVLFVBQVVBLFNBQVNBLE1BQU1DLElBQUksS0FBSztRQUcvQ04sR0FBRyxDQUFDQyxXQUFXTSxJQUFJLENBQUMsR0FBR1Ysa0JBQWtCLFNBQVMsV0FBVztRQUU3RCxJQUFJSyx5QkFBeUI7WUFDM0JGLEdBQUcsQ0FBQ0MsV0FBV00sSUFBSSxDQUFDLEdBQUdMLHdCQUF3Qk0sSUFBSSxLQUFLLFdBQVcsV0FBVztRQUNoRjtRQUVBLE9BQU9SO0lBQ1QsR0FBRyxDQUFDO0FBQ04ifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "payload",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.12.0",
|
|
4
4
|
"description": "Node, React and MongoDB Headless CMS and Application Framework",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -221,7 +221,8 @@
|
|
|
221
221
|
],
|
|
222
222
|
"repository": {
|
|
223
223
|
"type": "git",
|
|
224
|
-
"url": "https://github.com/payloadcms/payload.git"
|
|
224
|
+
"url": "https://github.com/payloadcms/payload.git",
|
|
225
|
+
"directory": "packages/payload"
|
|
225
226
|
},
|
|
226
227
|
"bugs": {
|
|
227
228
|
"url": "https://github.com/payloadcms/payload"
|
package/utilities.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export { deepMerge } from './dist/utilities/deepMerge';
|
|
|
11
11
|
export { fieldSchemaToJSON } from './dist/utilities/fieldSchemaToJSON';
|
|
12
12
|
export { default as flattenTopLevelFields } from './dist/utilities/flattenTopLevelFields';
|
|
13
13
|
export { formatLabels, formatNames, toWords } from './dist/utilities/formatLabels';
|
|
14
|
+
export { getCollectionIDFieldTypes } from './dist/utilities/getCollectionIDFieldTypes';
|
|
14
15
|
export { getIDType } from './dist/utilities/getIDType';
|
|
15
16
|
export { getTranslation } from './dist/utilities/getTranslation';
|
|
16
17
|
export { isValidID } from './dist/utilities/isValidID';
|