@qbs-origin/origin-form 0.8.2 → 0.8.5

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.
@@ -41,7 +41,31 @@ export class ModelPopulationHelper {
41
41
  if (controlDefinition.type === StepControlType.Dictionary) {
42
42
  const specificData = controlDefinition.specificControlData;
43
43
  const isRadio = specificData.showAsRadioButtonsList === true;
44
- if (filledValueId !== null) {
44
+ // Check for multi-select values first
45
+ const fillValueIds = filledControlData.fillValueIds;
46
+ if (specificData.allowMultipleSelection &&
47
+ fillValueIds &&
48
+ Array.isArray(fillValueIds) &&
49
+ fillValueIds.length > 0) {
50
+ const dictionary = dictionaryMap.get(specificData.dictionaryUUID);
51
+ const mappedValues = [];
52
+ for (const valueId of fillValueIds) {
53
+ const numericId = typeof valueId === 'string'
54
+ ? parseInt(valueId, 10)
55
+ : valueId;
56
+ const valueDto = dictionary?.values?.find((v) => v.id === numericId);
57
+ if (valueDto) {
58
+ const mapped = ModelPopulationHelper.mapDictionaryValueDto(valueDto, availableLanguages);
59
+ if (mapped) {
60
+ mappedValues.push(mapped);
61
+ }
62
+ }
63
+ }
64
+ if (mappedValues.length > 0) {
65
+ valueFromFillData = mappedValues;
66
+ }
67
+ }
68
+ else if (filledValueId !== null) {
45
69
  if (isRadio) {
46
70
  valueFromFillData = filledValueId;
47
71
  }
@@ -76,8 +100,9 @@ export class ModelPopulationHelper {
76
100
  }
77
101
  }
78
102
  }
79
- // Handle reference values
103
+ // Handle reference values (only for single-select)
80
104
  if (valueFromFillData &&
105
+ !Array.isArray(valueFromFillData) &&
81
106
  dictionaryMap.has(specificData.dictionaryUUID)) {
82
107
  const mainDictionary = dictionaryMap.get(specificData.dictionaryUUID);
83
108
  if (mainDictionary?.id) {
@@ -161,6 +186,93 @@ export class ModelPopulationHelper {
161
186
  }
162
187
  }
163
188
  }
189
+ // Fallback: apply inherited fields for controls not populated from flux
190
+ if (fillData.inheritedFields) {
191
+ for (const step of flux) {
192
+ if (!step.sections)
193
+ continue;
194
+ for (const section of step.sections) {
195
+ if (!section.controls)
196
+ continue;
197
+ for (const controlDef of section.controls) {
198
+ const controlId = controlDef.identifier;
199
+ if (!controlId || model[controlId] !== undefined)
200
+ continue;
201
+ const inheritedValue = fillData.inheritedFields[controlId];
202
+ if (inheritedValue === undefined || inheritedValue === null)
203
+ continue;
204
+ if (controlDef.type === StepControlType.Dictionary) {
205
+ const specificData = controlDef.specificControlData;
206
+ const isRadio = specificData.showAsRadioButtonsList === true;
207
+ // Enriched format: { fillValue, fillValueId, fillValueIds, dictionaryUUID }
208
+ if (typeof inheritedValue === 'object' &&
209
+ !Array.isArray(inheritedValue) &&
210
+ inheritedValue.dictionaryUUID) {
211
+ const dictionary = dictionaryMap.get(specificData.dictionaryUUID);
212
+ // Multi-select
213
+ if (specificData.allowMultipleSelection &&
214
+ inheritedValue.fillValueIds &&
215
+ Array.isArray(inheritedValue.fillValueIds) &&
216
+ inheritedValue.fillValueIds.length > 0) {
217
+ const mappedValues = [];
218
+ for (const valueId of inheritedValue.fillValueIds) {
219
+ const numericId = typeof valueId === 'string'
220
+ ? parseInt(valueId, 10)
221
+ : valueId;
222
+ const valueDto = dictionary?.values?.find((v) => v.id === numericId);
223
+ if (valueDto) {
224
+ const mapped = ModelPopulationHelper.mapDictionaryValueDto(valueDto, availableLanguages);
225
+ if (mapped) {
226
+ mappedValues.push(mapped);
227
+ }
228
+ }
229
+ }
230
+ if (mappedValues.length > 0) {
231
+ model[controlId] = mappedValues;
232
+ }
233
+ }
234
+ else if (inheritedValue.fillValueId !== undefined && inheritedValue.fillValueId !== null) {
235
+ // Single-select
236
+ const parsedId = parseInt(String(inheritedValue.fillValueId), 10);
237
+ if (!isNaN(parsedId)) {
238
+ if (isRadio) {
239
+ model[controlId] = parsedId;
240
+ }
241
+ else {
242
+ const valueDto = dictionary?.values?.find((v) => v.id === parsedId);
243
+ if (valueDto) {
244
+ model[controlId] =
245
+ ModelPopulationHelper.mapDictionaryValueDto(valueDto, availableLanguages);
246
+ }
247
+ }
248
+ }
249
+ }
250
+ }
251
+ else {
252
+ // Backward compatible: simple value (old format)
253
+ const parsedId = parseInt(String(inheritedValue), 10);
254
+ if (!isNaN(parsedId)) {
255
+ if (isRadio) {
256
+ model[controlId] = parsedId;
257
+ }
258
+ else {
259
+ const dictionary = dictionaryMap.get(specificData.dictionaryUUID);
260
+ const valueDto = dictionary?.values?.find((v) => v.id === parsedId);
261
+ if (valueDto) {
262
+ model[controlId] =
263
+ ModelPopulationHelper.mapDictionaryValueDto(valueDto, availableLanguages);
264
+ }
265
+ }
266
+ }
267
+ }
268
+ }
269
+ else {
270
+ model[controlId] = inheritedValue;
271
+ }
272
+ }
273
+ }
274
+ }
275
+ }
164
276
  // Apply precompletion for ManualInput controls
165
277
  ModelPopulationHelper.applyPrecompletionToModel(model, flux);
166
278
  return model;
@@ -306,4 +418,4 @@ export class ModelPopulationHelper {
306
418
  return null;
307
419
  }
308
420
  }
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtcG9wdWxhdGlvbi5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVsLXBvcHVsYXRpb24uaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQWlELE1BQU0sc0JBQXNCLENBQUM7QUFJdEcsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxNQUFNLENBQUMseUJBQXlCLENBQzlCLFFBQWEsRUFDYixJQUFXLEVBQ1gsYUFBeUMsRUFDekMsa0JBQThCO1FBRTlCLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsT0FBTyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUF3QixFQUFFLENBQUM7UUFFdEMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQ25ELEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3JCLEtBQUssTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUN2QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQ0FDdEIsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7NEJBQ3RELENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztR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O1FBQ3JCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3Rpb25hcnlEdG8sIERpY3Rpb25hcnlWYWx1ZSwgVHJhbnNsYXRpb25EdG8sIFRyYW5zbGF0aW9uIH0gZnJvbSBcIi4vbW9kZWxzL2RpY3Rpb25hcnkubW9kZWxcIjtcbmltcG9ydCB7IFN0ZXBDb250cm9sVHlwZSwgRGljdGlvbmFyeUNvbnRyb2xEYXRhLCBNYW51YWxJbnB1dENvbnRyb2xEYXRhIH0gZnJvbSBcIi4vbW9kZWxzL2Zvcm1zLm1vZGVsXCI7XG5pbXBvcnQgeyBMYW5ndWFnZSB9IGZyb20gXCIuL21vZGVscy9sYW5ndWFnZS5tb2RlbFwiO1xuXG5cbmV4cG9ydCBjbGFzcyBNb2RlbFBvcHVsYXRpb25IZWxwZXIge1xuICBzdGF0aWMgcG9wdWxhdGVNb2RlbFdpdGhGaWxsRGF0YShcbiAgICBmaWxsRGF0YTogYW55LFxuICAgIGZsdXg6IGFueVtdLFxuICAgIGRpY3Rpb25hcnlNYXA6IE1hcDxzdHJpbmcsIERpY3Rpb25hcnlEdG8+LFxuICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VbXVxuICApOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBpZiAoIWZpbGxEYXRhPy5mbHV4IHx8ICFmbHV4KSB7XG4gICAgICByZXR1cm4gTW9kZWxQb3B1bGF0aW9uSGVscGVyLmFwcGx5RGVmYXVsdHNUb01vZGVsKGZsdXgsIGRpY3Rpb25hcnlNYXApO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgICBjb25zdCBmaWxsRGF0YUNvbnRyb2xzTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBmb3IgKGNvbnN0IHN0ZXAgb2YgZmlsbERhdGEuZmx1eCkge1xuICAgICAgaWYgKHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgICBpZiAoc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbElkKSB7XG4gICAgICAgICAgICAgICAgZmlsbERhdGFDb250cm9sc01hcC5zZXQoY29udHJvbC5jb250cm9sSWQsIGNvbnRyb2wpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdGVwIG9mIGZsdXgpIHtcbiAgICAgIGlmIChzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbERlZmluaXRpb24gb2Ygc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgICBjb25zdCBjb250cm9sSWQgPSBjb250cm9sRGVmaW5pdGlvbi5pZGVudGlmaWVyO1xuICAgICAgICAgICAgICBpZiAoIWNvbnRyb2xJZCkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgbGV0IHZhbHVlU2V0Rm9yQ29udHJvbCA9IGZhbHNlO1xuICAgICAgICAgICAgICBjb25zdCBmaWxsZWRDb250cm9sRGF0YSA9IGZpbGxEYXRhQ29udHJvbHNNYXAuZ2V0KGNvbnRyb2xJZCk7XG5cbiAgICAgICAgICAgICAgaWYgKGZpbGxlZENvbnRyb2xEYXRhKSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlRnJvbUZpbGxEYXRhOiBhbnkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgbGV0IGZpbGxlZFZhbHVlSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIGZpbGxlZENvbnRyb2xEYXRhLmZpbGxWYWx1ZUlkICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICBmaWxsZWRDb250cm9sRGF0YS5maWxsVmFsdWVJZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRJZCA9IHBhcnNlSW50KFxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcoZmlsbGVkQ29udHJvbERhdGEuZmlsbFZhbHVlSWQpLFxuICAgICAgICAgICAgICAgICAgICAxMFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGZpbGxlZFZhbHVlSWQgPSAhaXNOYU4ocGFyc2VkSWQpID8gcGFyc2VkSWQgOiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBmaWxsZWRWYWx1ZSA9IGZpbGxlZENvbnRyb2xEYXRhLmZpbGxWYWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sRGVmaW5pdGlvbi50eXBlID09PSBTdGVwQ29udHJvbFR5cGUuRGljdGlvbmFyeSkge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgY29udHJvbERlZmluaXRpb24uc3BlY2lmaWNDb250cm9sRGF0YSBhcyBEaWN0aW9uYXJ5Q29udHJvbERhdGE7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpc1JhZGlvID0gc3BlY2lmaWNEYXRhLnNob3dBc1JhZGlvQnV0dG9uc0xpc3QgPT09IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChmaWxsZWRWYWx1ZUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1JhZGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWVGcm9tRmlsbERhdGEgPSBmaWxsZWRWYWx1ZUlkO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kaWN0aW9uYXJ5VVVJRFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVEdG8gPSBkaWN0aW9uYXJ5Py52YWx1ZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAodikgPT4gdi5pZCA9PT0gZmlsbGVkVmFsdWVJZFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlRHRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5tYXBEaWN0aW9uYXJ5VmFsdWVEdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVEdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICBmaWxsZWRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICBmaWxsZWRWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmFkaW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZmlsbGVkVmFsdWUgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gZmlsbGVkVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWxsZWRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmlsbGVkVmFsdWU/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5tYXBEaWN0aW9uYXJ5VmFsdWVEdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbGVkVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVEdG8gPSBkaWN0aW9uYXJ5Py52YWx1ZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh2KSA9PiB2LmlkID09PSBmaWxsZWRWYWx1ZSB8fCB2Lm5hbWUgPT09IGZpbGxlZFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlRHRvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLm1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRHRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHJlZmVyZW5jZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVGcm9tRmlsbERhdGEgJiZcbiAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeU1hcC5oYXMoc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEKVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1haW5EaWN0aW9uYXJ5ID0gZGljdGlvbmFyeU1hcC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYWluRGljdGlvbmFyeT8uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gbWFpbkRpY3Rpb25hcnkudmFsdWVzPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYuaWQgPT09ICh2YWx1ZUZyb21GaWxsRGF0YS5pZCB8fCB2YWx1ZUZyb21GaWxsRGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZURpY3Rpb25hcmllcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlNYXAudmFsdWVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICkuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZGljdCkgPT4gZGljdC5yZWZlcmVuY2VJZCA9PT0gbWFpbkRpY3Rpb25hcnkuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVmRGljdCBvZiByZWZlcmVuY2VEaWN0aW9uYXJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmVmFsdWUgPSByZWZEaWN0LnZhbHVlcz8uZmluZCgodikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LnJlZmVyZW5jZVZhbHVlcy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ2KSA9PiBydi5pZCA9PT0gc2VsZWN0ZWRWYWx1ZS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVmVmFsdWUgJiYgcmVmRGljdC51dWlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmQ29udHJvbElkID0gYCR7Y29udHJvbElkfV9yZWZlcmVuY2VfJHtyZWZEaWN0LnV1aWR9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbFtyZWZDb250cm9sSWRdID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5tYXBEaWN0aW9uYXJ5VmFsdWVEdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZlZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKGZpbGxlZFZhbHVlICE9PSBudWxsICYmIGZpbGxlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVGcm9tRmlsbERhdGEgPSBmaWxsZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlRnJvbUZpbGxEYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPSB2YWx1ZUZyb21GaWxsRGF0YTtcbiAgICAgICAgICAgICAgICAgIHZhbHVlU2V0Rm9yQ29udHJvbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCF2YWx1ZVNldEZvckNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlRm9yTW9kZWw6IGFueSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbERlZmluaXRpb24udHlwZSA9PT0gU3RlcENvbnRyb2xUeXBlLkRpY3Rpb25hcnkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZWZpbml0aW9uLnNwZWNpZmljQ29udHJvbERhdGEgYXMgRGljdGlvbmFyeUNvbnRyb2xEYXRhO1xuICAgICAgICAgICAgICAgICAgY29uc3QgaXNSYWRpbyA9IHNwZWNpZmljRGF0YS5zaG93QXNSYWRpb0J1dHRvbnNMaXN0ID09PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkID1cbiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcblxuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNSYWRpbykge1xuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZUZvck1vZGVsID0gZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kaWN0aW9uYXJ5VVVJRFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLmZpbmRBbmRNYXBEZWZhdWx0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHJlZmVyZW5jZSB2YWx1ZXMgZm9yIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZUZvck1vZGVsICYmXG4gICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeU1hcC5oYXMoc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYWluRGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAobWFpbkRpY3Rpb25hcnk/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gbWFpbkRpY3Rpb25hcnkudmFsdWVzPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAodikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LmlkID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0VmFsdWVGb3JNb2RlbC5pZCB8fCBkZWZhdWx0VmFsdWVGb3JNb2RlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZURpY3Rpb25hcmllcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeU1hcC52YWx1ZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGljdCkgPT4gZGljdC5yZWZlcmVuY2VJZCA9PT0gbWFpbkRpY3Rpb25hcnkuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZkRpY3Qgb2YgcmVmZXJlbmNlRGljdGlvbmFyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmVmFsdWUgPSByZWZEaWN0LnZhbHVlcz8uZmluZCgodikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYucmVmZXJlbmNlVmFsdWVzLnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydikgPT4gcnYuaWQgPT09IHNlbGVjdGVkVmFsdWUuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZlZhbHVlICYmIHJlZkRpY3QudXVpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmQ29udHJvbElkID0gYCR7Y29udHJvbElkfV9yZWZlcmVuY2VfJHtyZWZEaWN0LnV1aWR9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsW3JlZkNvbnRyb2xJZF0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlbFBvcHVsYXRpb25IZWxwZXIubWFwRGljdGlvbmFyeVZhbHVlRHRvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZlZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICBjb250cm9sRGVmaW5pdGlvbi50eXBlID09PSBTdGVwQ29udHJvbFR5cGUuQ2hlY2tCb3hcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljRGF0YSA9XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZWZpbml0aW9uLnNwZWNpZmljQ29udHJvbERhdGEgYXMgYW55O1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGE/Lmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJlxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGVmYXVsdFZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZUZvck1vZGVsID0gc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZUZvck1vZGVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPSBkZWZhdWx0VmFsdWVGb3JNb2RlbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBseSBwcmVjb21wbGV0aW9uIGZvciBNYW51YWxJbnB1dCBjb250cm9sc1xuICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5hcHBseVByZWNvbXBsZXRpb25Ub01vZGVsKG1vZGVsLCBmbHV4KTtcblxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVByZWNvbXBsZXRpb25Ub01vZGVsKFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGZsdXg6IGFueVtdXG4gICk6IHZvaWQge1xuICAgIGlmICghZmx1eCkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBzdGVwIG9mIGZsdXgpIHtcbiAgICAgIGlmIChzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbERlZmluaXRpb24gb2Ygc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgICBjb25zdCBjb250cm9sSWQgPSBjb250cm9sRGVmaW5pdGlvbi5pZGVudGlmaWVyO1xuICAgICAgICAgICAgICBpZiAoIWNvbnRyb2xJZCkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgLy8gT25seSBwcm9jZXNzIE1hbnVhbElucHV0IGNvbnRyb2xzIHdpdGggcHJlY29tcGxldGlvbiBlbmFibGVkXG4gICAgICAgICAgICAgIGlmIChjb250cm9sRGVmaW5pdGlvbi50eXBlID09PSBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcGVjaWZpY0RhdGEgPVxuICAgICAgICAgICAgICAgICAgY29udHJvbERlZmluaXRpb24uc3BlY2lmaWNDb250cm9sRGF0YSBhcyBNYW51YWxJbnB1dENvbnRyb2xEYXRhO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhPy5pc1ByZWNvbXBsZXRhYmxlICYmXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGE/LnByZWNvbXBsZXRpb25GaWVsZElkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICBtb2RlbFtjb250cm9sSWRdID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPT09ICcnXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlVmFsdWUgPSBtb2RlbFtzcGVjaWZpY0RhdGEucHJlY29tcGxldGlvbkZpZWxkSWRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlVmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlVmFsdWUgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBkaWN0aW9uYXJ5IHZhbHVlcyAtIGV4dHJhY3QgdGhlIGRpc3BsYXkgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVZhbHVlID09PSAnb2JqZWN0JyAmJiBzb3VyY2VWYWx1ZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbFtjb250cm9sSWRdID0gc291cmNlVmFsdWUubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxbY29udHJvbElkXSA9IHNvdXJjZVZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhcHBseURlZmF1bHRzVG9Nb2RlbChcbiAgICBmbHV4OiBhbnlbXSxcbiAgICBkaWN0aW9uYXJ5TWFwOiBNYXA8c3RyaW5nLCBEaWN0aW9uYXJ5RHRvPixcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM/OiBMYW5ndWFnZVtdXG4gICk6IGFueSB7XG4gICAgY29uc3QgbW9kZWwgPSB7fTtcbiAgICBpZiAoIWZsdXgpIHJldHVybiBtb2RlbDtcblxuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBmbHV4KSB7XG4gICAgICBpZiAoc3RlcC5zZWN0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc3RlcC5zZWN0aW9ucykge1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2xEZWZpbml0aW9uIG9mIHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29udHJvbElkID0gY29udHJvbERlZmluaXRpb24uaWRlbnRpZmllcjtcbiAgICAgICAgICAgICAgaWYgKCFjb250cm9sSWQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlRm9yTW9kZWw6IGFueSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5EaWN0aW9uYXJ5KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNEYXRhID1cbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZWZpbml0aW9uLnNwZWNpZmljQ29udHJvbERhdGEgYXMgRGljdGlvbmFyeUNvbnRyb2xEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmFkaW8gPSBzcGVjaWZpY0RhdGEuc2hvd0FzUmFkaW9CdXR0b25zTGlzdCA9PT0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgPVxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoaXNSYWRpbykge1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9IGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWwgPVxuICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5maW5kQW5kTWFwRGVmYXVsdFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlcyA/PyBbXVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5DaGVja0JveCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljRGF0YSA9XG4gICAgICAgICAgICAgICAgICBjb250cm9sRGVmaW5pdGlvbi5zcGVjaWZpY0NvbnRyb2xEYXRhIGFzIGFueTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGE/Lmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJlxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9IHNwZWNpZmljRGF0YS5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWVGb3JNb2RlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2NvbnRyb2xJZF0gPVxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBseSBwcmVjb21wbGV0aW9uIGZvciBNYW51YWxJbnB1dCBjb250cm9sc1xuICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5hcHBseVByZWNvbXBsZXRpb25Ub01vZGVsKFxuICAgICAgbW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgIGZsdXhcbiAgICApO1xuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgc3RhdGljIG1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICBkdG86IGFueSxcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM6IExhbmd1YWdlW11cbiAgKTogRGljdGlvbmFyeVZhbHVlIHwgbnVsbCB7XG4gICAgaWYgKCFkdG8gfHwgdHlwZW9mIGR0by5pZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2xhdGlvbnNEdG8gPSBkdG8udmFsdWVUcmFuc2xhdGlvbnMgfHwgZHRvLnRyYW5zbGF0aW9ucyB8fCBbXTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGR0by5pZCxcbiAgICAgIG5hbWU6IGR0by5uYW1lID8/ICcnLFxuICAgICAgYWN0aXZlOiBkdG8uYWN0aXZlID8/IGZhbHNlLFxuICAgICAgbG9ja2VkOiBkdG8ubG9ja2VkID8/IGZhbHNlLFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICB0cmFuc2xhdGlvbnNEdG8ubWFwKCh0OiBUcmFuc2xhdGlvbkR0byk6IFRyYW5zbGF0aW9uID0+IHtcbiAgICAgICAgICBjb25zdCBsYW5nID0gYXZhaWxhYmxlTGFuZ3VhZ2VzPy5maW5kKChsKSA9PiBsLmlkID09PSB0Lmxhbmd1YWdlSWQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsYW5ndWFnZUlkOiB0Lmxhbmd1YWdlSWQsXG4gICAgICAgICAgICBsYW5ndWFnZUlzbzogbGFuZz8uaXNvID8/ICcnLFxuICAgICAgICAgICAgdmFsdWU6IHQudmFsdWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSkgfHwgW10sXG4gICAgICBjaGlsZERpY3Rpb25hcnlJZDogZHRvLmNoaWxkRGljdGlvbmFyeUlkLFxuICAgICAgY2hpbGREaWN0aW9uYXJ5VVVJRDogZHRvLmNoaWxkRGljdGlvbmFyeVVVSUQsXG4gICAgICByZWZlcmVuY2VWYWx1ZXM6IGR0by5yZWZlcmVuY2VWYWx1ZXMgfHwgW10sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kQW5kTWFwRGVmYXVsdFZhbHVlKFxuICAgIGRpY3Rpb25hcnk6IERpY3Rpb25hcnlEdG8gfCB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFZhbHVlSWQ6IG51bWJlcixcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM6IExhbmd1YWdlW11cbiAgKTogRGljdGlvbmFyeVZhbHVlIHwgbnVsbCB7XG4gICAgaWYgKCFkaWN0aW9uYXJ5IHx8ICFkaWN0aW9uYXJ5LnZhbHVlcyB8fCBkZWZhdWx0VmFsdWVJZCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlRHRvID0gZGljdGlvbmFyeS52YWx1ZXMuZmluZChcbiAgICAgICh2KSA9PiB2LmlkID09PSBkZWZhdWx0VmFsdWVJZFxuICAgICk7XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlRHRvKSB7XG4gICAgICBjb25zdCBtYXBwZWRWYWx1ZTogRGljdGlvbmFyeVZhbHVlID0ge1xuICAgICAgICBpZDogZGVmYXVsdFZhbHVlRHRvLmlkLFxuICAgICAgICBuYW1lOiBkZWZhdWx0VmFsdWVEdG8ubmFtZSxcbiAgICAgICAgYWN0aXZlOiBkZWZhdWx0VmFsdWVEdG8uYWN0aXZlLFxuICAgICAgICBsb2NrZWQ6IGRlZmF1bHRWYWx1ZUR0by5sb2NrZWQsXG4gICAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgICBkZWZhdWx0VmFsdWVEdG8udmFsdWVUcmFuc2xhdGlvbnM/Lm1hcChcbiAgICAgICAgICAgICh0OiBUcmFuc2xhdGlvbkR0byk6IFRyYW5zbGF0aW9uID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbGFuZyA9IGF2YWlsYWJsZUxhbmd1YWdlcz8uZmluZChcbiAgICAgICAgICAgICAgICAobCkgPT4gbC5pZCA9PT0gdC5sYW5ndWFnZUlkXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VJZDogdC5sYW5ndWFnZUlkLFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlSXNvOiBsYW5nPy5pc28gPz8gJycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHQudmFsdWUsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKSB8fCBbXSxcbiAgICAgICAgY2hpbGREaWN0aW9uYXJ5SWQ6IGRlZmF1bHRWYWx1ZUR0by5jaGlsZERpY3Rpb25hcnlJZCxcbiAgICAgICAgY2hpbGREaWN0aW9uYXJ5VVVJRDogZGVmYXVsdFZhbHVlRHRvLmNoaWxkRGljdGlvbmFyeVVVSUQsXG4gICAgICAgIHJlZmVyZW5jZVZhbHVlczogW10sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIG1hcHBlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
421
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtcG9wdWxhdGlvbi5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVsLXBvcHVsYXRpb24uaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQWlELE1BQU0sc0JBQXNCLENBQUM7QUFJdEcsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxNQUFNLENBQUMseUJBQXlCLENBQzlCLFFBQWEsRUFDYixJQUFXLEVBQ1gsYUFBeUMsRUFDekMsa0JBQThCO1FBRTlCLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsT0FBTyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUF3QixFQUFFLENBQUM7UUFFdEMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQ25ELEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3JCLEtBQUssTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUN2QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQ0FDdEIsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7NEJBQ3RELENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztR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LElBQUksRUFBRTt3QkFDNUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO3FCQUNmLENBQUM7Z0JBQ0osQ0FBQyxDQUNGLElBQUksRUFBRTtnQkFDVCxpQkFBaUIsRUFBRSxlQUFlLENBQUMsaUJBQWlCO2dCQUNwRCxtQkFBbUIsRUFBRSxlQUFlLENBQUMsbUJBQW1CO2dCQUN4RCxlQUFlLEVBQUUsRUFBRTthQUNwQixDQUFDO1lBQ0YsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeUR0bywgRGljdGlvbmFyeVZhbHVlLCBUcmFuc2xhdGlvbkR0bywgVHJhbnNsYXRpb24gfSBmcm9tIFwiLi9tb2RlbHMvZGljdGlvbmFyeS5tb2RlbFwiO1xuaW1wb3J0IHsgU3RlcENvbnRyb2xUeXBlLCBEaWN0aW9uYXJ5Q29udHJvbERhdGEsIE1hbnVhbElucHV0Q29udHJvbERhdGEgfSBmcm9tIFwiLi9tb2RlbHMvZm9ybXMubW9kZWxcIjtcbmltcG9ydCB7IExhbmd1YWdlIH0gZnJvbSBcIi4vbW9kZWxzL2xhbmd1YWdlLm1vZGVsXCI7XG5cblxuZXhwb3J0IGNsYXNzIE1vZGVsUG9wdWxhdGlvbkhlbHBlciB7XG4gIHN0YXRpYyBwb3B1bGF0ZU1vZGVsV2l0aEZpbGxEYXRhKFxuICAgIGZpbGxEYXRhOiBhbnksXG4gICAgZmx1eDogYW55W10sXG4gICAgZGljdGlvbmFyeU1hcDogTWFwPHN0cmluZywgRGljdGlvbmFyeUR0bz4sXG4gICAgYXZhaWxhYmxlTGFuZ3VhZ2VzOiBMYW5ndWFnZVtdXG4gICk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGlmICghZmlsbERhdGE/LmZsdXggfHwgIWZsdXgpIHtcbiAgICAgIHJldHVybiBNb2RlbFBvcHVsYXRpb25IZWxwZXIuYXBwbHlEZWZhdWx0c1RvTW9kZWwoZmx1eCwgZGljdGlvbmFyeU1hcCk7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIGNvbnN0IGZpbGxEYXRhQ29udHJvbHNNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBmaWxsRGF0YS5mbHV4KSB7XG4gICAgICBpZiAoc3RlcC5zZWN0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc3RlcC5zZWN0aW9ucykge1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgICBpZiAoY29udHJvbC5jb250cm9sSWQpIHtcbiAgICAgICAgICAgICAgICBmaWxsRGF0YUNvbnRyb2xzTWFwLnNldChjb250cm9sLmNvbnRyb2xJZCwgY29udHJvbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHN0ZXAgb2YgZmx1eCkge1xuICAgICAgaWYgKHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgICBpZiAoc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb250cm9sRGVmaW5pdGlvbiBvZiBzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xJZCA9IGNvbnRyb2xEZWZpbml0aW9uLmlkZW50aWZpZXI7XG4gICAgICAgICAgICAgIGlmICghY29udHJvbElkKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICBsZXQgdmFsdWVTZXRGb3JDb250cm9sID0gZmFsc2U7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbGxlZENvbnRyb2xEYXRhID0gZmlsbERhdGFDb250cm9sc01hcC5nZXQoY29udHJvbElkKTtcblxuICAgICAgICAgICAgICBpZiAoZmlsbGVkQ29udHJvbERhdGEpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVGcm9tRmlsbERhdGE6IGFueSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBsZXQgZmlsbGVkVmFsdWVJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgZmlsbGVkQ29udHJvbERhdGEuZmlsbFZhbHVlSWQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgIGZpbGxlZENvbnRyb2xEYXRhLmZpbGxWYWx1ZUlkICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZElkID0gcGFyc2VJbnQoXG4gICAgICAgICAgICAgICAgICAgIFN0cmluZyhmaWxsZWRDb250cm9sRGF0YS5maWxsVmFsdWVJZCksXG4gICAgICAgICAgICAgICAgICAgIDEwXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgZmlsbGVkVmFsdWVJZCA9ICFpc05hTihwYXJzZWRJZCkgPyBwYXJzZWRJZCA6IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGxlZFZhbHVlID0gZmlsbGVkQ29udHJvbERhdGEuZmlsbFZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5EaWN0aW9uYXJ5KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzcGVjaWZpY0RhdGEgPVxuICAgICAgICAgICAgICAgICAgICBjb250cm9sRGVmaW5pdGlvbi5zcGVjaWZpY0NvbnRyb2xEYXRhIGFzIERpY3Rpb25hcnlDb250cm9sRGF0YTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzUmFkaW8gPSBzcGVjaWZpY0RhdGEuc2hvd0FzUmFkaW9CdXR0b25zTGlzdCA9PT0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIG11bHRpLXNlbGVjdCB2YWx1ZXMgZmlyc3RcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGxWYWx1ZUlkcyA9IGZpbGxlZENvbnRyb2xEYXRhLmZpbGxWYWx1ZUlkcztcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmFsbG93TXVsdGlwbGVTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgZmlsbFZhbHVlSWRzICYmXG4gICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoZmlsbFZhbHVlSWRzKSAmJlxuICAgICAgICAgICAgICAgICAgICBmaWxsVmFsdWVJZHMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkVmFsdWVzOiBEaWN0aW9uYXJ5VmFsdWVbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlSWQgb2YgZmlsbFZhbHVlSWRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtZXJpY0lkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZUlkID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHZhbHVlSWQsIDEwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVEdG8gPSBkaWN0aW9uYXJ5Py52YWx1ZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAodikgPT4gdi5pZCA9PT0gbnVtZXJpY0lkXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcHBlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5tYXBEaWN0aW9uYXJ5VmFsdWVEdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVEdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwcGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBlZFZhbHVlcy5wdXNoKG1hcHBlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXBwZWRWYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJvbUZpbGxEYXRhID0gbWFwcGVkVmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbGxlZFZhbHVlSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmFkaW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZyb21GaWxsRGF0YSA9IGZpbGxlZFZhbHVlSWQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUR0byA9IGRpY3Rpb25hcnk/LnZhbHVlcz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh2KSA9PiB2LmlkID09PSBmaWxsZWRWYWx1ZUlkXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJvbUZpbGxEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLm1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUR0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGZpbGxlZFZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgIGZpbGxlZFZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNSYWRpbykge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJvbUZpbGxEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBmaWxsZWRWYWx1ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmaWxsZWRWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZpbGxlZFZhbHVlID09PSAnb2JqZWN0JyAmJiBmaWxsZWRWYWx1ZT8uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJvbUZpbGxEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLm1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsZWRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUR0byA9IGRpY3Rpb25hcnk/LnZhbHVlcz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHYpID0+IHYuaWQgPT09IGZpbGxlZFZhbHVlIHx8IHYubmFtZSA9PT0gZmlsbGVkVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVEdG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRnJvbUZpbGxEYXRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlbFBvcHVsYXRpb25IZWxwZXIubWFwRGljdGlvbmFyeVZhbHVlRHRvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVEdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgcmVmZXJlbmNlIHZhbHVlcyAob25seSBmb3Igc2luZ2xlLXNlbGVjdClcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVGcm9tRmlsbERhdGEgJiZcbiAgICAgICAgICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkodmFsdWVGcm9tRmlsbERhdGEpICYmXG4gICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlNYXAuaGFzKHNwZWNpZmljRGF0YS5kaWN0aW9uYXJ5VVVJRClcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYWluRGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kaWN0aW9uYXJ5VVVJRFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWFpbkRpY3Rpb25hcnk/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IG1haW5EaWN0aW9uYXJ5LnZhbHVlcz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICh2KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB2LmlkID09PSAodmFsdWVGcm9tRmlsbERhdGEuaWQgfHwgdmFsdWVGcm9tRmlsbERhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2VEaWN0aW9uYXJpZXMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5TWFwLnZhbHVlcygpXG4gICAgICAgICAgICAgICAgICAgICAgICApLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpY3QpID0+IGRpY3QucmVmZXJlbmNlSWQgPT09IG1haW5EaWN0aW9uYXJ5LmlkXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlZkRpY3Qgb2YgcmVmZXJlbmNlRGljdGlvbmFyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZlZhbHVlID0gcmVmRGljdC52YWx1ZXM/LmZpbmQoKHYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi5yZWZlcmVuY2VWYWx1ZXMuc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydikgPT4gcnYuaWQgPT09IHNlbGVjdGVkVmFsdWUuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZlZhbHVlICYmIHJlZkRpY3QudXVpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZkNvbnRyb2xJZCA9IGAke2NvbnRyb2xJZH1fcmVmZXJlbmNlXyR7cmVmRGljdC51dWlkfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxbcmVmQ29udHJvbElkXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlbFBvcHVsYXRpb25IZWxwZXIubWFwRGljdGlvbmFyeVZhbHVlRHRvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGlmIChmaWxsZWRWYWx1ZSAhPT0gbnVsbCAmJiBmaWxsZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlRnJvbUZpbGxEYXRhID0gZmlsbGVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZUZyb21GaWxsRGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBtb2RlbFtjb250cm9sSWRdID0gdmFsdWVGcm9tRmlsbERhdGE7XG4gICAgICAgICAgICAgICAgICB2YWx1ZVNldEZvckNvbnRyb2wgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghdmFsdWVTZXRGb3JDb250cm9sKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZUZvck1vZGVsOiBhbnkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5EaWN0aW9uYXJ5KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzcGVjaWZpY0RhdGEgPVxuICAgICAgICAgICAgICAgICAgICBjb250cm9sRGVmaW5pdGlvbi5zcGVjaWZpY0NvbnRyb2xEYXRhIGFzIERpY3Rpb25hcnlDb250cm9sRGF0YTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzUmFkaW8gPSBzcGVjaWZpY0RhdGEuc2hvd0FzUmFkaW9CdXR0b25zTGlzdCA9PT0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCA9XG4gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQ7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeURlZmF1bHRWYWx1ZUlkICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmFkaW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9IGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWN0aW9uYXJ5ID0gZGljdGlvbmFyeU1hcC5nZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZUZvck1vZGVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5maW5kQW5kTWFwRGVmYXVsdFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSByZWZlcmVuY2UgdmFsdWVzIGZvciBkZWZhdWx0IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCAmJlxuICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlNYXAuaGFzKHNwZWNpZmljRGF0YS5kaWN0aW9uYXJ5VVVJRClcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFpbkRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kaWN0aW9uYXJ5VVVJRFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG1haW5EaWN0aW9uYXJ5Py5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IG1haW5EaWN0aW9uYXJ5LnZhbHVlcz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi5pZCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdFZhbHVlRm9yTW9kZWwuaWQgfHwgZGVmYXVsdFZhbHVlRm9yTW9kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2VEaWN0aW9uYXJpZXMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlNYXAudmFsdWVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpY3QpID0+IGRpY3QucmVmZXJlbmNlSWQgPT09IG1haW5EaWN0aW9uYXJ5LmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZEaWN0IG9mIHJlZmVyZW5jZURpY3Rpb25hcmllcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZlZhbHVlID0gcmVmRGljdC52YWx1ZXM/LmZpbmQoKHYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LnJlZmVyZW5jZVZhbHVlcy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnYpID0+IHJ2LmlkID09PSBzZWxlY3RlZFZhbHVlLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWZWYWx1ZSAmJiByZWZEaWN0LnV1aWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZkNvbnRyb2xJZCA9IGAke2NvbnRyb2xJZH1fcmVmZXJlbmNlXyR7cmVmRGljdC51dWlkfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbFtyZWZDb250cm9sSWRdID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLm1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgY29udHJvbERlZmluaXRpb24udHlwZSA9PT0gU3RlcENvbnRyb2xUeXBlLkNoZWNrQm94XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzcGVjaWZpY0RhdGEgPVxuICAgICAgICAgICAgICAgICAgICBjb250cm9sRGVmaW5pdGlvbi5zcGVjaWZpY0NvbnRyb2xEYXRhIGFzIGFueTtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhPy5oYXNPd25Qcm9wZXJ0eSgnZGVmYXVsdFZhbHVlJykgJiZcbiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9IHNwZWNpZmljRGF0YS5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWVGb3JNb2RlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBtb2RlbFtjb250cm9sSWRdID0gZGVmYXVsdFZhbHVlRm9yTW9kZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IGFwcGx5IGluaGVyaXRlZCBmaWVsZHMgZm9yIGNvbnRyb2xzIG5vdCBwb3B1bGF0ZWQgZnJvbSBmbHV4XG4gICAgaWYgKGZpbGxEYXRhLmluaGVyaXRlZEZpZWxkcykge1xuICAgICAgZm9yIChjb25zdCBzdGVwIG9mIGZsdXgpIHtcbiAgICAgICAgaWYgKCFzdGVwLnNlY3Rpb25zKSBjb250aW51ZTtcbiAgICAgICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHN0ZXAuc2VjdGlvbnMpIHtcbiAgICAgICAgICBpZiAoIXNlY3Rpb24uY29udHJvbHMpIGNvbnRpbnVlO1xuICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbERlZiBvZiBzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sSWQgPSBjb250cm9sRGVmLmlkZW50aWZpZXI7XG4gICAgICAgICAgICBpZiAoIWNvbnRyb2xJZCB8fCBtb2RlbFtjb250cm9sSWRdICE9PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBpbmhlcml0ZWRWYWx1ZSA9IGZpbGxEYXRhLmluaGVyaXRlZEZpZWxkc1tjb250cm9sSWRdO1xuICAgICAgICAgICAgaWYgKGluaGVyaXRlZFZhbHVlID09PSB1bmRlZmluZWQgfHwgaW5oZXJpdGVkVmFsdWUgPT09IG51bGwpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBpZiAoY29udHJvbERlZi50eXBlID09PSBTdGVwQ29udHJvbFR5cGUuRGljdGlvbmFyeSkge1xuICAgICAgICAgICAgICBjb25zdCBzcGVjaWZpY0RhdGEgPVxuICAgICAgICAgICAgICAgIGNvbnRyb2xEZWYuc3BlY2lmaWNDb250cm9sRGF0YSBhcyBEaWN0aW9uYXJ5Q29udHJvbERhdGE7XG4gICAgICAgICAgICAgIGNvbnN0IGlzUmFkaW8gPSBzcGVjaWZpY0RhdGEuc2hvd0FzUmFkaW9CdXR0b25zTGlzdCA9PT0gdHJ1ZTtcblxuICAgICAgICAgICAgICAvLyBFbnJpY2hlZCBmb3JtYXQ6IHsgZmlsbFZhbHVlLCBmaWxsVmFsdWVJZCwgZmlsbFZhbHVlSWRzLCBkaWN0aW9uYXJ5VVVJRCB9XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0eXBlb2YgaW5oZXJpdGVkVmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoaW5oZXJpdGVkVmFsdWUpICYmXG4gICAgICAgICAgICAgICAgaW5oZXJpdGVkVmFsdWUuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlVVUlEXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIC8vIE11bHRpLXNlbGVjdFxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5hbGxvd011bHRpcGxlU2VsZWN0aW9uICYmXG4gICAgICAgICAgICAgICAgICBpbmhlcml0ZWRWYWx1ZS5maWxsVmFsdWVJZHMgJiZcbiAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoaW5oZXJpdGVkVmFsdWUuZmlsbFZhbHVlSWRzKSAmJlxuICAgICAgICAgICAgICAgICAgaW5oZXJpdGVkVmFsdWUuZmlsbFZhbHVlSWRzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcHBlZFZhbHVlczogRGljdGlvbmFyeVZhbHVlW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWVJZCBvZiBpbmhlcml0ZWRWYWx1ZS5maWxsVmFsdWVJZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtZXJpY0lkID1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWVJZCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQodmFsdWVJZCwgMTApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlSWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlRHRvID0gZGljdGlvbmFyeT8udmFsdWVzPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICh2OiBhbnkpID0+IHYuaWQgPT09IG51bWVyaWNJZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTW9kZWxQb3B1bGF0aW9uSGVscGVyLm1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVEdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwcGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBwZWRWYWx1ZXMucHVzaChtYXBwZWQpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKG1hcHBlZFZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPSBtYXBwZWRWYWx1ZXM7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbmhlcml0ZWRWYWx1ZS5maWxsVmFsdWVJZCAhPT0gdW5kZWZpbmVkICYmIGluaGVyaXRlZFZhbHVlLmZpbGxWYWx1ZUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBTaW5nbGUtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRJZCA9IHBhcnNlSW50KFxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcoaW5oZXJpdGVkVmFsdWUuZmlsbFZhbHVlSWQpLFxuICAgICAgICAgICAgICAgICAgICAxMFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmICghaXNOYU4ocGFyc2VkSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1JhZGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbW9kZWxbY29udHJvbElkXSA9IHBhcnNlZElkO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlRHRvID0gZGljdGlvbmFyeT8udmFsdWVzPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHY6IGFueSkgPT4gdi5pZCA9PT0gcGFyc2VkSWRcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZUR0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxbY29udHJvbElkXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5tYXBEaWN0aW9uYXJ5VmFsdWVEdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVEdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEJhY2t3YXJkIGNvbXBhdGlibGU6IHNpbXBsZSB2YWx1ZSAob2xkIGZvcm1hdClcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRJZCA9IHBhcnNlSW50KFN0cmluZyhpbmhlcml0ZWRWYWx1ZSksIDEwKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKHBhcnNlZElkKSkge1xuICAgICAgICAgICAgICAgICAgaWYgKGlzUmFkaW8pIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxbY29udHJvbElkXSA9IHBhcnNlZElkO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KFxuICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljRGF0YS5kaWN0aW9uYXJ5VVVJRFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUR0byA9IGRpY3Rpb25hcnk/LnZhbHVlcz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAodjogYW55KSA9PiB2LmlkID09PSBwYXJzZWRJZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbFtjb250cm9sSWRdID1cbiAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5tYXBEaWN0aW9uYXJ5VmFsdWVEdG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRHRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPSBpbmhlcml0ZWRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBseSBwcmVjb21wbGV0aW9uIGZvciBNYW51YWxJbnB1dCBjb250cm9sc1xuICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5hcHBseVByZWNvbXBsZXRpb25Ub01vZGVsKG1vZGVsLCBmbHV4KTtcblxuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVByZWNvbXBsZXRpb25Ub01vZGVsKFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGZsdXg6IGFueVtdXG4gICk6IHZvaWQge1xuICAgIGlmICghZmx1eCkgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBzdGVwIG9mIGZsdXgpIHtcbiAgICAgIGlmIChzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzdGVwLnNlY3Rpb25zKSB7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbERlZmluaXRpb24gb2Ygc2VjdGlvbi5jb250cm9scykge1xuICAgICAgICAgICAgICBjb25zdCBjb250cm9sSWQgPSBjb250cm9sRGVmaW5pdGlvbi5pZGVudGlmaWVyO1xuICAgICAgICAgICAgICBpZiAoIWNvbnRyb2xJZCkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgLy8gT25seSBwcm9jZXNzIE1hbnVhbElucHV0IGNvbnRyb2xzIHdpdGggcHJlY29tcGxldGlvbiBlbmFibGVkXG4gICAgICAgICAgICAgIGlmIChjb250cm9sRGVmaW5pdGlvbi50eXBlID09PSBTdGVwQ29udHJvbFR5cGUuTWFudWFsSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcGVjaWZpY0RhdGEgPVxuICAgICAgICAgICAgICAgICAgY29udHJvbERlZmluaXRpb24uc3BlY2lmaWNDb250cm9sRGF0YSBhcyBNYW51YWxJbnB1dENvbnRyb2xEYXRhO1xuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhPy5pc1ByZWNvbXBsZXRhYmxlICYmXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGE/LnByZWNvbXBsZXRpb25GaWVsZElkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICBtb2RlbFtjb250cm9sSWRdID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsW2NvbnRyb2xJZF0gPT09ICcnXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlVmFsdWUgPSBtb2RlbFtzcGVjaWZpY0RhdGEucHJlY29tcGxldGlvbkZpZWxkSWRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlVmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlVmFsdWUgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBkaWN0aW9uYXJ5IHZhbHVlcyAtIGV4dHJhY3QgdGhlIGRpc3BsYXkgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVZhbHVlID09PSAnb2JqZWN0JyAmJiBzb3VyY2VWYWx1ZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbFtjb250cm9sSWRdID0gc291cmNlVmFsdWUubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxbY29udHJvbElkXSA9IHNvdXJjZVZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhcHBseURlZmF1bHRzVG9Nb2RlbChcbiAgICBmbHV4OiBhbnlbXSxcbiAgICBkaWN0aW9uYXJ5TWFwOiBNYXA8c3RyaW5nLCBEaWN0aW9uYXJ5RHRvPixcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM/OiBMYW5ndWFnZVtdXG4gICk6IGFueSB7XG4gICAgY29uc3QgbW9kZWwgPSB7fTtcbiAgICBpZiAoIWZsdXgpIHJldHVybiBtb2RlbDtcblxuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBmbHV4KSB7XG4gICAgICBpZiAoc3RlcC5zZWN0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc3RlcC5zZWN0aW9ucykge1xuICAgICAgICAgIGlmIChzZWN0aW9uLmNvbnRyb2xzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2xEZWZpbml0aW9uIG9mIHNlY3Rpb24uY29udHJvbHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29udHJvbElkID0gY29udHJvbERlZmluaXRpb24uaWRlbnRpZmllcjtcbiAgICAgICAgICAgICAgaWYgKCFjb250cm9sSWQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlRm9yTW9kZWw6IGFueSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5EaWN0aW9uYXJ5KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BlY2lmaWNEYXRhID1cbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZWZpbml0aW9uLnNwZWNpZmljQ29udHJvbERhdGEgYXMgRGljdGlvbmFyeUNvbnRyb2xEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmFkaW8gPSBzcGVjaWZpY0RhdGEuc2hvd0FzUmFkaW9CdXR0b25zTGlzdCA9PT0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgPVxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmYXVsdFZhbHVlSWQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoaXNSYWRpbykge1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9IGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5TWFwLmdldChcbiAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGEuZGljdGlvbmFyeVVVSURcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWwgPVxuICAgICAgICAgICAgICAgICAgICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5maW5kQW5kTWFwRGVmYXVsdFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZhdWx0VmFsdWVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlcyA/PyBbXVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2xEZWZpbml0aW9uLnR5cGUgPT09IFN0ZXBDb250cm9sVHlwZS5DaGVja0JveCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwZWNpZmljRGF0YSA9XG4gICAgICAgICAgICAgICAgICBjb250cm9sRGVmaW5pdGlvbi5zcGVjaWZpY0NvbnRyb2xEYXRhIGFzIGFueTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBzcGVjaWZpY0RhdGE/Lmhhc093blByb3BlcnR5KCdkZWZhdWx0VmFsdWUnKSAmJlxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgc3BlY2lmaWNEYXRhLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVGb3JNb2RlbCA9IHNwZWNpZmljRGF0YS5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWVGb3JNb2RlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2NvbnRyb2xJZF0gPVxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlRm9yTW9kZWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBcHBseSBwcmVjb21wbGV0aW9uIGZvciBNYW51YWxJbnB1dCBjb250cm9sc1xuICAgIE1vZGVsUG9wdWxhdGlvbkhlbHBlci5hcHBseVByZWNvbXBsZXRpb25Ub01vZGVsKFxuICAgICAgbW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgIGZsdXhcbiAgICApO1xuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgc3RhdGljIG1hcERpY3Rpb25hcnlWYWx1ZUR0byhcbiAgICBkdG86IGFueSxcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM6IExhbmd1YWdlW11cbiAgKTogRGljdGlvbmFyeVZhbHVlIHwgbnVsbCB7XG4gICAgaWYgKCFkdG8gfHwgdHlwZW9mIGR0by5pZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2xhdGlvbnNEdG8gPSBkdG8udmFsdWVUcmFuc2xhdGlvbnMgfHwgZHRvLnRyYW5zbGF0aW9ucyB8fCBbXTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGR0by5pZCxcbiAgICAgIG5hbWU6IGR0by5uYW1lID8/ICcnLFxuICAgICAgYWN0aXZlOiBkdG8uYWN0aXZlID8/IGZhbHNlLFxuICAgICAgbG9ja2VkOiBkdG8ubG9ja2VkID8/IGZhbHNlLFxuICAgICAgdHJhbnNsYXRpb25zOlxuICAgICAgICB0cmFuc2xhdGlvbnNEdG8ubWFwKCh0OiBUcmFuc2xhdGlvbkR0byk6IFRyYW5zbGF0aW9uID0+IHtcbiAgICAgICAgICBjb25zdCBsYW5nID0gYXZhaWxhYmxlTGFuZ3VhZ2VzPy5maW5kKChsKSA9PiBsLmlkID09PSB0Lmxhbmd1YWdlSWQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsYW5ndWFnZUlkOiB0Lmxhbmd1YWdlSWQsXG4gICAgICAgICAgICBsYW5ndWFnZUlzbzogbGFuZz8uaXNvID8/ICcnLFxuICAgICAgICAgICAgdmFsdWU6IHQudmFsdWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSkgfHwgW10sXG4gICAgICBjaGlsZERpY3Rpb25hcnlJZDogZHRvLmNoaWxkRGljdGlvbmFyeUlkLFxuICAgICAgY2hpbGREaWN0aW9uYXJ5VVVJRDogZHRvLmNoaWxkRGljdGlvbmFyeVVVSUQsXG4gICAgICByZWZlcmVuY2VWYWx1ZXM6IGR0by5yZWZlcmVuY2VWYWx1ZXMgfHwgW10sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kQW5kTWFwRGVmYXVsdFZhbHVlKFxuICAgIGRpY3Rpb25hcnk6IERpY3Rpb25hcnlEdG8gfCB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFZhbHVlSWQ6IG51bWJlcixcbiAgICBhdmFpbGFibGVMYW5ndWFnZXM6IExhbmd1YWdlW11cbiAgKTogRGljdGlvbmFyeVZhbHVlIHwgbnVsbCB7XG4gICAgaWYgKCFkaWN0aW9uYXJ5IHx8ICFkaWN0aW9uYXJ5LnZhbHVlcyB8fCBkZWZhdWx0VmFsdWVJZCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlRHRvID0gZGljdGlvbmFyeS52YWx1ZXMuZmluZChcbiAgICAgICh2KSA9PiB2LmlkID09PSBkZWZhdWx0VmFsdWVJZFxuICAgICk7XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlRHRvKSB7XG4gICAgICBjb25zdCBtYXBwZWRWYWx1ZTogRGljdGlvbmFyeVZhbHVlID0ge1xuICAgICAgICBpZDogZGVmYXVsdFZhbHVlRHRvLmlkLFxuICAgICAgICBuYW1lOiBkZWZhdWx0VmFsdWVEdG8ubmFtZSxcbiAgICAgICAgYWN0aXZlOiBkZWZhdWx0VmFsdWVEdG8uYWN0aXZlLFxuICAgICAgICBsb2NrZWQ6IGRlZmF1bHRWYWx1ZUR0by5sb2NrZWQsXG4gICAgICAgIHRyYW5zbGF0aW9uczpcbiAgICAgICAgICBkZWZhdWx0VmFsdWVEdG8udmFsdWVUcmFuc2xhdGlvbnM/Lm1hcChcbiAgICAgICAgICAgICh0OiBUcmFuc2xhdGlvbkR0byk6IFRyYW5zbGF0aW9uID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbGFuZyA9IGF2YWlsYWJsZUxhbmd1YWdlcz8uZmluZChcbiAgICAgICAgICAgICAgICAobCkgPT4gbC5pZCA9PT0gdC5sYW5ndWFnZUlkXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VJZDogdC5sYW5ndWFnZUlkLFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlSXNvOiBsYW5nPy5pc28gPz8gJycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHQudmFsdWUsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKSB8fCBbXSxcbiAgICAgICAgY2hpbGREaWN0aW9uYXJ5SWQ6IGRlZmF1bHRWYWx1ZUR0by5jaGlsZERpY3Rpb25hcnlJZCxcbiAgICAgICAgY2hpbGREaWN0aW9uYXJ5VVVJRDogZGVmYXVsdFZhbHVlRHRvLmNoaWxkRGljdGlvbmFyeVVVSUQsXG4gICAgICAgIHJlZmVyZW5jZVZhbHVlczogW10sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIG1hcHBlZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
@@ -27,4 +27,4 @@ export class ConvertDocumentToPdfRequest {
27
27
  }
28
28
  export class ConvertDocumentToPdfResponse {
29
29
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9hcHBsaWNhdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxPQUFPLGNBQWM7Q0FXMUI7QUFFRCxNQUFNLE9BQU8sd0JBQXdCO0NBZXBDO0FBRUQsTUFBTSxPQUFPLCtCQUErQjtDQUkzQztBQUVELE1BQU0sT0FBTyx1QkFBdUI7Q0FJbkM7QUFFRCxNQUFNLE9BQU8sbUNBQW1DO0NBYy9DO0FBRUQsTUFBTSxPQUFPLDZCQUE2QjtDQU16QztBQUVELE1BQU0sT0FBTyxTQUFTO0NBTXJCO0FBRUQsTUFBTSxPQUFPLGtCQUFrQjtDQUk5QjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7Q0FhOUI7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0lBQTlCO1FBR0UsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFDL0IsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtDQVM3QjtBQUVELE1BQU0sT0FBTywyQkFBMkI7Q0FPdkM7QUFFRCxNQUFNLE9BQU8sNEJBQTRCO0NBSXhDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQge1xuICBBcGlEYXRhLFxuICBBcHBEb2N1bWVudCxcbiAgQXBwUGFydG5lcixcbiAgRGVzaWduTW9kZWwsXG4gIERpc3BsYXlNb2RlbCxcbiAgR2VuZXJhbERhdGFNb2RlbCxcbiAgU3RhdHVzTW9kZWwsXG4gIFVwbG9hZERvY3VtZW50LFxufSBmcm9tICcuL2Zvcm1zLm1vZGVsJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTWFwcGluZ3MgfSBmcm9tICcuL2FwcGxpY2F0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tICcuLi9vdGhlcnMvdXRpbHMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRUeXBlIH0gZnJvbSAnLi4vb3RoZXJzL2Vudmlyb25tZW50LXR5cGUnO1xuaW1wb3J0IHsgU3RlcERhdGEgfSBmcm9tICcuL2ZsdXgubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25EdG8ge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwcFR5cGVJZDogbnVtYmVyO1xuICBjb25maWd1cmF0aW9uOiBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb247XG4gIGNhbkdldEZyb21Qcm9kOiBib29sZWFuO1xuICBjYW5HZXRGcm9tVGVzdDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluUHJvZDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluVGVzdDogYm9vbGVhbjtcbiAgdXVpZDogc3RyaW5nO1xuICBlbnZUeXBlOiBFbnZpcm9ubWVudFR5cGU7XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24ge1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uVXVpZDogc3RyaW5nO1xuICBnZW5lcmFsRGF0YTogR2VuZXJhbERhdGFNb2RlbDtcbiAgZGVzaWduOiBEZXNpZ25Nb2RlbDtcbiAgZmx1eDogU3RlcERhdGFbXTtcbiAgYXBpOiBBcGlEYXRhO1xuICBwYXJ0bmVyczogQXBwUGFydG5lcltdO1xuICBkb2N1bWVudHM6IEFwcERvY3VtZW50W107XG4gIHN0YXR1c2VzOiBTdGF0dXNNb2RlbFtdO1xuICBkaXNwbGF5OiBEaXNwbGF5TW9kZWw7XG4gIGdlbmVyYXRlZENzczogQ3NzUnVsZXM7XG4gIG1ldGFkYXRhRmllbGRzOiBbXTtcbiAgZXJyb3JzOiB7IFt0YWJOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICBhcHBsaWNhdGlvbk1hcHBpbmdzOiBBcHBsaWNhdGlvbk1hcHBpbmdzO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25HZW5lcmF0ZURvY3VtZW50c0R0byB7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBJZDogc3RyaW5nO1xuICBzdGVwSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRW5yb2xDYXJkRHRvIHtcbiAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gIGFwcElkOiBzdHJpbmc7XG4gIHN0ZXBJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25HZXRHZW5lcmF0ZWREb2N1bWVudHNEdG8ge1xuICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgY29udHJvbElkOiBzdHJpbmc7XG4gIGlzRGlzcGxheU1vZGU/OiBib29sZWFuO1xuXG4gIC8vLyA8c3VtbWFyeT5cbiAgLy8vIE9wdGlvbmFsOiBBcHBsaWNhdGlvbiBDb25maWd1cmF0aW9uIFVVSUQuIElmIG5vdCBwcm92aWRlZCwgd2lsbCBiZSByZXRyaWV2ZWQgZnJvbSBBcHBsaWNhdGlvbkRhdGEuXG4gIC8vLyA8L3N1bW1hcnk+XG4gIGFwcENvbmZpZ3VyYXRpb25VVUlEPzogc3RyaW5nO1xuXG4gIC8vLyA8c3VtbWFyeT5cbiAgLy8vIE9wdGlvbmFsOiBFbnZpcm9ubWVudC4gSWYgbm90IHByb3ZpZGVkLCB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIEFwcGxpY2F0aW9uRGF0YS5cbiAgLy8vIDwvc3VtbWFyeT5cbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblVwbG9hZERvY3VtZW50c0R0byB7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBJZDogc3RyaW5nO1xuICBkb2N1bWVudHM6IFVwbG9hZERvY3VtZW50W107XG4gIGVudjogc3RyaW5nO1xuICBjb250cm9sSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNjYW5JZER0byB7XG4gIGFwcElkOiBudW1iZXI7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBzdGVwSWQ6IHN0cmluZztcbiAgb2xkSWRDYXJkOiBib29sZWFuO1xuICBwaG90b3M6IHsgYmFzZTY0OiBzdHJpbmcgfVtdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBpVmFsaWRhdGVSZXF1ZXN0IHtcbiAgYXBwSWQ6IG51bWJlcjtcbiAgYXBpSWQ6IHN0cmluZztcbiAgZGF0YTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQXBpRG9jdW1lbnRSZXF1ZXN0IHtcbiAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcblxuICAvLy8gPHN1bW1hcnk+XG4gIC8vLyBPcHRpb25hbDogQXBwbGljYXRpb24gQ29uZmlndXJhdGlvbiBVVUlELiBJZiBub3QgcHJvdmlkZWQsIHdpbGwgYmUgcmV0cmlldmVkIGZyb20gQXBwbGljYXRpb25EYXRhLlxuICAvLy8gPC9zdW1tYXJ5PlxuICBhcHBDb25maWd1cmF0aW9uVVVJRD86IHN0cmluZztcblxuICAvLy8gPHN1bW1hcnk+XG4gIC8vLyBPcHRpb25hbDogRW52aXJvbm1lbnQuIElmIG5vdCBwcm92aWRlZCwgd2lsbCBiZSByZXRyaWV2ZWQgZnJvbSBBcHBsaWNhdGlvbkRhdGEuXG4gIC8vLyA8L3N1bW1hcnk+XG4gIGVudmlyb25tZW50Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTWFrZUFjdGlvblJlcXVlc3Qge1xuICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHNldE5leHRTdGVwOiBib29sZWFuID0gZmFsc2U7XG59XG5cbmV4cG9ydCBjbGFzcyBHZW5lcmF0ZWREb2N1bWVudCB7XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIGlzQXBpRG9jdW1lbnQ6IGJvb2xlYW47XG4gIGNvbnRlbnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIENvbnZlcnREb2N1bWVudFRvUGRmUmVxdWVzdCB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgYXBwQ29uZmlndXJhdGlvblVVSUQ/OiBzdHJpbmc7XG4gIGVudmlyb25tZW50Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29udmVydERvY3VtZW50VG9QZGZSZXNwb25zZSB7XG4gIHBkZkNvbnRlbnQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL21vZGVscy9hcHBsaWNhdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxNQUFNLE9BQU8sY0FBYztDQVcxQjtBQUVELE1BQU0sT0FBTyx3QkFBd0I7Q0FlcEM7QUFFRCxNQUFNLE9BQU8sK0JBQStCO0NBSTNDO0FBRUQsTUFBTSxPQUFPLHVCQUF1QjtDQUluQztBQUVELE1BQU0sT0FBTyxtQ0FBbUM7Q0FjL0M7QUFFRCxNQUFNLE9BQU8sNkJBQTZCO0NBTXpDO0FBRUQsTUFBTSxPQUFPLFNBQVM7Q0FNckI7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0NBSTlCO0FBRUQsTUFBTSxPQUFPLGtCQUFrQjtDQWE5QjtBQUVELE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFHRSxnQkFBVyxHQUFZLEtBQUssQ0FBQztJQUMvQixDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0NBUzdCO0FBRUQsTUFBTSxPQUFPLDJCQUEyQjtDQU92QztBQUVELE1BQU0sT0FBTyw0QkFBNEI7Q0FJeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcGlEYXRhLFxuICBBcHBEb2N1bWVudCxcbiAgQXBwUGFydG5lcixcbiAgRGVzaWduTW9kZWwsXG4gIERpc3BsYXlNb2RlbCxcbiAgR2VuZXJhbERhdGFNb2RlbCxcbiAgU3RhdHVzTW9kZWwsXG4gIFVwbG9hZERvY3VtZW50LFxufSBmcm9tICcuL2Zvcm1zLm1vZGVsJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTWFwcGluZ3MgfSBmcm9tICcuL2FwcGxpY2F0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tICcuLi9vdGhlcnMvdXRpbHMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRUeXBlIH0gZnJvbSAnLi4vb3RoZXJzL2Vudmlyb25tZW50LXR5cGUnO1xuaW1wb3J0IHsgU3RlcERhdGEgfSBmcm9tICcuL2ZsdXgubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25EdG8ge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFwcFR5cGVJZDogbnVtYmVyO1xuICBjb25maWd1cmF0aW9uOiBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb247XG4gIGNhbkdldEZyb21Qcm9kOiBib29sZWFuO1xuICBjYW5HZXRGcm9tVGVzdDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluUHJvZDogYm9vbGVhbjtcbiAgY2FuUHVibGlzaEluVGVzdDogYm9vbGVhbjtcbiAgdXVpZDogc3RyaW5nO1xuICBlbnZUeXBlOiBFbnZpcm9ubWVudFR5cGU7XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24ge1xuICBhcHBsaWNhdGlvbklkOiBudW1iZXI7XG4gIGFwcGxpY2F0aW9uVXVpZDogc3RyaW5nO1xuICBnZW5lcmFsRGF0YTogR2VuZXJhbERhdGFNb2RlbDtcbiAgZGVzaWduOiBEZXNpZ25Nb2RlbDtcbiAgZmx1eDogU3RlcERhdGFbXTtcbiAgYXBpOiBBcGlEYXRhO1xuICBwYXJ0bmVyczogQXBwUGFydG5lcltdO1xuICBkb2N1bWVudHM6IEFwcERvY3VtZW50W107XG4gIHN0YXR1c2VzOiBTdGF0dXNNb2RlbFtdO1xuICBkaXNwbGF5OiBEaXNwbGF5TW9kZWw7XG4gIGdlbmVyYXRlZENzczogQ3NzUnVsZXM7XG4gIG1ldGFkYXRhRmllbGRzOiBbXTtcbiAgZXJyb3JzOiB7IFt0YWJOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICBhcHBsaWNhdGlvbk1hcHBpbmdzOiBBcHBsaWNhdGlvbk1hcHBpbmdzO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25HZW5lcmF0ZURvY3VtZW50c0R0byB7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBJZDogc3RyaW5nO1xuICBzdGVwSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRW5yb2xDYXJkRHRvIHtcbiAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gIGFwcElkOiBzdHJpbmc7XG4gIHN0ZXBJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25HZXRHZW5lcmF0ZWREb2N1bWVudHNEdG8ge1xuICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgY29udHJvbElkOiBzdHJpbmc7XG4gIGlzRGlzcGxheU1vZGU/OiBib29sZWFuO1xuXG4gIC8vLyA8c3VtbWFyeT5cbiAgLy8vIE9wdGlvbmFsOiBBcHBsaWNhdGlvbiBDb25maWd1cmF0aW9uIFVVSUQuIElmIG5vdCBwcm92aWRlZCwgd2lsbCBiZSByZXRyaWV2ZWQgZnJvbSBBcHBsaWNhdGlvbkRhdGEuXG4gIC8vLyA8L3N1bW1hcnk+XG4gIGFwcENvbmZpZ3VyYXRpb25VVUlEPzogc3RyaW5nO1xuXG4gIC8vLyA8c3VtbWFyeT5cbiAgLy8vIE9wdGlvbmFsOiBFbnZpcm9ubWVudC4gSWYgbm90IHByb3ZpZGVkLCB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIEFwcGxpY2F0aW9uRGF0YS5cbiAgLy8vIDwvc3VtbWFyeT5cbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblVwbG9hZERvY3VtZW50c0R0byB7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBJZDogc3RyaW5nO1xuICBkb2N1bWVudHM6IFVwbG9hZERvY3VtZW50W107XG4gIGVudjogc3RyaW5nO1xuICBjb250cm9sSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNjYW5JZER0byB7XG4gIGFwcElkOiBudW1iZXI7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBzdGVwSWQ6IHN0cmluZztcbiAgb2xkSWRDYXJkOiBib29sZWFuO1xuICBwaG90b3M6IHsgYmFzZTY0OiBzdHJpbmcgfVtdO1xufVxuXG5leHBvcnQgY2xhc3MgQXBpVmFsaWRhdGVSZXF1ZXN0IHtcbiAgYXBwRGF0YUlkOiBzdHJpbmc7XG4gIGFwaU1ldGhvZElkOiBzdHJpbmc7XG4gIGNvbnRyb2xJZGVudGlmaWVyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlEb2N1bWVudFJlcXVlc3Qge1xuICBhcHBEYXRhSWQ6IHN0cmluZztcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIC8vLyA8c3VtbWFyeT5cbiAgLy8vIE9wdGlvbmFsOiBBcHBsaWNhdGlvbiBDb25maWd1cmF0aW9uIFVVSUQuIElmIG5vdCBwcm92aWRlZCwgd2lsbCBiZSByZXRyaWV2ZWQgZnJvbSBBcHBsaWNhdGlvbkRhdGEuXG4gIC8vLyA8L3N1bW1hcnk+XG4gIGFwcENvbmZpZ3VyYXRpb25VVUlEPzogc3RyaW5nO1xuXG4gIC8vLyA8c3VtbWFyeT5cbiAgLy8vIE9wdGlvbmFsOiBFbnZpcm9ubWVudC4gSWYgbm90IHByb3ZpZGVkLCB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIEFwcGxpY2F0aW9uRGF0YS5cbiAgLy8vIDwvc3VtbWFyeT5cbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNYWtlQWN0aW9uUmVxdWVzdCB7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBzdGVwSWQ6IHN0cmluZztcbiAgc2V0TmV4dFN0ZXA6IGJvb2xlYW4gPSBmYWxzZTtcbn1cblxuZXhwb3J0IGNsYXNzIEdlbmVyYXRlZERvY3VtZW50IHtcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgdmVyc2lvbjogbnVtYmVyO1xuICBzdGVwSWQ6IHN0cmluZztcbiAgaXNBcGlEb2N1bWVudDogYm9vbGVhbjtcbiAgY29udGVudDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29udmVydERvY3VtZW50VG9QZGZSZXF1ZXN0IHtcbiAgY29udGVudDogc3RyaW5nO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG4gIGFwcERhdGFJZDogc3RyaW5nO1xuICBhcHBDb25maWd1cmF0aW9uVVVJRD86IHN0cmluZztcbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDb252ZXJ0RG9jdW1lbnRUb1BkZlJlc3BvbnNlIHtcbiAgcGRmQ29udGVudDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG59XG4iXX0=
@@ -100,6 +100,6 @@ export const StepTypeDetails = {
100
100
  EUPLATESC: { icon: 'credit_card', label: LabelKeys.flux.euPlatesc }, // 20
101
101
  NETOPIA: { icon: 'payment', label: LabelKeys.flux.netopia }, // 21
102
102
  OpenBanking: { icon: 'account_balance', label: LabelKeys.flux.openBanking }, // 22
103
- // Add others if needed
103
+ Validation: { icon: 'rule', label: LabelKeys.flux.validation }, // 23
104
104
  };
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx1eC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29yaWdpbi1mb3JtL3NyYy9saWIvbW9kZWxzL2ZsdXgubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSWhELE1BQU0sT0FBTyx1QkFBdUI7Q0FNbkM7QUFRRCxNQUFNLE9BQU8sV0FBVztDQWtCdkI7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUF4QjtRQU9FLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFFeEIsMEJBQXFCLEdBQVksS0FBSyxDQUFDO0lBQ3pDLENBQUM7Q0FBQTtBQUVELE1BQU0sQ0FBTixJQUFZLGVBYVg7QUFiRCxXQUFZLGVBQWU7SUFDekIsbUVBQWUsQ0FBQTtJQUNmLCtEQUFhLENBQUE7SUFDYiw2REFBWSxDQUFBO0lBQ1osaUVBQWMsQ0FBQTtJQUNkLDJEQUFXLENBQUE7SUFDWCw2REFBWSxDQUFBO0lBQ1oseURBQVUsQ0FBQTtJQUNWLDZEQUFZLENBQUE7SUFDWix5RUFBa0IsQ0FBQTtJQUNsQiwrRUFBcUIsQ0FBQTtJQUNyQix3RUFBa0IsQ0FBQTtJQUNsQiw0RUFBb0IsQ0FBQTtBQUN0QixDQUFDLEVBYlcsZUFBZSxLQUFmLGVBQWUsUUFhMUI7QUFDRCxNQUFNLENBQU4sSUFBWSx1QkFRWDtBQVJELFdBQVksdUJBQXVCO0lBQ2pDLHVGQUFpQixDQUFBO0lBQ2pCLDZFQUFZLENBQUE7SUFDWiwrRUFBYSxDQUFBO0lBQ2IscUVBQVEsQ0FBQTtJQUNSLHlFQUFVLENBQUE7SUFDVix5RUFBVSxDQUFBO0lBQ1YsK0VBQWEsQ0FBQTtBQUNmLENBQUMsRUFSVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBUWxDO0FBRUQsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0lBQTVDOztRQUdFLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0Isb0JBQWUsR0FB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dGVudCI6WyJpbXBvcnQgeyBMYWJlbEtleXMgfSBmcm9tIFwiLi4vZW51bXMvbGFiZWwua2V5c1wiO1xuaW1wb3J0IHsgQnV0dG9uQ29uZmlnLCBEaW1lbnNpb25UeXBlLCBFcnJvclRyYW5zbGF0aW9ucyB9IGZyb20gXCIuL2Zvcm1zLm1vZGVsXCI7XG5pbXBvcnQgeyBMYWJlbEluZm8sIFRyYW5zbGF0aW9uSW5mbyB9IGZyb20gXCIuL2xhYmVsLWluZm8ubW9kZWxcIjtcblxuZXhwb3J0IGNsYXNzIERlcGVuZGVudERpY3Rpb25hcnlEYXRhIHtcbiAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBib29sZWFuO1xuICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6IHN0cmluZztcbiAgZGVwZW5kZW50VmFsdWVJZHM6IG51bWJlcltdO1xuICBjb25maWd1cmluZ1R5cGU/OiAnc3RlcCcgfCAnc2VjdGlvbicgfCAnY29tcG9uZW50JztcbiAgY29uZmlndXJpbmdJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xhdGlvbkl0ZW0ge1xuICBsYW5ndWFnZUlkOiBudW1iZXI7XG4gIGxhbmd1YWdlSXNvOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBTZWN0aW9uRGF0YSB7XG4gIGlkZW50aWZpZXI6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdHlwZTogbnVtYmVyO1xuICBjb250cm9sczogQ29udHJvbERhdGFbXTtcbiAgcHJlc2VudGF0aW9uQ29udHJvbHM/OiBQcmVzZW50YXRpb25Db250cm9sW107XG4gIGlzTmF2aWdhdGlvblNlY3Rpb24/OiBib29sZWFuO1xuICBjYW5EZXBlbmQ/OiBib29sZWFuO1xuICB0cmFuc2xhdGlvbnM/OiBMYWJlbEluZm9bXTtcblxuICAvLyBVSSBBZGRpdGlvbnMgKG9wdGlvbmFsKVxuICBjb2xsYXBzZWQ/OiBib29sZWFuO1xuICBzaG93U2VjdGlvblRpdGxlPzogYm9vbGVhbjtcbiAgc2hvd1NlY3Rpb25TZXBhcmF0b3I/OiBib29sZWFuO1xuICBkZXBlbmRlbnREaWN0aW9uYXJ5PzogRGVwZW5kZW50RGljdGlvbmFyeURhdGE7XG5cbiAgLy9kaXNwbGF5IG1vZGVcbiAgdGl0bGVTdHlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VDb250cm9sIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgaWRlbnRpZmllcjogc3RyaW5nO1xuICB0cmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xuICBkaW1lbnNpb246IG51bWJlcjtcbiAgZGltZW5zaW9uVHlwZTogRGltZW5zaW9uVHlwZTtcbiAgYXV0b0RpbWVuc2lvbjogYm9vbGVhbjtcbiAgY2FuRWRpdDogYm9vbGVhbiA9IHRydWU7XG4gIHNwZWNpZmljQ29udHJvbERhdGE6IGFueTtcbiAgaXNQcmVzZW50YXRpb25Db250cm9sOiBib29sZWFuID0gZmFsc2U7XG59XG5cbmV4cG9ydCBlbnVtIFN0ZXBDb250cm9sVHlwZSB7XG4gIE1hbnVhbElucHV0ID0gMCxcbiAgUGFyYWdyYXBoID0gMSxcbiAgQ2hlY2tCb3ggPSAyLFxuICBEaWN0aW9uYXJ5ID0gMyxcbiAgQnV0dG9ucyA9IDQsXG4gIEZsdXhJbmZvID0gNSxcbiAgTmV3Um93ID0gNixcbiAgTWV0YWRhdGEgPSA3LFxuICBBcGlNZXRob2RGaWVsZCA9IDgsXG4gIERvd25sb2FkRG9jdW1lbnRzID0gOSxcbiAgVmlld0RvY3VtZW50cyA9IDEwLFxuICBVcGxvYWREb2N1bWVudHMgPSAxMSxcbn1cbmV4cG9ydCBlbnVtIFByZXNlbnRhdGlvbkNvbnRyb2xUeXBlIHtcbiAgRmx1eENvbXBvbmVudCA9IDAsXG4gIERvd25sb2FkID0gMSxcbiAgUGFyYWdyYXBoID0gMixcbiAgVmlldyA9IDMsXG4gIE5ld1JvdyA9IDQsXG4gIFN0YXR1cyA9IDUsXG4gIEFwaU1ldGhvZCA9IDYsXG59XG5cbmV4cG9ydCBjbGFzcyBDb250cm9sRGF0YSBleHRlbmRzIEJhc2VDb250cm9sIHtcbiAgdHlwZTogU3RlcENvbnRyb2xUeXBlO1xuICBkZXBlbmRlbnREaWN0aW9uYXJ5OiBEZXBlbmRlbnREaWN0aW9uYXJ5RGF0YTtcbiAgY2FuRGVwZW5kOiBib29sZWFuID0gZmFsc2U7XG4gIGlzT25seUZvckNvbmZpZzogYm9vbGVhbiA9IGZhbHNlO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgZXJyb3JzVHJhbnNsYXRpb25zOiBFcnJvclRyYW5zbGF0aW9uc1tdO1xufVxuXG5leHBvcnQgY2xhc3MgUHJlc2VudGF0aW9uQ29udHJvbCBleHRlbmRzIEJhc2VDb250cm9sIHtcbiAgdHlwZTogUHJlc2VudGF0aW9uQ29udHJvbFR5cGU7XG4gIGNvbGxlY3Rpb25Db250cm9sSWRlbnRpZmllcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYXBpTWV0aG9kSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGFwaU1ldGhvZEZpZWxkSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcERhdGEge1xuICAvLyBWMSBwcm9wZXJ0aWVzXG4gIGlkZW50aWZpZXI6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBudW1iZXI7XG4gIHNlY3Rpb25zOiBTZWN0aW9uRGF0YVtdO1xuICBpc1Zpc2libGU/OiBib29sZWFuO1xuICBjb25maWc/OiBhbnk7XG4gIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25JbmZvW107XG4gIHBhbmVsT3BlblN0YXRlPzogYm9vbGVhbjtcbiAgYnV0dG9uczogQnV0dG9uQ29uZmlnW107XG4gIGRlcGVuZGVudERpY3Rpb25hcnk/OiBEZXBlbmRlbnREaWN0aW9uYXJ5RGF0YTtcbiAgZXJyb3JzVHJhbnNsYXRpb25zOiBFcnJvclRyYW5zbGF0aW9uc1tdO1xuICBoYXNOYW1lQW5kRGVzY3JpcHRpb24/OiBib29sZWFuO1xuICBjYW5EZXBlbmQ/OiBib29sZWFuO1xuICBjb2xsYXBzZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgQ29tcG9uZW50VHlwZURldGFpbHM6IFJlY29yZDxcbiAgc3RyaW5nLFxuICB7IGljb246IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9XG4+ID0ge1xuICBNYW51YWxJbnB1dDoge1xuICAgIGljb246ICdpbnB1dCcsXG4gICAgbGFiZWw6IExhYmVsS2V5cy5hcHBDb25maWdFZGl0LmZsdXguc2VjdGlvbi5tYW51YWxJbnB1dCxcbiAgfSwgLy8gMFxuICBQYXJhZ3JhcGg6IHtcbiAgICBpY29uOiAnc2VnbWVudCcsXG4gICAgbGFiZWw6IExhYmVsS2V5cy5hcHBDb25maWdFZGl0LmZsdXguc2VjdGlvbi5wYXJhZ3JhcGgsXG4gIH0sIC8vIDFcbiAgQ2hlY2tib3g6IHtcbiAgICBpY29uOiAnY2hlY2tfYm94JyxcbiAgICBsYWJlbDogTGFiZWxLZXlzLmFwcENvbmZpZ0VkaXQuZmx1eC5zZWN0aW9uLmNoZWNrYm94LFxuICB9LCAvLyAyXG4gIERpY3Rpb25hcnk6IHtcbiAgICBpY29uOiAnZGF0YV9vYmplY3QnLFxuICAgIGxhYmVsOiBMYWJlbEtleXMuYXBwQ29uZmlnRWRpdC5mbHV4LnNlY3Rpb24uZGljdGlvbmFyeUNvbXBvbmVudCxcbiAgfSwgLy8gM1xuICBCdXR0b25zOiB7XG4gICAgaWNvbjogJ3NtYXJ0X2J1dHRvbicsXG4gICAgbGFiZWw6IExhYmVsS2V5cy5hcHBDb25maWdFZGl0LmZsdXguc2VjdGlvbi5idXR0b25zLFxuICB9LCAvLyA0XG4gIE5ld1Jvdzoge1xuICAgIGljb246ICdoZWlnaHQnLFxuICAgIGxhYmVsOiBMYWJlbEtleXMuYXBwQ29uZmlnRWRpdC5mbHV4LnNlY3Rpb24ubmV3Um93LFxuICB9LCAvLyA1XG4gIC8vIEZsdXhDb21wb25lbnQ6IHsgaWNvbjogJ2R5bmFtaWNfZmVlZCcsIGxhYmVsOiBMYWJlbEtleXMuYXBwQ29uZmlnRWRpdC5mbHV4LnNlY3Rpb24uZmx1eEluZm8gfSwgLy8gUHJlc2VudGF0aW9uQ29udHJvbFR5cGUgMCAvLyBUT0RPOiBWZXJpZnkgdGhpcyBrZXkgaWYgbmVlZGVkLCB3YXNuJ3QgZXhwbGljaXRseSBmb3VuZFxuICBEb3dubG9hZDoge1xuICAgIGljb246ICdmaWxlX2Rvd25sb2FkJyxcbiAgICBsYWJlbDogTGFiZWxLZXlzLmFwcENvbmZpZ0VkaXQuZmx1eC5zZWN0aW9uLnByZXNlbnRhdGlvbkRvd25sb2FkQ29tcG9uZW50LFxuICB9LCAvLyBQcmVzZW50YXRpb25Db250cm9sVHlwZSAxXG4gIFVwbG9hZDoge1xuICAgIGljb246ICdmaWxlX3VwbG9hZCcsXG4gICAgbGFiZWw6IExhYmVsS2V5cy5mbHV4LnVwbG9hZERvY3VtZW50LFxuICB9LCAvLyBQcmVzZW50YXRpb25Db250cm9sVHlwZSAyXG4gIFZpZXc6IHsgaWNvbjogJ3Zpc2liaWxpdHknLCBsYWJlbDogTGFiZWxLZXlzLmZsdXgudmlld0RvY3VtZW50IH0sIC8vIFByZXNlbnRhdGlvbkNvbnRyb2xUeXBlIDNcbiAgRmx1eENvbXBvbmVudDogeyBpY29uOiAndmlzaWJpbGl0eScsIGxhYmVsOiBMYWJlbEtleXMuY29tbW9uLmFjdGlvbnMudmlldyB9LFxuICBBcGlNZXRob2RGaWVsZDogeyBpY29uOiAndmlzaWJpbGl0eScsIGxhYmVsOiAnYXBwQ29uZmlnRWRpdC5wYXJ0bmVycy5nZW5lcmFsU2V0dGluZ3MuYXBpTWV0aG9kJyB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFN0ZXBUeXBlRGV0YWlsczogUmVjb3JkPHN0cmluZywgeyBpY29uOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT4gPVxue1xuICBDdXN0b206IHsgaWNvbjogJ2FkZF9jaXJjbGVfb3V0bGluZScsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5jdXN0b21TdGVwIH0sIC8vIDVcbiAgR2VuZXJhdGVEb2N1bWVudDoge1xuICAgIGljb246ICdkZXNjcmlwdGlvbicsXG4gICAgbGFiZWw6IExhYmVsS2V5cy5mbHV4LmdlbmVyYXRlRG9jdW1lbnQsXG4gIH0sIC8vIDhcbiAgQWN0aW9uOiB7IGljb246ICdkaXJlY3Rpb25zX3J1bicsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5hY3Rpb24gfSwgLy8gNlxuICBWaWV3T2ZmZXI6IHsgaWNvbjogJ3Zpc2liaWxpdHknLCBsYWJlbDogTGFiZWxLZXlzLmZsdXgudmlld09mZmVyIH0sIC8vIDlcbiAgU2lnbjogeyBpY29uOiAnZHJhdycsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5zaWduIH0sIC8vIDExXG4gIEVtYWlsOiB7IGljb246ICdlbWFpbCcsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC52ZXJpZnlFbWFpbCB9LCAvLyAxMlxuICBQaG9uZTogeyBpY29uOiAncGhvbmUnLCBsYWJlbDogTGFiZWxLZXlzLmZsdXgudmVyaWZ5UGhvbmUgfSwgLy8gMTNcbiAgSWRTY2FuOiB7IGljb246ICdiYWRnZScsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5pZFNjYW4gfSwgLy8gMTVcbiAgS3ljOiB7IGljb246ICdwZXJzb25fc2VhcmNoJywgbGFiZWw6IExhYmVsS2V5cy5mbHV4LmlkZW50aWZpY2F0aW9uIH0sIC8vIDE2XG4gIFN0YXR1czogeyBpY29uOiAnY2hlY2tfY2lyY2xlX291dGxpbmUnLCBsYWJlbDogTGFiZWxLZXlzLmZsdXguc3RhdHVzIH0sIC8vIDE3XG4gIEZpbmFsOiB7IGljb246ICdmbGFnJywgbGFiZWw6IExhYmVsS2V5cy5mbHV4LmZpbmFsU3RlcCB9LCAvLyAxOFxuICBQYXVzZTogeyBpY29uOiAncGF1c2VfY2lyY2xlX291dGxpbmUnLCBsYWJlbDogTGFiZWxLZXlzLmZsdXgucGF1c2UgfSwgLy8gMTlcbiAgRVVQTEFURVNDOiB7IGljb246ICdjcmVkaXRfY2FyZCcsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5ldVBsYXRlc2MgfSwgLy8gMjBcbiAgTkVUT1BJQTogeyBpY29uOiAncGF5bWVudCcsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5uZXRvcGlhIH0sIC8vIDIxXG4gIE9wZW5CYW5raW5nOiB7IGljb246ICdhY2NvdW50X2JhbGFuY2UnLCBsYWJlbDogTGFiZWxLZXlzLmZsdXgub3BlbkJhbmtpbmcgfSwgLy8gMjJcbiAgLy8gQWRkIG90aGVycyBpZiBuZWVkZWRcbn07XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx1eC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29yaWdpbi1mb3JtL3NyYy9saWIvbW9kZWxzL2ZsdXgubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSWhELE1BQU0sT0FBTyx1QkFBdUI7Q0FNbkM7QUFRRCxNQUFNLE9BQU8sV0FBVztDQWtCdkI7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUF4QjtRQU9FLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFFeEIsMEJBQXFCLEdBQVksS0FBSyxDQUFDO0lBQ3pDLENBQUM7Q0FBQTtBQUVELE1BQU0sQ0FBTixJQUFZLGVBYVg7QUFiRCxXQUFZLGVBQWU7SUFDekIsbUVBQWUsQ0FBQTtJQUNmLCtEQUFhLENBQUE7SUFDYiw2REFBWSxDQUFBO0lBQ1osaUVBQWMsQ0FBQTtJQUNkLDJEQUFXLENBQUE7SUFDWCw2REFBWSxDQUFBO0lBQ1oseURBQVUsQ0FBQTtJQUNWLDZEQUFZLENBQUE7SUFDWix5RUFBa0IsQ0FBQTtJQUNsQiwrRUFBcUIsQ0FBQTtJQUNyQix3RUFBa0IsQ0FBQTtJQUNsQiw0RUFBb0IsQ0FBQTtBQUN0QixDQUFDLEVBYlcsZUFBZSxLQUFmLGVBQWUsUUFhMUI7QUFDRCxNQUFNLENBQU4sSUFBWSx1QkFRWDtBQVJELFdBQVksdUJBQXVCO0lBQ2pDLHVGQUFpQixDQUFBO0lBQ2pCLDZFQUFZLENBQUE7SUFDWiwrRUFBYSxDQUFBO0lBQ2IscUVBQVEsQ0FBQTtJQUNSLHlFQUFVLENBQUE7SUFDVix5RUFBVSxDQUFBO0lBQ1YsK0VBQWEsQ0FBQTtBQUNmLENBQUMsRUFSVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBUWxDO0FBRUQsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0lBQTVDOztRQUdFLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0Isb0JBQWUsR0FB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RUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLO0NBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYWJlbEtleXMgfSBmcm9tIFwiLi4vZW51bXMvbGFiZWwua2V5c1wiO1xuaW1wb3J0IHsgQnV0dG9uQ29uZmlnLCBEaW1lbnNpb25UeXBlLCBFcnJvclRyYW5zbGF0aW9ucyB9IGZyb20gXCIuL2Zvcm1zLm1vZGVsXCI7XG5pbXBvcnQgeyBMYWJlbEluZm8sIFRyYW5zbGF0aW9uSW5mbyB9IGZyb20gXCIuL2xhYmVsLWluZm8ubW9kZWxcIjtcblxuZXhwb3J0IGNsYXNzIERlcGVuZGVudERpY3Rpb25hcnlEYXRhIHtcbiAgaXNEaWN0aW9uYXJ5RGVwZW5kZW50OiBib29sZWFuO1xuICBkaWN0aW9uYXJ5Q29udHJvbElkZW50aWZpZXI6IHN0cmluZztcbiAgZGVwZW5kZW50VmFsdWVJZHM6IG51bWJlcltdO1xuICBjb25maWd1cmluZ1R5cGU/OiAnc3RlcCcgfCAnc2VjdGlvbicgfCAnY29tcG9uZW50JztcbiAgY29uZmlndXJpbmdJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xhdGlvbkl0ZW0ge1xuICBsYW5ndWFnZUlkOiBudW1iZXI7XG4gIGxhbmd1YWdlSXNvOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBTZWN0aW9uRGF0YSB7XG4gIGlkZW50aWZpZXI6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdHlwZTogbnVtYmVyO1xuICBjb250cm9sczogQ29udHJvbERhdGFbXTtcbiAgcHJlc2VudGF0aW9uQ29udHJvbHM/OiBQcmVzZW50YXRpb25Db250cm9sW107XG4gIGlzTmF2aWdhdGlvblNlY3Rpb24/OiBib29sZWFuO1xuICBjYW5EZXBlbmQ/OiBib29sZWFuO1xuICB0cmFuc2xhdGlvbnM/OiBMYWJlbEluZm9bXTtcblxuICAvLyBVSSBBZGRpdGlvbnMgKG9wdGlvbmFsKVxuICBjb2xsYXBzZWQ/OiBib29sZWFuO1xuICBzaG93U2VjdGlvblRpdGxlPzogYm9vbGVhbjtcbiAgc2hvd1NlY3Rpb25TZXBhcmF0b3I/OiBib29sZWFuO1xuICBkZXBlbmRlbnREaWN0aW9uYXJ5PzogRGVwZW5kZW50RGljdGlvbmFyeURhdGE7XG5cbiAgLy9kaXNwbGF5IG1vZGVcbiAgdGl0bGVTdHlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VDb250cm9sIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgaWRlbnRpZmllcjogc3RyaW5nO1xuICB0cmFuc2xhdGlvbnM6IExhYmVsSW5mb1tdO1xuICBkaW1lbnNpb246IG51bWJlcjtcbiAgZGltZW5zaW9uVHlwZTogRGltZW5zaW9uVHlwZTtcbiAgYXV0b0RpbWVuc2lvbjogYm9vbGVhbjtcbiAgY2FuRWRpdDogYm9vbGVhbiA9IHRydWU7XG4gIHNwZWNpZmljQ29udHJvbERhdGE6IGFueTtcbiAgaXNQcmVzZW50YXRpb25Db250cm9sOiBib29sZWFuID0gZmFsc2U7XG59XG5cbmV4cG9ydCBlbnVtIFN0ZXBDb250cm9sVHlwZSB7XG4gIE1hbnVhbElucHV0ID0gMCxcbiAgUGFyYWdyYXBoID0gMSxcbiAgQ2hlY2tCb3ggPSAyLFxuICBEaWN0aW9uYXJ5ID0gMyxcbiAgQnV0dG9ucyA9IDQsXG4gIEZsdXhJbmZvID0gNSxcbiAgTmV3Um93ID0gNixcbiAgTWV0YWRhdGEgPSA3LFxuICBBcGlNZXRob2RGaWVsZCA9IDgsXG4gIERvd25sb2FkRG9jdW1lbnRzID0gOSxcbiAgVmlld0RvY3VtZW50cyA9IDEwLFxuICBVcGxvYWREb2N1bWVudHMgPSAxMSxcbn1cbmV4cG9ydCBlbnVtIFByZXNlbnRhdGlvbkNvbnRyb2xUeXBlIHtcbiAgRmx1eENvbXBvbmVudCA9IDAsXG4gIERvd25sb2FkID0gMSxcbiAgUGFyYWdyYXBoID0gMixcbiAgVmlldyA9IDMsXG4gIE5ld1JvdyA9IDQsXG4gIFN0YXR1cyA9IDUsXG4gIEFwaU1ldGhvZCA9IDYsXG59XG5cbmV4cG9ydCBjbGFzcyBDb250cm9sRGF0YSBleHRlbmRzIEJhc2VDb250cm9sIHtcbiAgdHlwZTogU3RlcENvbnRyb2xUeXBlO1xuICBkZXBlbmRlbnREaWN0aW9uYXJ5OiBEZXBlbmRlbnREaWN0aW9uYXJ5RGF0YTtcbiAgY2FuRGVwZW5kOiBib29sZWFuID0gZmFsc2U7XG4gIGlzT25seUZvckNvbmZpZzogYm9vbGVhbiA9IGZhbHNlO1xuICBpc01hbmRhdG9yeTogYm9vbGVhbjtcbiAgZXJyb3JzVHJhbnNsYXRpb25zOiBFcnJvclRyYW5zbGF0aW9uc1tdO1xufVxuXG5leHBvcnQgY2xhc3MgUHJlc2VudGF0aW9uQ29udHJvbCBleHRlbmRzIEJhc2VDb250cm9sIHtcbiAgdHlwZTogUHJlc2VudGF0aW9uQ29udHJvbFR5cGU7XG4gIGNvbGxlY3Rpb25Db250cm9sSWRlbnRpZmllcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYXBpTWV0aG9kSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGFwaU1ldGhvZEZpZWxkSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcERhdGEge1xuICAvLyBWMSBwcm9wZXJ0aWVzXG4gIGlkZW50aWZpZXI6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBudW1iZXI7XG4gIHNlY3Rpb25zOiBTZWN0aW9uRGF0YVtdO1xuICBpc1Zpc2libGU/OiBib29sZWFuO1xuICBjb25maWc/OiBhbnk7XG4gIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25JbmZvW107XG4gIHBhbmVsT3BlblN0YXRlPzogYm9vbGVhbjtcbiAgYnV0dG9uczogQnV0dG9uQ29uZmlnW107XG4gIGRlcGVuZGVudERpY3Rpb25hcnk/OiBEZXBlbmRlbnREaWN0aW9uYXJ5RGF0YTtcbiAgZXJyb3JzVHJhbnNsYXRpb25zOiBFcnJvclRyYW5zbGF0aW9uc1tdO1xuICBoYXNOYW1lQW5kRGVzY3JpcHRpb24/OiBib29sZWFuO1xuICBjYW5EZXBlbmQ/OiBib29sZWFuO1xuICBjb2xsYXBzZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgQ29tcG9uZW50VHlwZURldGFpbHM6IFJlY29yZDxcbiAgc3RyaW5nLFxuICB7IGljb246IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9XG4+ID0ge1xuICBNYW51YWxJbnB1dDoge1xuICAgIGljb246ICdpbnB1dCcsXG4gICAgbGFiZWw6IExhYmVsS2V5cy5hcHBDb25maWdFZGl0LmZsdXguc2VjdGlvbi5tYW51YWxJbnB1dCxcbiAgfSwgLy8gMFxuICBQYXJhZ3JhcGg6IHtcbiAgICBpY29uOiAnc2VnbWVudCcsXG4gICAgbGFiZWw6IExhYmVsS2V5cy5hcHBDb25maWdFZGl0LmZsdXguc2VjdGlvbi5wYXJhZ3JhcGgsXG4gIH0sIC8vIDFcbiAgQ2hlY2tib3g6IHtcbiAgICBpY29uOiAnY2hlY2tfYm94JyxcbiAgICBsYWJlbDogTGFiZWxLZXlzLmFwcENvbmZpZ0VkaXQuZmx1eC5zZWN0aW9uLmNoZWNrYm94LFxuICB9LCAvLyAyXG4gIERpY3Rpb25hcnk6IHtcbiAgICBpY29uOiAnZGF0YV9vYmplY3QnLFxuICAgIGxhYmVsOiBMYWJlbEtleXMuYXBwQ29uZmlnRWRpdC5mbHV4LnNlY3Rpb24uZGljdGlvbmFyeUNvbXBvbmVudCxcbiAgfSwgLy8gM1xuICBCdXR0b25zOiB7XG4gICAgaWNvbjogJ3NtYXJ0X2J1dHRvbicsXG4gICAgbGFiZWw6IExhYmVsS2V5cy5hcHBDb25maWdFZGl0LmZsdXguc2VjdGlvbi5idXR0b25zLFxuICB9LCAvLyA0XG4gIE5ld1Jvdzoge1xuICAgIGljb246ICdoZWlnaHQnLFxuICAgIGxhYmVsOiBMYWJlbEtleXMuYXBwQ29uZmlnRWRpdC5mbHV4LnNlY3Rpb24ubmV3Um93LFxuICB9LCAvLyA1XG4gIC8vIEZsdXhDb21wb25lbnQ6IHsgaWNvbjogJ2R5bmFtaWNfZmVlZCcsIGxhYmVsOiBMYWJlbEtleXMuYXBwQ29uZmlnRWRpdC5mbHV4LnNlY3Rpb24uZmx1eEluZm8gfSwgLy8gUHJlc2VudGF0aW9uQ29udHJvbFR5cGUgMCAvLyBUT0RPOiBWZXJpZnkgdGhpcyBrZXkgaWYgbmVlZGVkLCB3YXNuJ3QgZXhwbGljaXRseSBmb3VuZFxuICBEb3dubG9hZDoge1xuICAgIGljb246ICdmaWxlX2Rvd25sb2FkJyxcbiAgICBsYWJlbDogTGFiZWxLZXlzLmFwcENvbmZpZ0VkaXQuZmx1eC5zZWN0aW9uLnByZXNlbnRhdGlvbkRvd25sb2FkQ29tcG9uZW50LFxuICB9LCAvLyBQcmVzZW50YXRpb25Db250cm9sVHlwZSAxXG4gIFVwbG9hZDoge1xuICAgIGljb246ICdmaWxlX3VwbG9hZCcsXG4gICAgbGFiZWw6IExhYmVsS2V5cy5mbHV4LnVwbG9hZERvY3VtZW50LFxuICB9LCAvLyBQcmVzZW50YXRpb25Db250cm9sVHlwZSAyXG4gIFZpZXc6IHsgaWNvbjogJ3Zpc2liaWxpdHknLCBsYWJlbDogTGFiZWxLZXlzLmZsdXgudmlld0RvY3VtZW50IH0sIC8vIFByZXNlbnRhdGlvbkNvbnRyb2xUeXBlIDNcbiAgRmx1eENvbXBvbmVudDogeyBpY29uOiAndmlzaWJpbGl0eScsIGxhYmVsOiBMYWJlbEtleXMuY29tbW9uLmFjdGlvbnMudmlldyB9LFxuICBBcGlNZXRob2RGaWVsZDogeyBpY29uOiAndmlzaWJpbGl0eScsIGxhYmVsOiAnYXBwQ29uZmlnRWRpdC5wYXJ0bmVycy5nZW5lcmFsU2V0dGluZ3MuYXBpTWV0aG9kJyB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFN0ZXBUeXBlRGV0YWlsczogUmVjb3JkPHN0cmluZywgeyBpY29uOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT4gPVxue1xuICBDdXN0b206IHsgaWNvbjogJ2FkZF9jaXJjbGVfb3V0bGluZScsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5jdXN0b21TdGVwIH0sIC8vIDVcbiAgR2VuZXJhdGVEb2N1bWVudDoge1xuICAgIGljb246ICdkZXNjcmlwdGlvbicsXG4gICAgbGFiZWw6IExhYmVsS2V5cy5mbHV4LmdlbmVyYXRlRG9jdW1lbnQsXG4gIH0sIC8vIDhcbiAgQWN0aW9uOiB7IGljb246ICdkaXJlY3Rpb25zX3J1bicsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5hY3Rpb24gfSwgLy8gNlxuICBWaWV3T2ZmZXI6IHsgaWNvbjogJ3Zpc2liaWxpdHknLCBsYWJlbDogTGFiZWxLZXlzLmZsdXgudmlld09mZmVyIH0sIC8vIDlcbiAgU2lnbjogeyBpY29uOiAnZHJhdycsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5zaWduIH0sIC8vIDExXG4gIEVtYWlsOiB7IGljb246ICdlbWFpbCcsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC52ZXJpZnlFbWFpbCB9LCAvLyAxMlxuICBQaG9uZTogeyBpY29uOiAncGhvbmUnLCBsYWJlbDogTGFiZWxLZXlzLmZsdXgudmVyaWZ5UGhvbmUgfSwgLy8gMTNcbiAgSWRTY2FuOiB7IGljb246ICdiYWRnZScsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5pZFNjYW4gfSwgLy8gMTVcbiAgS3ljOiB7IGljb246ICdwZXJzb25fc2VhcmNoJywgbGFiZWw6IExhYmVsS2V5cy5mbHV4LmlkZW50aWZpY2F0aW9uIH0sIC8vIDE2XG4gIFN0YXR1czogeyBpY29uOiAnY2hlY2tfY2lyY2xlX291dGxpbmUnLCBsYWJlbDogTGFiZWxLZXlzLmZsdXguc3RhdHVzIH0sIC8vIDE3XG4gIEZpbmFsOiB7IGljb246ICdmbGFnJywgbGFiZWw6IExhYmVsS2V5cy5mbHV4LmZpbmFsU3RlcCB9LCAvLyAxOFxuICBQYXVzZTogeyBpY29uOiAncGF1c2VfY2lyY2xlX291dGxpbmUnLCBsYWJlbDogTGFiZWxLZXlzLmZsdXgucGF1c2UgfSwgLy8gMTlcbiAgRVVQTEFURVNDOiB7IGljb246ICdjcmVkaXRfY2FyZCcsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5ldVBsYXRlc2MgfSwgLy8gMjBcbiAgTkVUT1BJQTogeyBpY29uOiAncGF5bWVudCcsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC5uZXRvcGlhIH0sIC8vIDIxXG4gIE9wZW5CYW5raW5nOiB7IGljb246ICdhY2NvdW50X2JhbGFuY2UnLCBsYWJlbDogTGFiZWxLZXlzLmZsdXgub3BlbkJhbmtpbmcgfSwgLy8gMjJcbiAgVmFsaWRhdGlvbjogeyBpY29uOiAncnVsZScsIGxhYmVsOiBMYWJlbEtleXMuZmx1eC52YWxpZGF0aW9uIH0sIC8vIDIzXG59O1xuIl19