ngx-wapp-components 1.32.2 → 1.32.3

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.
@@ -69,7 +69,7 @@ export class WCronExpressionsComponent {
69
69
  weekDaysLabel: "Días de la semana",
70
70
  monthsLabel: "Meses",
71
71
  descriptionLabel: "Descripción",
72
- occurrencesLabel: "Las siguientes 5 ocurrencias serán: "
72
+ occurrencesLabel: "Las 5 ejecuciones siguientes serán: "
73
73
  };
74
74
  this.cronExpression = new EventEmitter();
75
75
  }
@@ -132,14 +132,14 @@ export class WCronExpressionsComponent {
132
132
  }
133
133
  initPeriodicities() {
134
134
  const translationsMap = {
135
- [CronPeriodicityType.EveryXMinutes]: this.translationsObject.periodicities.everyXMinutes,
136
- [CronPeriodicityType.EveryMinute]: this.translationsObject.periodicities.everyMinute,
137
- [CronPeriodicityType.EveryXHours]: this.translationsObject.periodicities.everyXHours,
138
- [CronPeriodicityType.EveryHour]: this.translationsObject.periodicities.everyHour,
139
- [CronPeriodicityType.EveryXDays]: this.translationsObject.periodicities.everyXDays,
140
- [CronPeriodicityType.EveryWeek]: this.translationsObject.periodicities.everyWeek,
141
- [CronPeriodicityType.EveryXMonths]: this.translationsObject.periodicities.everyXMonths,
142
- [CronPeriodicityType.EveryMonth]: this.translationsObject.periodicities.everyMonth,
135
+ [CronPeriodicityType.RepeatEveryXMinutes]: this.translationsObject.periodicities.everyXMinutes,
136
+ [CronPeriodicityType.RepeatEveryMinute]: this.translationsObject.periodicities.everyMinute,
137
+ [CronPeriodicityType.RepeatEveryXHours]: this.translationsObject.periodicities.everyXHours,
138
+ [CronPeriodicityType.RepeatEveryHour]: this.translationsObject.periodicities.everyHour,
139
+ [CronPeriodicityType.RepeatEveryXDays]: this.translationsObject.periodicities.everyXDays,
140
+ [CronPeriodicityType.RepeatEveryWeek]: this.translationsObject.periodicities.everyWeek,
141
+ [CronPeriodicityType.RepeatEveryXMonths]: this.translationsObject.periodicities.everyXMonths,
142
+ [CronPeriodicityType.RepeatEveryMonth]: this.translationsObject.periodicities.everyMonth,
143
143
  };
144
144
  if (this.periodicitiesDisplayed) {
145
145
  this.periodicities = this.periodicitiesDisplayed.map(periodicity => ({
@@ -202,14 +202,14 @@ export class WCronExpressionsComponent {
202
202
  }
203
203
  allowMinutes() {
204
204
  switch (this.periodicitySelected) {
205
- case CronPeriodicityType.EveryXMinutes:
206
- case CronPeriodicityType.EveryMinute:
207
- case CronPeriodicityType.EveryXHours:
208
- case CronPeriodicityType.EveryHour:
209
- case CronPeriodicityType.EveryXDays:
210
- case CronPeriodicityType.EveryWeek:
211
- case CronPeriodicityType.EveryMonth:
212
- case CronPeriodicityType.EveryXMonths:
205
+ case CronPeriodicityType.RepeatEveryXMinutes:
206
+ case CronPeriodicityType.RepeatEveryMinute:
207
+ case CronPeriodicityType.RepeatEveryXHours:
208
+ case CronPeriodicityType.RepeatEveryHour:
209
+ case CronPeriodicityType.RepeatEveryXDays:
210
+ case CronPeriodicityType.RepeatEveryWeek:
211
+ case CronPeriodicityType.RepeatEveryMonth:
212
+ case CronPeriodicityType.RepeatEveryXMonths:
213
213
  return true;
214
214
  default:
215
215
  return false;
@@ -217,12 +217,12 @@ export class WCronExpressionsComponent {
217
217
  }
218
218
  allowHours() {
219
219
  switch (this.periodicitySelected) {
220
- case CronPeriodicityType.EveryXHours:
221
- case CronPeriodicityType.EveryHour:
222
- case CronPeriodicityType.EveryXDays:
223
- case CronPeriodicityType.EveryWeek:
224
- case CronPeriodicityType.EveryMonth:
225
- case CronPeriodicityType.EveryXMonths:
220
+ case CronPeriodicityType.RepeatEveryXHours:
221
+ case CronPeriodicityType.RepeatEveryHour:
222
+ case CronPeriodicityType.RepeatEveryXDays:
223
+ case CronPeriodicityType.RepeatEveryWeek:
224
+ case CronPeriodicityType.RepeatEveryMonth:
225
+ case CronPeriodicityType.RepeatEveryXMonths:
226
226
  return true;
227
227
  default:
228
228
  return false;
@@ -230,7 +230,7 @@ export class WCronExpressionsComponent {
230
230
  }
231
231
  allowWeekDays() {
232
232
  switch (this.periodicitySelected) {
233
- case CronPeriodicityType.EveryWeek:
233
+ case CronPeriodicityType.RepeatEveryWeek:
234
234
  return true;
235
235
  default:
236
236
  return false;
@@ -238,7 +238,7 @@ export class WCronExpressionsComponent {
238
238
  }
239
239
  allowMonthDay() {
240
240
  switch (this.periodicitySelected) {
241
- case CronPeriodicityType.EveryXDays:
241
+ case CronPeriodicityType.RepeatEveryXDays:
242
242
  return true;
243
243
  default:
244
244
  return false;
@@ -246,8 +246,8 @@ export class WCronExpressionsComponent {
246
246
  }
247
247
  allowMonthDays() {
248
248
  switch (this.periodicitySelected) {
249
- case CronPeriodicityType.EveryXMonths:
250
- case CronPeriodicityType.EveryMonth:
249
+ case CronPeriodicityType.RepeatEveryXMonths:
250
+ case CronPeriodicityType.RepeatEveryMonth:
251
251
  return true;
252
252
  default:
253
253
  return false;
@@ -255,14 +255,14 @@ export class WCronExpressionsComponent {
255
255
  }
256
256
  allowMonths() {
257
257
  switch (this.periodicitySelected) {
258
- case CronPeriodicityType.EveryXMonths:
258
+ case CronPeriodicityType.RepeatEveryXMonths:
259
259
  return true;
260
260
  default:
261
261
  return false;
262
262
  }
263
263
  }
264
264
  isMonthDaysRequired() {
265
- if (this.periodicitySelected == CronPeriodicityType.EveryXMonths) {
265
+ if (this.periodicitySelected == CronPeriodicityType.RepeatEveryXMonths) {
266
266
  return false;
267
267
  }
268
268
  else {
@@ -281,7 +281,7 @@ export class WCronExpressionsComponent {
281
281
  this.onMinuteSelected(this.minuteSelected);
282
282
  }
283
283
  handleZeroHoursArray() {
284
- if (this.periodicitySelected == CronPeriodicityType.EveryXHours) {
284
+ if (this.periodicitySelected == CronPeriodicityType.RepeatEveryXHours) {
285
285
  this.hours = Array.from({ length: 23 }, (_, i) => i + 1);
286
286
  if (this.hourSelected == 0) {
287
287
  this.hourSelected = 1;
@@ -293,18 +293,18 @@ export class WCronExpressionsComponent {
293
293
  }
294
294
  onMinuteSelected(minuteSelected) {
295
295
  switch (this.periodicitySelected) {
296
- case CronPeriodicityType.EveryXMinutes: {
296
+ case CronPeriodicityType.RepeatEveryXMinutes: {
297
297
  this.expression[CronFieldType.Second] = `0`;
298
298
  this.expression[CronFieldType.Minute] = `*/${minuteSelected}`;
299
299
  break;
300
300
  }
301
- case CronPeriodicityType.EveryMinute:
302
- case CronPeriodicityType.EveryHour:
303
- case CronPeriodicityType.EveryXHours:
304
- case CronPeriodicityType.EveryXDays:
305
- case CronPeriodicityType.EveryWeek:
306
- case CronPeriodicityType.EveryMonth:
307
- case CronPeriodicityType.EveryXMonths: {
301
+ case CronPeriodicityType.RepeatEveryMinute:
302
+ case CronPeriodicityType.RepeatEveryHour:
303
+ case CronPeriodicityType.RepeatEveryXHours:
304
+ case CronPeriodicityType.RepeatEveryXDays:
305
+ case CronPeriodicityType.RepeatEveryWeek:
306
+ case CronPeriodicityType.RepeatEveryMonth:
307
+ case CronPeriodicityType.RepeatEveryXMonths: {
308
308
  this.expression[CronFieldType.Second] = `0`;
309
309
  this.expression[CronFieldType.Minute] = `${minuteSelected}`;
310
310
  break;
@@ -315,14 +315,14 @@ export class WCronExpressionsComponent {
315
315
  onHoursSelected(hoursSelected) {
316
316
  this.expression[CronFieldType.Minute] = `${this.minuteSelected}`;
317
317
  switch (this.periodicitySelected) {
318
- case CronPeriodicityType.EveryXHours:
318
+ case CronPeriodicityType.RepeatEveryXHours:
319
319
  this.expression[CronFieldType.Hour] = `*/${hoursSelected}`;
320
320
  break;
321
- case CronPeriodicityType.EveryHour:
322
- case CronPeriodicityType.EveryXDays:
323
- case CronPeriodicityType.EveryWeek:
324
- case CronPeriodicityType.EveryMonth:
325
- case CronPeriodicityType.EveryXMonths:
321
+ case CronPeriodicityType.RepeatEveryHour:
322
+ case CronPeriodicityType.RepeatEveryXDays:
323
+ case CronPeriodicityType.RepeatEveryWeek:
324
+ case CronPeriodicityType.RepeatEveryMonth:
325
+ case CronPeriodicityType.RepeatEveryXMonths:
326
326
  this.expression[CronFieldType.Hour] = `${hoursSelected}`;
327
327
  break;
328
328
  }
@@ -330,7 +330,7 @@ export class WCronExpressionsComponent {
330
330
  }
331
331
  onWeekDaysSelected(weekDaysSelected) {
332
332
  switch (this.periodicitySelected) {
333
- case CronPeriodicityType.EveryWeek: {
333
+ case CronPeriodicityType.RepeatEveryWeek: {
334
334
  this.expression[CronFieldType.WeekDay] = `${weekDaysSelected}`;
335
335
  }
336
336
  }
@@ -338,11 +338,11 @@ export class WCronExpressionsComponent {
338
338
  }
339
339
  onMonthDaysSelected(monthDaysSelected) {
340
340
  switch (this.periodicitySelected) {
341
- case CronPeriodicityType.EveryXDays:
341
+ case CronPeriodicityType.RepeatEveryXDays:
342
342
  this.expression[CronFieldType.MonthDay] = `*/${this.monthDaySelected}`;
343
343
  break;
344
- case CronPeriodicityType.EveryMonth:
345
- case CronPeriodicityType.EveryXMonths:
344
+ case CronPeriodicityType.RepeatEveryMonth:
345
+ case CronPeriodicityType.RepeatEveryXMonths:
346
346
  if (monthDaysSelected instanceof Array && monthDaysSelected.length == 0) {
347
347
  this.expression[CronFieldType.MonthDay] = `*`;
348
348
  }
@@ -355,7 +355,7 @@ export class WCronExpressionsComponent {
355
355
  }
356
356
  onMonthDaySelected(monthDaysSelected) {
357
357
  switch (this.periodicitySelected) {
358
- case CronPeriodicityType.EveryXDays:
358
+ case CronPeriodicityType.RepeatEveryXDays:
359
359
  this.expression[CronFieldType.MonthDay] = `*/${monthDaysSelected}`;
360
360
  break;
361
361
  }
@@ -363,7 +363,7 @@ export class WCronExpressionsComponent {
363
363
  }
364
364
  onMonthsSelected(monthsSelected) {
365
365
  switch (this.periodicitySelected) {
366
- case CronPeriodicityType.EveryXMonths: {
366
+ case CronPeriodicityType.RepeatEveryXMonths: {
367
367
  this.expression[CronFieldType.Second] = `0`;
368
368
  this.expression[CronFieldType.Month] = `${monthsSelected}`;
369
369
  }
@@ -379,7 +379,7 @@ export class WCronExpressionsComponent {
379
379
  let dates = interval.take(this.occurrencesNumber).map((date) => new Date(date.toString()));
380
380
  this.occurrences = dates.map(d => this.wappDate.transform(d, WDatePipeFormatType.G)).join(", ");
381
381
  let cronExpression = this.expression.join(' ');
382
- if (![CronPeriodicityType.EveryXMinutes, CronPeriodicityType.EveryMinute, CronPeriodicityType.EveryXHours].includes(this.periodicitySelected)) {
382
+ if (![CronPeriodicityType.RepeatEveryXMinutes, CronPeriodicityType.RepeatEveryMinute, CronPeriodicityType.RepeatEveryXHours].includes(this.periodicitySelected)) {
383
383
  cronExpression = this.localUserCronToUTCCron(this.expression.join(' '));
384
384
  }
385
385
  this.cronExpression.emit(cronExpression);
@@ -414,33 +414,33 @@ export class WCronExpressionsComponent {
414
414
  }
415
415
  const [second, minute, hour, dayOfMonth, month, dayOfWeek] = parts;
416
416
  if (minute.startsWith("*/") && hour === "*" && dayOfMonth === "*" && month === "*" && dayOfWeek === "*") {
417
- return CronPeriodicityType.EveryXMinutes;
417
+ return CronPeriodicityType.RepeatEveryXMinutes;
418
418
  }
419
419
  if (minute !== "*" && hour === "*" && dayOfMonth === "*" && month === "*" && dayOfWeek === "*") {
420
- return CronPeriodicityType.EveryMinute;
420
+ return CronPeriodicityType.RepeatEveryMinute;
421
421
  }
422
422
  if (hour.startsWith("*/") && dayOfMonth === "*" && month === "*" && dayOfWeek === "*") {
423
- return CronPeriodicityType.EveryXHours;
423
+ return CronPeriodicityType.RepeatEveryXHours;
424
424
  }
425
425
  if (minute !== "*" && hour !== "*" && dayOfMonth === "*" && month === "*" && dayOfWeek === "*") {
426
- return CronPeriodicityType.EveryHour;
426
+ return CronPeriodicityType.RepeatEveryHour;
427
427
  }
428
428
  if (dayOfMonth.startsWith("*/") && month === "*" && dayOfWeek === "*") {
429
- return CronPeriodicityType.EveryXDays;
429
+ return CronPeriodicityType.RepeatEveryXDays;
430
430
  }
431
431
  if (dayOfWeek !== "*" && dayOfMonth === "*" && month === "*") {
432
- return CronPeriodicityType.EveryWeek;
432
+ return CronPeriodicityType.RepeatEveryWeek;
433
433
  }
434
434
  if (dayOfMonth !== "*" && month == "*") {
435
- return CronPeriodicityType.EveryMonth;
435
+ return CronPeriodicityType.RepeatEveryMonth;
436
436
  }
437
437
  if (month !== "*") {
438
- return CronPeriodicityType.EveryXMonths;
438
+ return CronPeriodicityType.RepeatEveryXMonths;
439
439
  }
440
440
  return null;
441
441
  }
442
442
  updateMonthDaysRequirement() {
443
- if (this.periodicitySelected == CronPeriodicityType.EveryXMonths) {
443
+ if (this.periodicitySelected == CronPeriodicityType.RepeatEveryXMonths) {
444
444
  this.formGroup.controls['monthDays'].removeValidators([Validators.required]);
445
445
  this.formGroup.controls['monthDays'].updateValueAndValidity();
446
446
  }
@@ -501,4 +501,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
501
501
  type: Output,
502
502
  args: ['cronExpression']
503
503
  }] } });
504
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1jcm9uLWV4cHJlc3Npb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL21pc2Mvdy1jcm9uLWV4cHJlc3Npb25zL3ctY3Jvbi1leHByZXNzaW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi9taXNjL3ctY3Jvbi1leHByZXNzaW9ucy93LWNyb24tZXhwcmVzc2lvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQWUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUdwRyxPQUFRLFNBQVMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7OztBQU90RSxNQUFNLE9BQU8seUJBQXlCO0lBaUVwQyxZQUNVLFdBQXdCLEVBQ3pCLGtCQUFzQyxFQUNyQyxRQUFtQjtRQUZuQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLGFBQVEsR0FBUixRQUFRLENBQVc7UUE3RDdCLGNBQVMsR0FBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtB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USxFQUFFO1lBQzNELEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7U0FDNUQsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNkLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDM0QsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUMzRCxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQzVELEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDOUQsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUM3RCxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQzNELEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7U0FDOUQsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsWUFBWTtRQUNWLFFBQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFDO1lBQzlCLEtBQUssbUJBQW1CLENBQUMsYUFBYSxDQUFDO1lBQ3ZDLEtBQUssbUJBQW1CLENBQUMsV0FBVyxDQUFDO1lBQ3JD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LENBQUM7SUFDN0MsQ0FBQzs7c0hBOWhCVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixxVENoQnRDLHc1S0EyRmM7MkZEM0VELHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSxvQkFBb0I7MkpBbUJQLFlBQVk7c0JBQWxDLEtBQUs7dUJBQUMsY0FBYztnQkFDWSxzQkFBc0I7c0JBQXRELEtBQUs7dUJBQUMsd0JBQXdCO2dCQUNSLFlBQVk7c0JBQWxDLEtBQUs7dUJBQUMsY0FBYztnQkFDTyxpQkFBaUI7c0JBQTVDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNHLGtCQUFrQjtzQkFBOUMsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBNENELGNBQWM7c0JBQXZDLE1BQU07dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE11bHRpU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9tdWx0aXNlbGVjdC1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBDcm9uRmllbGRUeXBlLCBDcm9uUGVyaW9kaWNpdHlUeXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2VudW1zL2Nyb24tZXhwcmVzc2lvbnMvZW51bS5tb2RlbCc7XHJcbmltcG9ydCB7IENyb25Db21wb25lbnRUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2Nyb24tZXhwcmVzc2lvbnMvY3Jvbi1jb21wb25lbnQtdHJhbnNsYXRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2Zvcm0tY29udHJvbC5zZXJ2aWNlJztcclxuaW1wb3J0ICBjcm9uc3RydWUgZnJvbSAnY3JvbnN0cnVlL2kxOG4nO1xyXG5pbXBvcnQgeyBDcm9uRXhwcmVzc2lvblBhcnNlciB9IGZyb20gJ2Nyb24tcGFyc2VyJztcclxuaW1wb3J0IHsgV0RhdGVQaXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3BpcGVzL3ctZGF0ZS5waXBlJztcclxuaW1wb3J0IHsgV0RhdGVQaXBlRm9ybWF0VHlwZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvZW51bXMubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3LWNyb24tZXhwcmVzc2lvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LWNyb24tZXhwcmVzc2lvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ctY3Jvbi1leHByZXNzaW9ucy5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFdDcm9uRXhwcmVzc2lvbnNDb21wb25lbnQge1xyXG4gIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuXHJcbiAgcGVyaW9kaWNpdGllcyE6IE11bHRpU2VsZWN0T3B0aW9uW107XHJcbiAgbW9udGhzITogTXVsdGlTZWxlY3RPcHRpb25bXTtcclxuICB3ZWVrRGF5cyE6IE11bHRpU2VsZWN0T3B0aW9uW107XHJcblxyXG4gIG1vbnRoRGF5cyA9ICBBcnJheS5mcm9tKHsgbGVuZ3RoOiAzMSB9LCAoXywgaSkgPT4gKHsgdmFsdWU6IGkgKyAxIH0pKTtcclxuICBtaW51dGVzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IGkpO1xyXG4gIGhvdXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMjQgfSwgKF8sIGkpID0+IGkpO1xyXG5cclxuICBleHByZXNzaW9uOiBhbnlbXSA9IFsnKicsJyonLCcqJywnKicsJyonLCcqJ107XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xyXG4gIG9jY3VycmVuY2VzOiBzdHJpbmc9ICcnO1xyXG5cclxuICBASW5wdXQoJ2luaXRpYWxWYWx1ZScpIGluaXRpYWxWYWx1ZSE6IHN0cmluZztcclxuICBASW5wdXQoJ3BlcmlvZGljaXRpZXNEaXNwbGF5ZWQnKSBwZXJpb2RpY2l0aWVzRGlzcGxheWVkITogQ3JvblBlcmlvZGljaXR5VHlwZVtdO1xyXG4gIEBJbnB1dCgnaGFzQ29udGFpbmVyJykgaGFzQ29udGFpbmVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoJ29jY3VycmVuY2VzTnVtYmVyJykgb2NjdXJyZW5jZXNOdW1iZXI6IG51bWJlciA9IDU7XHJcbiAgQElucHV0KCd0cmFuc2xhdGlvbnNPYmplY3QnKSB0cmFuc2xhdGlvbnNPYmplY3Q6IENyb25Db21wb25lbnRUcmFuc2xhdGlvbnMgPSB7XHJcbiAgICBwZXJpb2RpY2l0aWVzOiB7XHJcbiAgICAgIGV2ZXJ5WE1pbnV0ZXM6IFwiUmVwZXRpciBjYWRhIFggbWludXRvc1wiLFxyXG4gICAgICBldmVyeU1pbnV0ZTogXCJSZXBldGlyIGNhZGEgbWludXRvXCIsXHJcbiAgICAgIGV2ZXJ5WEhvdXJzOiBcIlJlcGV0aXIgY2FkYSBYIGhvcmFzXCIsXHJcbiAgICAgIGV2ZXJ5SG91cjogXCJSZXBldGlyIGNhZGEgaG9yYVwiLFxyXG4gICAgICBldmVyeVhEYXlzOiBcIlJlcGV0aXIgY2FkYSBYIGTDrWFzXCIsXHJcbiAgICAgIGV2ZXJ5V2VlazogXCJSZXBldGlyIGNhZGEgc2VtYW5hXCIsXHJcbiAgICAgIGV2ZXJ5WE1vbnRoczogXCJSZXBldGlyIFggbWVzZXNcIixcclxuICAgICAgZXZlcnlNb250aDogXCJSZXBldGlyIGNhZGEgbWVzXCIsXHJcbiAgICB9LFxyXG4gICAgbW9udGhzOiB7XHJcbiAgICAgIGphbnVhcnk6IFwiRW5lcm8gKDEpXCIsXHJcbiAgICAgIGZlYnJ1YXJ5OiBcIkZlYnJlcm8gKDIpXCIsXHJcbiAgICAgIG1hcmNoOiBcIk1hcnpvICgzKVwiLFxyXG4gICAgICBhcHJpbDogXCJBYnJpbCAoNClcIixcclxuICAgICAgbWF5OiBcIk1heW8gKDUpXCIsXHJcbiAgICAgIGp1bmU6IFwiSnVuaW8gKDYpXCIsXHJcbiAgICAgIGp1bHk6IFwiSnVsaW8gKDcpXCIsXHJcbiAgICAgIGF1Z3VzdDogXCJBZ29zdG8gKDgpXCIsXHJcbiAgICAgIHNlcHRlbWJlcjogXCJTZXB0aWVtYnJlICg5KVwiLFxyXG4gICAgICBvY3RvYmVyOiBcIk9jdHVicmUgKDEwKVwiLFxyXG4gICAgICBub3ZlbWJlcjogXCJOb3ZpZW1icmUgKDExKVwiLFxyXG4gICAgICBkZWNlbWJlcjogXCJEaWNpZW1icmUgKDEyKVwiXHJcbiAgICB9LFxyXG4gICAgd2Vla0RheXM6IHtcclxuICAgICAgc3VuZGF5OiBcIkRvbWluZ28gKDApXCIsXHJcbiAgICAgIG1vbmRheTogXCJMdW5lcyAoMSlcIixcclxuICAgICAgdHVlc2RheTogXCJNYXJ0ZXMgKDIpXCIsXHJcbiAgICAgIHdlZG5lc2RheTogXCJNaWVyY29sZXMgKDMpXCIsXHJcbiAgICAgIHRodXJzZGF5OiBcIkp1ZXZlcyAoNClcIixcclxuICAgICAgZnJpZGF5OiBcIlZpZXJuZXMgKDUpXCIsXHJcbiAgICAgIHNhdHVyZGF5OiBcIlNhYmFkbyAoNilcIlxyXG4gICAgfSxcclxuICAgIHBlcmlvZGljaXR5TGFiZWw6IFwiUGVyaW9kaWNpZGFkXCIsXHJcbiAgICBtaW51dGVMYWJlbDogXCJNaW51dG9cIixcclxuICAgIGhvdXJMYWJlbDogXCJIb3JhXCIsXHJcbiAgICBkYXlzTGFiZWw6IFwiRMOtYVwiLFxyXG4gICAgd2Vla0RheXNMYWJlbDogXCJEw61hcyBkZSBsYSBzZW1hbmFcIixcclxuICAgIG1vbnRoc0xhYmVsOiBcIk1lc2VzXCIsXHJcbiAgICBkZXNjcmlwdGlvbkxhYmVsOiBcIkRlc2NyaXBjacOzblwiLFxyXG4gICAgb2NjdXJyZW5jZXNMYWJlbDogXCJMYXMgc2lndWllbnRlcyA1IG9jdXJyZW5jaWFzIHNlcsOhbjogXCJcclxuICB9O1xyXG5cclxuICBAT3V0cHV0KCdjcm9uRXhwcmVzc2lvbicpIGNyb25FeHByZXNzaW9uOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIGZvcm1Db250cm9sU2VydmljZTogRm9ybUNvbnRyb2xTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3YXBwRGF0ZTogV0RhdGVQaXBlXHJcbiAgKSB7IH1cclxuICBcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdEZvcm1Hcm91cCgpO1xyXG4gICAgdGhpcy5pbml0UGVyaW9kaWNpdGllcygpO1xyXG4gICAgdGhpcy5pbml0TW9udGhzKCk7XHJcbiAgICB0aGlzLmluaXRXZWVrRGF5cygpO1xyXG5cclxuICAgIGlmKHRoaXMuaW5pdGlhbFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaW5pdFBhcnNlZFZhbHVlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdEZvcm1Hcm91cCgpIHtcclxuICAgIGlmKHRoaXMuaW5pdGlhbFZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5pbml0aWFsVmFsdWUuc3BsaXQoXCIgXCIpO1xyXG5cclxuICAgICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICBwZXJpb2RpY2l0eTogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICAgICAgbWludXRlczogbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgdGhpcy5oYXNJbml0aWFsVmFsdWUoXHJcbiAgICAgICAgICAgIHBhcnRzW0Nyb25GaWVsZFR5cGUuTWludXRlXSkgPyBcclxuICAgICAgICAgICAgdGhpcy5mb3JtYXRDcm9uTnVtYmVyKHBhcnRzW0Nyb25GaWVsZFR5cGUuTWludXRlXSlcclxuICAgICAgICAgICAgOiAwKSxcclxuICAgICAgICBob3VyczogbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgdGhpcy5oYXNJbml0aWFsVmFsdWUoXHJcbiAgICAgICAgICAgIHBhcnRzW0Nyb25GaWVsZFR5cGUuSG91cl0pID8gXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0Q3Jvbk51bWJlcihwYXJ0c1tDcm9uRmllbGRUeXBlLkhvdXJdKVxyXG4gICAgICAgICAgICA6IDApLFxyXG4gICAgICAgIHdlZWtEYXlzOiBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICB0aGlzLmhhc0luaXRpYWxWYWx1ZShcclxuICAgICAgICAgICAgcGFydHNbQ3JvbkZpZWxkVHlwZS5XZWVrRGF5XSkgPyBcclxuICAgICAgICAgICAgcGFydHNbQ3JvbkZpZWxkVHlwZS5XZWVrRGF5XS5yZXBsYWNlKC9cXC8vZywgJycpLnNwbGl0KCcsJykubWFwKE51bWJlcilcclxuICAgICAgICAgICAgOiBbXSksXHJcbiAgICAgICAgbW9udGhEYXk6IG5ldyBGb3JtQ29udHJvbChcclxuICAgICAgICAgIHRoaXMuaGFzSW5pdGlhbFZhbHVlKFxyXG4gICAgICAgICAgICBwYXJ0c1tDcm9uRmllbGRUeXBlLk1vbnRoRGF5XSkgPyBcclxuICAgICAgICAgICAgdGhpcy5mb3JtYXRDcm9uTnVtYmVyKHBhcnRzW0Nyb25GaWVsZFR5cGUuTW9udGhEYXldKVxyXG4gICAgICAgICAgICA6IDEpLFxyXG4gICAgICAgIG1vbnRoRGF5czogbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgdGhpcy5oYXNJbml0aWFsVmFsdWUocGFydHNbQ3JvbkZpZWxkVHlwZS5Nb250aERheV0pID8gXHJcbiAgICAgICAgICAgIHBhcnRzW0Nyb25GaWVsZFR5cGUuTW9udGhEYXldLnJlcGxhY2UoL1svKl0vZywgJycpLnNwbGl0KCcsJykubWFwKE51bWJlcilcclxuICAgICAgICAgICAgOiBbXSksXHJcbiAgICAgICAgbW9udGhzOiBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICB0aGlzLmhhc0luaXRpYWxWYWx1ZShwYXJ0c1tDcm9uRmllbGRUeXBlLk1vbnRoXSkgPyBcclxuICAgICAgICAgICAgcGFydHNbQ3JvbkZpZWxkVHlwZS5Nb250aF0ucmVwbGFjZSgvXFwvL2csICcnKS5zcGxpdCgnLCcpLm1hcChOdW1iZXIpXHJcbiAgICAgICAgICAgIDogMCksXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICBwZXJpb2RpY2l0eTogbmV3IEZvcm1Db250cm9sKDApLFxyXG4gICAgICAgIG1pbnV0ZXM6IG5ldyBGb3JtQ29udHJvbCgwKSxcclxuICAgICAgICBob3VyczogbmV3IEZvcm1Db250cm9sKDApLFxyXG4gICAgICAgIHdlZWtEYXlzOiBuZXcgRm9ybUNvbnRyb2woW10pLFxyXG4gICAgICAgIG1vbnRoRGF5OiBuZXcgRm9ybUNvbnRyb2woMSksXHJcbiAgICAgICAgbW9udGhEYXlzOiBuZXcgRm9ybUNvbnRyb2woW10pLFxyXG4gICAgICAgIG1vbnRoczogbmV3IEZvcm1Db250cm9sKDApLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhc0luaXRpYWxWYWx1ZShwYXJ0OiBzdHJpbmcpIHtcclxuICAgIGlmKHBhcnQgPT0gJyonIHx8IHBhcnQgPT0gJzAnKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0Q3Jvbk51bWJlcihjcm9uVmFsdWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuICtjcm9uVmFsdWUucmVwbGFjZSgvWy8qXS9nLCAnJyk7XHJcbiAgfVxyXG5cclxuICBpbml0UGVyaW9kaWNpdGllcygpIHtcclxuICAgIGNvbnN0IHRyYW5zbGF0aW9uc01hcCA9IHtcclxuICAgICAgW0Nyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlYTWludXRlc106IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LnBlcmlvZGljaXRpZXMuZXZlcnlYTWludXRlcyxcclxuICAgICAgW0Nyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlNaW51dGVdOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5wZXJpb2RpY2l0aWVzLmV2ZXJ5TWludXRlLFxyXG4gICAgICBbQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhIb3Vyc106IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LnBlcmlvZGljaXRpZXMuZXZlcnlYSG91cnMsXHJcbiAgICAgIFtDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5SG91cl06IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LnBlcmlvZGljaXRpZXMuZXZlcnlIb3VyLFxyXG4gICAgICBbQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhEYXlzXTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QucGVyaW9kaWNpdGllcy5ldmVyeVhEYXlzLFxyXG4gICAgICBbQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVdlZWtdOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5wZXJpb2RpY2l0aWVzLmV2ZXJ5V2VlayxcclxuICAgICAgW0Nyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlYTW9udGhzXTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QucGVyaW9kaWNpdGllcy5ldmVyeVhNb250aHMsXHJcbiAgICAgIFtDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5TW9udGhdOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5wZXJpb2RpY2l0aWVzLmV2ZXJ5TW9udGgsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnBlcmlvZGljaXRpZXNEaXNwbGF5ZWQpIHtcclxuICAgICAgdGhpcy5wZXJpb2RpY2l0aWVzID0gdGhpcy5wZXJpb2RpY2l0aWVzRGlzcGxheWVkLm1hcChwZXJpb2RpY2l0eSA9PiAoe1xyXG4gICAgICAgIHZhbHVlOiBwZXJpb2RpY2l0eSxcclxuICAgICAgICBuYW1lOiB0cmFuc2xhdGlvbnNNYXBbcGVyaW9kaWNpdHldXHJcbiAgICAgIH0pKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGVyaW9kaWNpdGllcyA9IE9iamVjdC5lbnRyaWVzKHRyYW5zbGF0aW9uc01hcCkubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XHJcbiAgICAgICAgdmFsdWU6IE51bWJlcihrZXkpLCBcclxuICAgICAgICBuYW1lOiB2YWx1ZVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBpZighdGhpcy5pbml0aWFsVmFsdWUpIHtcclxuICAgICAgdGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkID0gdGhpcy5wZXJpb2RpY2l0aWVzWzBdPy52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRQYXJzZWRWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLmV4cHJlc3Npb24gPSB0aGlzLnBhcnNlQ3JvbkV4cHJlc3Npb24odGhpcy5pbml0aWFsVmFsdWUpO1xyXG4gICAgXHJcbiAgICB0aGlzLnBlcmlvZGljaXR5U2VsZWN0ZWQgPSB0aGlzLmdldENyb25QZXJpb2RpY2l0eVR5cGUodGhpcy5pbml0aWFsVmFsdWUpITtcclxuICAgIHRoaXMuaGFuZGxlWmVyb0hvdXJzQXJyYXkoKTtcclxuICAgIHRoaXMuY3JvblRvSHVtYW4oKTtcclxuICB9XHJcblxyXG4gIHBhcnNlQ3JvbkV4cHJlc3Npb24oY3Jvbjogc3RyaW5nKTogYW55W10ge1xyXG4gICAgY29uc3QgcGFydHMgPSBjcm9uLnNwbGl0KFwiIFwiKTtcclxuICAgIFxyXG4gICAgd2hpbGUgKHBhcnRzLmxlbmd0aCA8IDYpIHtcclxuICAgICAgcGFydHMucHVzaCgnKicpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcmV0dXJuIHBhcnRzO1xyXG4gIH1cclxuXHJcbiAgaW5pdE1vbnRocygpIHtcclxuICAgIHRoaXMubW9udGhzID0gW1xyXG4gICAgICB7IHZhbHVlOiAxLCBuYW1lOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5tb250aHMuamFudWFyeSB9LCBcclxuICAgICAgeyB2YWx1ZTogMiwgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QubW9udGhzLmZlYnJ1YXJ5IH0sIFxyXG4gICAgICB7IHZhbHVlOiAzLCBuYW1lOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5tb250aHMubWFyY2ggfSwgXHJcbiAgICAgIHsgdmFsdWU6IDQsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0Lm1vbnRocy5hcHJpbCB9LCBcclxuICAgICAgeyB2YWx1ZTogNSwgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QubW9udGhzLm1heSB9LCBcclxuICAgICAgeyB2YWx1ZTogNiwgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QubW9udGhzLmp1bmUgfSwgXHJcbiAgICAgIHsgdmFsdWU6IDcsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0Lm1vbnRocy5qdWx5IH0sIFxyXG4gICAgICB7IHZhbHVlOiA4LCBuYW1lOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5tb250aHMuYXVndXN0IH0sIFxyXG4gICAgICB7IHZhbHVlOiA5LCBuYW1lOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5tb250aHMuc2VwdGVtYmVyIH0sIFxyXG4gICAgICB7IHZhbHVlOiAxMCwgbmFtZTp0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5tb250aHMub2N0b2JlciB9LCBcclxuICAgICAgeyB2YWx1ZTogMTEsIG5hbWU6dGhpcy50cmFuc2xhdGlvbnNPYmplY3QubW9udGhzLm5vdmVtYmVyIH0sIFxyXG4gICAgICB7IHZhbHVlOiAxMiwgbmFtZTp0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5tb250aHMuZGVjZW1iZXIgfSwgXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgaW5pdFdlZWtEYXlzKCkge1xyXG4gICAgdGhpcy53ZWVrRGF5cyA9IFtcclxuICAgICAgeyB2YWx1ZTogMCwgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3Qud2Vla0RheXMuc3VuZGF5IH0sIFxyXG4gICAgICB7IHZhbHVlOiAxLCBuYW1lOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC53ZWVrRGF5cy5tb25kYXkgfSwgXHJcbiAgICAgIHsgdmFsdWU6IDIsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LndlZWtEYXlzLnR1ZXNkYXkgfSwgXHJcbiAgICAgIHsgdmFsdWU6IDMsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LndlZWtEYXlzLndlZG5lc2RheSB9LCBcclxuICAgICAgeyB2YWx1ZTogNCwgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3Qud2Vla0RheXMudGh1cnNkYXkgfSwgXHJcbiAgICAgIHsgdmFsdWU6IDUsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LndlZWtEYXlzLmZyaWRheSB9LCBcclxuICAgICAgeyB2YWx1ZTogNiwgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3Qud2Vla0RheXMuc2F0dXJkYXkgfSwgXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgYWxsb3dTZWNvbmRzKCkge1xyXG4gICAgcmV0dXJuIGZhbHNlOyBcclxuICB9XHJcblxyXG4gIGFsbG93TWludXRlcygpIHtcclxuICAgIHN3aXRjaCh0aGlzLnBlcmlvZGljaXR5U2VsZWN0ZWQpe1xyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlYTWludXRlczpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5TWludXRlOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlYSG91cnM6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeUhvdXI6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhEYXlzOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlXZWVrOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlNb250aDpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WE1vbnRoczogXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6IFxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFsbG93SG91cnMoKSB7XHJcbiAgICBzd2l0Y2godGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkKXtcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WEhvdXJzOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlIb3VyOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlYRGF5czpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5V2VlazpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5TW9udGg6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhNb250aHM6IFxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OiBcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbGxvd1dlZWtEYXlzKCkge1xyXG4gICAgc3dpdGNoKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCl7XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVdlZWs6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6IFxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFsbG93TW9udGhEYXkoKSB7XHJcbiAgICBzd2l0Y2godGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkKXtcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WERheXM6IFxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OiBcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbGxvd01vbnRoRGF5cygpIHtcclxuICAgIHN3aXRjaCh0aGlzLnBlcmlvZGljaXR5U2VsZWN0ZWQpe1xyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlYTW9udGhzOiBcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5TW9udGg6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6IFxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFsbG93TW9udGhzKCkge1xyXG4gICAgc3dpdGNoKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCl7XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhNb250aHM6IFxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OiBcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc01vbnRoRGF5c1JlcXVpcmVkKCkge1xyXG4gICAgaWYodGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkID09IENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlYTW9udGhzKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7IFxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUGVyaW9kaWNpdHlTZWxlY3RlZCgpIHtcclxuICAgIHRoaXMucmVzdGFydEV4cHJlc3Npb24oKTtcclxuICAgIHRoaXMuaGFuZGxlWmVyb0hvdXJzQXJyYXkoKTtcclxuICAgIHRoaXMudXBkYXRlTW9udGhEYXlzUmVxdWlyZW1lbnQoKTtcclxuICAgIHRoaXMub25Ib3Vyc1NlbGVjdGVkKHRoaXMuaG91clNlbGVjdGVkKTtcclxuICAgIHRoaXMub25XZWVrRGF5c1NlbGVjdGVkKHRoaXMud2Vla0RheVNlbGVjdGVkKTtcclxuICAgIHRoaXMub25Nb250aHNTZWxlY3RlZCh0aGlzLm1vbnRoU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5vbk1vbnRoRGF5c1NlbGVjdGVkKHRoaXMubW9udGhEYXlzU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5vbk1vbnRoRGF5U2VsZWN0ZWQodGhpcy5tb250aERheVNlbGVjdGVkKTtcclxuICAgIHRoaXMub25NaW51dGVTZWxlY3RlZCh0aGlzLm1pbnV0ZVNlbGVjdGVkKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVplcm9Ib3Vyc0FycmF5KCkge1xyXG4gICAgaWYgKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCA9PSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WEhvdXJzKSB7XHJcbiAgICAgIHRoaXMuaG91cnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAyMyB9LCAoXywgaSkgPT4gaSArIDEpO1xyXG4gICAgICBpZih0aGlzLmhvdXJTZWxlY3RlZCA9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5ob3VyU2VsZWN0ZWQgPSAxO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhvdXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMjQgfSwgKF8sIGkpID0+IGkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25NaW51dGVTZWxlY3RlZChtaW51dGVTZWxlY3RlZDogbnVtYmVyKSB7XHJcbiAgICBzd2l0Y2godGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkKXtcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WE1pbnV0ZXM6IHtcclxuICAgICAgICB0aGlzLmV4cHJlc3Npb25bQ3JvbkZpZWxkVHlwZS5TZWNvbmRdID0gYDBgO1xyXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLk1pbnV0ZV0gPSBgKi8ke21pbnV0ZVNlbGVjdGVkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5TWludXRlOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlIb3VyOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlYSG91cnM6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhEYXlzOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlXZWVrOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlNb250aDpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WE1vbnRoczoge1xyXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLlNlY29uZF0gPSBgMGA7XHJcbiAgICAgICAgdGhpcy5leHByZXNzaW9uW0Nyb25GaWVsZFR5cGUuTWludXRlXSA9IGAke21pbnV0ZVNlbGVjdGVkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY3JvblRvSHVtYW4oKTtcclxuICB9XHJcblxyXG4gIG9uSG91cnNTZWxlY3RlZChob3Vyc1NlbGVjdGVkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLk1pbnV0ZV0gPSBgJHt0aGlzLm1pbnV0ZVNlbGVjdGVkfWA7XHJcbiAgICBzd2l0Y2godGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkKXtcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WEhvdXJzOlxyXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLkhvdXJdID0gYCovJHtob3Vyc1NlbGVjdGVkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeUhvdXI6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhEYXlzOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlXZWVrOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlNb250aDpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WE1vbnRoczogXHJcbiAgICAgICAgdGhpcy5leHByZXNzaW9uW0Nyb25GaWVsZFR5cGUuSG91cl0gPSBgJHtob3Vyc1NlbGVjdGVkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNyb25Ub0h1bWFuKCk7XHJcbiAgfVxyXG5cclxuICBvbldlZWtEYXlzU2VsZWN0ZWQod2Vla0RheXNTZWxlY3RlZDogbnVtYmVyW10pIHtcclxuICAgIHN3aXRjaCh0aGlzLnBlcmlvZGljaXR5U2VsZWN0ZWQpe1xyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlXZWVrOiB7XHJcbiAgICAgICAgdGhpcy5leHByZXNzaW9uW0Nyb25GaWVsZFR5cGUuV2Vla0RheV0gPSBgJHt3ZWVrRGF5c1NlbGVjdGVkfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY3JvblRvSHVtYW4oKTtcclxuICB9XHJcblxyXG4gIG9uTW9udGhEYXlzU2VsZWN0ZWQobW9udGhEYXlzU2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgc3dpdGNoKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCl7XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhEYXlzOlxyXG4gICAgICAgICAgdGhpcy5leHByZXNzaW9uW0Nyb25GaWVsZFR5cGUuTW9udGhEYXldID0gYCovJHt0aGlzLm1vbnRoRGF5U2VsZWN0ZWR9YDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlNb250aDpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WE1vbnRoczogXHJcbiAgICAgICAgaWYobW9udGhEYXlzU2VsZWN0ZWQgaW5zdGFuY2VvZiBBcnJheSAmJiBtb250aERheXNTZWxlY3RlZC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5leHByZXNzaW9uW0Nyb25GaWVsZFR5cGUuTW9udGhEYXldID0gYCpgO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmV4cHJlc3Npb25bQ3JvbkZpZWxkVHlwZS5Nb250aERheV0gPSBgJHttb250aERheXNTZWxlY3RlZH1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuY3JvblRvSHVtYW4oKTtcclxuICB9XHJcblxyXG4gIG9uTW9udGhEYXlTZWxlY3RlZChtb250aERheXNTZWxlY3RlZDogYW55KSB7XHJcbiAgICBzd2l0Y2godGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkKXtcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WERheXM6XHJcbiAgICAgICAgICB0aGlzLmV4cHJlc3Npb25bQ3JvbkZpZWxkVHlwZS5Nb250aERheV0gPSBgKi8ke21vbnRoRGF5c1NlbGVjdGVkfWA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuY3JvblRvSHVtYW4oKTtcclxuICB9XHJcblxyXG4gIG9uTW9udGhzU2VsZWN0ZWQobW9udGhzU2VsZWN0ZWQ6IG51bWJlcltdKSB7XHJcbiAgICBzd2l0Y2godGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkKXtcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WE1vbnRoczoge1xyXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLlNlY29uZF0gPSBgMGA7XHJcbiAgICAgICAgdGhpcy5leHByZXNzaW9uW0Nyb25GaWVsZFR5cGUuTW9udGhdID0gYCR7bW9udGhzU2VsZWN0ZWR9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcm9uVG9IdW1hbigpO1xyXG4gIH1cclxuXHJcbiAgY3JvblRvSHVtYW4oKSB7XHJcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gY3JvbnN0cnVlLnRvU3RyaW5nKHRoaXMuZXhwcmVzc2lvbi5qb2luKCcgJyksIHtsb2NhbGU6IHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2Uuc2xpY2UoMCwyKSB9KTtcclxuICAgIFxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgY3VycmVudERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICBjb25zdCBpbnRlcnZhbCA9IENyb25FeHByZXNzaW9uUGFyc2VyLnBhcnNlKHRoaXMuZXhwcmVzc2lvbi5qb2luKCcgJyksIG9wdGlvbnMpO1xyXG5cclxuICAgIGxldCBkYXRlcyA9IGludGVydmFsLnRha2UodGhpcy5vY2N1cnJlbmNlc051bWJlcikubWFwKChkYXRlKSA9PiBuZXcgRGF0ZShkYXRlLnRvU3RyaW5nKCkpKTtcclxuICAgIHRoaXMub2NjdXJyZW5jZXMgPSBkYXRlcy5tYXAoZCA9PiB0aGlzLndhcHBEYXRlLnRyYW5zZm9ybShkLCBXRGF0ZVBpcGVGb3JtYXRUeXBlLkcpKS5qb2luKFwiLCBcIik7XHJcblxyXG4gICAgbGV0IGNyb25FeHByZXNzaW9uOiBzdHJpbmcgPSB0aGlzLmV4cHJlc3Npb24uam9pbignICcpO1xyXG5cclxuICAgIGlmKCFbQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhNaW51dGVzLCBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5TWludXRlLCBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WEhvdXJzXS5pbmNsdWRlcyh0aGlzLnBlcmlvZGljaXR5U2VsZWN0ZWQpKSB7XHJcbiAgICAgIGNyb25FeHByZXNzaW9uID0gdGhpcy5sb2NhbFVzZXJDcm9uVG9VVENDcm9uKHRoaXMuZXhwcmVzc2lvbi5qb2luKCcgJykpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3JvbkV4cHJlc3Npb24uZW1pdChjcm9uRXhwcmVzc2lvbik7XHJcbiAgfVxyXG5cclxuICBsb2NhbFVzZXJDcm9uVG9VVENDcm9uKGNyb25FeHByZXNzaW9uOiBzdHJpbmcpIHtcclxuICAgIFxyXG4gICAgY29uc3QgY3JvblBhcnRzID0gY3JvbkV4cHJlc3Npb24udHJpbSgpLnNwbGl0KCcgJyk7XHJcbiAgICBjb25zdCB1c2VyT2Zmc2V0ID0gLShuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkgLyA2MCk7XHJcbiAgICBjb25zdCBsb2NhbEhvdXIgPSBwYXJzZUludChjcm9uUGFydHNbMl0sIDEwKTtcclxuXHJcbiAgICBsZXQgdXRjSG91ciA9IGxvY2FsSG91ciAtIHVzZXJPZmZzZXQ7XHJcbiAgICBsZXQgZGF5QWRqdXN0bWVudCA9IDA7XHJcbiAgXHJcbiAgICBpZiAodXRjSG91ciA+PSAyNCkge1xyXG4gICAgICB1dGNIb3VyIC09IDI0O1xyXG4gICAgICBkYXlBZGp1c3RtZW50ID0gMTtcclxuICAgIH0gZWxzZSBpZiAodXRjSG91ciA8IDApIHtcclxuICAgICAgdXRjSG91ciArPSAyNDtcclxuICAgICAgZGF5QWRqdXN0bWVudCA9IC0xO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgY3JvblBhcnRzWzJdID0gdXRjSG91ci50b1N0cmluZygpO1xyXG4gIFxyXG4gICAgcmV0dXJuIGNyb25QYXJ0cy5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRBcnJheVZhbHVlcyhhcnJheTogYW55W10pIHtcclxuICAgIHJldHVybiBhcnJheT8ubWFwKGEgPT4gYS52YWx1ZSkuam9pbignLCcpO1xyXG4gIH1cclxuXHJcbiAgcmVzdGFydEV4cHJlc3Npb24oKSB7XHJcbiAgICB0aGlzLmV4cHJlc3Npb24gPSBbJyonLCcqJywnKicsJyonLCcqJywnKiddO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3JvblBlcmlvZGljaXR5VHlwZShjcm9uOiBzdHJpbmcpOiBDcm9uUGVyaW9kaWNpdHlUeXBlIHwgbnVsbCB7XHJcbiAgICBjb25zdCBwYXJ0cyA9IGNyb24uc3BsaXQoXCIgXCIpO1xyXG4gIFxyXG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gNikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICBcclxuICAgIGNvbnN0IFtzZWNvbmQsIG1pbnV0ZSwgaG91ciwgZGF5T2ZNb250aCwgbW9udGgsIGRheU9mV2Vla10gPSBwYXJ0cztcclxuXHJcbiAgICBpZiAobWludXRlLnN0YXJ0c1dpdGgoXCIqL1wiKSAmJiBob3VyID09PSBcIipcIiAmJiBkYXlPZk1vbnRoID09PSBcIipcIiAmJiBtb250aCA9PT0gXCIqXCIgJiYgZGF5T2ZXZWVrID09PSBcIipcIikge1xyXG4gICAgICByZXR1cm4gQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhNaW51dGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtaW51dGUgIT09IFwiKlwiICYmIGhvdXIgPT09IFwiKlwiICYmIGRheU9mTW9udGggPT09IFwiKlwiICYmIG1vbnRoID09PSBcIipcIiAmJiBkYXlPZldlZWsgPT09IFwiKlwiKSB7XHJcbiAgICAgIHJldHVybiBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5TWludXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChob3VyLnN0YXJ0c1dpdGgoXCIqL1wiKSAmJiBkYXlPZk1vbnRoID09PSBcIipcIiAmJiBtb250aCA9PT0gXCIqXCIgJiYgZGF5T2ZXZWVrID09PSBcIipcIikge1xyXG4gICAgICByZXR1cm4gQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhIb3VycztcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWludXRlICE9PSBcIipcIiAmJiBob3VyICE9PSBcIipcIiAmJiBkYXlPZk1vbnRoID09PSBcIipcIiAmJiBtb250aCA9PT0gXCIqXCIgJiYgZGF5T2ZXZWVrID09PSBcIipcIikge1xyXG4gICAgICByZXR1cm4gQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeUhvdXI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRheU9mTW9udGguc3RhcnRzV2l0aChcIiovXCIpICYmIG1vbnRoID09PSBcIipcIiAmJiBkYXlPZldlZWsgPT09IFwiKlwiKSB7XHJcbiAgICAgIHJldHVybiBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WERheXM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRheU9mV2VlayAhPT0gXCIqXCIgJiYgZGF5T2ZNb250aCA9PT0gXCIqXCIgJiYgbW9udGggPT09IFwiKlwiKSB7XHJcbiAgICAgIHJldHVybiBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5V2VlaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF5T2ZNb250aCAhPT0gXCIqXCIgJiYgbW9udGggPT0gXCIqXCIpIHtcclxuICAgICAgcmV0dXJuIENyb25QZXJpb2RpY2l0eVR5cGUuRXZlcnlNb250aDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKG1vbnRoICE9PSBcIipcIikge1xyXG4gICAgICByZXR1cm4gQ3JvblBlcmlvZGljaXR5VHlwZS5FdmVyeVhNb250aHM7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVNb250aERheXNSZXF1aXJlbWVudCgpIHtcclxuICAgIGlmKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCA9PSBDcm9uUGVyaW9kaWNpdHlUeXBlLkV2ZXJ5WE1vbnRocykge1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snbW9udGhEYXlzJ10ucmVtb3ZlVmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snbW9udGhEYXlzJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfSBlbHNlIHsgXHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydtb250aERheXMnXS5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydtb250aERheXMnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXQgcGVyaW9kaWNpdHlTZWxlY3RlZCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cD8ucGF0Y2hWYWx1ZSh7cGVyaW9kaWNpdHk6IHZhbHVlfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGVyaW9kaWNpdHlTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3BlcmlvZGljaXR5JykhLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbnV0ZVNlbGVjdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnbWludXRlcycpIS52YWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCBob3VyU2VsZWN0ZWQodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5mb3JtR3JvdXA/LnBhdGNoVmFsdWUoe2hvdXJzOiB2YWx1ZX0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhvdXJTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2hvdXJzJykhLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHdlZWtEYXlTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3dlZWtEYXlzJykhLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1vbnRoRGF5U2VsZWN0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdtb250aERheScpIS52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBtb250aERheXNTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ21vbnRoRGF5cycpIS52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBtb250aFNlbGVjdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnbW9udGhzJykhLnZhbHVlO1xyXG4gIH1cclxufVxyXG4iLCI8dy1wYW5lbCAqbmdJZj1cImhhc0NvbnRhaW5lcjsgZWxzZSBjcm9uQ29tcG9uZW50XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3JvbkNvbXBvbmVudFwiPjwvbmctY29udGFpbmVyPlxyXG48L3ctcGFuZWw+XHJcblxyXG48bmctdGVtcGxhdGUgI2Nyb25Db21wb25lbnQ+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPHctcGFuZWwtZ3JpZCBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8dy1lZGl0LXNlbGVjdCBjbGFzcz1cImNvbC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5wZXJpb2RpY2l0eUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwicGVyaW9kaWNpdGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvblZhbHVlXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCInbmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFNlcnZpY2UuY29udmVydFRvRm9ybUNvbnRyb2woZm9ybUdyb3VwLmdldCgncGVyaW9kaWNpdHknKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvblBlcmlvZGljaXR5U2VsZWN0ZWQoKVwiPlxyXG4gICAgICAgICAgICA8L3ctZWRpdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDx3LWVkaXQtbXVsdGlzZWxlY3QgKm5nSWY9XCJhbGxvd01vbnRocygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5tb250aHNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIm1vbnRoc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvblZhbHVlXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCInbmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFNlcnZpY2UuY29udmVydFRvRm9ybUNvbnRyb2woZm9ybUdyb3VwLmdldCgnbW9udGhzJykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25Nb250aHNTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvdy1lZGl0LW11bHRpc2VsZWN0PlxyXG4gICAgICAgICAgICA8dy1lZGl0LW11bHRpc2VsZWN0ICpuZ0lmPVwiYWxsb3dNb250aERheXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZGF5c0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNNb250aERheXNSZXF1aXJlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJtb250aERheXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sU2VydmljZS5jb252ZXJ0VG9Gb3JtQ29udHJvbChmb3JtR3JvdXAuZ2V0KCdtb250aERheXMnKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbk1vbnRoRGF5c1NlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC93LWVkaXQtbXVsdGlzZWxlY3Q+XHJcbiAgICAgICAgICAgIDx3LWVkaXQtc2VsZWN0ICpuZ0lmPVwiYWxsb3dNb250aERheSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5kYXlzTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJtb250aERheXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sU2VydmljZS5jb252ZXJ0VG9Gb3JtQ29udHJvbChmb3JtR3JvdXAuZ2V0KCdtb250aERheScpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uTW9udGhEYXlzU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L3ctZWRpdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDx3LWVkaXQtbXVsdGlzZWxlY3QgKm5nSWY9XCJhbGxvd1dlZWtEYXlzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LndlZWtEYXlzTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ3ZWVrRGF5c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvblZhbHVlXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCInbmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFNlcnZpY2UuY29udmVydFRvRm9ybUNvbnRyb2woZm9ybUdyb3VwLmdldCgnd2Vla0RheXMnKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbldlZWtEYXlzU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L3ctZWRpdC1tdWx0aXNlbGVjdD5cclxuICAgICAgICAgICAgPHctZWRpdC1zZWxlY3QgKm5nSWY9XCJhbGxvd0hvdXJzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtNlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5ob3VyTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiaG91cnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sU2VydmljZS5jb252ZXJ0VG9Gb3JtQ29udHJvbChmb3JtR3JvdXAuZ2V0KCdob3VycycpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25Ib3Vyc1NlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC93LWVkaXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8dy1lZGl0LXNlbGVjdCAqbmdJZj1cImFsbG93TWludXRlcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY29sLTYnOiBhbGxvd0hvdXJzKCksICdjb2wtMTInOiAhYWxsb3dIb3VycygpfVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5taW51dGVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJtaW51dGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFNlcnZpY2UuY29udmVydFRvRm9ybUNvbnRyb2woZm9ybUdyb3VwLmdldCgnbWludXRlcycpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25NaW51dGVTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvdy1lZGl0LXNlbGVjdD5cclxuICAgICAgICAgICAgPHctZWRpdC1pbnB1dC1udW1iZXIgKm5nSWY9XCJhbGxvd1NlY29uZHMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NlZ3VuZG9zJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCI1OVwiPlxyXG4gICAgICAgICAgICA8L3ctZWRpdC1pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICAgIDx3LXZpZXctdGV4dCBjbGFzcz1cImNvbC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmRlc2NyaXB0aW9uTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYXlvdXRdPVwiJ3ZlcnRpY2FsJ1wiPlxyXG4gICAgICAgICAgICA8L3ctdmlldy10ZXh0PlxyXG4gICAgICAgICAgICA8dy12aWV3LXRleHQgY2xhc3M9XCJjb2wtMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5vY2N1cnJlbmNlc0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvY2N1cnJlbmNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIid2ZXJ0aWNhbCdcIj5cclxuICAgICAgICAgICAgPC93LXZpZXctdGV4dD5cclxuICAgICAgICA8L3ctcGFuZWwtZ3JpZD5cclxuICAgIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
504
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1jcm9uLWV4cHJlc3Npb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL21pc2Mvdy1jcm9uLWV4cHJlc3Npb25zL3ctY3Jvbi1leHByZXNzaW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi9taXNjL3ctY3Jvbi1leHByZXNzaW9ucy93LWNyb24tZXhwcmVzc2lvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQWUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUdwRyxPQUFRLFNBQVMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7OztBQU90RSxNQUFNLE9BQU8seUJBQXlCO0lBaUVwQyxZQUNVLFdBQXdCLEVBQ3pCLGtCQUFzQyxFQUNyQyxRQUFtQjtRQUZuQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLGFBQVEsR0FBUixRQUFRLENBQVc7UUE3RDdCLGNBQVMsR0FBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtB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QUFNLENBQUMsUUFBUSxFQUFFO1lBQzNELEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7U0FDNUQsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNkLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDM0QsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUMzRCxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQzVELEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDOUQsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUM3RCxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQzNELEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7U0FDOUQsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsWUFBWTtRQUNWLFFBQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFDO1lBQzlCLEtBQUssbUJBQW1CLENBQUMsbUJBQW1CLENBQUM7WUFDN0MsS0FBSyxtQkFBbUIsQ0FBQyxp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QUFLLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUMsS0FBSyxDQUFDO0lBQzdDLENBQUM7O3NIQTloQlUseUJBQXlCOzBHQUF6Qix5QkFBeUIscVRDaEJ0Qyx3NUtBMkZjOzJGRDNFRCx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usb0JBQW9COzJKQW1CUCxZQUFZO3NCQUFsQyxLQUFLO3VCQUFDLGNBQWM7Z0JBQ1ksc0JBQXNCO3NCQUF0RCxLQUFLO3VCQUFDLHdCQUF3QjtnQkFDUixZQUFZO3NCQUFsQyxLQUFLO3VCQUFDLGNBQWM7Z0JBQ08saUJBQWlCO3NCQUE1QyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFDRyxrQkFBa0I7c0JBQTlDLEtBQUs7dUJBQUMsb0JBQW9CO2dCQTRDRCxjQUFjO3NCQUF2QyxNQUFNO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNdWx0aVNlbGVjdE9wdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvbXVsdGlzZWxlY3Qtb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgQ3JvbkZpZWxkVHlwZSwgQ3JvblBlcmlvZGljaXR5VHlwZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9lbnVtcy9jcm9uLWV4cHJlc3Npb25zL2VudW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBDcm9uQ29tcG9uZW50VHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9jcm9uLWV4cHJlc3Npb25zL2Nyb24tY29tcG9uZW50LXRyYW5zbGF0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9mb3JtLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCAgY3JvbnN0cnVlIGZyb20gJ2Nyb25zdHJ1ZS9pMThuJztcclxuaW1wb3J0IHsgQ3JvbkV4cHJlc3Npb25QYXJzZXIgfSBmcm9tICdjcm9uLXBhcnNlcic7XHJcbmltcG9ydCB7IFdEYXRlUGlwZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9waXBlcy93LWRhdGUucGlwZSc7XHJcbmltcG9ydCB7IFdEYXRlUGlwZUZvcm1hdFR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2VudW1zLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndy1jcm9uLWV4cHJlc3Npb25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdy1jcm9uLWV4cHJlc3Npb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LWNyb24tZXhwcmVzc2lvbnMuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXQ3JvbkV4cHJlc3Npb25zQ29tcG9uZW50IHtcclxuICBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcblxyXG4gIHBlcmlvZGljaXRpZXMhOiBNdWx0aVNlbGVjdE9wdGlvbltdO1xyXG4gIG1vbnRocyE6IE11bHRpU2VsZWN0T3B0aW9uW107XHJcbiAgd2Vla0RheXMhOiBNdWx0aVNlbGVjdE9wdGlvbltdO1xyXG5cclxuICBtb250aERheXMgPSAgQXJyYXkuZnJvbSh7IGxlbmd0aDogMzEgfSwgKF8sIGkpID0+ICh7IHZhbHVlOiBpICsgMSB9KSk7XHJcbiAgbWludXRlcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiBpKTtcclxuICBob3VycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDI0IH0sIChfLCBpKSA9PiBpKTtcclxuXHJcbiAgZXhwcmVzc2lvbjogYW55W10gPSBbJyonLCcqJywnKicsJyonLCcqJywnKiddO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcclxuICBvY2N1cnJlbmNlczogc3RyaW5nPSAnJztcclxuXHJcbiAgQElucHV0KCdpbml0aWFsVmFsdWUnKSBpbml0aWFsVmFsdWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCdwZXJpb2RpY2l0aWVzRGlzcGxheWVkJykgcGVyaW9kaWNpdGllc0Rpc3BsYXllZCE6IENyb25QZXJpb2RpY2l0eVR5cGVbXTtcclxuICBASW5wdXQoJ2hhc0NvbnRhaW5lcicpIGhhc0NvbnRhaW5lcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCdvY2N1cnJlbmNlc051bWJlcicpIG9jY3VycmVuY2VzTnVtYmVyOiBudW1iZXIgPSA1O1xyXG4gIEBJbnB1dCgndHJhbnNsYXRpb25zT2JqZWN0JykgdHJhbnNsYXRpb25zT2JqZWN0OiBDcm9uQ29tcG9uZW50VHJhbnNsYXRpb25zID0ge1xyXG4gICAgcGVyaW9kaWNpdGllczoge1xyXG4gICAgICBldmVyeVhNaW51dGVzOiBcIlJlcGV0aXIgY2FkYSBYIG1pbnV0b3NcIixcclxuICAgICAgZXZlcnlNaW51dGU6IFwiUmVwZXRpciBjYWRhIG1pbnV0b1wiLFxyXG4gICAgICBldmVyeVhIb3VyczogXCJSZXBldGlyIGNhZGEgWCBob3Jhc1wiLFxyXG4gICAgICBldmVyeUhvdXI6IFwiUmVwZXRpciBjYWRhIGhvcmFcIixcclxuICAgICAgZXZlcnlYRGF5czogXCJSZXBldGlyIGNhZGEgWCBkw61hc1wiLFxyXG4gICAgICBldmVyeVdlZWs6IFwiUmVwZXRpciBjYWRhIHNlbWFuYVwiLFxyXG4gICAgICBldmVyeVhNb250aHM6IFwiUmVwZXRpciBYIG1lc2VzXCIsXHJcbiAgICAgIGV2ZXJ5TW9udGg6IFwiUmVwZXRpciBjYWRhIG1lc1wiLFxyXG4gICAgfSxcclxuICAgIG1vbnRoczoge1xyXG4gICAgICBqYW51YXJ5OiBcIkVuZXJvICgxKVwiLFxyXG4gICAgICBmZWJydWFyeTogXCJGZWJyZXJvICgyKVwiLFxyXG4gICAgICBtYXJjaDogXCJNYXJ6byAoMylcIixcclxuICAgICAgYXByaWw6IFwiQWJyaWwgKDQpXCIsXHJcbiAgICAgIG1heTogXCJNYXlvICg1KVwiLFxyXG4gICAgICBqdW5lOiBcIkp1bmlvICg2KVwiLFxyXG4gICAgICBqdWx5OiBcIkp1bGlvICg3KVwiLFxyXG4gICAgICBhdWd1c3Q6IFwiQWdvc3RvICg4KVwiLFxyXG4gICAgICBzZXB0ZW1iZXI6IFwiU2VwdGllbWJyZSAoOSlcIixcclxuICAgICAgb2N0b2JlcjogXCJPY3R1YnJlICgxMClcIixcclxuICAgICAgbm92ZW1iZXI6IFwiTm92aWVtYnJlICgxMSlcIixcclxuICAgICAgZGVjZW1iZXI6IFwiRGljaWVtYnJlICgxMilcIlxyXG4gICAgfSxcclxuICAgIHdlZWtEYXlzOiB7XHJcbiAgICAgIHN1bmRheTogXCJEb21pbmdvICgwKVwiLFxyXG4gICAgICBtb25kYXk6IFwiTHVuZXMgKDEpXCIsXHJcbiAgICAgIHR1ZXNkYXk6IFwiTWFydGVzICgyKVwiLFxyXG4gICAgICB3ZWRuZXNkYXk6IFwiTWllcmNvbGVzICgzKVwiLFxyXG4gICAgICB0aHVyc2RheTogXCJKdWV2ZXMgKDQpXCIsXHJcbiAgICAgIGZyaWRheTogXCJWaWVybmVzICg1KVwiLFxyXG4gICAgICBzYXR1cmRheTogXCJTYWJhZG8gKDYpXCJcclxuICAgIH0sXHJcbiAgICBwZXJpb2RpY2l0eUxhYmVsOiBcIlBlcmlvZGljaWRhZFwiLFxyXG4gICAgbWludXRlTGFiZWw6IFwiTWludXRvXCIsXHJcbiAgICBob3VyTGFiZWw6IFwiSG9yYVwiLFxyXG4gICAgZGF5c0xhYmVsOiBcIkTDrWFcIixcclxuICAgIHdlZWtEYXlzTGFiZWw6IFwiRMOtYXMgZGUgbGEgc2VtYW5hXCIsXHJcbiAgICBtb250aHNMYWJlbDogXCJNZXNlc1wiLFxyXG4gICAgZGVzY3JpcHRpb25MYWJlbDogXCJEZXNjcmlwY2nDs25cIixcclxuICAgIG9jY3VycmVuY2VzTGFiZWw6IFwiTGFzIDUgZWplY3VjaW9uZXMgc2lndWllbnRlcyBzZXLDoW46IFwiXHJcbiAgfTtcclxuXHJcbiAgQE91dHB1dCgnY3JvbkV4cHJlc3Npb24nKSBjcm9uRXhwcmVzc2lvbjogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHB1YmxpYyBmb3JtQ29udHJvbFNlcnZpY2U6IEZvcm1Db250cm9sU2VydmljZSxcclxuICAgIHByaXZhdGUgd2FwcERhdGU6IFdEYXRlUGlwZVxyXG4gICkgeyB9XHJcbiAgXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRGb3JtR3JvdXAoKTtcclxuICAgIHRoaXMuaW5pdFBlcmlvZGljaXRpZXMoKTtcclxuICAgIHRoaXMuaW5pdE1vbnRocygpO1xyXG4gICAgdGhpcy5pbml0V2Vla0RheXMoKTtcclxuXHJcbiAgICBpZih0aGlzLmluaXRpYWxWYWx1ZSkge1xyXG4gICAgICB0aGlzLmluaXRQYXJzZWRWYWx1ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRGb3JtR3JvdXAoKSB7XHJcbiAgICBpZih0aGlzLmluaXRpYWxWYWx1ZSkge1xyXG4gICAgICBjb25zdCBwYXJ0cyA9IHRoaXMuaW5pdGlhbFZhbHVlLnNwbGl0KFwiIFwiKTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgcGVyaW9kaWNpdHk6IG5ldyBGb3JtQ29udHJvbCgpLFxyXG4gICAgICAgIG1pbnV0ZXM6IG5ldyBGb3JtQ29udHJvbChcclxuICAgICAgICAgIHRoaXMuaGFzSW5pdGlhbFZhbHVlKFxyXG4gICAgICAgICAgICBwYXJ0c1tDcm9uRmllbGRUeXBlLk1pbnV0ZV0pID8gXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0Q3Jvbk51bWJlcihwYXJ0c1tDcm9uRmllbGRUeXBlLk1pbnV0ZV0pXHJcbiAgICAgICAgICAgIDogMCksXHJcbiAgICAgICAgaG91cnM6IG5ldyBGb3JtQ29udHJvbChcclxuICAgICAgICAgIHRoaXMuaGFzSW5pdGlhbFZhbHVlKFxyXG4gICAgICAgICAgICBwYXJ0c1tDcm9uRmllbGRUeXBlLkhvdXJdKSA/IFxyXG4gICAgICAgICAgICB0aGlzLmZvcm1hdENyb25OdW1iZXIocGFydHNbQ3JvbkZpZWxkVHlwZS5Ib3VyXSlcclxuICAgICAgICAgICAgOiAwKSxcclxuICAgICAgICB3ZWVrRGF5czogbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgdGhpcy5oYXNJbml0aWFsVmFsdWUoXHJcbiAgICAgICAgICAgIHBhcnRzW0Nyb25GaWVsZFR5cGUuV2Vla0RheV0pID8gXHJcbiAgICAgICAgICAgIHBhcnRzW0Nyb25GaWVsZFR5cGUuV2Vla0RheV0ucmVwbGFjZSgvXFwvL2csICcnKS5zcGxpdCgnLCcpLm1hcChOdW1iZXIpXHJcbiAgICAgICAgICAgIDogW10pLFxyXG4gICAgICAgIG1vbnRoRGF5OiBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICB0aGlzLmhhc0luaXRpYWxWYWx1ZShcclxuICAgICAgICAgICAgcGFydHNbQ3JvbkZpZWxkVHlwZS5Nb250aERheV0pID8gXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0Q3Jvbk51bWJlcihwYXJ0c1tDcm9uRmllbGRUeXBlLk1vbnRoRGF5XSlcclxuICAgICAgICAgICAgOiAxKSxcclxuICAgICAgICBtb250aERheXM6IG5ldyBGb3JtQ29udHJvbChcclxuICAgICAgICAgIHRoaXMuaGFzSW5pdGlhbFZhbHVlKHBhcnRzW0Nyb25GaWVsZFR5cGUuTW9udGhEYXldKSA/IFxyXG4gICAgICAgICAgICBwYXJ0c1tDcm9uRmllbGRUeXBlLk1vbnRoRGF5XS5yZXBsYWNlKC9bLypdL2csICcnKS5zcGxpdCgnLCcpLm1hcChOdW1iZXIpXHJcbiAgICAgICAgICAgIDogW10pLFxyXG4gICAgICAgIG1vbnRoczogbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgdGhpcy5oYXNJbml0aWFsVmFsdWUocGFydHNbQ3JvbkZpZWxkVHlwZS5Nb250aF0pID8gXHJcbiAgICAgICAgICAgIHBhcnRzW0Nyb25GaWVsZFR5cGUuTW9udGhdLnJlcGxhY2UoL1xcLy9nLCAnJykuc3BsaXQoJywnKS5tYXAoTnVtYmVyKVxyXG4gICAgICAgICAgICA6IDApLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgcGVyaW9kaWNpdHk6IG5ldyBGb3JtQ29udHJvbCgwKSxcclxuICAgICAgICBtaW51dGVzOiBuZXcgRm9ybUNvbnRyb2woMCksXHJcbiAgICAgICAgaG91cnM6IG5ldyBGb3JtQ29udHJvbCgwKSxcclxuICAgICAgICB3ZWVrRGF5czogbmV3IEZvcm1Db250cm9sKFtdKSxcclxuICAgICAgICBtb250aERheTogbmV3IEZvcm1Db250cm9sKDEpLFxyXG4gICAgICAgIG1vbnRoRGF5czogbmV3IEZvcm1Db250cm9sKFtdKSxcclxuICAgICAgICBtb250aHM6IG5ldyBGb3JtQ29udHJvbCgwKSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNJbml0aWFsVmFsdWUocGFydDogc3RyaW5nKSB7XHJcbiAgICBpZihwYXJ0ID09ICcqJyB8fCBwYXJ0ID09ICcwJykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1hdENyb25OdW1iZXIoY3JvblZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiArY3JvblZhbHVlLnJlcGxhY2UoL1svKl0vZywgJycpO1xyXG4gIH1cclxuXHJcbiAgaW5pdFBlcmlvZGljaXRpZXMoKSB7XHJcbiAgICBjb25zdCB0cmFuc2xhdGlvbnNNYXAgPSB7XHJcbiAgICAgIFtDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5WE1pbnV0ZXNdOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5wZXJpb2RpY2l0aWVzLmV2ZXJ5WE1pbnV0ZXMsXHJcbiAgICAgIFtDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5TWludXRlXTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QucGVyaW9kaWNpdGllcy5ldmVyeU1pbnV0ZSxcclxuICAgICAgW0Nyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYSG91cnNdOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5wZXJpb2RpY2l0aWVzLmV2ZXJ5WEhvdXJzLFxyXG4gICAgICBbQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeUhvdXJdOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5wZXJpb2RpY2l0aWVzLmV2ZXJ5SG91cixcclxuICAgICAgW0Nyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYRGF5c106IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LnBlcmlvZGljaXRpZXMuZXZlcnlYRGF5cyxcclxuICAgICAgW0Nyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlXZWVrXTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QucGVyaW9kaWNpdGllcy5ldmVyeVdlZWssXHJcbiAgICAgIFtDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5WE1vbnRoc106IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LnBlcmlvZGljaXRpZXMuZXZlcnlYTW9udGhzLFxyXG4gICAgICBbQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeU1vbnRoXTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QucGVyaW9kaWNpdGllcy5ldmVyeU1vbnRoLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5wZXJpb2RpY2l0aWVzRGlzcGxheWVkKSB7XHJcbiAgICAgIHRoaXMucGVyaW9kaWNpdGllcyA9IHRoaXMucGVyaW9kaWNpdGllc0Rpc3BsYXllZC5tYXAocGVyaW9kaWNpdHkgPT4gKHtcclxuICAgICAgICB2YWx1ZTogcGVyaW9kaWNpdHksXHJcbiAgICAgICAgbmFtZTogdHJhbnNsYXRpb25zTWFwW3BlcmlvZGljaXR5XVxyXG4gICAgICB9KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBlcmlvZGljaXRpZXMgPSBPYmplY3QuZW50cmllcyh0cmFuc2xhdGlvbnNNYXApLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xyXG4gICAgICAgIHZhbHVlOiBOdW1iZXIoa2V5KSwgXHJcbiAgICAgICAgbmFtZTogdmFsdWVcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgaWYoIXRoaXMuaW5pdGlhbFZhbHVlKSB7XHJcbiAgICAgIHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCA9IHRoaXMucGVyaW9kaWNpdGllc1swXT8udmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0UGFyc2VkVmFsdWVzKCkge1xyXG4gICAgdGhpcy5leHByZXNzaW9uID0gdGhpcy5wYXJzZUNyb25FeHByZXNzaW9uKHRoaXMuaW5pdGlhbFZhbHVlKTtcclxuICAgIFxyXG4gICAgdGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkID0gdGhpcy5nZXRDcm9uUGVyaW9kaWNpdHlUeXBlKHRoaXMuaW5pdGlhbFZhbHVlKSE7XHJcbiAgICB0aGlzLmhhbmRsZVplcm9Ib3Vyc0FycmF5KCk7XHJcbiAgICB0aGlzLmNyb25Ub0h1bWFuKCk7XHJcbiAgfVxyXG5cclxuICBwYXJzZUNyb25FeHByZXNzaW9uKGNyb246IHN0cmluZyk6IGFueVtdIHtcclxuICAgIGNvbnN0IHBhcnRzID0gY3Jvbi5zcGxpdChcIiBcIik7XHJcbiAgICBcclxuICAgIHdoaWxlIChwYXJ0cy5sZW5ndGggPCA2KSB7XHJcbiAgICAgIHBhcnRzLnB1c2goJyonKTtcclxuICAgIH1cclxuICBcclxuICAgIHJldHVybiBwYXJ0cztcclxuICB9XHJcblxyXG4gIGluaXRNb250aHMoKSB7XHJcbiAgICB0aGlzLm1vbnRocyA9IFtcclxuICAgICAgeyB2YWx1ZTogMSwgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QubW9udGhzLmphbnVhcnkgfSwgXHJcbiAgICAgIHsgdmFsdWU6IDIsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0Lm1vbnRocy5mZWJydWFyeSB9LCBcclxuICAgICAgeyB2YWx1ZTogMywgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QubW9udGhzLm1hcmNoIH0sIFxyXG4gICAgICB7IHZhbHVlOiA0LCBuYW1lOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5tb250aHMuYXByaWwgfSwgXHJcbiAgICAgIHsgdmFsdWU6IDUsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0Lm1vbnRocy5tYXkgfSwgXHJcbiAgICAgIHsgdmFsdWU6IDYsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0Lm1vbnRocy5qdW5lIH0sIFxyXG4gICAgICB7IHZhbHVlOiA3LCBuYW1lOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5tb250aHMuanVseSB9LCBcclxuICAgICAgeyB2YWx1ZTogOCwgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QubW9udGhzLmF1Z3VzdCB9LCBcclxuICAgICAgeyB2YWx1ZTogOSwgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QubW9udGhzLnNlcHRlbWJlciB9LCBcclxuICAgICAgeyB2YWx1ZTogMTAsIG5hbWU6dGhpcy50cmFuc2xhdGlvbnNPYmplY3QubW9udGhzLm9jdG9iZXIgfSwgXHJcbiAgICAgIHsgdmFsdWU6IDExLCBuYW1lOnRoaXMudHJhbnNsYXRpb25zT2JqZWN0Lm1vbnRocy5ub3ZlbWJlciB9LCBcclxuICAgICAgeyB2YWx1ZTogMTIsIG5hbWU6dGhpcy50cmFuc2xhdGlvbnNPYmplY3QubW9udGhzLmRlY2VtYmVyIH0sIFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIGluaXRXZWVrRGF5cygpIHtcclxuICAgIHRoaXMud2Vla0RheXMgPSBbXHJcbiAgICAgIHsgdmFsdWU6IDAsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LndlZWtEYXlzLnN1bmRheSB9LCBcclxuICAgICAgeyB2YWx1ZTogMSwgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3Qud2Vla0RheXMubW9uZGF5IH0sIFxyXG4gICAgICB7IHZhbHVlOiAyLCBuYW1lOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC53ZWVrRGF5cy50dWVzZGF5IH0sIFxyXG4gICAgICB7IHZhbHVlOiAzLCBuYW1lOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC53ZWVrRGF5cy53ZWRuZXNkYXkgfSwgXHJcbiAgICAgIHsgdmFsdWU6IDQsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LndlZWtEYXlzLnRodXJzZGF5IH0sIFxyXG4gICAgICB7IHZhbHVlOiA1LCBuYW1lOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC53ZWVrRGF5cy5mcmlkYXkgfSwgXHJcbiAgICAgIHsgdmFsdWU6IDYsIG5hbWU6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LndlZWtEYXlzLnNhdHVyZGF5IH0sIFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIGFsbG93U2Vjb25kcygpIHtcclxuICAgIHJldHVybiBmYWxzZTsgXHJcbiAgfVxyXG5cclxuICBhbGxvd01pbnV0ZXMoKSB7XHJcbiAgICBzd2l0Y2godGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkKXtcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5WE1pbnV0ZXM6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeU1pbnV0ZTpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5WEhvdXJzOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlIb3VyOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYRGF5czpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5V2VlazpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5TW9udGg6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhNb250aHM6IFxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OiBcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbGxvd0hvdXJzKCkge1xyXG4gICAgc3dpdGNoKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCl7XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhIb3VyczpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5SG91cjpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5WERheXM6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVdlZWs6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeU1vbnRoOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYTW9udGhzOiBcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDogXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWxsb3dXZWVrRGF5cygpIHtcclxuICAgIHN3aXRjaCh0aGlzLnBlcmlvZGljaXR5U2VsZWN0ZWQpe1xyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlXZWVrOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OiBcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbGxvd01vbnRoRGF5KCkge1xyXG4gICAgc3dpdGNoKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCl7XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhEYXlzOiBcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDogXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWxsb3dNb250aERheXMoKSB7XHJcbiAgICBzd2l0Y2godGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkKXtcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5WE1vbnRoczogXHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeU1vbnRoOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OiBcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbGxvd01vbnRocygpIHtcclxuICAgIHN3aXRjaCh0aGlzLnBlcmlvZGljaXR5U2VsZWN0ZWQpe1xyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYTW9udGhzOiBcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgZGVmYXVsdDogXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNNb250aERheXNSZXF1aXJlZCgpIHtcclxuICAgIGlmKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCA9PSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5WE1vbnRocykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgeyBcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblBlcmlvZGljaXR5U2VsZWN0ZWQoKSB7XHJcbiAgICB0aGlzLnJlc3RhcnRFeHByZXNzaW9uKCk7XHJcbiAgICB0aGlzLmhhbmRsZVplcm9Ib3Vyc0FycmF5KCk7XHJcbiAgICB0aGlzLnVwZGF0ZU1vbnRoRGF5c1JlcXVpcmVtZW50KCk7XHJcbiAgICB0aGlzLm9uSG91cnNTZWxlY3RlZCh0aGlzLmhvdXJTZWxlY3RlZCk7XHJcbiAgICB0aGlzLm9uV2Vla0RheXNTZWxlY3RlZCh0aGlzLndlZWtEYXlTZWxlY3RlZCk7XHJcbiAgICB0aGlzLm9uTW9udGhzU2VsZWN0ZWQodGhpcy5tb250aFNlbGVjdGVkKTtcclxuICAgIHRoaXMub25Nb250aERheXNTZWxlY3RlZCh0aGlzLm1vbnRoRGF5c1NlbGVjdGVkKTtcclxuICAgIHRoaXMub25Nb250aERheVNlbGVjdGVkKHRoaXMubW9udGhEYXlTZWxlY3RlZCk7XHJcbiAgICB0aGlzLm9uTWludXRlU2VsZWN0ZWQodGhpcy5taW51dGVTZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVaZXJvSG91cnNBcnJheSgpIHtcclxuICAgIGlmICh0aGlzLnBlcmlvZGljaXR5U2VsZWN0ZWQgPT0gQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhIb3Vycykge1xyXG4gICAgICB0aGlzLmhvdXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMjMgfSwgKF8sIGkpID0+IGkgKyAxKTtcclxuICAgICAgaWYodGhpcy5ob3VyU2VsZWN0ZWQgPT0gMCkge1xyXG4gICAgICAgIHRoaXMuaG91clNlbGVjdGVkID0gMTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ob3VycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDI0IH0sIChfLCBpKSA9PiBpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTWludXRlU2VsZWN0ZWQobWludXRlU2VsZWN0ZWQ6IG51bWJlcikge1xyXG4gICAgc3dpdGNoKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCl7XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhNaW51dGVzOiB7XHJcbiAgICAgICAgdGhpcy5leHByZXNzaW9uW0Nyb25GaWVsZFR5cGUuU2Vjb25kXSA9IGAwYDtcclxuICAgICAgICB0aGlzLmV4cHJlc3Npb25bQ3JvbkZpZWxkVHlwZS5NaW51dGVdID0gYCovJHttaW51dGVTZWxlY3RlZH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeU1pbnV0ZTpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5SG91cjpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5WEhvdXJzOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYRGF5czpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5V2VlazpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5TW9udGg6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhNb250aHM6IHtcclxuICAgICAgICB0aGlzLmV4cHJlc3Npb25bQ3JvbkZpZWxkVHlwZS5TZWNvbmRdID0gYDBgO1xyXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLk1pbnV0ZV0gPSBgJHttaW51dGVTZWxlY3RlZH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNyb25Ub0h1bWFuKCk7XHJcbiAgfVxyXG5cclxuICBvbkhvdXJzU2VsZWN0ZWQoaG91cnNTZWxlY3RlZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmV4cHJlc3Npb25bQ3JvbkZpZWxkVHlwZS5NaW51dGVdID0gYCR7dGhpcy5taW51dGVTZWxlY3RlZH1gO1xyXG4gICAgc3dpdGNoKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCl7XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhIb3VyczpcclxuICAgICAgICB0aGlzLmV4cHJlc3Npb25bQ3JvbkZpZWxkVHlwZS5Ib3VyXSA9IGAqLyR7aG91cnNTZWxlY3RlZH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlIb3VyOlxyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYRGF5czpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5V2VlazpcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5TW9udGg6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhNb250aHM6IFxyXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLkhvdXJdID0gYCR7aG91cnNTZWxlY3RlZH1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jcm9uVG9IdW1hbigpO1xyXG4gIH1cclxuXHJcbiAgb25XZWVrRGF5c1NlbGVjdGVkKHdlZWtEYXlzU2VsZWN0ZWQ6IG51bWJlcltdKSB7XHJcbiAgICBzd2l0Y2godGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkKXtcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5V2Vlazoge1xyXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLldlZWtEYXldID0gYCR7d2Vla0RheXNTZWxlY3RlZH1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNyb25Ub0h1bWFuKCk7XHJcbiAgfVxyXG5cclxuICBvbk1vbnRoRGF5c1NlbGVjdGVkKG1vbnRoRGF5c1NlbGVjdGVkOiBhbnkpIHtcclxuICAgIHN3aXRjaCh0aGlzLnBlcmlvZGljaXR5U2VsZWN0ZWQpe1xyXG4gICAgICBjYXNlIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYRGF5czpcclxuICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLk1vbnRoRGF5XSA9IGAqLyR7dGhpcy5tb250aERheVNlbGVjdGVkfWA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5TW9udGg6XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhNb250aHM6IFxyXG4gICAgICAgIGlmKG1vbnRoRGF5c1NlbGVjdGVkIGluc3RhbmNlb2YgQXJyYXkgJiYgbW9udGhEYXlzU2VsZWN0ZWQubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLk1vbnRoRGF5XSA9IGAqYDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5leHByZXNzaW9uW0Nyb25GaWVsZFR5cGUuTW9udGhEYXldID0gYCR7bW9udGhEYXlzU2VsZWN0ZWR9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNyb25Ub0h1bWFuKCk7XHJcbiAgfVxyXG5cclxuICBvbk1vbnRoRGF5U2VsZWN0ZWQobW9udGhEYXlzU2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgc3dpdGNoKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCl7XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhEYXlzOlxyXG4gICAgICAgICAgdGhpcy5leHByZXNzaW9uW0Nyb25GaWVsZFR5cGUuTW9udGhEYXldID0gYCovJHttb250aERheXNTZWxlY3RlZH1gO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNyb25Ub0h1bWFuKCk7XHJcbiAgfVxyXG5cclxuICBvbk1vbnRoc1NlbGVjdGVkKG1vbnRoc1NlbGVjdGVkOiBudW1iZXJbXSkge1xyXG4gICAgc3dpdGNoKHRoaXMucGVyaW9kaWNpdHlTZWxlY3RlZCl7XHJcbiAgICAgIGNhc2UgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhNb250aHM6IHtcclxuICAgICAgICB0aGlzLmV4cHJlc3Npb25bQ3JvbkZpZWxkVHlwZS5TZWNvbmRdID0gYDBgO1xyXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbltDcm9uRmllbGRUeXBlLk1vbnRoXSA9IGAke21vbnRoc1NlbGVjdGVkfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY3JvblRvSHVtYW4oKTtcclxuICB9XHJcblxyXG4gIGNyb25Ub0h1bWFuKCkge1xyXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNyb25zdHJ1ZS50b1N0cmluZyh0aGlzLmV4cHJlc3Npb24uam9pbignICcpLCB7bG9jYWxlOiB3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlLnNsaWNlKDAsMikgfSk7XHJcbiAgICBcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGN1cnJlbnREYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgY29uc3QgaW50ZXJ2YWwgPSBDcm9uRXhwcmVzc2lvblBhcnNlci5wYXJzZSh0aGlzLmV4cHJlc3Npb24uam9pbignICcpLCBvcHRpb25zKTtcclxuXHJcbiAgICBsZXQgZGF0ZXMgPSBpbnRlcnZhbC50YWtlKHRoaXMub2NjdXJyZW5jZXNOdW1iZXIpLm1hcCgoZGF0ZSkgPT4gbmV3IERhdGUoZGF0ZS50b1N0cmluZygpKSk7XHJcbiAgICB0aGlzLm9jY3VycmVuY2VzID0gZGF0ZXMubWFwKGQgPT4gdGhpcy53YXBwRGF0ZS50cmFuc2Zvcm0oZCwgV0RhdGVQaXBlRm9ybWF0VHlwZS5HKSkuam9pbihcIiwgXCIpO1xyXG5cclxuICAgIGxldCBjcm9uRXhwcmVzc2lvbjogc3RyaW5nID0gdGhpcy5leHByZXNzaW9uLmpvaW4oJyAnKTtcclxuXHJcbiAgICBpZighW0Nyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYTWludXRlcywgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeU1pbnV0ZSwgQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhIb3Vyc10uaW5jbHVkZXModGhpcy5wZXJpb2RpY2l0eVNlbGVjdGVkKSkge1xyXG4gICAgICBjcm9uRXhwcmVzc2lvbiA9IHRoaXMubG9jYWxVc2VyQ3JvblRvVVRDQ3Jvbih0aGlzLmV4cHJlc3Npb24uam9pbignICcpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNyb25FeHByZXNzaW9uLmVtaXQoY3JvbkV4cHJlc3Npb24pO1xyXG4gIH1cclxuXHJcbiAgbG9jYWxVc2VyQ3JvblRvVVRDQ3Jvbihjcm9uRXhwcmVzc2lvbjogc3RyaW5nKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGNyb25QYXJ0cyA9IGNyb25FeHByZXNzaW9uLnRyaW0oKS5zcGxpdCgnICcpO1xyXG4gICAgY29uc3QgdXNlck9mZnNldCA9IC0obmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpIC8gNjApO1xyXG4gICAgY29uc3QgbG9jYWxIb3VyID0gcGFyc2VJbnQoY3JvblBhcnRzWzJdLCAxMCk7XHJcblxyXG4gICAgbGV0IHV0Y0hvdXIgPSBsb2NhbEhvdXIgLSB1c2VyT2Zmc2V0O1xyXG4gICAgbGV0IGRheUFkanVzdG1lbnQgPSAwO1xyXG4gIFxyXG4gICAgaWYgKHV0Y0hvdXIgPj0gMjQpIHtcclxuICAgICAgdXRjSG91ciAtPSAyNDtcclxuICAgICAgZGF5QWRqdXN0bWVudCA9IDE7XHJcbiAgICB9IGVsc2UgaWYgKHV0Y0hvdXIgPCAwKSB7XHJcbiAgICAgIHV0Y0hvdXIgKz0gMjQ7XHJcbiAgICAgIGRheUFkanVzdG1lbnQgPSAtMTtcclxuICAgIH1cclxuICBcclxuICAgIGNyb25QYXJ0c1syXSA9IHV0Y0hvdXIudG9TdHJpbmcoKTtcclxuICBcclxuICAgIHJldHVybiBjcm9uUGFydHMuam9pbignICcpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0QXJyYXlWYWx1ZXMoYXJyYXk6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gYXJyYXk/Lm1hcChhID0+IGEudmFsdWUpLmpvaW4oJywnKTtcclxuICB9XHJcblxyXG4gIHJlc3RhcnRFeHByZXNzaW9uKCkge1xyXG4gICAgdGhpcy5leHByZXNzaW9uID0gWycqJywnKicsJyonLCcqJywnKicsJyonXTtcclxuICB9XHJcblxyXG4gIGdldENyb25QZXJpb2RpY2l0eVR5cGUoY3Jvbjogc3RyaW5nKTogQ3JvblBlcmlvZGljaXR5VHlwZSB8IG51bGwge1xyXG4gICAgY29uc3QgcGFydHMgPSBjcm9uLnNwbGl0KFwiIFwiKTtcclxuICBcclxuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDYpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBjb25zdCBbc2Vjb25kLCBtaW51dGUsIGhvdXIsIGRheU9mTW9udGgsIG1vbnRoLCBkYXlPZldlZWtdID0gcGFydHM7XHJcblxyXG4gICAgaWYgKG1pbnV0ZS5zdGFydHNXaXRoKFwiKi9cIikgJiYgaG91ciA9PT0gXCIqXCIgJiYgZGF5T2ZNb250aCA9PT0gXCIqXCIgJiYgbW9udGggPT09IFwiKlwiICYmIGRheU9mV2VlayA9PT0gXCIqXCIpIHtcclxuICAgICAgcmV0dXJuIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYTWludXRlcztcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWludXRlICE9PSBcIipcIiAmJiBob3VyID09PSBcIipcIiAmJiBkYXlPZk1vbnRoID09PSBcIipcIiAmJiBtb250aCA9PT0gXCIqXCIgJiYgZGF5T2ZXZWVrID09PSBcIipcIikge1xyXG4gICAgICByZXR1cm4gQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeU1pbnV0ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaG91ci5zdGFydHNXaXRoKFwiKi9cIikgJiYgZGF5T2ZNb250aCA9PT0gXCIqXCIgJiYgbW9udGggPT09IFwiKlwiICYmIGRheU9mV2VlayA9PT0gXCIqXCIpIHtcclxuICAgICAgcmV0dXJuIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYSG91cnM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG1pbnV0ZSAhPT0gXCIqXCIgJiYgaG91ciAhPT0gXCIqXCIgJiYgZGF5T2ZNb250aCA9PT0gXCIqXCIgJiYgbW9udGggPT09IFwiKlwiICYmIGRheU9mV2VlayA9PT0gXCIqXCIpIHtcclxuICAgICAgcmV0dXJuIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlIb3VyO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXlPZk1vbnRoLnN0YXJ0c1dpdGgoXCIqL1wiKSAmJiBtb250aCA9PT0gXCIqXCIgJiYgZGF5T2ZXZWVrID09PSBcIipcIikge1xyXG4gICAgICByZXR1cm4gQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhEYXlzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXlPZldlZWsgIT09IFwiKlwiICYmIGRheU9mTW9udGggPT09IFwiKlwiICYmIG1vbnRoID09PSBcIipcIikge1xyXG4gICAgICByZXR1cm4gQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVdlZWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRheU9mTW9udGggIT09IFwiKlwiICYmIG1vbnRoID09IFwiKlwiKSB7XHJcbiAgICAgIHJldHVybiBDcm9uUGVyaW9kaWNpdHlUeXBlLlJlcGVhdEV2ZXJ5TW9udGg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmIChtb250aCAhPT0gXCIqXCIpIHtcclxuICAgICAgcmV0dXJuIENyb25QZXJpb2RpY2l0eVR5cGUuUmVwZWF0RXZlcnlYTW9udGhzO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTW9udGhEYXlzUmVxdWlyZW1lbnQoKSB7XHJcbiAgICBpZih0aGlzLnBlcmlvZGljaXR5U2VsZWN0ZWQgPT0gQ3JvblBlcmlvZGljaXR5VHlwZS5SZXBlYXRFdmVyeVhNb250aHMpIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ21vbnRoRGF5cyddLnJlbW92ZVZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ21vbnRoRGF5cyddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH0gZWxzZSB7IFxyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snbW9udGhEYXlzJ10uYWRkVmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snbW9udGhEYXlzJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IHBlcmlvZGljaXR5U2VsZWN0ZWQodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5mb3JtR3JvdXA/LnBhdGNoVmFsdWUoe3BlcmlvZGljaXR5OiB2YWx1ZX0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBlcmlvZGljaXR5U2VsZWN0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdwZXJpb2RpY2l0eScpIS52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBtaW51dGVTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ21pbnV0ZXMnKSEudmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgaG91clNlbGVjdGVkKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuZm9ybUdyb3VwPy5wYXRjaFZhbHVlKHtob3VyczogdmFsdWV9KTtcclxuICB9XHJcblxyXG4gIGdldCBob3VyU2VsZWN0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdob3VycycpIS52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCB3ZWVrRGF5U2VsZWN0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCd3ZWVrRGF5cycpIS52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBtb250aERheVNlbGVjdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnbW9udGhEYXknKSEudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbW9udGhEYXlzU2VsZWN0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdtb250aERheXMnKSEudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbW9udGhTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ21vbnRocycpIS52YWx1ZTtcclxuICB9XHJcbn1cclxuIiwiPHctcGFuZWwgKm5nSWY9XCJoYXNDb250YWluZXI7IGVsc2UgY3JvbkNvbXBvbmVudFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNyb25Db21wb25lbnRcIj48L25nLWNvbnRhaW5lcj5cclxuPC93LXBhbmVsPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjcm9uQ29tcG9uZW50PlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDx3LXBhbmVsLWdyaWQgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgPHctZWRpdC1zZWxlY3QgY2xhc3M9XCJjb2wtMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QucGVyaW9kaWNpdHlMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInBlcmlvZGljaXRpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiJ25hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xTZXJ2aWNlLmNvbnZlcnRUb0Zvcm1Db250cm9sKGZvcm1Hcm91cC5nZXQoJ3BlcmlvZGljaXR5JykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25QZXJpb2RpY2l0eVNlbGVjdGVkKClcIj5cclxuICAgICAgICAgICAgPC93LWVkaXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8dy1lZGl0LW11bHRpc2VsZWN0ICpuZ0lmPVwiYWxsb3dNb250aHMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QubW9udGhzTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJtb250aHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiJ25hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xTZXJ2aWNlLmNvbnZlcnRUb0Zvcm1Db250cm9sKGZvcm1Hcm91cC5nZXQoJ21vbnRocycpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uTW9udGhzU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L3ctZWRpdC1tdWx0aXNlbGVjdD5cclxuICAgICAgICAgICAgPHctZWRpdC1tdWx0aXNlbGVjdCAqbmdJZj1cImFsbG93TW9udGhEYXlzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmRheXNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzTW9udGhEYXlzUmVxdWlyZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwibW9udGhEYXlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uVmFsdWVdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFNlcnZpY2UuY29udmVydFRvRm9ybUNvbnRyb2woZm9ybUdyb3VwLmdldCgnbW9udGhEYXlzJykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25Nb250aERheXNTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvdy1lZGl0LW11bHRpc2VsZWN0PlxyXG4gICAgICAgICAgICA8dy1lZGl0LXNlbGVjdCAqbmdJZj1cImFsbG93TW9udGhEYXkoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZGF5c0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwibW9udGhEYXlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uVmFsdWVdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFNlcnZpY2UuY29udmVydFRvRm9ybUNvbnRyb2woZm9ybUdyb3VwLmdldCgnbW9udGhEYXknKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbk1vbnRoRGF5c1NlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC93LWVkaXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8dy1lZGl0LW11bHRpc2VsZWN0ICpuZ0lmPVwiYWxsb3dXZWVrRGF5cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC53ZWVrRGF5c0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwid2Vla0RheXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiJ25hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xTZXJ2aWNlLmNvbnZlcnRUb0Zvcm1Db250cm9sKGZvcm1Hcm91cC5nZXQoJ3dlZWtEYXlzJykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25XZWVrRGF5c1NlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC93LWVkaXQtbXVsdGlzZWxlY3Q+XHJcbiAgICAgICAgICAgIDx3LWVkaXQtc2VsZWN0ICpuZ0lmPVwiYWxsb3dIb3VycygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTZcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuaG91ckxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImhvdXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFNlcnZpY2UuY29udmVydFRvRm9ybUNvbnRyb2woZm9ybUdyb3VwLmdldCgnaG91cnMnKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uSG91cnNTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvdy1lZGl0LXNlbGVjdD5cclxuICAgICAgICAgICAgPHctZWRpdC1zZWxlY3QgKm5nSWY9XCJhbGxvd01pbnV0ZXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NvbC02JzogYWxsb3dIb3VycygpLCAnY29sLTEyJzogIWFsbG93SG91cnMoKX1cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QubWludXRlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwibWludXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xTZXJ2aWNlLmNvbnZlcnRUb0Zvcm1Db250cm9sKGZvcm1Hcm91cC5nZXQoJ21pbnV0ZXMnKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uTWludXRlU2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L3ctZWRpdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDx3LWVkaXQtaW5wdXQtbnVtYmVyICpuZ0lmPVwiYWxsb3dTZWNvbmRzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC02XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTZWd1bmRvcydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwiNTlcIj5cclxuICAgICAgICAgICAgPC93LWVkaXQtaW5wdXQtbnVtYmVyPlxyXG4gICAgICAgICAgICA8dy12aWV3LXRleHQgY2xhc3M9XCJjb2wtMTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5kZXNjcmlwdGlvbkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIid2ZXJ0aWNhbCdcIj5cclxuICAgICAgICAgICAgPC93LXZpZXctdGV4dD5cclxuICAgICAgICAgICAgPHctdmlldy10ZXh0IGNsYXNzPVwiY29sLTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3Qub2NjdXJyZW5jZXNMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib2NjdXJyZW5jZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dF09XCIndmVydGljYWwnXCI+XHJcbiAgICAgICAgICAgIDwvdy12aWV3LXRleHQ+XHJcbiAgICAgICAgPC93LXBhbmVsLWdyaWQ+XHJcbiAgICA8L2Zvcm0+XHJcbjwvbmctdGVtcGxhdGU+Il19
@@ -1,13 +1,13 @@
1
1
  export var CronPeriodicityType;
2
2
  (function (CronPeriodicityType) {
3
- CronPeriodicityType[CronPeriodicityType["EveryXMinutes"] = 1] = "EveryXMinutes";
4
- CronPeriodicityType[CronPeriodicityType["EveryMinute"] = 2] = "EveryMinute";
5
- CronPeriodicityType[CronPeriodicityType["EveryXHours"] = 3] = "EveryXHours";
6
- CronPeriodicityType[CronPeriodicityType["EveryHour"] = 4] = "EveryHour";
7
- CronPeriodicityType[CronPeriodicityType["EveryXDays"] = 5] = "EveryXDays";
8
- CronPeriodicityType[CronPeriodicityType["EveryWeek"] = 6] = "EveryWeek";
9
- CronPeriodicityType[CronPeriodicityType["EveryXMonths"] = 7] = "EveryXMonths";
10
- CronPeriodicityType[CronPeriodicityType["EveryMonth"] = 8] = "EveryMonth";
3
+ CronPeriodicityType[CronPeriodicityType["RepeatEveryXMinutes"] = 1] = "RepeatEveryXMinutes";
4
+ CronPeriodicityType[CronPeriodicityType["RepeatEveryMinute"] = 2] = "RepeatEveryMinute";
5
+ CronPeriodicityType[CronPeriodicityType["RepeatEveryXHours"] = 3] = "RepeatEveryXHours";
6
+ CronPeriodicityType[CronPeriodicityType["RepeatEveryHour"] = 4] = "RepeatEveryHour";
7
+ CronPeriodicityType[CronPeriodicityType["RepeatEveryXDays"] = 5] = "RepeatEveryXDays";
8
+ CronPeriodicityType[CronPeriodicityType["RepeatEveryWeek"] = 6] = "RepeatEveryWeek";
9
+ CronPeriodicityType[CronPeriodicityType["RepeatEveryXMonths"] = 7] = "RepeatEveryXMonths";
10
+ CronPeriodicityType[CronPeriodicityType["RepeatEveryMonth"] = 8] = "RepeatEveryMonth";
11
11
  })(CronPeriodicityType || (CronPeriodicityType = {}));
12
12
  export var CronFieldType;
13
13
  (function (CronFieldType) {
@@ -26,4 +26,4 @@ export var CronCharactersType;
26
26
  CronCharactersType["Comma"] = ",";
27
27
  CronCharactersType["Slash"] = "/";
28
28
  })(CronCharactersType || (CronCharactersType = {}));
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9lbnVtcy9jcm9uLWV4cHJlc3Npb25zL2VudW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxDQUFOLElBQVksbUJBU1Q7QUFUSCxXQUFZLG1CQUFtQjtJQUMzQiwrRUFBaUIsQ0FBQTtJQUNqQiwyRUFBZSxDQUFBO0lBQ2YsMkVBQWUsQ0FBQTtJQUNmLHVFQUFhLENBQUE7SUFDYix5RUFBYyxDQUFBO0lBQ2QsdUVBQWEsQ0FBQTtJQUNiLDZFQUFnQixDQUFBO0lBQ2hCLHlFQUFjLENBQUE7QUFDaEIsQ0FBQyxFQVRTLG1CQUFtQixLQUFuQixtQkFBbUIsUUFTNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxhQVFYO0FBUkQsV0FBWSxhQUFhO0lBQ3ZCLHFEQUFVLENBQUE7SUFDVixxREFBVSxDQUFBO0lBQ1YsaURBQVEsQ0FBQTtJQUNSLHlEQUFZLENBQUE7SUFDWixtREFBUyxDQUFBO0lBQ1QsdURBQVcsQ0FBQTtJQUNYLGlEQUFRLENBQUEsQ0FBQyx1QkFBdUI7QUFDbEMsQ0FBQyxFQVJXLGFBQWEsS0FBYixhQUFhLFFBUXhCO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBS1g7QUFMRCxXQUFZLGtCQUFrQjtJQUM1QixvQ0FBYyxDQUFBO0lBQ2QsZ0NBQVUsQ0FBQTtJQUNWLGlDQUFXLENBQUE7SUFDWCxpQ0FBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFLN0IiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGVudW0gQ3JvblBlcmlvZGljaXR5VHlwZXtcclxuICAgIEV2ZXJ5WE1pbnV0ZXMgPSAxLFxyXG4gICAgRXZlcnlNaW51dGUgPSAyLFxyXG4gICAgRXZlcnlYSG91cnMgPSAzLFxyXG4gICAgRXZlcnlIb3VyID0gNCxcclxuICAgIEV2ZXJ5WERheXMgPSA1LFxyXG4gICAgRXZlcnlXZWVrID0gNixcclxuICAgIEV2ZXJ5WE1vbnRocyA9IDcsXHJcbiAgICBFdmVyeU1vbnRoID0gOFxyXG4gIH1cclxuICBcclxuICBleHBvcnQgZW51bSBDcm9uRmllbGRUeXBle1xyXG4gICAgU2Vjb25kID0gMCwgXHJcbiAgICBNaW51dGUgPSAxLCBcclxuICAgIEhvdXIgPSAyLCBcclxuICAgIE1vbnRoRGF5ID0gMywgLy8xLTMxXHJcbiAgICBNb250aCA9IDQsIC8vMS0xMlxyXG4gICAgV2Vla0RheSA9IDUsIC8vRG9taW5nbyAwIC0gU2FiYWRvIDYgXHJcbiAgICBZZWFyID0gNiAvLyBEZSBtb21lbnRvIG5vIHNlIHVzYVxyXG4gIH1cclxuICBcclxuICBleHBvcnQgZW51bSBDcm9uQ2hhcmFjdGVyc1R5cGV7XHJcbiAgICBBc3RlcmlzayA9ICcqJywgXHJcbiAgICBEYXNoID0gJy0nLCBcclxuICAgIENvbW1hID0gJywnLCBcclxuICAgIFNsYXNoID0gJy8nXHJcbiAgfSJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9lbnVtcy9jcm9uLWV4cHJlc3Npb25zL2VudW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxDQUFOLElBQVksbUJBU1Q7QUFUSCxXQUFZLG1CQUFtQjtJQUMzQiwyRkFBdUIsQ0FBQTtJQUN2Qix1RkFBcUIsQ0FBQTtJQUNyQix1RkFBcUIsQ0FBQTtJQUNyQixtRkFBbUIsQ0FBQTtJQUNuQixxRkFBb0IsQ0FBQTtJQUNwQixtRkFBbUIsQ0FBQTtJQUNuQix5RkFBc0IsQ0FBQTtJQUN0QixxRkFBb0IsQ0FBQTtBQUN0QixDQUFDLEVBVFMsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVM1QjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBUVg7QUFSRCxXQUFZLGFBQWE7SUFDdkIscURBQVUsQ0FBQTtJQUNWLHFEQUFVLENBQUE7SUFDVixpREFBUSxDQUFBO0lBQ1IseURBQVksQ0FBQTtJQUNaLG1EQUFTLENBQUE7SUFDVCx1REFBVyxDQUFBO0lBQ1gsaURBQVEsQ0FBQSxDQUFDLHVCQUF1QjtBQUNsQyxDQUFDLEVBUlcsYUFBYSxLQUFiLGFBQWEsUUFReEI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLG9DQUFjLENBQUE7SUFDZCxnQ0FBVSxDQUFBO0lBQ1YsaUNBQVcsQ0FBQTtJQUNYLGlDQUFXLENBQUE7QUFDYixDQUFDLEVBTFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUs3QiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5leHBvcnQgZW51bSBDcm9uUGVyaW9kaWNpdHlUeXBle1xyXG4gICAgUmVwZWF0RXZlcnlYTWludXRlcyA9IDEsXHJcbiAgICBSZXBlYXRFdmVyeU1pbnV0ZSA9IDIsXHJcbiAgICBSZXBlYXRFdmVyeVhIb3VycyA9IDMsXHJcbiAgICBSZXBlYXRFdmVyeUhvdXIgPSA0LFxyXG4gICAgUmVwZWF0RXZlcnlYRGF5cyA9IDUsXHJcbiAgICBSZXBlYXRFdmVyeVdlZWsgPSA2LFxyXG4gICAgUmVwZWF0RXZlcnlYTW9udGhzID0gNyxcclxuICAgIFJlcGVhdEV2ZXJ5TW9udGggPSA4XHJcbiAgfVxyXG4gIFxyXG4gIGV4cG9ydCBlbnVtIENyb25GaWVsZFR5cGV7XHJcbiAgICBTZWNvbmQgPSAwLCBcclxuICAgIE1pbnV0ZSA9IDEsIFxyXG4gICAgSG91ciA9IDIsIFxyXG4gICAgTW9udGhEYXkgPSAzLCAvLzEtMzFcclxuICAgIE1vbnRoID0gNCwgLy8xLTEyXHJcbiAgICBXZWVrRGF5ID0gNSwgLy9Eb21pbmdvIDAgLSBTYWJhZG8gNiBcclxuICAgIFllYXIgPSA2IC8vIERlIG1vbWVudG8gbm8gc2UgdXNhXHJcbiAgfVxyXG4gIFxyXG4gIGV4cG9ydCBlbnVtIENyb25DaGFyYWN0ZXJzVHlwZXtcclxuICAgIEFzdGVyaXNrID0gJyonLCBcclxuICAgIERhc2ggPSAnLScsIFxyXG4gICAgQ29tbWEgPSAnLCcsIFxyXG4gICAgU2xhc2ggPSAnLydcclxuICB9Il19