iptdevs-design-system 3.2.9 → 3.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/forms/update-user-form/update-user-form.component.mjs +1 -24
- package/fesm2015/iptdevs-design-system.mjs +0 -23
- package/fesm2015/iptdevs-design-system.mjs.map +1 -1
- package/fesm2020/iptdevs-design-system.mjs +0 -23
- package/fesm2020/iptdevs-design-system.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -108,7 +108,6 @@ export class updateUserFormComponent {
|
|
|
108
108
|
this.updateUserForm.get('status')?.disable({ emitEvent: false });
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
|
-
// Lista reducida para otros roles
|
|
112
111
|
this.justifyOptions = [
|
|
113
112
|
{ name: 'Activo', code: 1 },
|
|
114
113
|
{ name: 'Removido', code: 4 }
|
|
@@ -212,7 +211,6 @@ export class updateUserFormComponent {
|
|
|
212
211
|
}
|
|
213
212
|
initializeForm() {
|
|
214
213
|
this.showParentSection = !!this.DataStudent?.cods?.parent?.code;
|
|
215
|
-
// this.showEmailIpt = !!this.DataStudent?.email_ipt && this.DataStudent.email_ipt !== false;
|
|
216
214
|
this.checkRoleForAdditionalFields(this.DataStudent.role);
|
|
217
215
|
this.initForm();
|
|
218
216
|
this.populateForm();
|
|
@@ -338,9 +336,7 @@ export class updateUserFormComponent {
|
|
|
338
336
|
country: this.DataStudent.city?.country,
|
|
339
337
|
state: this.DataStudent.city?.state,
|
|
340
338
|
city: this.DataStudent.city?.code,
|
|
341
|
-
// role: this.transformRole(this.DataStudent.role) || '',
|
|
342
339
|
role: this.canEditRole ? this.DataStudent.role : this.transformRole(this.DataStudent.role) || '',
|
|
343
|
-
// service_hour: this.DataStudent.service_hour || 0,
|
|
344
340
|
changePassword: false,
|
|
345
341
|
password: '',
|
|
346
342
|
re_password: '',
|
|
@@ -354,9 +350,6 @@ export class updateUserFormComponent {
|
|
|
354
350
|
else {
|
|
355
351
|
formValue.service_hour = this.DataStudent.service_hour || 0;
|
|
356
352
|
}
|
|
357
|
-
// if (this.showEmailIpt) {
|
|
358
|
-
// formValue.email_ipt = this.DataStudent.email_ipt || '';
|
|
359
|
-
// }
|
|
360
353
|
if (this.showParentSection) {
|
|
361
354
|
Object.assign(formValue, {
|
|
362
355
|
parent_name: this.DataStudent.cods?.parent?.name || '',
|
|
@@ -557,7 +550,6 @@ export class updateUserFormComponent {
|
|
|
557
550
|
selectRole(role) {
|
|
558
551
|
if (role !== null) {
|
|
559
552
|
this.updateUserForm.get('role')?.setValue(role);
|
|
560
|
-
// Verificar si se deben mostrar los campos adicionales
|
|
561
553
|
const previousShowEmailIptAndServiceHour = this.showEmailIptAndServiceHour;
|
|
562
554
|
this.checkRoleForAdditionalFields(role);
|
|
563
555
|
// Si showEmailIptAndServiceHour cambió, actualizar los validadores
|
|
@@ -584,7 +576,6 @@ export class updateUserFormComponent {
|
|
|
584
576
|
}
|
|
585
577
|
}
|
|
586
578
|
else {
|
|
587
|
-
// Remover validadores si los campos no son necesarios
|
|
588
579
|
if (emailIptControl) {
|
|
589
580
|
emailIptControl.clearValidators();
|
|
590
581
|
emailIptControl.setValue('');
|
|
@@ -594,7 +585,6 @@ export class updateUserFormComponent {
|
|
|
594
585
|
serviceHourControl.setValue(0);
|
|
595
586
|
}
|
|
596
587
|
}
|
|
597
|
-
// Actualizar la validez de los controles
|
|
598
588
|
emailIptControl?.updateValueAndValidity();
|
|
599
589
|
serviceHourControl?.updateValueAndValidity();
|
|
600
590
|
}
|
|
@@ -669,7 +659,6 @@ export class updateUserFormComponent {
|
|
|
669
659
|
originalValue = this.DataStudent.email || '';
|
|
670
660
|
break;
|
|
671
661
|
case 'email_ipt':
|
|
672
|
-
// originalValue = this.DataStudent.email_ipt || '';
|
|
673
662
|
originalValue = this.showEmailIptAndServiceHour ? (this.DataStudent.email_ipt || '') : '';
|
|
674
663
|
break;
|
|
675
664
|
case 'gender':
|
|
@@ -697,11 +686,9 @@ export class updateUserFormComponent {
|
|
|
697
686
|
originalValue = this.DataStudent.city?.code || '';
|
|
698
687
|
break;
|
|
699
688
|
case 'role':
|
|
700
|
-
// originalValue = this.transformRole(this.DataStudent.role) || '';
|
|
701
689
|
originalValue = this.canEditRole ? this.DataStudent.role : this.transformRole(this.DataStudent.role) || '';
|
|
702
690
|
break;
|
|
703
691
|
case 'service_hour':
|
|
704
|
-
// originalValue = this.DataStudent.service_hour || '' ;
|
|
705
692
|
originalValue = this.showEmailIptAndServiceHour ? (this.DataStudent.service_hour || 0) : 0;
|
|
706
693
|
break;
|
|
707
694
|
case 'status':
|
|
@@ -750,11 +737,6 @@ export class updateUserFormComponent {
|
|
|
750
737
|
this.updateUserForm.hasError('mismatch') ||
|
|
751
738
|
!this.hasFormChanged()) {
|
|
752
739
|
this.updateUserForm.markAllAsTouched();
|
|
753
|
-
console.log('Validation failed:', {
|
|
754
|
-
invalid: this.updateUserForm.invalid,
|
|
755
|
-
mismatch: this.updateUserForm.hasError('mismatch'),
|
|
756
|
-
hasChanges: this.hasFormChanged()
|
|
757
|
-
});
|
|
758
740
|
return;
|
|
759
741
|
}
|
|
760
742
|
this.showConfirmSection = true;
|
|
@@ -846,11 +828,6 @@ export class updateUserFormComponent {
|
|
|
846
828
|
this.updateUserForm.hasError('mismatch') ||
|
|
847
829
|
!this.hasFormChanged()) {
|
|
848
830
|
this.updateUserForm.markAllAsTouched();
|
|
849
|
-
console.log('Validation failed:', {
|
|
850
|
-
invalid: this.updateUserForm.invalid,
|
|
851
|
-
mismatch: this.updateUserForm.hasError('mismatch'),
|
|
852
|
-
hasChanges: this.hasFormChanged()
|
|
853
|
-
});
|
|
854
831
|
return;
|
|
855
832
|
}
|
|
856
833
|
this.confirmForm.reset();
|
|
@@ -895,4 +872,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
|
|
|
895
872
|
}], userUpdatedEvent: [{
|
|
896
873
|
type: Output
|
|
897
874
|
}] } });
|
|
898
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXVzZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy91cGRhdGUtdXNlci1mb3JtL3VwZGF0ZS11c2VyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvdXBkYXRlLXVzZXItZm9ybS91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBb0MsTUFBTSxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQTJDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3JGLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBUy9CLE1BQU0sT0FBTyx1QkFBdUI7SUE4Q2xDLFlBQ1UsRUFBZSxFQUNmLEdBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixXQUF3QjtRQUp4QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWpEekIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzNDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHdEQsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQiwyQkFBc0IsR0FBVSxFQUFFLENBQUM7UUFDbkMsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUNqQixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5Qix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWxDLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBQ3hCLFlBQU8sR0FBVSxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFVLEVBQUUsQ0FBQztRQUNyQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsdUJBQWtCLEdBQVUsS0FBSyxDQUFDO1FBQ2xDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLFVBQUssR0FBVSxFQUFFLENBQUM7UUFDbEIsK0JBQTBCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUUzQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUVyQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBRTNCLFlBQU8sR0FBRztZQUNSLEVBQUUsSUFBSSxFQUFFLDJDQUEyQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDOUQsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUNoRCxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQzlDLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDbEQsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtZQUN6QyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ3pDLEVBQUUsSUFBSSxFQUFFLHFDQUFxQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDeEQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7U0FDMUIsQ0FBQztRQVNBLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUNuRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDeEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUNPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUMvQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNwRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixpQ0FBaUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRztnQkFDcEIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQzNCLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ3BDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO2FBQzlCLENBQUM7WUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNsRTthQUFNO1lBQ0wsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUc7Z0JBQ3BCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUMzQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTthQUM5QixDQUFDO1lBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRU8sUUFBUTtRQUNkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ1gsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ2hDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3JDLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQzNDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3ZDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNoQyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN4QyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNyQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN4QyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMxQyxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNoRCxFQUFFLElBQUksRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUM3QyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNyQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN0QyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDbkMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDekMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDcEMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7YUFDaEMsQ0FBQztTQUNIO2FBQUssSUFBSSxRQUFRLEtBQUssRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ1gsb0NBQW9DO2dCQUNwQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNyQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUMzQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUN2QyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDaEMsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDeEMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDckMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDM0MsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDeEMsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDMUMsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDaEQsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDN0MsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDckMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDM0MsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDdEMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ25DLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3pDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3BDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO2FBQ2hDLENBQUM7U0FDSDthQUFJO1lBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3hELElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDM0IsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDaEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDbkQscURBQXFEO1lBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWTthQUMxQixDQUFDLENBQUMsQ0FBQztTQUNMO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQztRQUNoRSw2RkFBNkY7UUFDN0YsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxFQUFFLENBQUM7UUFFckQsTUFBTSxRQUFRLEdBQUc7WUFDZixJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekYsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkYsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RixPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQ2pELFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDbEIsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNyQixjQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdkIsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDakMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUgsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUN4SixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RCLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLGdCQUFnQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDakcsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hELGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlGLHVCQUF1QixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwRCxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BHLGlCQUFpQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hFLHFCQUFxQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2xFLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUUzRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDckYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVqRSxJQUFJLE9BQU8sRUFBRTtnQkFDWCxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUc7aUJBQU07Z0JBQ0wsZUFBZSxFQUFFLGVBQWUsRUFBRSxDQUFDO2dCQUNuQyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsQ0FBQztnQkFDckMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUIsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2pDO1lBRUQsZUFBZSxFQUFFLHNCQUFzQixFQUFFLENBQUM7WUFDMUMsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFlO1FBQ3BDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxRQUFRLEdBQUcsUUFBUSxJQUFJLFVBQVUsSUFBSSxRQUFRLEtBQUssVUFBVSxDQUFDO1FBQ25FLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxPQUF3QjtRQUM1QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUN0RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFDLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDakM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssWUFBWSxFQUFFO2dCQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ2hDO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBUztRQUNyQixNQUFNLE9BQU8sR0FBOEI7WUFDekMsQ0FBQyxFQUFFLGFBQWE7WUFDaEIsRUFBRSxFQUFFLGlCQUFpQjtZQUNyQixFQUFFLEVBQUUsdUJBQXVCO1lBQzNCLEVBQUUsRUFBRSxtQkFBbUI7WUFDdkIsRUFBRSxFQUFFLFlBQVk7WUFDaEIsRUFBRSxFQUFFLG9CQUFvQjtZQUN4QixFQUFFLEVBQUUsaUJBQWlCO1lBQ3JCLEVBQUUsRUFBRSx1QkFBdUI7WUFDM0IsRUFBRSxFQUFFLG9CQUFvQjtZQUN4QixFQUFFLEVBQUUsc0JBQXNCO1lBQzFCLEVBQUUsRUFBRSw0QkFBNEI7WUFDaEMsRUFBRSxFQUFFLHlCQUF5QjtZQUM3QixFQUFFLEVBQUUsaUJBQWlCO1lBQ3JCLEVBQUUsRUFBRSx1QkFBdUI7WUFDM0IsRUFBRSxFQUFFLGtCQUFrQjtZQUN0QixFQUFFLEVBQUUsZUFBZTtZQUNuQixFQUFFLEVBQUUscUJBQXFCO1lBQ3pCLEVBQUUsRUFBRSxnQkFBZ0I7WUFDcEIsRUFBRSxFQUFFLFdBQVc7U0FDaEIsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV6RCxNQUFNLFNBQVMsR0FBUTtnQkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFO2dCQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDbkMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLElBQUk7Z0JBQ3ZDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxFQUFFO2dCQUNqRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksRUFBRTtnQkFDdkMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFO2dCQUN6RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksRUFBRTtnQkFDakQsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU87Z0JBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLO2dCQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSTtnQkFDakMseURBQXlEO2dCQUN6RCxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNoRyxvREFBb0Q7Z0JBQ3BELGNBQWMsRUFBRSxLQUFLO2dCQUNyQixRQUFRLEVBQUUsRUFBRTtnQkFDWixXQUFXLEVBQUUsRUFBRTtnQkFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksRUFBRTthQUMzQyxDQUFDO1lBRUYsK0JBQStCO1lBQy9CLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO2dCQUNuQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztnQkFDdkQsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7YUFDN0Q7aUJBQU07Z0JBQ0wsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7YUFDN0Q7WUFDRCwyQkFBMkI7WUFDM0IsNERBQTREO1lBQzVELElBQUk7WUFFSixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDMUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7b0JBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUU7b0JBQ3RELGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLElBQUksRUFBRTtvQkFDaEUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksSUFBSSxFQUFFO29CQUN0RSxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sSUFBSSxFQUFFO29CQUM1RCx1QkFBdUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLElBQUksRUFBRTtvQkFDOUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksSUFBSSxFQUFFO29CQUN0RSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxJQUFJLEVBQUU7b0JBQ2xFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLElBQUksRUFBRTtvQkFDMUUsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRTtpQkFDekQsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6RCxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDcEQ7WUFDRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDaEQ7WUFDRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDOUM7WUFDRCxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNqRTtZQUNELElBQUksU0FBUyxDQUFDLGdCQUFnQixFQUFFO2dCQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQzlFO1lBQ0QsSUFBSSxTQUFTLENBQUMsdUJBQXVCLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzthQUNuRztZQUNELElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDcEIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO29CQUNuRCxxREFBcUQ7b0JBQ3JELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM3RCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7d0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWTtxQkFDMUIsQ0FBQyxDQUFDLENBQUM7aUJBQ0w7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7aUJBQ25CO2dCQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM1QztZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FFMUI7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsSUFBSSxRQUFRLElBQUksRUFBRSxJQUFJLFFBQVEsSUFBSSxFQUFFLElBQUksUUFBUSxJQUFJLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1NBQ2hDO2FBQUk7WUFDSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsVUFBZTtRQUU1QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFFM0IsSUFBSSxVQUFVLElBQUksQ0FBQyxJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUU7WUFDdEMsYUFBYSxDQUFDLGFBQWEsQ0FBQztnQkFDMUIsVUFBVSxDQUFDLFFBQVE7Z0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzthQUNyQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsYUFBYSxDQUFDLGFBQWEsQ0FBQztnQkFDMUIsVUFBVSxDQUFDLFFBQVE7Z0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxhQUFhLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLFVBQWU7UUFDN0MsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN0RDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBVztRQUNyQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFZO1FBQ3hCLE1BQU0sYUFBYSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3BGLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtZQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEUsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFO2dCQUNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO29CQUM1RCxNQUFNLEtBQUssR0FBRyxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssUUFBUTt3QkFDOUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQzt3QkFDOUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7b0JBQ25CLE9BQU8sS0FBSyxLQUFLLGFBQWEsQ0FBQztnQkFDakMsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQzthQUNsQjtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDbEI7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzVFLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDNUI7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRTtZQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUMzRCxNQUFNLFNBQVMsR0FBRyxPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDL0YsT0FBTyxTQUFTLEtBQUssV0FBVyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLE1BQU0sVUFBVSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hFLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsTUFBVztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBUztRQUNsQixJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELHVEQUF1RDtZQUN2RCxNQUFNLGtDQUFrQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztZQUMzRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFeEMsbUVBQW1FO1lBQ25FLElBQUksa0NBQWtDLEtBQUssSUFBSSxDQUFDLDBCQUEwQixFQUFFO2dCQUMxRSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDN0QsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFFbkUsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7b0JBQ25DLHVEQUF1RDtvQkFDdkQsSUFBSSxDQUFDLGVBQWUsRUFBRTt3QkFDcEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO3dCQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ2pKO3lCQUFNO3dCQUNMLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ2xHLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7cUJBQzVEO29CQUNELElBQUksQ0FBQyxrQkFBa0IsRUFBRTt3QkFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7d0JBQzFILElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ2pMO3lCQUFNO3dCQUNMLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMvSCxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3hHO2lCQUNGO3FCQUFNO29CQUNMLHNEQUFzRDtvQkFDdEQsSUFBSSxlQUFlLEVBQUU7d0JBQ25CLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDbEMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDOUI7b0JBQ0QsSUFBSSxrQkFBa0IsRUFBRTt3QkFDdEIsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBQ3JDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDaEM7aUJBQ0Y7Z0JBRUQseUNBQXlDO2dCQUN6QyxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztnQkFDMUMsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQzthQUM5QztTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQztZQUN4QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25FLElBQUksZUFBZSxFQUFFO2dCQUNuQixlQUFlLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ2xDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdCLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2FBQzFDO1lBQ0QsSUFBSSxrQkFBa0IsRUFBRTtnQkFDdEIsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3JDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0Isa0JBQWtCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzthQUM3QztTQUNGO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQy9DLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZELElBQUksWUFBWSxDQUFDLGNBQWMsRUFBRTtZQUMvQixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDNUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVqRSxJQUNFLGVBQWUsRUFBRSxLQUFLO2dCQUN0QixpQkFBaUIsRUFBRSxLQUFLO2dCQUN4QixRQUFRLEtBQUssVUFBVTtnQkFDdkIsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFDdkI7Z0JBQ0EsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsTUFBTSxlQUFlLEdBQTBCO1lBQzdDLE1BQU07WUFDTixXQUFXO1lBQ1gsT0FBTztZQUNQLFFBQVE7WUFDUixjQUFjO1lBQ2QsU0FBUztZQUNULGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsU0FBUztZQUNULE9BQU87WUFDUCxNQUFNO1lBQ04sTUFBTTtZQUNOLFFBQVE7U0FDVCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDbkMsZUFBZSxDQUFDLElBQUksQ0FDbEIsV0FBVyxFQUNYLGNBQWMsQ0FDZixDQUFDO1NBQ0g7UUFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixlQUFlLENBQUMsSUFBSSxDQUNsQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLGNBQWMsQ0FDZixDQUFDO1NBQ0g7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLGVBQWUsRUFBRTtZQUNuQyxJQUFJLGFBQWtCLENBQUM7WUFDdkIsSUFBSSxpQkFBaUIsR0FBUSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFakQsUUFBUSxLQUFLLEVBQUU7Z0JBQ2IsS0FBSyxNQUFNO29CQUNULGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQzVDLE1BQU07Z0JBQ1IsS0FBSyxXQUFXO29CQUNkLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7b0JBQ2pELE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzdDLE1BQU07Z0JBQ1IsS0FBSyxXQUFXO29CQUNkLG9EQUFvRDtvQkFDcEQsYUFBYSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMxRixNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO29CQUNoRCxNQUFNO2dCQUNSLEtBQUssY0FBYztvQkFDakIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztvQkFDcEQsTUFBTTtnQkFDUixLQUFLLFNBQVM7b0JBQ1osYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztvQkFDL0MsTUFBTTtnQkFDUixLQUFLLGtCQUFrQjtvQkFDckIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO29CQUN4RCxNQUFNO2dCQUNSLEtBQUssY0FBYztvQkFDakIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztvQkFDcEQsTUFBTTtnQkFDUixLQUFLLFNBQVM7b0JBQ1osYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQ3JELE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNuRCxNQUFNO2dCQUNSLEtBQUssTUFBTTtvQkFDVCxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDbEQsTUFBTTtnQkFDUixLQUFLLE1BQU07b0JBQ1QsbUVBQW1FO29CQUNuRSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzNHLE1BQU07Z0JBQ1IsS0FBSyxjQUFjO29CQUNqQix3REFBd0Q7b0JBQ3hELGFBQWEsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDM0YsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztvQkFDbkQsTUFBTTtnQkFDUixLQUFLLGFBQWE7b0JBQ2hCLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDMUQsTUFBTTtnQkFDUixLQUFLLGtCQUFrQjtvQkFDckIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO29CQUMvRCxNQUFNO2dCQUNSLEtBQUsscUJBQXFCO29CQUN4QixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQztvQkFDNUQsTUFBTTtnQkFDUixLQUFLLGdCQUFnQjtvQkFDbkIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO29CQUM3RCxNQUFNO2dCQUNSLEtBQUsseUJBQXlCO29CQUM1QixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztvQkFDdEUsTUFBTTtnQkFDUixLQUFLLHFCQUFxQjtvQkFDeEIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO29CQUNsRSxNQUFNO2dCQUNSLEtBQUssbUJBQW1CO29CQUN0QixhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7b0JBQ2hFLE1BQU07Z0JBQ1IsS0FBSyx1QkFBdUI7b0JBQzFCLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxJQUFJLEVBQUUsQ0FBQztvQkFDcEUsTUFBTTtnQkFDUixLQUFLLGNBQWM7b0JBQ2pCLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDM0QsTUFBTTtnQkFDUjtvQkFDRSxhQUFhLEdBQUcsRUFBRSxDQUFDO2FBQ3RCO1lBRUQsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUYsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUVyRixJQUFJLGlCQUFpQixLQUFLLGtCQUFrQixFQUFFO2dCQUM1QyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsSUFDRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ3hDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUN0QjtZQUNBLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFO2dCQUNoQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPO2dCQUNwQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNsRCxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTthQUNsQyxDQUFDLENBQUM7WUFDSCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNwQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBRTVDLE1BQU0sT0FBTyxHQUFRO1lBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTtZQUN0QyxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtnQkFDM0IsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2dCQUNwQixTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7Z0JBQzlCLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtnQkFDcEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO2dCQUMxQixnQkFBZ0IsRUFBRSxTQUFTLENBQUMsZ0JBQWdCO2dCQUM1QyxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVk7Z0JBQ3BDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztnQkFDdEIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNO2dCQUN4QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7Z0JBQ3BCLFlBQVksRUFBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQy9ELE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtnQkFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlFLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQzVGO1lBQ0QsTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7Z0JBQzVCLENBQUMsQ0FBQztvQkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxJQUFJO29CQUNqRCxJQUFJLEVBQUUsU0FBUyxDQUFDLFdBQVcsSUFBSSxJQUFJO29CQUNuQyxTQUFTLEVBQUUsU0FBUyxDQUFDLGdCQUFnQixJQUFJLElBQUk7b0JBQzdDLFlBQVksRUFBRSxTQUFTLENBQUMsbUJBQW1CLElBQUksSUFBSTtvQkFDbkQsT0FBTyxFQUFFLFNBQVMsQ0FBQyxjQUFjLElBQUksSUFBSTtvQkFDekMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLHVCQUF1QixJQUFJLElBQUk7b0JBQzNELFlBQVksRUFBRSxTQUFTLENBQUMsbUJBQW1CLElBQUksSUFBSTtvQkFDbkQsVUFBVSxFQUFFLFNBQVMsQ0FBQyxpQkFBaUIsSUFBSSxJQUFJO29CQUMvQyxjQUFjLEVBQUUsU0FBUyxDQUFDLHFCQUFxQixJQUFJLElBQUk7b0JBQ3ZELEtBQUssRUFBRSxTQUFTLENBQUMsWUFBWSxJQUFJLElBQUk7aUJBQ3RDO2dCQUNILENBQUMsQ0FBQyxJQUFJO1lBQ1IsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNO1lBQzNCLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztTQUN0QyxDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbkQsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO29CQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDO3dCQUNSLFFBQVEsRUFBRSxRQUFRO3dCQUNsQixJQUFJLEVBQUUsU0FBUzt3QkFDZixLQUFLLEVBQUUsd0NBQXdDO3dCQUMvQyxpQkFBaUIsRUFBRSxLQUFLO3dCQUN4QixLQUFLLEVBQUUsSUFBSTtxQkFDWixDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO29CQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7aUJBQ25CO3FCQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO29CQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDO3dCQUNSLFFBQVEsRUFBRSxRQUFRO3dCQUNsQixJQUFJLEVBQUUsU0FBUzt3QkFDZixLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPO3dCQUM1QixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNO3dCQUMxQixpQkFBaUIsRUFBRSxLQUFLO3dCQUN4QixLQUFLLEVBQUUsSUFBSTtxQkFDWixDQUFDLENBQUM7aUJBQ0o7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDdEIsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ1IsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRSxpQ0FBaUM7b0JBQ3hDLGlCQUFpQixFQUFFLEtBQUs7b0JBQ3hCLEtBQUssRUFBRSxJQUFJO2lCQUNaLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN0QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUNFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTztZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDeEMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQ3RCO1lBQ0EsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87Z0JBQ3BDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO2FBQ2xDLENBQUMsQ0FBQztZQUNILE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3BDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxxRUFBcUU7SUFDckUsNEJBQTRCLENBQUMsSUFBUztRQUNwQyxNQUFNLFVBQVUsR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV4RSw0R0FBNEc7UUFDNUcsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEQsNkZBQTZGO1FBQzdGLElBQUksQ0FBQywwQkFBMEIsR0FBRyxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RixDQUFDOztvSEF6NkJVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHNNQUZ2QixFQUFFLCtDQ2JmLDgza0JBbVdPOzJGRHBWTSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGFBR3JCLEVBQUU7cU5BR0osV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT3V0cHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyAgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3VzZXItc2VydmljZS91c2VyLXNlcnZpY2UnO1xuaW1wb3J0IHsgIEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91dGlscy9iYXNlLXNlcnZpY2UvYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7ICBQYXJhbWV0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9wYXJhbWV0ZXJzLXNlcnZpY2UvcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7ICBJRm9ybURhdGFScSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL3VzZXIvdXNlci1ycS5tb2RlbCc7XG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXB0LXVwZGF0ZS11c2VyLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdXBkYXRlLXVzZXItZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VwZGF0ZS11c2VyLWZvcm0uY29tcG9uZW50LmNzcyddLFxuICBwcm92aWRlcnM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIHVwZGF0ZVVzZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIERhdGFTdHVkZW50OiBhbnk7XG4gIEBJbnB1dCgpIHZpc2libGVNb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2xvc2VNb2RhbElTID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgdXNlclVwZGF0ZWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgdXBkYXRlVXNlckZvcm0hOiBGb3JtR3JvdXA7XG4gIGNvbmZpcm1Gb3JtITogRm9ybUdyb3VwO1xuICBwaG90bzogc3RyaW5nID0gJyc7XG4gIHBob25lTnVtYmVySW5kaWNhdGl2ZXM6IGFueVtdID0gW107XG4gIGlkVHlwZXM6IGFueVtdID0gW107XG4gIGxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzdGF0ZXM6IGFueSA9IFtdO1xuICBjaXRpZXM6IGFueSA9IFtdO1xuICBjb3VudHJpZXM6IGFueSA9IFtdO1xuICBzaG93UGFyZW50U2VjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93RW1haWxJcHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0NvbmZpcm1TZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIHBhcmFtZXRlcnNMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGFyYW1ldGVyc0FsbD86IGFueTtcbiAgaW5kaWNhdGl2ZXM6IGFueVtdID0gW107XG4gIGNpdmlsU3RhdHVzOiBhbnlbXSA9IFtdO1xuICBnZW5kZXJzOiBhbnlbXSA9IFtdO1xuICBzdHJhdHVtczogYW55W10gPSBbXTtcbiAgc2hvd0NvbmZpcm1EaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdXNlclJvbGVDb21tZXJjaWFsOmJvb2xlYW4gPWZhbHNlO1xuICBjYW5FZGl0Um9sZTogYm9vbGVhbiA9IGZhbHNlO1xuICByb2xlczogYW55W10gPSBbXTtcbiAgc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpbml0aWFsRm9ybVZhbHVlOiBhbnkgPSBbXTtcbiAgcHJpdmF0ZSBpZFR5cGVTdWJzY3JpcHRpb24/OiAgU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHBlbmRpbmdJbml0OiBib29sZWFuID0gZmFsc2U7XG4gIFxuICBpc1N0dWRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAganVzdGlmeU9wdGlvbnM6IGFueVtdID0gW107XG4gIFxuICByZWFzb25zID0gW1xuICAgIHsgbmFtZTogJ0NvcnJlY2Npw7NuIGRlIGVycm9yZXMgZW4gZGF0b3MgcGVyc29uYWxlcycsIGNvZGU6IDEgfSxcbiAgICB7IG5hbWU6ICdDb3JyZWNjaW9uIGRlIGRvY3VtZW50YWNpb24nLCBjb2RlOiAyIH0sXG4gICAgeyBuYW1lOiAnQWN0dWFsaXphY2nDs24gZGUgY29udGFjdG8nLCBjb2RlOiAzIH0sXG4gICAgeyBuYW1lOiAnY29ycmVjY2lvbiBkYXRvcyBkZSBBY3VkaWVudGUnLCBjb2RlOiA0IH0sXG4gICAgeyBuYW1lOiAnQ2FtYmlvIGRlIGNvbnRyYXNlw7FhJywgY29kZTogNSB9LFxuICAgIHsgbmFtZTogJ0NhbWJpbyBkZSByZXNpZGVuY2lhJywgY29kZTogNiB9LFxuICAgIHsgbmFtZTogJ1N1c3BlbnNpw7NuIG8gcmVhY3RpdmFjacOzbiBkZSBjdWVudGEnLCBjb2RlOiA3IH0sXG4gICAgeyBuYW1lOiAnT3RybycsIGNvZGU6IDggfVxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHBhcmFtZXRlclNlcnZpY2U6IFBhcmFtZXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNlU2VydmljZTogQmFzZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuc2V0Um9sZXMoKTtcbiAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgdGhpcy5pbml0Q29uZmlybUZvcm0oKTtcbiAgICB0aGlzLnZhbGlkYXRpb25Vc2VyUm9sZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRQYXJhbWV0ZXJzKCk7XG4gICAgdGhpcy50cmFja0lkVHlwZUNoYW5nZXMoKTtcbiAgICB0aGlzLnNldEp1c3RpZnlPcHRpb25zKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3Zpc2libGVNb2RhbCddICYmIGNoYW5nZXNbJ3Zpc2libGVNb2RhbCddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgaWYgKHRoaXMucGFyYW1ldGVyc0xvYWRlZCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xuICAgICAgdGhpcy5zZXRKdXN0aWZ5T3B0aW9ucygpO1xuICAgICAgdGhpcy50cmFja0lkVHlwZUNoYW5nZXMoKTtcbiAgICAgIHRoaXMudmFsaWRhdGlvblVzZXJSb2xlKCk7XG4gICAgICB0aGlzLnNldFJvbGVzKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9ZWxzZSAge1xuICAgICAgICB0aGlzLnBlbmRpbmdJbml0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZFR5cGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaWRUeXBlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgaW5pdENvbmZpcm1Gb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHJlYXNvbjogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgb2JzZXJ2YXRpb246IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1MCldXVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRKdXN0aWZ5T3B0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmlzU3R1ZGVudCA9IHRoaXMuRGF0YVN0dWRlbnQ/LnJvbGUgPT09IDEzO1xuXG4gICAgaWYgKHRoaXMuaXNTdHVkZW50KSB7XG4gICAgICAvLyBMaXN0YSBjb21wbGV0YSBwYXJhIGVzdHVkaWFudGVcbiAgICAgIHRoaXMuanVzdGlmeU9wdGlvbnMgPSBbXG4gICAgICAgIHsgbmFtZTogJ0FjdGl2bycsIGNvZGU6IDEgfSxcbiAgICAgICAgeyBuYW1lOiAnU3VzcGVuZGlkbyBwL3BhZ28nLCBjb2RlOiAyIH0sXG4gICAgICAgIHsgbmFtZTogJ1BhdXNhZG8gcHJvY2VzbycsIGNvZGU6IDMgfSxcbiAgICAgICAgeyBuYW1lOiAnUmVtb3ZpZG8nLCBjb2RlOiA0IH1cbiAgICAgIF07XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnc3RhdHVzJyk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMaXN0YSByZWR1Y2lkYSBwYXJhIG90cm9zIHJvbGVzXG4gICAgICB0aGlzLmp1c3RpZnlPcHRpb25zID0gW1xuICAgICAgICB7IG5hbWU6ICdBY3Rpdm8nLCBjb2RlOiAxIH0sXG4gICAgICAgIHsgbmFtZTogJ1JlbW92aWRvJywgY29kZTogNCB9XG4gICAgICBdO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3N0YXR1cycpPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Um9sZXMoKTogdm9pZCB7XG4gICAgY29uc3QgdXNlclJvbGUgPSB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJSb2xlKCk7XG4gICAgaWYgKHVzZXJSb2xlID09PSAxKSB7XG4gICAgICB0aGlzLnJvbGVzID0gW1xuICAgICAgICB7IG5hbWU6ICdTdXBlciBBZG1pbicsIGNvZGU6IDEgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQWNhZGVtaWNvJywgY29kZTogMTAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQWNhZGVtaWNvJywgY29kZTogMTEgfSxcbiAgICAgICAgeyBuYW1lOiAnVGVhY2hlciBBY2FkZW1pY28nLCBjb2RlOiAxMiB9LFxuICAgICAgICB7IG5hbWU6ICdFc3R1ZGlhbnRlJywgY29kZTogMTMgfSxcbiAgICAgICAgeyBuYW1lOiAnUG9zaWJsZSBFc3R1ZGlhbnRlJywgY29kZTogMTUgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgTWFya2V0aW5nJywgY29kZTogMjAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgTWFya2V0aW5nJywgY29kZTogMjEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXV4aWxpYXIgTWFya2V0aW5nJywgY29kZTogMjIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMxIH0sXG4gICAgICAgIHsgbmFtZTogJ0F1eGlsaWFyIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQ29tZXJjaWFsJywgY29kZTogNDAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQ29tZXJjaWFsJywgY29kZTogNDEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXNlc29yIENvbWVyY2lhbCcsIGNvZGU6IDQyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIENhcnRlcmEnLCBjb2RlOiA1MCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBDYXJ0ZXJhJywgY29kZTogNTEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXNlc29yIENhcnRlcmEnLCBjb2RlOiA1MiB9LFxuICAgICAgICB7IG5hbWU6ICdQcm92ZWVkb3InLCBjb2RlOiA2MCB9XG4gICAgICBdOyAgICAgIFxuICAgIH1lbHNlIGlmICh1c2VyUm9sZSA9PT0gMzApIHtcbiAgICAgIHRoaXMucm9sZXMgPSBbXG4gICAgICAgIC8vIHsgbmFtZTogJ1N1cGVyIEFkbWluJywgY29kZTogMSB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBBY2FkZW1pY28nLCBjb2RlOiAxMCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBBY2FkZW1pY28nLCBjb2RlOiAxMSB9LFxuICAgICAgICB7IG5hbWU6ICdUZWFjaGVyIEFjYWRlbWljbycsIGNvZGU6IDEyIH0sXG4gICAgICAgIHsgbmFtZTogJ0VzdHVkaWFudGUnLCBjb2RlOiAxMyB9LFxuICAgICAgICB7IG5hbWU6ICdQb3NpYmxlIEVzdHVkaWFudGUnLCBjb2RlOiAxNSB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBNYXJrZXRpbmcnLCBjb2RlOiAyMCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBNYXJrZXRpbmcnLCBjb2RlOiAyMSB9LFxuICAgICAgICB7IG5hbWU6ICdBdXhpbGlhciBNYXJrZXRpbmcnLCBjb2RlOiAyMiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXV4aWxpYXIgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBDb21lcmNpYWwnLCBjb2RlOiA0MCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBDb21lcmNpYWwnLCBjb2RlOiA0MSB9LFxuICAgICAgICB7IG5hbWU6ICdBc2Vzb3IgQ29tZXJjaWFsJywgY29kZTogNDIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQ2FydGVyYScsIGNvZGU6IDUwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIENhcnRlcmEnLCBjb2RlOiA1MSB9LFxuICAgICAgICB7IG5hbWU6ICdBc2Vzb3IgQ2FydGVyYScsIGNvZGU6IDUyIH0sXG4gICAgICAgIHsgbmFtZTogJ1Byb3ZlZWRvcicsIGNvZGU6IDYwIH1cbiAgICAgIF07IFxuICAgIH1lbHNle1xuICAgICAgdGhpcy5yb2xlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFyYW1ldGVyc0xvYWRlZCkge1xuICAgICAgdGhpcy5zZXRQYXJhbWV0ZXJzKCk7XG4gICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucGFyYW1ldGVyU2VydmljZS5nZXRBbGxQYXJhbWV0ZXJzQ29kRm9ybSgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzQWxsID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXRQYXJhbWV0ZXJzKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAgICAgdGhpcy50cmFja0lkVHlwZUNoYW5nZXMoKTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uVXNlclJvbGUoKTtcbiAgICAgICAgdGhpcy5zZXRSb2xlcygpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMucGVuZGluZ0luaXQgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBwYXJhbWV0ZXJzOicsIGVycik7XG4gICAgICAgIHRoaXMucGFyYW1ldGVyc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0aGlzLmlkVHlwZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LlR5cGVJZENhcmRCeUNvdW50cnlDb2w7XG4gICAgdGhpcy5pbmRpY2F0aXZlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uaW5kaWNhdGl2ZXM7XG4gICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmNvdW50cnk7XG4gICAgdGhpcy5jaXZpbFN0YXR1cyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uY2l2aWxTdGF0dXM7XG4gICAgdGhpcy5zdGF0ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LlN0YXRlO1xuICAgIHRoaXMuY2l0aWVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5jaXR5O1xuICAgIGlmICh0aGlzLnBhcmFtZXRlcnNBbGwgJiYgdGhpcy5wYXJhbWV0ZXJzQWxsLmdlbmRlcikge1xuICAgICAgLy8gVHJhbnNmb3JtYXIgZ2VuZGVyIGVuIHVuIGFycmVnbG8gZGUgeyBjb2RlLCBuYW1lIH1cbiAgICAgIHRoaXMuZ2VuZGVycyA9IHRoaXMucGFyYW1ldGVyc0FsbC5nZW5kZXIubWFwKChnZW5kZXI6IGFueSkgPT4gKHtcbiAgICAgICAgY29kZTogZ2VuZGVyLmNvZGUsXG4gICAgICAgIG5hbWU6IGdlbmRlci5uYW1lX3NwYW5pc2hcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZW5kZXJzID0gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dQYXJlbnRTZWN0aW9uID0gISF0aGlzLkRhdGFTdHVkZW50Py5jb2RzPy5wYXJlbnQ/LmNvZGU7XG4gICAgLy8gdGhpcy5zaG93RW1haWxJcHQgPSAhIXRoaXMuRGF0YVN0dWRlbnQ/LmVtYWlsX2lwdCAmJiB0aGlzLkRhdGFTdHVkZW50LmVtYWlsX2lwdCAhPT0gZmFsc2U7XG4gICAgdGhpcy5jaGVja1JvbGVGb3JBZGRpdGlvbmFsRmllbGRzKHRoaXMuRGF0YVN0dWRlbnQucm9sZSk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIHRoaXMucG9wdWxhdGVGb3JtKCk7XG4gIH1cblxuICBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyUm9sZSA9IHRoaXMuYmFzZVNlcnZpY2UuZ2V0VXNlclJvbGUoKTtcbiAgICB0aGlzLmNhbkVkaXRSb2xlID0gdXNlclJvbGUgPT09IDEgfHwgdXNlclJvbGUgPT09IDMwO1xuXG4gICAgY29uc3QgYmFzZUZvcm0gPSB7XG4gICAgICBuYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpXV0sXG4gICAgICBsYXN0X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMildXSxcbiAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXV0sXG4gICAgICBnZW5kZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGlkX2NhcmRfdHlwZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgaWRfY2FyZDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKV1dLFxuICAgICAgcGhvbmVfaW5kaWNhdGl2ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgcGhvbmVfbnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDE1KV1dLFxuICAgICAgY291bnRyeTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgc3RhdGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGNpdHk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHJvbGU6IFt7IHZhbHVlOiAnJywgZGlzYWJsZWQ6ICF0aGlzLmNhbkVkaXRSb2xlfV0sXG4gICAgICBwYXNzd29yZDogWycnLCBbXV0sXG4gICAgICByZV9wYXNzd29yZDogWycnLCBbXV0sXG4gICAgICBjaGFuZ2VQYXNzd29yZDogW2ZhbHNlXSxcbiAgICAgIHN0YXR1czogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGVtYWlsX2lwdDogWycnLCB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1MCldIDogW11dLFxuICAgICAgc2VydmljZV9ob3VyOiBbJycsIHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0rJC8pLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoNDQpXSA6IFtdXVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zaG93UGFyZW50U2VjdGlvbikge1xuICAgICAgT2JqZWN0LmFzc2lnbihiYXNlRm9ybSwge1xuICAgICAgICBwYXJlbnRfbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDE1MCldXSxcbiAgICAgICAgcGFyZW50X2xhc3RfbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDE1MCldXSxcbiAgICAgICAgcGFyZW50X2lkX2NhcmRfdHlwZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICBwYXJlbnRfaWRfY2FyZDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMwKV1dLFxuICAgICAgICBwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICBwYXJlbnRfcGhvbmVfbnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKV1dLFxuICAgICAgICBwYXJlbnRfb2NjdXBhdGlvbjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXV0sXG4gICAgICAgIHBhcmVudF9vZmZpY2VfYWRycmVzczogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTUwKV1dLFxuICAgICAgICBwYXJlbnRfZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NSldXVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVVc2VyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoYmFzZUZvcm0sIHsgdmFsaWRhdG9yczogdGhpcy5wYXNzd29yZE1hdGNoVmFsaWRhdG9yIH0pO1xuXG4gICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2NoYW5nZVBhc3N3b3JkJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIGNvbnN0IHBhc3N3b3JkQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdwYXNzd29yZCcpO1xuICAgICAgY29uc3QgcmVQYXNzd29yZENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncmVfcGFzc3dvcmQnKTtcblxuICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgcGFzc3dvcmRDb250cm9sPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpXSk7XG4gICAgICAgIHJlUGFzc3dvcmRDb250cm9sPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXNzd29yZENvbnRyb2w/LmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICByZVBhc3N3b3JkQ29udHJvbD8uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHBhc3N3b3JkQ29udHJvbD8uc2V0VmFsdWUoJycpO1xuICAgICAgICByZVBhc3N3b3JkQ29udHJvbD8uc2V0VmFsdWUoJycpO1xuICAgICAgfVxuXG4gICAgICBwYXNzd29yZENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIHJlUGFzc3dvcmRDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncGFzc3dvcmQnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncmVfcGFzc3dvcmQnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IoZm9ybTogRm9ybUdyb3VwKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsIHtcbiAgICBjb25zdCBjaGFuZ2VQYXNzd29yZCA9IGZvcm0uZ2V0KCdjaGFuZ2VQYXNzd29yZCcpPy52YWx1ZTtcbiAgICBjb25zdCBwYXNzd29yZCA9IGZvcm0uZ2V0KCdwYXNzd29yZCcpPy52YWx1ZTtcbiAgICBjb25zdCByZVBhc3N3b3JkID0gZm9ybS5nZXQoJ3JlX3Bhc3N3b3JkJyk/LnZhbHVlO1xuICAgIGlmICghY2hhbmdlUGFzc3dvcmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBtaXNtYXRjaCA9IHBhc3N3b3JkICYmIHJlUGFzc3dvcmQgJiYgcGFzc3dvcmQgIT09IHJlUGFzc3dvcmQ7XG4gICAgcmV0dXJuIG1pc21hdGNoID8geyBtaXNtYXRjaDogdHJ1ZSB9IDogbnVsbDtcbiAgfVxuXG4gIG5vV2hpdGVzcGFjZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwge1xuICAgIGlmIChjb250cm9sLnZhbHVlICYmIHR5cGVvZiBjb250cm9sLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgdHJpbW1lZFZhbHVlID0gY29udHJvbC52YWx1ZS50cmltKCk7XG4gICAgICBpZiAodHJpbW1lZFZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4geyBvbmx5V2hpdGVzcGFjZTogdHJ1ZSB9O1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgIT09IHRyaW1tZWRWYWx1ZSkge1xuICAgICAgICByZXR1cm4geyBoYXNXaGl0ZXNwYWNlOiB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJhbnNmb3JtUm9sZShyb2xlOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvbGVNYXA6IHsgW2tleTogbnVtYmVyXTogc3RyaW5nIH0gPSB7XG4gICAgICAxOiAnU3VwZXIgQWRtaW4nLFxuICAgICAgMTA6ICdMaWRlciBBY2FkZW1pY28nLFxuICAgICAgMTE6ICdDb29yZGluYWRvciBBY2FkZW1pY28nLFxuICAgICAgMTI6ICdUZWFjaGVyIEFjYWRlbWljbycsXG4gICAgICAxMzogJ0VzdHVkaWFudGUnLFxuICAgICAgMTU6ICdQb3NpYmxlIEVzdHVkaWFudGUnLFxuICAgICAgMjA6ICdMaWRlciBNYXJrZXRpbmcnLFxuICAgICAgMjE6ICdDb29yZGluYWRvciBNYXJrZXRpbmcnLFxuICAgICAgMjI6ICdBdXhpbGlhciBNYXJrZXRpbmcnLFxuICAgICAgMzA6ICdMaWRlciBBZG1pbmlzdHJhdGl2bycsXG4gICAgICAzMTogJ0Nvb3JkaW5hZG9yIEFkbWluaXN0cmF0aXZvJyxcbiAgICAgIDMyOiAnQXV4aWxpYXIgQWRtaW5pc3RyYXRpdm8nLFxuICAgICAgNDA6ICdMaWRlciBDb21lcmNpYWwnLFxuICAgICAgNDE6ICdDb29yZGluYWRvciBDb21lcmNpYWwnLFxuICAgICAgNDI6ICdBc2Vzb3IgQ29tZXJjaWFsJyxcbiAgICAgIDUwOiAnTGlkZXIgQ2FydGVyYScsXG4gICAgICA1MTogJ0Nvb3JkaW5hZG9yIENhcnRlcmEnLFxuICAgICAgNTI6ICdBc2Vzb3IgQ2FydGVyYScsXG4gICAgICA2MDogJ1Byb3ZlZWRvcidcbiAgICB9O1xuICAgIHJldHVybiByb2xlTWFwW051bWJlcihyb2xlKV0gfHwgJyc7XG4gIH1cblxuICBwb3B1bGF0ZUZvcm0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuRGF0YVN0dWRlbnQpIHtcbiAgICAgIHRoaXMuY2hlY2tSb2xlRm9yQWRkaXRpb25hbEZpZWxkcyh0aGlzLkRhdGFTdHVkZW50LnJvbGUpO1xuXG4gICAgICBjb25zdCBmb3JtVmFsdWU6IGFueSA9IHtcbiAgICAgICAgbmFtZTogdGhpcy5EYXRhU3R1ZGVudC5uYW1lIHx8ICcnLFxuICAgICAgICBsYXN0X25hbWU6IHRoaXMuRGF0YVN0dWRlbnQubGFzdF9uYW1lIHx8ICcnLFxuICAgICAgICBlbWFpbDogdGhpcy5EYXRhU3R1ZGVudC5lbWFpbCB8fCAnJyxcbiAgICAgICAgZ2VuZGVyOiB0aGlzLkRhdGFTdHVkZW50LmdlbmRlciB8fCBudWxsLFxuICAgICAgICBpZF9jYXJkX3R5cGU6IHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZF90eXBlIHx8ICcnLFxuICAgICAgICBpZF9jYXJkOiB0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmQgfHwgJycsXG4gICAgICAgIHBob25lX2luZGljYXRpdmU6IHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfaW5kaWNhdGl2ZSB8fCAnJyxcbiAgICAgICAgcGhvbmVfbnVtYmVyOiB0aGlzLkRhdGFTdHVkZW50LnBob25lX251bWJlciB8fCAnJyxcbiAgICAgICAgY291bnRyeTogdGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5jb3VudHJ5LFxuICAgICAgICBzdGF0ZTogdGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5zdGF0ZSxcbiAgICAgICAgY2l0eTogdGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5jb2RlLFxuICAgICAgICAvLyByb2xlOiB0aGlzLnRyYW5zZm9ybVJvbGUodGhpcy5EYXRhU3R1ZGVudC5yb2xlKSB8fCAnJyxcbiAgICAgICAgcm9sZTogdGhpcy5jYW5FZGl0Um9sZSA/IHRoaXMuRGF0YVN0dWRlbnQucm9sZSA6IHRoaXMudHJhbnNmb3JtUm9sZSh0aGlzLkRhdGFTdHVkZW50LnJvbGUpIHx8ICcnLCAvLyBVc2UgY29kZSBmb3Igc2VsZWN0LCBcbiAgICAgICAgLy8gc2VydmljZV9ob3VyOiB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciB8fCAwLFxuICAgICAgICBjaGFuZ2VQYXNzd29yZDogZmFsc2UsXG4gICAgICAgIHBhc3N3b3JkOiAnJyxcbiAgICAgICAgcmVfcGFzc3dvcmQ6ICcnLFxuICAgICAgICBzdGF0dXM6IHRoaXMuRGF0YVN0dWRlbnQudXNlcl9zdGF0dXMgfHwgJydcbiAgICAgIH07XG5cbiAgICAgIC8vIEFncmVnYXIgY2FtcG9zIGNvbmRpY2lvbmFsZXNcbiAgICAgIGlmICh0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyKSB7XG4gICAgICAgIGZvcm1WYWx1ZS5lbWFpbF9pcHQgPSB0aGlzLkRhdGFTdHVkZW50LmVtYWlsX2lwdCB8fCAnJztcbiAgICAgICAgZm9ybVZhbHVlLnNlcnZpY2VfaG91ciA9IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyIHx8IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtVmFsdWUuc2VydmljZV9ob3VyID0gdGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgfHwgMDtcbiAgICAgIH1cbiAgICAgIC8vIGlmICh0aGlzLnNob3dFbWFpbElwdCkge1xuICAgICAgLy8gICBmb3JtVmFsdWUuZW1haWxfaXB0ID0gdGhpcy5EYXRhU3R1ZGVudC5lbWFpbF9pcHQgfHwgJyc7XG4gICAgICAvLyB9XG5cbiAgICAgIGlmICh0aGlzLnNob3dQYXJlbnRTZWN0aW9uKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZm9ybVZhbHVlLCB7XG4gICAgICAgICAgcGFyZW50X25hbWU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9sYXN0X25hbWU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5sYXN0X25hbWUgfHwgJycsXG4gICAgICAgICAgcGFyZW50X2lkX2NhcmRfdHlwZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmRfdHlwZSB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfaWRfY2FyZDogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmQgfHwgJycsXG4gICAgICAgICAgcGFyZW50X3Bob25lX2luZGljYXRpdmU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9pbmRpY2F0aXZlIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9waG9uZV9udW1iZXI6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9udW1iZXIgfHwgJycsXG4gICAgICAgICAgcGFyZW50X29jY3VwYXRpb246IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5vY2N1cGF0aW9uIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9vZmZpY2VfYWRycmVzczogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm9mZmljZV9hZHJyZXNzIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9lbWFpbDogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmVtYWlsIHx8ICcnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVJZENhcmRWYWxpZGF0b3JzKHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZF90eXBlKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucmVzZXQoKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucGF0Y2hWYWx1ZShmb3JtVmFsdWUpO1xuICAgICAgdGhpcy5pbml0aWFsRm9ybVZhbHVlID0geyAuLi50aGlzLnVwZGF0ZVVzZXJGb3JtLnZhbHVlIH07XG4gICAgICBpZiAoZm9ybVZhbHVlLmNvdW50cnkpIHtcbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmNvdW50cnk7XG4gICAgICAgIHRoaXMuc2VsZWN0Q291bnRyeSh0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvdW50cnkpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5zdGF0ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdFN0YXRlKHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uc3RhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5jaXR5KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Q2l0eSh0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvZGUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5pZF9jYXJkX3R5cGUpIHtcbiAgICAgICAgdGhpcy5pZFR5cGVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5UeXBlSWRDYXJkQnlDb3VudHJ5Q29sO1xuICAgICAgICB0aGlzLnNlbGVjdElkVHlwZSgnaWRfY2FyZF90eXBlJyx0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLnBob25lX2luZGljYXRpdmUpIHtcbiAgICAgICAgdGhpcy5pbmRpY2F0aXZlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uaW5kaWNhdGl2ZXM7XG4gICAgICAgIHRoaXMuc2VsZWN0SW5kaWNhdGl2ZSgncGhvbmVfaW5kaWNhdGl2ZScsIHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfaW5kaWNhdGl2ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLnBhcmVudF9waG9uZV9pbmRpY2F0aXZlKSB7XG4gICAgICAgIHRoaXMuaW5kaWNhdGl2ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmluZGljYXRpdmVzO1xuICAgICAgICB0aGlzLnNlbGVjdEluZGljYXRpdmUoJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJywgdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LnBob25lX2luZGljYXRpdmUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5nZW5kZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVyc0FsbCAmJiB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyKSB7XG4gICAgICAgICAgLy8gVHJhbnNmb3JtYXIgZ2VuZGVyIGVuIHVuIGFycmVnbG8gZGUgeyBjb2RlLCBuYW1lIH1cbiAgICAgICAgICB0aGlzLmdlbmRlcnMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyLm1hcCgoZ2VuZGVyOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBjb2RlOiBnZW5kZXIuY29kZSxcbiAgICAgICAgICAgIG5hbWU6IGdlbmRlci5uYW1lX3NwYW5pc2hcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5nZW5kZXJzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RHZW5kZXIodGhpcy5EYXRhU3R1ZGVudC5nZW5kZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGlvblVzZXJSb2xlKCl7XG4gICAgY29uc3QgdXNlclJvbGUgPSB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJSb2xlKCk7XG4gICAgaWYgKHVzZXJSb2xlID09IDQwIHx8IHVzZXJSb2xlID09IDQxIHx8IHVzZXJSb2xlID09IDQyKSB7XG4gICAgICB0aGlzLnVzZXJSb2xlQ29tbWVyY2lhbCA9IHRydWU7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnVzZXJSb2xlQ29tbWVyY2lhbCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNhbkVkaXRSb2xlID0gdXNlclJvbGUgPT09IDEgfHwgdXNlclJvbGUgPT09IDMwO1xuICB9XG4gIFxuICBjbG9zZVRhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZU1vZGFsID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlybUZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5pZFR5cGVzID0gW107XG4gICAgdGhpcy5jb3VudHJpZXMgPSBbXTtcbiAgICB0aGlzLmdlbmRlcnMgPSBbXTtcbiAgICB0aGlzLnVwZGF0ZUlkQ2FyZFZhbGlkYXRvcnMobnVsbCk7XG4gICAgdGhpcy5jbG9zZU1vZGFsSVMuZW1pdChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHRyYWNrSWRUeXBlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZFR5cGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaWRUeXBlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IFxuICAgIH1cbiAgICB0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbiA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdpZF9jYXJkX3R5cGUnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUlkQ2FyZFZhbGlkYXRvcnModmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJZENhcmRWYWxpZGF0b3JzKGlkQ2FyZFR5cGU6IGFueSk6IHZvaWQge1xuXG4gICAgY29uc3QgaWRDYXJkQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdpZF9jYXJkJyk7XG4gICAgaWYgKCFpZENhcmRDb250cm9sKSByZXR1cm47XG5cbiAgICBpZiAoaWRDYXJkVHlwZSA9PSA3IHx8IGlkQ2FyZFR5cGUgPT0gNSkge1xuICAgICAgaWRDYXJkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKSxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW2EtekEtWjAtOV0qJC8pXG4gICAgICBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWRDYXJkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKSxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0qJC8pXG4gICAgICBdKTtcbiAgICB9XG4gICAgaWRDYXJkQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBzZWxlY3RJbmRpY2F0aXZlKGZpZWxkOiBzdHJpbmcsIGluZGljYXRpdmU6IGFueSk6IHZvaWQge1xuICAgIGlmIChpbmRpY2F0aXZlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldChmaWVsZCk/LnNldFZhbHVlKGluZGljYXRpdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldChmaWVsZCk/LnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdElkVHlwZShmaWVsZDogc3RyaW5nLCBpZFR5cGU6IGFueSk6IHZvaWQge1xuICAgIGlmIChpZFR5cGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KGZpZWxkKT8uc2V0VmFsdWUoaWRUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoZmllbGQpPy5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RHZW5kZXIoZ2VuZGVyOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZ2VuZGVyICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnZ2VuZGVyJyk/LnNldFZhbHVlKGdlbmRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdnZW5kZXInKT8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcbiAgICBjb25zdCBjb3VudHJ5TnVtYmVyID0gdHlwZW9mIGNvdW50cnkgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoY291bnRyeSwgMTApIDogY291bnRyeTtcbiAgICBpZiAoY291bnRyeSAhPSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjb3VudHJ5J10uc2V0VmFsdWUoY291bnRyeU51bWJlcik7XG4gICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzQWxsICYmIHRoaXMucGFyYW1ldGVyc0FsbD8uU3RhdGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuU3RhdGUuZmlsdGVyKChjb3Vyc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXRlID0gdHlwZW9mIGNvdXJzZS5jb3VudHJ5ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBwYXJzZUludChjb3Vyc2UuY291bnRyeSwgMTApXG4gICAgICAgICAgICA6IGNvdXJzZS5jb3VudHJ5O1xuICAgICAgICAgIHJldHVybiBzdGF0ZSA9PT0gY291bnRyeU51bWJlcjtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlcyA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuc3RhdGVzID0gW107XG4gICAgICB0aGlzLmNpdGllcyA9IFtdO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFN0YXRlKHN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZU51bWJlciA9IHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChzdGF0ZSwgMTApIDogc3RhdGU7XG4gICAgaWYgKHN0YXRlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKHN0YXRlTnVtYmVyKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgICB0aGlzLmdldFN0YXRlKHN0YXRlTnVtYmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdGUoc3RhdGU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZ2V0Q2l0eShzdGF0ZSk7XG4gIH1cblxuICBnZXRDaXR5KHN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZU51bWJlciA9IHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChzdGF0ZSwgMTApIDogc3RhdGU7XG4gICAgaWYgKHRoaXMucGFyYW1ldGVyc0FsbD8uY2l0eSkge1xuICAgICAgdGhpcy5jaXRpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuY2l0eS5maWx0ZXIoKGNvdXJzZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGNpdHlTdGF0ZSA9IHR5cGVvZiBjb3Vyc2Uuc3RhdGUgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoY291cnNlLnN0YXRlLCAxMCkgOiBjb3Vyc2Uuc3RhdGU7XG4gICAgICAgIHJldHVybiBjaXR5U3RhdGUgPT09IHN0YXRlTnVtYmVyO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q2l0eShjaXR5OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBjaXR5TnVtYmVyID0gdHlwZW9mIGNpdHkgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoY2l0eSwgMTApIDogY2l0eTtcbiAgICBpZiAoY2l0eSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKGNpdHlOdW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0UmVhc29uKHJlYXNvbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtRm9ybS5jb250cm9sc1sncmVhc29uJ10uc2V0VmFsdWUocmVhc29uID8gcmVhc29uIDogbnVsbCk7XG4gIH1cblxuICBzZWxlY3RSb2xlKHJvbGU6IGFueSk6IHZvaWQge1xuICAgIGlmIChyb2xlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncm9sZScpPy5zZXRWYWx1ZShyb2xlKTtcbiAgICAgIC8vIFZlcmlmaWNhciBzaSBzZSBkZWJlbiBtb3N0cmFyIGxvcyBjYW1wb3MgYWRpY2lvbmFsZXNcbiAgICAgIGNvbnN0IHByZXZpb3VzU2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPSB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyO1xuICAgICAgdGhpcy5jaGVja1JvbGVGb3JBZGRpdGlvbmFsRmllbGRzKHJvbGUpO1xuXG4gICAgICAvLyBTaSBzaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciBjYW1iacOzLCBhY3R1YWxpemFyIGxvcyB2YWxpZGFkb3Jlc1xuICAgICAgaWYgKHByZXZpb3VzU2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgIT09IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgICAgY29uc3QgZW1haWxJcHRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2VtYWlsX2lwdCcpO1xuICAgICAgICBjb25zdCBzZXJ2aWNlSG91ckNvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnc2VydmljZV9ob3VyJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgICAgICAvLyBBZ3JlZ2FyIGNhbXBvcyB5IHZhbGlkYWRvcmVzIHNpIG5vIGVzdGFiYW4gcHJlc2VudGVzXG4gICAgICAgICAgaWYgKCFlbWFpbElwdENvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGVtYWlsSXB0VmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmVtYWlsX2lwdCB8fCAnJztcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uYWRkQ29udHJvbCgnZW1haWxfaXB0JywgdGhpcy5mYi5jb250cm9sKGVtYWlsSXB0VmFsdWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbWFpbElwdENvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV0pO1xuICAgICAgICAgICAgZW1haWxJcHRDb250cm9sLnNldFZhbHVlKHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFzZXJ2aWNlSG91ckNvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VIb3VyVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciAhPSBudWxsID8gdGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgOiAwOyAvLyBVc2EgMCBjb21vIGZhbGxiYWNrXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmFkZENvbnRyb2woJ3NlcnZpY2VfaG91cicsIHRoaXMuZmIuY29udHJvbChzZXJ2aWNlSG91clZhbHVlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0rJC8pLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoNDQpXSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0rJC8pLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoNDQpXSk7XG4gICAgICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wuc2V0VmFsdWUodGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgIT0gbnVsbCA/IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyIDogMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlbW92ZXIgdmFsaWRhZG9yZXMgc2kgbG9zIGNhbXBvcyBubyBzb24gbmVjZXNhcmlvc1xuICAgICAgICAgIGlmIChlbWFpbElwdENvbnRyb2wpIHtcbiAgICAgICAgICAgIGVtYWlsSXB0Q29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgIGVtYWlsSXB0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzZXJ2aWNlSG91ckNvbnRyb2wpIHtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5zZXRWYWx1ZSgwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBY3R1YWxpemFyIGxhIHZhbGlkZXogZGUgbG9zIGNvbnRyb2xlc1xuICAgICAgICBlbWFpbElwdENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgc2VydmljZUhvdXJDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyb2xlJyk/LnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA9IGZhbHNlO1xuICAgICAgY29uc3QgZW1haWxJcHRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2VtYWlsX2lwdCcpO1xuICAgICAgY29uc3Qgc2VydmljZUhvdXJDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3NlcnZpY2VfaG91cicpO1xuICAgICAgaWYgKGVtYWlsSXB0Q29udHJvbCkge1xuICAgICAgICBlbWFpbElwdENvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIGVtYWlsSXB0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIGVtYWlsSXB0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgICBpZiAoc2VydmljZUhvdXJDb250cm9sKSB7XG4gICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgc2VydmljZUhvdXJDb250cm9sLnNldFZhbHVlKDApO1xuICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgXG4gIGhhc0Zvcm1DaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5pbml0aWFsRm9ybVZhbHVlIHx8ICF0aGlzLkRhdGFTdHVkZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXRSYXdWYWx1ZSgpO1xuXG4gICAgaWYgKGN1cnJlbnRWYWx1ZS5jaGFuZ2VQYXNzd29yZCkge1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSBjdXJyZW50VmFsdWUucGFzc3dvcmQ7XG4gICAgICBjb25zdCByZVBhc3N3b3JkID0gY3VycmVudFZhbHVlLnJlX3Bhc3N3b3JkO1xuICAgICAgY29uc3QgcGFzc3dvcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3Bhc3N3b3JkJyk7XG4gICAgICBjb25zdCByZVBhc3N3b3JkQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyZV9wYXNzd29yZCcpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHBhc3N3b3JkQ29udHJvbD8udmFsaWQgJiZcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LnZhbGlkICYmXG4gICAgICAgIHBhc3N3b3JkID09PSByZVBhc3N3b3JkICYmXG4gICAgICAgIHBhc3N3b3JkPy50cmltKCkgIT09ICcnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRzVG9Db21wYXJlOiAoa2V5b2YgSUZvcm1EYXRhUnEpW10gPSBbXG4gICAgICAnbmFtZScsXG4gICAgICAnbGFzdF9uYW1lJyxcbiAgICAgICdlbWFpbCcsXG4gICAgICAnZ2VuZGVyJyxcbiAgICAgICdpZF9jYXJkX3R5cGUnLFxuICAgICAgJ2lkX2NhcmQnLFxuICAgICAgJ3Bob25lX2luZGljYXRpdmUnLFxuICAgICAgJ3Bob25lX251bWJlcicsXG4gICAgICAnY291bnRyeScsXG4gICAgICAnc3RhdGUnLFxuICAgICAgJ2NpdHknLFxuICAgICAgJ3JvbGUnLFxuICAgICAgJ3N0YXR1cydcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgIGZpZWxkc1RvQ29tcGFyZS5wdXNoKFxuICAgICAgICAnZW1haWxfaXB0JyxcbiAgICAgICAgJ3NlcnZpY2VfaG91cidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd1BhcmVudFNlY3Rpb24pIHtcbiAgICAgIGZpZWxkc1RvQ29tcGFyZS5wdXNoKFxuICAgICAgICAncGFyZW50X25hbWUnLFxuICAgICAgICAncGFyZW50X2xhc3RfbmFtZScsXG4gICAgICAgICdwYXJlbnRfaWRfY2FyZF90eXBlJyxcbiAgICAgICAgJ3BhcmVudF9pZF9jYXJkJyxcbiAgICAgICAgJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJyxcbiAgICAgICAgJ3BhcmVudF9waG9uZV9udW1iZXInLFxuICAgICAgICAncGFyZW50X29jY3VwYXRpb24nLFxuICAgICAgICAncGFyZW50X29mZmljZV9hZHJyZXNzJyxcbiAgICAgICAgJ3BhcmVudF9lbWFpbCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHNUb0NvbXBhcmUpIHtcbiAgICAgIGxldCBvcmlnaW5hbFZhbHVlOiBhbnk7XG4gICAgICBsZXQgY3VycmVudEZpZWxkVmFsdWU6IGFueSA9IGN1cnJlbnRWYWx1ZVtmaWVsZF07XG5cbiAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQubmFtZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGFzdF9uYW1lJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5sYXN0X25hbWUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5lbWFpbCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZW1haWxfaXB0JzpcbiAgICAgICAgICAvLyBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5lbWFpbF9pcHQgfHwgJyc7XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyAodGhpcy5EYXRhU3R1ZGVudC5lbWFpbF9pcHQgfHwgJycpIDogJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2dlbmRlcic6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuZ2VuZGVyIHx8IG51bGw7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2lkX2NhcmRfdHlwZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZF90eXBlIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpZF9jYXJkJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5pZF9jYXJkIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwaG9uZV9pbmRpY2F0aXZlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5waG9uZV9pbmRpY2F0aXZlIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwaG9uZV9udW1iZXInOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LnBob25lX251bWJlciB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY291bnRyeSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY291bnRyeSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3RhdGUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LnN0YXRlIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjaXR5JzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5jb2RlIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyb2xlJzpcbiAgICAgICAgICAvLyBvcmlnaW5hbFZhbHVlID0gdGhpcy50cmFuc2Zvcm1Sb2xlKHRoaXMuRGF0YVN0dWRlbnQucm9sZSkgfHwgJyc7XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuY2FuRWRpdFJvbGUgPyB0aGlzLkRhdGFTdHVkZW50LnJvbGUgOiB0aGlzLnRyYW5zZm9ybVJvbGUodGhpcy5EYXRhU3R1ZGVudC5yb2xlKSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2VydmljZV9ob3VyJzpcbiAgICAgICAgICAvLyBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgfHwgJycgO1xuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8gKHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyIHx8IDApIDogMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3RhdHVzJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC51c2VyX3N0YXR1cyB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X25hbWUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ubmFtZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X2xhc3RfbmFtZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5sYXN0X25hbWUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9pZF9jYXJkX3R5cGUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8uaWRfY2FyZF90eXBlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfaWRfY2FyZCc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5pZF9jYXJkIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9pbmRpY2F0aXZlIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfcGhvbmVfbnVtYmVyJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LnBob25lX251bWJlciB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X29jY3VwYXRpb24nOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ub2NjdXBhdGlvbiB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X29mZmljZV9hZHJyZXNzJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm9mZmljZV9hZHJyZXNzIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfZW1haWwnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8uZW1haWwgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9ICcnO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBub3JtYWxpemVkQ3VycmVudCA9IGN1cnJlbnRGaWVsZFZhbHVlICE9IG51bGwgPyBTdHJpbmcoY3VycmVudEZpZWxkVmFsdWUpLnRyaW0oKSA6ICcnO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZE9yaWdpbmFsID0gb3JpZ2luYWxWYWx1ZSAhPSBudWxsID8gU3RyaW5nKG9yaWdpbmFsVmFsdWUpLnRyaW0oKSA6ICcnO1xuXG4gICAgICBpZiAobm9ybWFsaXplZEN1cnJlbnQgIT09IG5vcm1hbGl6ZWRPcmlnaW5hbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzaG93Q29uZmlybVNlY3Rpb25IYW5kbGVyKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uaW52YWxpZCB8fFxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSB8fFxuICAgICAgIXRoaXMuaGFzRm9ybUNoYW5nZWQoKVxuICAgICkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICBjb25zb2xlLmxvZygnVmFsaWRhdGlvbiBmYWlsZWQ6Jywge1xuICAgICAgICBpbnZhbGlkOiB0aGlzLnVwZGF0ZVVzZXJGb3JtLmludmFsaWQsXG4gICAgICAgIG1pc21hdGNoOiB0aGlzLnVwZGF0ZVVzZXJGb3JtLmhhc0Vycm9yKCdtaXNtYXRjaCcpLFxuICAgICAgICBoYXNDaGFuZ2VzOiB0aGlzLmhhc0Zvcm1DaGFuZ2VkKClcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNob3dDb25maXJtU2VjdGlvbiA9IHRydWU7XG4gIH1cblxuICBzZW5kVXBkYXRlUmVxdWVzdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maXJtRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmNvbmZpcm1Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgIGNvbnN0IGNvbmZpcm1WYWx1ZSA9IHRoaXMuY29uZmlybUZvcm0udmFsdWU7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBhbnkgPSB7XG4gICAgICB0b2tlbjogdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyVG9rZW4oKSxcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgY29kZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RlLFxuICAgICAgICBuYW1lOiBmb3JtVmFsdWUubmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBmb3JtVmFsdWUubGFzdF9uYW1lLFxuICAgICAgICBpZF9jYXJkX3R5cGU6IGZvcm1WYWx1ZS5pZF9jYXJkX3R5cGUsXG4gICAgICAgIGlkX2NhcmQ6IGZvcm1WYWx1ZS5pZF9jYXJkLFxuICAgICAgICBwaG9uZV9pbmRpY2F0aXZlOiBmb3JtVmFsdWUucGhvbmVfaW5kaWNhdGl2ZSxcbiAgICAgICAgcGhvbmVfbnVtYmVyOiBmb3JtVmFsdWUucGhvbmVfbnVtYmVyLFxuICAgICAgICBlbWFpbDogZm9ybVZhbHVlLmVtYWlsLFxuICAgICAgICBnZW5kZXI6IGZvcm1WYWx1ZS5nZW5kZXIsXG4gICAgICAgIGNpdHk6IGZvcm1WYWx1ZS5jaXR5LFxuICAgICAgICBzZXJ2aWNlX2hvdXI6IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyBmb3JtVmFsdWUuc2VydmljZV9ob3VyIDogMCxcbiAgICAgICAgcm9sZTogdGhpcy5jYW5FZGl0Um9sZSA/IGZvcm1WYWx1ZS5yb2xlIDogdGhpcy5EYXRhU3R1ZGVudC5yb2xlLFxuICAgICAgICBzdGF0dXM6IGZvcm1WYWx1ZS5zdGF0dXMsXG4gICAgICAgIC4uLih0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8geyBlbWFpbF9pcHQ6IGZvcm1WYWx1ZS5lbWFpbF9pcHQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGZvcm1WYWx1ZS5jaGFuZ2VQYXNzd29yZCAmJiBmb3JtVmFsdWUucGFzc3dvcmQgPyB7IHBhc3N3b3JkOiBmb3JtVmFsdWUucGFzc3dvcmQgfSA6IHt9KVxuICAgICAgfSxcbiAgICAgIHBhcmVudDogdGhpcy5zaG93UGFyZW50U2VjdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGNvZGU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5jb2RlIHx8IG51bGwsXG4gICAgICAgICAgICBuYW1lOiBmb3JtVmFsdWUucGFyZW50X25hbWUgfHwgbnVsbCxcbiAgICAgICAgICAgIGxhc3RfbmFtZTogZm9ybVZhbHVlLnBhcmVudF9sYXN0X25hbWUgfHwgbnVsbCxcbiAgICAgICAgICAgIGlkX2NhcmRfdHlwZTogZm9ybVZhbHVlLnBhcmVudF9pZF9jYXJkX3R5cGUgfHwgbnVsbCxcbiAgICAgICAgICAgIGlkX2NhcmQ6IGZvcm1WYWx1ZS5wYXJlbnRfaWRfY2FyZCB8fCBudWxsLFxuICAgICAgICAgICAgcGhvbmVfaW5kaWNhdGl2ZTogZm9ybVZhbHVlLnBhcmVudF9waG9uZV9pbmRpY2F0aXZlIHx8IG51bGwsXG4gICAgICAgICAgICBwaG9uZV9udW1iZXI6IGZvcm1WYWx1ZS5wYXJlbnRfcGhvbmVfbnVtYmVyIHx8IG51bGwsXG4gICAgICAgICAgICBvY2N1cGF0aW9uOiBmb3JtVmFsdWUucGFyZW50X29jY3VwYXRpb24gfHwgbnVsbCxcbiAgICAgICAgICAgIG9mZmljZV9hZHJyZXNzOiBmb3JtVmFsdWUucGFyZW50X29mZmljZV9hZHJyZXNzIHx8IG51bGwsXG4gICAgICAgICAgICBlbWFpbDogZm9ybVZhbHVlLnBhcmVudF9lbWFpbCB8fCBudWxsXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgICByZWFzb246IGNvbmZpcm1WYWx1ZS5yZWFzb24sXG4gICAgICBvYnNlcnZhdGlvbjogY29uZmlybVZhbHVlLm9ic2VydmF0aW9uLFxuICAgIH07XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnVwZGF0ZVVzZXJCeUNvZGUocmVxdWVzdCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UubWVzc2FnZS5jb2RlID09PSAxKSB7XG4gICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGljb246ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIHRpdGxlOiAnVXN1YXJpbyBhY3R1YWxpemFkbyBzYXRpc2ZhY3RvcmlhbWVudGUnLFxuICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgdGltZXI6IDI1MDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy51c2VyVXBkYXRlZEV2ZW50LmVtaXQoKTtcbiAgICAgICAgICB0aGlzLmNsb3NlVGFibGUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5tZXNzYWdlLmNvZGUgPT09IDMpIHtcbiAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgcG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnLFxuICAgICAgICAgICAgdGl0bGU6IHJlc3BvbnNlLmRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgIHRleHQ6IHJlc3BvbnNlLmRhdGEuZXJyb3JzLFxuICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgdGltZXI6IDI1MDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGRhdGluZyB1c2VyOicsIGVycik7XG4gICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgcG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgIGljb246ICdlcnJvcicsXG4gICAgICAgICAgdGl0bGU6ICdIYSBvY3VycmlkbyB1biBlcnJvciBpbmVzcGVyYWRvJyxcbiAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgdGltZXI6IDI1MDAsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1EaWFsb2dzKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uaW52YWxpZCB8fFxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSB8fFxuICAgICAgIXRoaXMuaGFzRm9ybUNoYW5nZWQoKVxuICAgICkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICBjb25zb2xlLmxvZygnVmFsaWRhdGlvbiBmYWlsZWQ6Jywge1xuICAgICAgICBpbnZhbGlkOiB0aGlzLnVwZGF0ZVVzZXJGb3JtLmludmFsaWQsXG4gICAgICAgIG1pc21hdGNoOiB0aGlzLnVwZGF0ZVVzZXJGb3JtLmhhc0Vycm9yKCdtaXNtYXRjaCcpLFxuICAgICAgICBoYXNDaGFuZ2VzOiB0aGlzLmhhc0Zvcm1DaGFuZ2VkKClcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY29uZmlybUZvcm0ucmVzZXQoKTsgXG4gICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyA9IHRydWU7IFxuICB9XG5cbiAgYWNjZXB0Q29uZmlybURpYWxvZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maXJtRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmNvbmZpcm1Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZW5kVXBkYXRlUmVxdWVzdCgpO1xuICB9XG5cbiAgcmVqZWN0Q29uZmlybURpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLnJlc2V0KCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1EaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlybUZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLmdldCgncmVhc29uJyk/LnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLmdldCgnb2JzZXJ2YXRpb24nKT8uc2V0VmFsdWUoJycpO1xuICB9XG5cbiAgLy8gQWdyZWdhciBlc3RlIG3DqXRvZG8gcGFyYSB2ZXJpZmljYXIgZWwgcm9sIHkgbW9zdHJhci9vY3VsdGFyIGNhbXBvc1xuICBjaGVja1JvbGVGb3JBZGRpdGlvbmFsRmllbGRzKHJvbGU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHJvbGVOdW1iZXIgPSB0eXBlb2Ygcm9sZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChyb2xlLCAxMCkgOiByb2xlO1xuICAgIFxuICAgIC8vIFJvbGVzIHF1ZSBOTyByZXF1aWVyZW4gZW1haWxfaXB0IHkgc2VydmljZV9ob3VyOiBlc3R1ZGlhbnRlICgxMyksIHBvc2libGUgZXN0dWRpYW50ZSAoMTUpLCBwcm92ZWVkb3IgKDYwKVxuICAgIGNvbnN0IHJvbGVzV2l0aG91dEFkZGl0aW9uYWxGaWVsZHMgPSBbMTMsIDE1LCA2MF07XG4gICAgXG4gICAgLy8gU2kgZWwgcm9sIGFjdHVhbCBOTyBlc3TDoSBlbiBsYSBsaXN0YSBkZSByb2xlcyBzaW4gY2FtcG9zIGFkaWNpb25hbGVzLCBtb3N0cmFtb3MgbG9zIGNhbXBvc1xuICAgIHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPSAhcm9sZXNXaXRob3V0QWRkaXRpb25hbEZpZWxkcy5pbmNsdWRlcyhyb2xlTnVtYmVyKTtcbiAgfVxuXG5cbn0iLCI8bWFpbiAqbmdJZj1cInZpc2libGVNb2RhbFwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWxfY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlcl9tb2RhbCB5ZWxsb3ctMzAwXCI+XG4gICAgICA8aDE+QWN0dWFsaXphciB1c3VhcmlvPC9oMT5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlVGFibGUoKVwiPng8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZF9jb250YWluZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxmb3JtICpuZ0lmPVwidXBkYXRlVXNlckZvcm1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUdyb3VwXT1cInVwZGF0ZVVzZXJGb3JtXCI+XG4gICAgICAgICAgPCEtLSBVc2VyIEluZm9ybWF0aW9uIFNlY3Rpb24gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICA8aDI+SW5mb3JtYWNpw7NuIGRlbCB1c3VhcmlvPC9oMj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkXCI+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidOb21icmVzJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnRGViZSBpbmdyZXNhciBlbCBub21icmUnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSA/ICdNw61uaW1vIDMgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMzIgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICdTb2xvIGxldHJhcywgZXNwYWNpb3MgeSBndWlvbmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcignaGFzV2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIGVzcGFjaW9zIGFsIGluaWNpbyBvIGZpbmFsJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcignb25seVdoaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBzb2xvIGVzcGFjaW9zJyA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgZWwgbm9tYnJlJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidBcGVsbGlkb3MnXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnRGViZSBpbmdyZXNhciBsb3MgYXBlbGxpZG9zJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSA/ICdNw61uaW1vIDMgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAzMiBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnU29sbyBsZXRyYXMsIGVzcGFjaW9zIHkgZ3Vpb25lcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcignaGFzV2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIGVzcGFjaW9zIGFsIGluaWNpbyBvIGZpbmFsJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddLmhhc0Vycm9yKCdvbmx5V2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIHNvbG8gZXNwYWNpb3MnIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciBsb3MgYXBlbGxpZG9zJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW1haWwnXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgdW4gY29ycmVvIHbDoWxpZG8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAzMDAgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbCddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnVGllbmUgcXVlIHNlciB1biBlbWFpbCBjb3JyZWN0bycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbCddLmhhc0Vycm9yKCdoYXNXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gZXNwYWNpb3MgYWwgaW5pY2lvIG8gZmluYWwnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcignb25seVdoaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBzb2xvIGVzcGFjaW9zJyA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgdW4gY29ycmVvIHbDoWxpZG8nXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91clwiXG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidFbWFpbCBJUFQnXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWxfaXB0J10uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnRGViZSBpbmdyZXNhciB1biBjb3JyZW8gSVBUIHbDoWxpZG8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWxfaXB0J10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMjU1IGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWxfaXB0J10uaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICdUaWVuZSBxdWUgc2VyIHVuIGVtYWlsIGNvcnJlY3RvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdoYXNXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gZXNwYWNpb3MgYWwgaW5pY2lvIG8gZmluYWwnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWxfaXB0J10uaGFzRXJyb3IoJ29ubHlXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gc29sbyBlc3BhY2lvcycgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIHVuIGNvcnJlbyBJUFQgdsOhbGlkbydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyXCJcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInSG9yYXMgZGUgc2VydmljaW8nXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc2VydmljZV9ob3VyJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnRGViZSBpbmdyZXNhciBsYXMgaG9yYXMgZGUgc2VydmljaW8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc2VydmljZV9ob3VyJ10uaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICdTb2xvIG7Dum1lcm9zIHBlcm1pdGlkb3MnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc2VydmljZV9ob3VyJ10uaGFzRXJyb3IoJ21pbicpID8gJ0VsIHZhbG9yIGRlYmUgc2VyIG1heW9yIG8gaWd1YWwgYSAwJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddLmhhc0Vycm9yKCdtYXgnKSA/ICdFbCB2YWxvciBkZWJlIHNlciBtZW5vciBvIGlndWFsIGEgNDQnIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciBsYXMgaG9yYXMgZGUgc2VydmljaW8nXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNhbkVkaXRSb2xlOyBlbHNlIHJlYWRPbmx5Um9sZVwiPlxuICAgICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JvbGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JvbGUnXVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JvbGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdTZWxlY2Npb25lIHJvbCcgOiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncm9sZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJyb2xlc1wiXG4gICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cImNvZGVcIlxuICAgICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RSb2xlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInU2VsZWNjaW9uZSByb2wnXCJcbiAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkT25seVJvbGU+XG4gICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidSb2wnXCJcbiAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncm9sZSddXCJcbiAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidSb2wgcmVxdWVyaWRvJ1wiXG4gICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydnZW5kZXInXVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZSA9PT0gbnVsbCA/ICdTZWxlY2Npb25lIGfDqW5lcm8nIDogKHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZSB8IGdlbmRlckRpc3BsYXkpXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwiZ2VuZGVyc1wiXG4gICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RHZW5kZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInU2VsZWNjaW9uZSBnw6luZXJvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGhvbmVfaW5kaWNhdGl2ZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bob25lX2luZGljYXRpdmUnXVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cImluZGljYXRpdmVzXCJcbiAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdEluZGljYXRpdmUoJ3Bob25lX2luZGljYXRpdmUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidJbmRpY2F0aXZvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidUZWzDqWZvbm8nXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bob25lX251bWJlciddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciB1biBuw7ptZXJvIGRlIHRlbMOpZm9ubyB2w6FsaWRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkX3R5cGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkX3R5cGUnXVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkX3R5cGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdUaXBvIGRlIGRvY3VtZW50bycgOiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwiaWRUeXBlc1wiXG4gICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJZFR5cGUoJ2lkX2NhcmRfdHlwZScsICRldmVudClcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1RpcG8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnRGViZSBpbmdyZXNhciBlbCBuw7ptZXJvIGRlIGRvY3VtZW50bycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpID8gJ03DrW5pbW8gNSBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmQnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAyMCBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmQnXS5oYXNFcnJvcigncGF0dGVybicpID8gKHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkX3R5cGUnXS52YWx1ZSA9PT0gNyB8fCB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWUgPT09IDUgPyAnU29sbyBsZXRyYXMgeSBuw7ptZXJvcyBwZXJtaXRpZG9zJyA6ICdTb2xvIG7Dum1lcm9zIHBlcm1pdGlkb3MnKSA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgZWwgbsO6bWVybyBkZSBkb2N1bWVudG8nXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWVcIlxuICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjb3VudHJ5J11cIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjb3VudHJ5J10udmFsdWUgPT09IG51bGwgPyAnUGHDrXMgZGUgcmVzaWRlbmNpYScgOiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0Q291bnRyeSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJjb3VudHJpZXNcIlxuICAgICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInUGHDrXMgZGUgcmVzaWRlbmNpYSdcIlxuICAgICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddXCJcbiAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ10udmFsdWUgPT09IG51bGwgPyAnRGVwYXJ0YW1lbnRvIG8gZXN0YWRvJyA6IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RTdGF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwic3RhdGVzXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidEZXBhcnRhbWVudG8gbyBlc3RhZG8nXCJcbiAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddXCJcbiAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS52YWx1ZSA9PT0gbnVsbCA/ICdDaXVkYWQgZGUgcmVzaWRlbmNpYScgOiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdENpdHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cImNpdGllc1wiXG4gICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInQ2l1ZGFkIGRlIHJlc2lkZW5jaWEnXCJcbiAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1zdGF0dXNcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGFuLXN0YXR1c1wiPkVzdGFkbzwvc3Bhbj5cbiAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImp1c3RpZnlPcHRpb25zXCIgXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCIgXG4gICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCIgXG4gICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJjb2RlXCI+XG4gICAgICAgICAgICAgIDwvcC1zZWxlY3RCdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdXNlclJvbGVDb21tZXJjaWFsXCIgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICA8cC1jaGVja2JveFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNoYW5nZVBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkNhbWJpbyBkZSBjb250cmFzZcOxYVwiXG4gICAgICAgICAgICAgICAgW2JpbmFyeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPjwvcC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIiAqbmdJZj1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaGFuZ2VQYXNzd29yZCddLnZhbHVlXCI+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInQ29udHJhc2XDsWEnXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0xhIGNvbnRyYXNlw7FhIGVzIHJlcXVlcmlkYScgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSA/ICdNw61uaW1vIDUgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMyIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICAnSW5ncmVzZSB1bmEgY29udHJhc2XDsWEgdsOhbGlkYSdcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuXG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3Bhc3N3b3JkJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInUmVwZXRpciBjb250cmFzZcOxYSdcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncmVfcGFzc3dvcmQnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JlX3Bhc3N3b3JkJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJykgPyAnRGViZSByZXBldGlyIGxhIGNvbnRyYXNlw7FhJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JlX3Bhc3N3b3JkJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpID8gJ03DrW5pbW8gNSBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JlX3Bhc3N3b3JkJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMzIgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmhhc0Vycm9yKCdtaXNtYXRjaCcpID8gJ0xhcyBjb250cmFzZcOxYXMgbm8gY29pbmNpZGVuJyA6XG4gICAgICAgICAgICAgICAgJ1JlcGl0YSBsYSBjb250cmFzZcOxYSdcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBNZW5zYWplIGFkaWNpb25hbCBwYXJhIGVsIGVycm9yIGRlIG1pc21hdGNoIChvcGNpb25hbCwgc2kgcXVpZXJlcyBtb3N0cmFybG8gcG9yIHNlcGFyYWRvKSAtLT5cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSAmJiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2hhbmdlUGFzc3dvcmQnXS52YWx1ZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgPHNtYWxsID5MYXMgY29udHJhc2XDsWFzIG5vIGNvaW5jaWRlbjwvc21hbGw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBQYXJlbnQgSW5mb3JtYXRpb24gU2VjdGlvbiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIiAqbmdJZj1cIkRhdGFTdHVkZW50Py5jb2RzXCI+XG4gICAgICAgICAgICA8aDI+SW5mb3JtYWNpw7NuIGRlbCBhY3VkaWVudGU8L2gyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJEYXRhU3R1ZGVudD8uY29kc1wiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dQYXJlbnRTZWN0aW9uOyBlbHNlIG5vUGFyZW50TWVzc2FnZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkXCI+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidOb21icmVzJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X25hbWUnXVwiXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIGVsIG5vbWJyZSdcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0FwZWxsaWRvcydcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9sYXN0X25hbWUnXVwiXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIGxvcyBhcGVsbGlkb3MnXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidPY3VwYWNpw7NuJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X29jY3VwYXRpb24nXVwiXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIGxhIG9jdXBhY2nDs24nXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInZW1haWwnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW1haWwnXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfZW1haWwnXVwiXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIHVuIGNvcnJlbyB2w6FsaWRvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfaWRfY2FyZF90eXBlJ10udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9pZF9jYXJkX3R5cGUnXVwiXG4gICAgICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSBudWxsID8gJ1RpcG8gZGUgZG9jdW1lbnRvJyA6IHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfaWRfY2FyZF90eXBlJ10udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJpZFR5cGVzXCJcbiAgICAgICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJZFR5cGUoJ3BhcmVudF9pZF9jYXJkX3R5cGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInVGlwbyBkZSBkb2N1bWVudG8nXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidEb2N1bWVudG8nXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfaWRfY2FyZCddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgZWwgbsO6bWVybyBkZSBkb2N1bWVudG8nXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJ10udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJ11cIlxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiaW5kaWNhdGl2ZXNcIlxuICAgICAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdEluZGljYXRpdmUoJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0luZGljYXRpdm8nXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidUZWzDqWZvbm8nXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfcGhvbmVfbnVtYmVyJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciB1biBuw7ptZXJvIGRlIHRlbMOpZm9ubyB2w6FsaWRvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuXG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidEaXJlY2Npw7NuIGRlIG9maWNpbmEnXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfb2ZmaWNlX2FkcnJlc3MnXVwiXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIGxhIGRpcmVjY2nDs24nXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vUGFyZW50TWVzc2FnZT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vLXBhcmVudC1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgPHA+U2luIGFjdWRpZW50ZTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyLWlubmVyXCI+XG4gICAgICAgICAgICAgIDxpcHQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NlcnJhcidcIlxuICAgICAgICAgICAgICAgICAgW3ByaW1hcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2lzRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImNsb3NlVGFibGUoKVwiXG4gICAgICAgICAgICAgID48L2lwdC1idXR0b24+XG5cbiAgICAgICAgICAgICAgPGlwdC1idXR0b25cbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FjdHVhbGl6YXInXCJcbiAgICAgICAgICAgICAgICBbaXNFbmFibGVkXT1cIiFsb2FkZXIgJiYgdXBkYXRlVXNlckZvcm0udmFsaWQgJiYgIXVwZGF0ZVVzZXJGb3JtLmhhc0Vycm9yKCdtaXNtYXRjaCcpICYmIGhhc0Zvcm1DaGFuZ2VkKClcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInNob3dDb25maXJtRGlhbG9ncygpXCJcbiAgICAgICAgICAgICAgICBbcHJpbWFyeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIENvbmZpcm0gRGlhbG9nIHBhcmEgcmF6w7NuIHkgb2JzZXJ2YWNpw7NuIC0tPlxuPHAtZGlhbG9nXG4gICAgaGVhZGVyPVwiQ29uZmlybWFyIEFqdXN0ZSBkZSBVc3VhcmlvXCJcbiAgICBbKHZpc2libGUpXT1cInNob3dDb25maXJtRGlhbG9nXCJcbiAgICBbbW9kYWxdPVwidHJ1ZVwiXG4gICAgKG9uSGlkZSk9XCJjbG9zZUNvbmZpcm1EaWFsb2coKVwiXG4gID5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjb25maXJtRm9ybVwiIGNsYXNzPVwiY29uZmlybS1mb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cInAtZmllbGRcIj5cbiAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgIFtjb250cm9sXT1cImNvbmZpcm1Gb3JtLmNvbnRyb2xzWydyZWFzb24nXVwiXG4gICAgICAgIFtkYXRhXT1cInJlYXNvbnNcIlxuICAgICAgICBvcHRpb25MYWJlbD1cIm5hbWVcIlxuICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0UmVhc29uKCRldmVudClcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1NlbGVjY2lvbmUgbGEgcmF6w7NuJ1wiXG4gICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgPHNtYWxsICpuZ0lmPVwiY29uZmlybUZvcm0uY29udHJvbHNbJ3JlYXNvbiddLmludmFsaWQgJiYgY29uZmlybUZvcm0uY29udHJvbHNbJ3JlYXNvbiddLnRvdWNoZWRcIiBjbGFzcz1cInAtZXJyb3JcIj5cbiAgICAgICAgTGEgcmF6w7NuIGVzIHJlcXVlcmlkYVxuICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicC1maWVsZFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiY29udGFpbmVyLW9ic2VydmF0aW9uXCI+T2JzZXJ2YWNpw7NuPC9sYWJlbD5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICBpZD1cIm9ic2VydmF0aW9uXCJcbiAgICAgICAgcElucHV0VGV4dGFyZWFcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib2JzZXJ2YXRpb25cIlxuICAgICAgICByb3dzPVwiM1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRGVzY3JpYmUgZGV0YWxsZXMgYWRpY2lvbmFsZXMgZGVsIGFqdXN0ZVwiXG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICAgIDxzbWFsbCAqbmdJZj1cImNvbmZpcm1Gb3JtLmNvbnRyb2xzWydvYnNlcnZhdGlvbiddLmludmFsaWQgJiYgY29uZmlybUZvcm0uY29udHJvbHNbJ29ic2VydmF0aW9uJ10udG91Y2hlZFwiIGNsYXNzPVwicC1lcnJvclwiPlxuICAgICAgICBMYSBvYnNlcnZhY2nDs24gZXMgcmVxdWVyaWRhXG4gICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG4gIDxwLWZvb3Rlcj5cbiAgICA8aXB0LWJ1dHRvblxuICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIlxuICAgICAgW2J1dHRvblR5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgW2xhYmVsXT1cIidDYW5jZWxhcidcIlxuICAgICAgW3ByaW1hcnldPVwiZmFsc2VcIlxuICAgICAgW2lzRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgIChvbkNsaWNrKT1cImNsb3NlQ29uZmlybURpYWxvZygpXCJcbiAgICA+PC9pcHQtYnV0dG9uPlxuICAgIDxpcHQtYnV0dG9uXG4gICAgICBjbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeVwiXG4gICAgICBbYnV0dG9uVHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICBbbGFiZWxdPVwiJ0NvbmZpcm1hcidcIlxuICAgICAgW3ByaW1hcnldPVwidHJ1ZVwiXG4gICAgICBbaXNFbmFibGVkXT1cIiFsb2FkZXIgJiYgY29uZmlybUZvcm0udmFsaWRcIlxuICAgICAgKG9uQ2xpY2spPVwiYWNjZXB0Q29uZmlybURpYWxvZygpXCJcbiAgICA+PC9pcHQtYnV0dG9uPlxuICA8L3AtZm9vdGVyPlxuPC9wLWRpYWxvZz5cblxuPC9tYWluPiJdfQ==
|
|
875
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXVzZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy91cGRhdGUtdXNlci1mb3JtL3VwZGF0ZS11c2VyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvdXBkYXRlLXVzZXItZm9ybS91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBb0MsTUFBTSxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQTJDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3JGLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBUy9CLE1BQU0sT0FBTyx1QkFBdUI7SUE4Q2xDLFlBQ1UsRUFBZSxFQUNmLEdBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixXQUF3QjtRQUp4QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWpEekIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzNDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHdEQsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQiwyQkFBc0IsR0FBVSxFQUFFLENBQUM7UUFDbkMsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixX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QUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLDRCQUE0QixDQUFDLElBQVM7UUFDcEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFeEUsNEdBQTRHO1FBQzVHLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxELDZGQUE2RjtRQUM3RixJQUFJLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkYsQ0FBQzs7b0hBcDVCVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixzTUFGdkIsRUFBRSwrQ0NiZiw4M2tCQW1XTzsyRkRwVk0sdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHNCQUFzQixhQUdyQixFQUFFO3FOQUdKLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE91dHB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgIFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy91c2VyLXNlcnZpY2UvdXNlci1zZXJ2aWNlJztcbmltcG9ydCB7ICBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvYmFzZS1zZXJ2aWNlL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyAgUGFyYW1ldGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvcGFyYW1ldGVycy1zZXJ2aWNlL3BhcmFtZXRlcnMuc2VydmljZSc7XG5pbXBvcnQgeyAgSUZvcm1EYXRhUnEgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy91c2VyL3VzZXItcnEubW9kZWwnO1xuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lwdC11cGRhdGUtdXNlci1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwZGF0ZS11c2VyLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91cGRhdGUtdXNlci1mb3JtLmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyB1cGRhdGVVc2VyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBEYXRhU3R1ZGVudDogYW55O1xuICBASW5wdXQoKSB2aXNpYmxlTW9kYWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIGNsb3NlTW9kYWxJUyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHVzZXJVcGRhdGVkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIHVwZGF0ZVVzZXJGb3JtITogRm9ybUdyb3VwO1xuICBjb25maXJtRm9ybSE6IEZvcm1Hcm91cDtcbiAgcGhvdG86IHN0cmluZyA9ICcnO1xuICBwaG9uZU51bWJlckluZGljYXRpdmVzOiBhbnlbXSA9IFtdO1xuICBpZFR5cGVzOiBhbnlbXSA9IFtdO1xuICBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3RhdGVzOiBhbnkgPSBbXTtcbiAgY2l0aWVzOiBhbnkgPSBbXTtcbiAgY291bnRyaWVzOiBhbnkgPSBbXTtcbiAgc2hvd1BhcmVudFNlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0VtYWlsSXB0OiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dDb25maXJtU2VjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXJhbWV0ZXJzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHBhcmFtZXRlcnNBbGw/OiBhbnk7XG4gIGluZGljYXRpdmVzOiBhbnlbXSA9IFtdO1xuICBjaXZpbFN0YXR1czogYW55W10gPSBbXTtcbiAgZ2VuZGVyczogYW55W10gPSBbXTtcbiAgc3RyYXR1bXM6IGFueVtdID0gW107XG4gIHNob3dDb25maXJtRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHVzZXJSb2xlQ29tbWVyY2lhbDpib29sZWFuID1mYWxzZTtcbiAgY2FuRWRpdFJvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcm9sZXM6IGFueVtdID0gW107XG4gIHNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaW5pdGlhbEZvcm1WYWx1ZTogYW55ID0gW107XG4gIHByaXZhdGUgaWRUeXBlU3Vic2NyaXB0aW9uPzogIFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBwZW5kaW5nSW5pdDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgaXNTdHVkZW50OiBib29sZWFuID0gZmFsc2U7XG4gIGp1c3RpZnlPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBcbiAgcmVhc29ucyA9IFtcbiAgICB7IG5hbWU6ICdDb3JyZWNjacOzbiBkZSBlcnJvcmVzIGVuIGRhdG9zIHBlcnNvbmFsZXMnLCBjb2RlOiAxIH0sXG4gICAgeyBuYW1lOiAnQ29ycmVjY2lvbiBkZSBkb2N1bWVudGFjaW9uJywgY29kZTogMiB9LFxuICAgIHsgbmFtZTogJ0FjdHVhbGl6YWNpw7NuIGRlIGNvbnRhY3RvJywgY29kZTogMyB9LFxuICAgIHsgbmFtZTogJ2NvcnJlY2Npb24gZGF0b3MgZGUgQWN1ZGllbnRlJywgY29kZTogNCB9LFxuICAgIHsgbmFtZTogJ0NhbWJpbyBkZSBjb250cmFzZcOxYScsIGNvZGU6IDUgfSxcbiAgICB7IG5hbWU6ICdDYW1iaW8gZGUgcmVzaWRlbmNpYScsIGNvZGU6IDYgfSxcbiAgICB7IG5hbWU6ICdTdXNwZW5zacOzbiBvIHJlYWN0aXZhY2nDs24gZGUgY3VlbnRhJywgY29kZTogNyB9LFxuICAgIHsgbmFtZTogJ090cm8nLCBjb2RlOiA4IH1cbiAgXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBwYXJhbWV0ZXJTZXJ2aWNlOiBQYXJhbWV0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnNldFJvbGVzKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgIHRoaXMuaW5pdENvbmZpcm1Gb3JtKCk7XG4gICAgdGhpcy52YWxpZGF0aW9uVXNlclJvbGUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0UGFyYW1ldGVycygpO1xuICAgIHRoaXMudHJhY2tJZFR5cGVDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXRKdXN0aWZ5T3B0aW9ucygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd2aXNpYmxlTW9kYWwnXSAmJiBjaGFuZ2VzWyd2aXNpYmxlTW9kYWwnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnNMb2FkZWQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAgIHRoaXMuc2V0SnVzdGlmeU9wdGlvbnMoKTtcbiAgICAgIHRoaXMudHJhY2tJZFR5cGVDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnZhbGlkYXRpb25Vc2VyUm9sZSgpO1xuICAgICAgdGhpcy5zZXRSb2xlcygpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfWVsc2UgIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nSW5pdCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaWRUeXBlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGluaXRDb25maXJtRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICByZWFzb246IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIG9ic2VydmF0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXV1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SnVzdGlmeU9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pc1N0dWRlbnQgPSB0aGlzLkRhdGFTdHVkZW50Py5yb2xlID09PSAxMztcblxuICAgIGlmICh0aGlzLmlzU3R1ZGVudCkge1xuICAgICAgLy8gTGlzdGEgY29tcGxldGEgcGFyYSBlc3R1ZGlhbnRlXG4gICAgICB0aGlzLmp1c3RpZnlPcHRpb25zID0gW1xuICAgICAgICB7IG5hbWU6ICdBY3Rpdm8nLCBjb2RlOiAxIH0sXG4gICAgICAgIHsgbmFtZTogJ1N1c3BlbmRpZG8gcC9wYWdvJywgY29kZTogMiB9LFxuICAgICAgICB7IG5hbWU6ICdQYXVzYWRvIHByb2Nlc28nLCBjb2RlOiAzIH0sXG4gICAgICAgIHsgbmFtZTogJ1JlbW92aWRvJywgY29kZTogNCB9XG4gICAgICBdO1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3N0YXR1cycpPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qdXN0aWZ5T3B0aW9ucyA9IFtcbiAgICAgICAgeyBuYW1lOiAnQWN0aXZvJywgY29kZTogMSB9LFxuICAgICAgICB7IG5hbWU6ICdSZW1vdmlkbycsIGNvZGU6IDQgfVxuICAgICAgXTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdzdGF0dXMnKT8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFJvbGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHVzZXJSb2xlID0gdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyUm9sZSgpO1xuICAgIGlmICh1c2VyUm9sZSA9PT0gMSkge1xuICAgICAgdGhpcy5yb2xlcyA9IFtcbiAgICAgICAgeyBuYW1lOiAnU3VwZXIgQWRtaW4nLCBjb2RlOiAxIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIEFjYWRlbWljbycsIGNvZGU6IDEwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIEFjYWRlbWljbycsIGNvZGU6IDExIH0sXG4gICAgICAgIHsgbmFtZTogJ1RlYWNoZXIgQWNhZGVtaWNvJywgY29kZTogMTIgfSxcbiAgICAgICAgeyBuYW1lOiAnRXN0dWRpYW50ZScsIGNvZGU6IDEzIH0sXG4gICAgICAgIHsgbmFtZTogJ1Bvc2libGUgRXN0dWRpYW50ZScsIGNvZGU6IDE1IH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIE1hcmtldGluZycsIGNvZGU6IDIwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIE1hcmtldGluZycsIGNvZGU6IDIxIH0sXG4gICAgICAgIHsgbmFtZTogJ0F1eGlsaWFyIE1hcmtldGluZycsIGNvZGU6IDIyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMSB9LFxuICAgICAgICB7IG5hbWU6ICdBdXhpbGlhciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIENvbWVyY2lhbCcsIGNvZGU6IDQwIH0sXG4gICAgICAgIHsgbmFtZTogJ0Nvb3JkaW5hZG9yIENvbWVyY2lhbCcsIGNvZGU6IDQxIH0sXG4gICAgICAgIHsgbmFtZTogJ0FzZXNvciBDb21lcmNpYWwnLCBjb2RlOiA0MiB9LFxuICAgICAgICB7IG5hbWU6ICdMaWRlciBDYXJ0ZXJhJywgY29kZTogNTAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQ2FydGVyYScsIGNvZGU6IDUxIH0sXG4gICAgICAgIHsgbmFtZTogJ0FzZXNvciBDYXJ0ZXJhJywgY29kZTogNTIgfSxcbiAgICAgICAgeyBuYW1lOiAnUHJvdmVlZG9yJywgY29kZTogNjAgfVxuICAgICAgXTsgICAgICBcbiAgICB9ZWxzZSBpZiAodXNlclJvbGUgPT09IDMwKSB7XG4gICAgICB0aGlzLnJvbGVzID0gW1xuICAgICAgICAvLyB7IG5hbWU6ICdTdXBlciBBZG1pbicsIGNvZGU6IDEgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQWNhZGVtaWNvJywgY29kZTogMTAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQWNhZGVtaWNvJywgY29kZTogMTEgfSxcbiAgICAgICAgeyBuYW1lOiAnVGVhY2hlciBBY2FkZW1pY28nLCBjb2RlOiAxMiB9LFxuICAgICAgICB7IG5hbWU6ICdFc3R1ZGlhbnRlJywgY29kZTogMTMgfSxcbiAgICAgICAgeyBuYW1lOiAnUG9zaWJsZSBFc3R1ZGlhbnRlJywgY29kZTogMTUgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgTWFya2V0aW5nJywgY29kZTogMjAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgTWFya2V0aW5nJywgY29kZTogMjEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXV4aWxpYXIgTWFya2V0aW5nJywgY29kZTogMjIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQWRtaW5pc3RyYXRpdm8nLCBjb2RlOiAzMCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBBZG1pbmlzdHJhdGl2bycsIGNvZGU6IDMxIH0sXG4gICAgICAgIHsgbmFtZTogJ0F1eGlsaWFyIEFkbWluaXN0cmF0aXZvJywgY29kZTogMzIgfSxcbiAgICAgICAgeyBuYW1lOiAnTGlkZXIgQ29tZXJjaWFsJywgY29kZTogNDAgfSxcbiAgICAgICAgeyBuYW1lOiAnQ29vcmRpbmFkb3IgQ29tZXJjaWFsJywgY29kZTogNDEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXNlc29yIENvbWVyY2lhbCcsIGNvZGU6IDQyIH0sXG4gICAgICAgIHsgbmFtZTogJ0xpZGVyIENhcnRlcmEnLCBjb2RlOiA1MCB9LFxuICAgICAgICB7IG5hbWU6ICdDb29yZGluYWRvciBDYXJ0ZXJhJywgY29kZTogNTEgfSxcbiAgICAgICAgeyBuYW1lOiAnQXNlc29yIENhcnRlcmEnLCBjb2RlOiA1MiB9LFxuICAgICAgICB7IG5hbWU6ICdQcm92ZWVkb3InLCBjb2RlOiA2MCB9XG4gICAgICBdOyBcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMucm9sZXMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBnZXRQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhcmFtZXRlcnNMb2FkZWQpIHtcbiAgICAgIHRoaXMuc2V0UGFyYW1ldGVycygpO1xuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhcmFtZXRlclNlcnZpY2UuZ2V0QWxsUGFyYW1ldGVyc0NvZEZvcm0oKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVyc0FsbCA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIHRoaXMucGFyYW1ldGVyc0xvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0UGFyYW1ldGVycygpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XG4gICAgICAgIHRoaXMudHJhY2tJZFR5cGVDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvblVzZXJSb2xlKCk7XG4gICAgICAgIHRoaXMuc2V0Um9sZXMoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLnBlbmRpbmdJbml0ID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcGFyYW1ldGVyczonLCBlcnIpO1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnNMb2FkZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldFBhcmFtZXRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5pZFR5cGVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5UeXBlSWRDYXJkQnlDb3VudHJ5Q29sO1xuICAgIHRoaXMuaW5kaWNhdGl2ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmluZGljYXRpdmVzO1xuICAgIHRoaXMuY291bnRyaWVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5jb3VudHJ5O1xuICAgIHRoaXMuY2l2aWxTdGF0dXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmNpdmlsU3RhdHVzO1xuICAgIHRoaXMuc3RhdGVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5TdGF0ZTtcbiAgICB0aGlzLmNpdGllcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uY2l0eTtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzQWxsICYmIHRoaXMucGFyYW1ldGVyc0FsbC5nZW5kZXIpIHtcbiAgICAgIC8vIFRyYW5zZm9ybWFyIGdlbmRlciBlbiB1biBhcnJlZ2xvIGRlIHsgY29kZSwgbmFtZSB9XG4gICAgICB0aGlzLmdlbmRlcnMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyLm1hcCgoZ2VuZGVyOiBhbnkpID0+ICh7XG4gICAgICAgIGNvZGU6IGdlbmRlci5jb2RlLFxuICAgICAgICBuYW1lOiBnZW5kZXIubmFtZV9zcGFuaXNoXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2VuZGVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5zaG93UGFyZW50U2VjdGlvbiA9ICEhdGhpcy5EYXRhU3R1ZGVudD8uY29kcz8ucGFyZW50Py5jb2RlO1xuICAgIHRoaXMuY2hlY2tSb2xlRm9yQWRkaXRpb25hbEZpZWxkcyh0aGlzLkRhdGFTdHVkZW50LnJvbGUpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLnBvcHVsYXRlRm9ybSgpO1xuICB9XG5cbiAgaW5pdEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgdXNlclJvbGUgPSB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJSb2xlKCk7XG4gICAgdGhpcy5jYW5FZGl0Um9sZSA9IHVzZXJSb2xlID09PSAxIHx8IHVzZXJSb2xlID09PSAzMDtcblxuICAgIGNvbnN0IGJhc2VGb3JtID0ge1xuICAgICAgbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV1dLFxuICAgICAgbGFzdF9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg1KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIpXV0sXG4gICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV1dLFxuICAgICAgZ2VuZGVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBpZF9jYXJkX3R5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGlkX2NhcmQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldXSxcbiAgICAgIHBob25lX2luZGljYXRpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBob25lX251bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNSldXSxcbiAgICAgIGNvdW50cnk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHN0YXRlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBjaXR5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICByb2xlOiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiAhdGhpcy5jYW5FZGl0Um9sZX1dLFxuICAgICAgcGFzc3dvcmQ6IFsnJywgW11dLFxuICAgICAgcmVfcGFzc3dvcmQ6IFsnJywgW11dLFxuICAgICAgY2hhbmdlUGFzc3dvcmQ6IFtmYWxzZV0sXG4gICAgICBzdGF0dXM6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBlbWFpbF9pcHQ6IFsnJywgdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXSA6IFtdXSxcbiAgICAgIHNlcnZpY2VfaG91cjogWycnLCB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybigvXlswLTldKyQvKSwgVmFsaWRhdG9ycy5taW4oMCksIFZhbGlkYXRvcnMubWF4KDQ0KV0gOiBbXV1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuc2hvd1BhcmVudFNlY3Rpb24pIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oYmFzZUZvcm0sIHtcbiAgICAgICAgcGFyZW50X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNTApXV0sXG4gICAgICAgIHBhcmVudF9sYXN0X25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxNTApXV0sXG4gICAgICAgIHBhcmVudF9pZF9jYXJkX3R5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgcGFyZW50X2lkX2NhcmQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzMCldXSxcbiAgICAgICAgcGFyZW50X3Bob25lX2luZGljYXRpdmU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgcGFyZW50X3Bob25lX251bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldXSxcbiAgICAgICAgcGFyZW50X29jY3VwYXRpb246IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxuICAgICAgICBwYXJlbnRfb2ZmaWNlX2FkcnJlc3M6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDE1MCldXSxcbiAgICAgICAgcGFyZW50X2VtYWlsOiBbJycsIFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTUpXV1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVXNlckZvcm0gPSB0aGlzLmZiLmdyb3VwKGJhc2VGb3JtLCB7IHZhbGlkYXRvcnM6IHRoaXMucGFzc3dvcmRNYXRjaFZhbGlkYXRvciB9KTtcblxuICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdjaGFuZ2VQYXNzd29yZCcpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBwYXNzd29yZENvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncGFzc3dvcmQnKTtcbiAgICAgIGNvbnN0IHJlUGFzc3dvcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JlX3Bhc3N3b3JkJyk7XG5cbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIHBhc3N3b3JkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV0pO1xuICAgICAgICByZVBhc3N3b3JkQ29udHJvbD8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFzc3dvcmRDb250cm9sPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICBwYXNzd29yZENvbnRyb2w/LnNldFZhbHVlKCcnKTtcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LnNldFZhbHVlKCcnKTtcbiAgICAgIH1cblxuICAgICAgcGFzc3dvcmRDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICByZVBhc3N3b3JkQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3JlX3Bhc3N3b3JkJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSk7XG4gIH1cblxuICBwYXNzd29yZE1hdGNoVmFsaWRhdG9yKGZvcm06IEZvcm1Hcm91cCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCB7XG4gICAgY29uc3QgY2hhbmdlUGFzc3dvcmQgPSBmb3JtLmdldCgnY2hhbmdlUGFzc3dvcmQnKT8udmFsdWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBmb3JtLmdldCgncGFzc3dvcmQnKT8udmFsdWU7XG4gICAgY29uc3QgcmVQYXNzd29yZCA9IGZvcm0uZ2V0KCdyZV9wYXNzd29yZCcpPy52YWx1ZTtcbiAgICBpZiAoIWNoYW5nZVBhc3N3b3JkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbWlzbWF0Y2ggPSBwYXNzd29yZCAmJiByZVBhc3N3b3JkICYmIHBhc3N3b3JkICE9PSByZVBhc3N3b3JkO1xuICAgIHJldHVybiBtaXNtYXRjaCA/IHsgbWlzbWF0Y2g6IHRydWUgfSA6IG51bGw7XG4gIH1cblxuICBub1doaXRlc3BhY2VWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsIHtcbiAgICBpZiAoY29udHJvbC52YWx1ZSAmJiB0eXBlb2YgY29udHJvbC52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWRWYWx1ZSA9IGNvbnRyb2wudmFsdWUudHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWRWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHsgb25seVdoaXRlc3BhY2U6IHRydWUgfTtcbiAgICAgIH1cbiAgICAgIGlmIChjb250cm9sLnZhbHVlICE9PSB0cmltbWVkVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHsgaGFzV2hpdGVzcGFjZTogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyYW5zZm9ybVJvbGUocm9sZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCByb2xlTWFwOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge1xuICAgICAgMTogJ1N1cGVyIEFkbWluJyxcbiAgICAgIDEwOiAnTGlkZXIgQWNhZGVtaWNvJyxcbiAgICAgIDExOiAnQ29vcmRpbmFkb3IgQWNhZGVtaWNvJyxcbiAgICAgIDEyOiAnVGVhY2hlciBBY2FkZW1pY28nLFxuICAgICAgMTM6ICdFc3R1ZGlhbnRlJyxcbiAgICAgIDE1OiAnUG9zaWJsZSBFc3R1ZGlhbnRlJyxcbiAgICAgIDIwOiAnTGlkZXIgTWFya2V0aW5nJyxcbiAgICAgIDIxOiAnQ29vcmRpbmFkb3IgTWFya2V0aW5nJyxcbiAgICAgIDIyOiAnQXV4aWxpYXIgTWFya2V0aW5nJyxcbiAgICAgIDMwOiAnTGlkZXIgQWRtaW5pc3RyYXRpdm8nLFxuICAgICAgMzE6ICdDb29yZGluYWRvciBBZG1pbmlzdHJhdGl2bycsXG4gICAgICAzMjogJ0F1eGlsaWFyIEFkbWluaXN0cmF0aXZvJyxcbiAgICAgIDQwOiAnTGlkZXIgQ29tZXJjaWFsJyxcbiAgICAgIDQxOiAnQ29vcmRpbmFkb3IgQ29tZXJjaWFsJyxcbiAgICAgIDQyOiAnQXNlc29yIENvbWVyY2lhbCcsXG4gICAgICA1MDogJ0xpZGVyIENhcnRlcmEnLFxuICAgICAgNTE6ICdDb29yZGluYWRvciBDYXJ0ZXJhJyxcbiAgICAgIDUyOiAnQXNlc29yIENhcnRlcmEnLFxuICAgICAgNjA6ICdQcm92ZWVkb3InXG4gICAgfTtcbiAgICByZXR1cm4gcm9sZU1hcFtOdW1iZXIocm9sZSldIHx8ICcnO1xuICB9XG5cbiAgcG9wdWxhdGVGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLkRhdGFTdHVkZW50KSB7XG4gICAgICB0aGlzLmNoZWNrUm9sZUZvckFkZGl0aW9uYWxGaWVsZHModGhpcy5EYXRhU3R1ZGVudC5yb2xlKTtcblxuICAgICAgY29uc3QgZm9ybVZhbHVlOiBhbnkgPSB7XG4gICAgICAgIG5hbWU6IHRoaXMuRGF0YVN0dWRlbnQubmFtZSB8fCAnJyxcbiAgICAgICAgbGFzdF9uYW1lOiB0aGlzLkRhdGFTdHVkZW50Lmxhc3RfbmFtZSB8fCAnJyxcbiAgICAgICAgZW1haWw6IHRoaXMuRGF0YVN0dWRlbnQuZW1haWwgfHwgJycsXG4gICAgICAgIGdlbmRlcjogdGhpcy5EYXRhU3R1ZGVudC5nZW5kZXIgfHwgbnVsbCxcbiAgICAgICAgaWRfY2FyZF90eXBlOiB0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSB8fCAnJyxcbiAgICAgICAgaWRfY2FyZDogdGhpcy5EYXRhU3R1ZGVudC5pZF9jYXJkIHx8ICcnLFxuICAgICAgICBwaG9uZV9pbmRpY2F0aXZlOiB0aGlzLkRhdGFTdHVkZW50LnBob25lX2luZGljYXRpdmUgfHwgJycsXG4gICAgICAgIHBob25lX251bWJlcjogdGhpcy5EYXRhU3R1ZGVudC5waG9uZV9udW1iZXIgfHwgJycsXG4gICAgICAgIGNvdW50cnk6IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY291bnRyeSxcbiAgICAgICAgc3RhdGU6IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uc3RhdGUsXG4gICAgICAgIGNpdHk6IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uY29kZSxcbiAgICAgICAgcm9sZTogdGhpcy5jYW5FZGl0Um9sZSA/IHRoaXMuRGF0YVN0dWRlbnQucm9sZSA6IHRoaXMudHJhbnNmb3JtUm9sZSh0aGlzLkRhdGFTdHVkZW50LnJvbGUpIHx8ICcnLCAvLyBVc2UgY29kZSBmb3Igc2VsZWN0LCBcbiAgICAgICAgY2hhbmdlUGFzc3dvcmQ6IGZhbHNlLFxuICAgICAgICBwYXNzd29yZDogJycsXG4gICAgICAgIHJlX3Bhc3N3b3JkOiAnJyxcbiAgICAgICAgc3RhdHVzOiB0aGlzLkRhdGFTdHVkZW50LnVzZXJfc3RhdHVzIHx8ICcnXG4gICAgICB9O1xuXG4gICAgICAvLyBBZ3JlZ2FyIGNhbXBvcyBjb25kaWNpb25hbGVzXG4gICAgICBpZiAodGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91cikge1xuICAgICAgICBmb3JtVmFsdWUuZW1haWxfaXB0ID0gdGhpcy5EYXRhU3R1ZGVudC5lbWFpbF9pcHQgfHwgJyc7XG4gICAgICAgIGZvcm1WYWx1ZS5zZXJ2aWNlX2hvdXIgPSB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciB8fCAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybVZhbHVlLnNlcnZpY2VfaG91ciA9IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyIHx8IDA7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNob3dQYXJlbnRTZWN0aW9uKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZm9ybVZhbHVlLCB7XG4gICAgICAgICAgcGFyZW50X25hbWU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9sYXN0X25hbWU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5sYXN0X25hbWUgfHwgJycsXG4gICAgICAgICAgcGFyZW50X2lkX2NhcmRfdHlwZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmRfdHlwZSB8fCAnJyxcbiAgICAgICAgICBwYXJlbnRfaWRfY2FyZDogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmQgfHwgJycsXG4gICAgICAgICAgcGFyZW50X3Bob25lX2luZGljYXRpdmU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9pbmRpY2F0aXZlIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9waG9uZV9udW1iZXI6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5waG9uZV9udW1iZXIgfHwgJycsXG4gICAgICAgICAgcGFyZW50X29jY3VwYXRpb246IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5vY2N1cGF0aW9uIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9vZmZpY2VfYWRycmVzczogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lm9mZmljZV9hZHJyZXNzIHx8ICcnLFxuICAgICAgICAgIHBhcmVudF9lbWFpbDogdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmVtYWlsIHx8ICcnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVJZENhcmRWYWxpZGF0b3JzKHRoaXMuRGF0YVN0dWRlbnQuaWRfY2FyZF90eXBlKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucmVzZXQoKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0ucGF0Y2hWYWx1ZShmb3JtVmFsdWUpO1xuICAgICAgdGhpcy5pbml0aWFsRm9ybVZhbHVlID0geyAuLi50aGlzLnVwZGF0ZVVzZXJGb3JtLnZhbHVlIH07XG4gICAgICBpZiAoZm9ybVZhbHVlLmNvdW50cnkpIHtcbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmNvdW50cnk7XG4gICAgICAgIHRoaXMuc2VsZWN0Q291bnRyeSh0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvdW50cnkpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5zdGF0ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdFN0YXRlKHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uc3RhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5jaXR5KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Q2l0eSh0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvZGUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5pZF9jYXJkX3R5cGUpIHtcbiAgICAgICAgdGhpcy5pZFR5cGVzID0gdGhpcy5wYXJhbWV0ZXJzQWxsPy5UeXBlSWRDYXJkQnlDb3VudHJ5Q29sO1xuICAgICAgICB0aGlzLnNlbGVjdElkVHlwZSgnaWRfY2FyZF90eXBlJyx0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmRfdHlwZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLnBob25lX2luZGljYXRpdmUpIHtcbiAgICAgICAgdGhpcy5pbmRpY2F0aXZlcyA9IHRoaXMucGFyYW1ldGVyc0FsbD8uaW5kaWNhdGl2ZXM7XG4gICAgICAgIHRoaXMuc2VsZWN0SW5kaWNhdGl2ZSgncGhvbmVfaW5kaWNhdGl2ZScsIHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfaW5kaWNhdGl2ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm9ybVZhbHVlLnBhcmVudF9waG9uZV9pbmRpY2F0aXZlKSB7XG4gICAgICAgIHRoaXMuaW5kaWNhdGl2ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGw/LmluZGljYXRpdmVzO1xuICAgICAgICB0aGlzLnNlbGVjdEluZGljYXRpdmUoJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJywgdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LnBob25lX2luZGljYXRpdmUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1WYWx1ZS5nZW5kZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVyc0FsbCAmJiB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyKSB7XG4gICAgICAgICAgLy8gVHJhbnNmb3JtYXIgZ2VuZGVyIGVuIHVuIGFycmVnbG8gZGUgeyBjb2RlLCBuYW1lIH1cbiAgICAgICAgICB0aGlzLmdlbmRlcnMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuZ2VuZGVyLm1hcCgoZ2VuZGVyOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBjb2RlOiBnZW5kZXIuY29kZSxcbiAgICAgICAgICAgIG5hbWU6IGdlbmRlci5uYW1lX3NwYW5pc2hcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5nZW5kZXJzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RHZW5kZXIodGhpcy5EYXRhU3R1ZGVudC5nZW5kZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGlvblVzZXJSb2xlKCl7XG4gICAgY29uc3QgdXNlclJvbGUgPSB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJSb2xlKCk7XG4gICAgaWYgKHVzZXJSb2xlID09IDQwIHx8IHVzZXJSb2xlID09IDQxIHx8IHVzZXJSb2xlID09IDQyKSB7XG4gICAgICB0aGlzLnVzZXJSb2xlQ29tbWVyY2lhbCA9IHRydWU7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLnVzZXJSb2xlQ29tbWVyY2lhbCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNhbkVkaXRSb2xlID0gdXNlclJvbGUgPT09IDEgfHwgdXNlclJvbGUgPT09IDMwO1xuICB9XG4gIFxuICBjbG9zZVRhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZU1vZGFsID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q29uZmlybURpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlybUZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5pZFR5cGVzID0gW107XG4gICAgdGhpcy5jb3VudHJpZXMgPSBbXTtcbiAgICB0aGlzLmdlbmRlcnMgPSBbXTtcbiAgICB0aGlzLnVwZGF0ZUlkQ2FyZFZhbGlkYXRvcnMobnVsbCk7XG4gICAgdGhpcy5jbG9zZU1vZGFsSVMuZW1pdChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHRyYWNrSWRUeXBlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pZFR5cGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaWRUeXBlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IFxuICAgIH1cbiAgICB0aGlzLmlkVHlwZVN1YnNjcmlwdGlvbiA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdpZF9jYXJkX3R5cGUnKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUlkQ2FyZFZhbGlkYXRvcnModmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJZENhcmRWYWxpZGF0b3JzKGlkQ2FyZFR5cGU6IGFueSk6IHZvaWQge1xuXG4gICAgY29uc3QgaWRDYXJkQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdpZF9jYXJkJyk7XG4gICAgaWYgKCFpZENhcmRDb250cm9sKSByZXR1cm47XG5cbiAgICBpZiAoaWRDYXJkVHlwZSA9PSA3IHx8IGlkQ2FyZFR5cGUgPT0gNSkge1xuICAgICAgaWRDYXJkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKSxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW2EtekEtWjAtOV0qJC8pXG4gICAgICBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWRDYXJkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKSxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0qJC8pXG4gICAgICBdKTtcbiAgICB9XG4gICAgaWRDYXJkQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBzZWxlY3RJbmRpY2F0aXZlKGZpZWxkOiBzdHJpbmcsIGluZGljYXRpdmU6IGFueSk6IHZvaWQge1xuICAgIGlmIChpbmRpY2F0aXZlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldChmaWVsZCk/LnNldFZhbHVlKGluZGljYXRpdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldChmaWVsZCk/LnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdElkVHlwZShmaWVsZDogc3RyaW5nLCBpZFR5cGU6IGFueSk6IHZvaWQge1xuICAgIGlmIChpZFR5cGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KGZpZWxkKT8uc2V0VmFsdWUoaWRUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoZmllbGQpPy5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RHZW5kZXIoZ2VuZGVyOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZ2VuZGVyICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnZ2VuZGVyJyk/LnNldFZhbHVlKGdlbmRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdnZW5kZXInKT8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcbiAgICBjb25zdCBjb3VudHJ5TnVtYmVyID0gdHlwZW9mIGNvdW50cnkgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoY291bnRyeSwgMTApIDogY291bnRyeTtcbiAgICBpZiAoY291bnRyeSAhPSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjb3VudHJ5J10uc2V0VmFsdWUoY291bnRyeU51bWJlcik7XG4gICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzQWxsICYmIHRoaXMucGFyYW1ldGVyc0FsbD8uU3RhdGUpIHtcbiAgICAgICAgdGhpcy5zdGF0ZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuU3RhdGUuZmlsdGVyKChjb3Vyc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXRlID0gdHlwZW9mIGNvdXJzZS5jb3VudHJ5ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBwYXJzZUludChjb3Vyc2UuY291bnRyeSwgMTApXG4gICAgICAgICAgICA6IGNvdXJzZS5jb3VudHJ5O1xuICAgICAgICAgIHJldHVybiBzdGF0ZSA9PT0gY291bnRyeU51bWJlcjtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlcyA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuc3RhdGVzID0gW107XG4gICAgICB0aGlzLmNpdGllcyA9IFtdO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFN0YXRlKHN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZU51bWJlciA9IHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChzdGF0ZSwgMTApIDogc3RhdGU7XG4gICAgaWYgKHN0YXRlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnNldFZhbHVlKHN0YXRlTnVtYmVyKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgICB0aGlzLmdldFN0YXRlKHN0YXRlTnVtYmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdGUoc3RhdGU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZ2V0Q2l0eShzdGF0ZSk7XG4gIH1cblxuICBnZXRDaXR5KHN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZU51bWJlciA9IHR5cGVvZiBzdGF0ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludChzdGF0ZSwgMTApIDogc3RhdGU7XG4gICAgaWYgKHRoaXMucGFyYW1ldGVyc0FsbD8uY2l0eSkge1xuICAgICAgdGhpcy5jaXRpZXMgPSB0aGlzLnBhcmFtZXRlcnNBbGwuY2l0eS5maWx0ZXIoKGNvdXJzZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGNpdHlTdGF0ZSA9IHR5cGVvZiBjb3Vyc2Uuc3RhdGUgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoY291cnNlLnN0YXRlLCAxMCkgOiBjb3Vyc2Uuc3RhdGU7XG4gICAgICAgIHJldHVybiBjaXR5U3RhdGUgPT09IHN0YXRlTnVtYmVyO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2l0aWVzID0gW107XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q2l0eShjaXR5OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBjaXR5TnVtYmVyID0gdHlwZW9mIGNpdHkgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQoY2l0eSwgMTApIDogY2l0eTtcbiAgICBpZiAoY2l0eSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnNldFZhbHVlKGNpdHlOdW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0UmVhc29uKHJlYXNvbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtRm9ybS5jb250cm9sc1sncmVhc29uJ10uc2V0VmFsdWUocmVhc29uID8gcmVhc29uIDogbnVsbCk7XG4gIH1cblxuICBzZWxlY3RSb2xlKHJvbGU6IGFueSk6IHZvaWQge1xuICAgIGlmIChyb2xlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgncm9sZScpPy5zZXRWYWx1ZShyb2xlKTtcbiAgICAgIGNvbnN0IHByZXZpb3VzU2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPSB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyO1xuICAgICAgdGhpcy5jaGVja1JvbGVGb3JBZGRpdGlvbmFsRmllbGRzKHJvbGUpO1xuXG4gICAgICAvLyBTaSBzaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciBjYW1iacOzLCBhY3R1YWxpemFyIGxvcyB2YWxpZGFkb3Jlc1xuICAgICAgaWYgKHByZXZpb3VzU2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgIT09IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgICAgY29uc3QgZW1haWxJcHRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2VtYWlsX2lwdCcpO1xuICAgICAgICBjb25zdCBzZXJ2aWNlSG91ckNvbnRyb2wgPSB0aGlzLnVwZGF0ZVVzZXJGb3JtLmdldCgnc2VydmljZV9ob3VyJyk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgICAgICAvLyBBZ3JlZ2FyIGNhbXBvcyB5IHZhbGlkYWRvcmVzIHNpIG5vIGVzdGFiYW4gcHJlc2VudGVzXG4gICAgICAgICAgaWYgKCFlbWFpbElwdENvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGVtYWlsSXB0VmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmVtYWlsX2lwdCB8fCAnJztcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uYWRkQ29udHJvbCgnZW1haWxfaXB0JywgdGhpcy5mYi5jb250cm9sKGVtYWlsSXB0VmFsdWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTApXSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbWFpbElwdENvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjUwKV0pO1xuICAgICAgICAgICAgZW1haWxJcHRDb250cm9sLnNldFZhbHVlKHRoaXMuRGF0YVN0dWRlbnQuZW1haWxfaXB0IHx8ICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFzZXJ2aWNlSG91ckNvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VIb3VyVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LnNlcnZpY2VfaG91ciAhPSBudWxsID8gdGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgOiAwOyAvLyBVc2EgMCBjb21vIGZhbGxiYWNrXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmFkZENvbnRyb2woJ3NlcnZpY2VfaG91cicsIHRoaXMuZmIuY29udHJvbChzZXJ2aWNlSG91clZhbHVlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0rJC8pLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoNDQpXSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0rJC8pLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoNDQpXSk7XG4gICAgICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wuc2V0VmFsdWUodGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgIT0gbnVsbCA/IHRoaXMuRGF0YVN0dWRlbnQuc2VydmljZV9ob3VyIDogMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChlbWFpbElwdENvbnRyb2wpIHtcbiAgICAgICAgICAgIGVtYWlsSXB0Q29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgIGVtYWlsSXB0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzZXJ2aWNlSG91ckNvbnRyb2wpIHtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5zZXRWYWx1ZSgwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBlbWFpbElwdENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgc2VydmljZUhvdXJDb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyb2xlJyk/LnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA9IGZhbHNlO1xuICAgICAgY29uc3QgZW1haWxJcHRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ2VtYWlsX2lwdCcpO1xuICAgICAgY29uc3Qgc2VydmljZUhvdXJDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3NlcnZpY2VfaG91cicpO1xuICAgICAgaWYgKGVtYWlsSXB0Q29udHJvbCkge1xuICAgICAgICBlbWFpbElwdENvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIGVtYWlsSXB0Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIGVtYWlsSXB0Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgICBpZiAoc2VydmljZUhvdXJDb250cm9sKSB7XG4gICAgICAgIHNlcnZpY2VIb3VyQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgc2VydmljZUhvdXJDb250cm9sLnNldFZhbHVlKDApO1xuICAgICAgICBzZXJ2aWNlSG91ckNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgXG4gIGhhc0Zvcm1DaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5pbml0aWFsRm9ybVZhbHVlIHx8ICF0aGlzLkRhdGFTdHVkZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXRSYXdWYWx1ZSgpO1xuXG4gICAgaWYgKGN1cnJlbnRWYWx1ZS5jaGFuZ2VQYXNzd29yZCkge1xuICAgICAgY29uc3QgcGFzc3dvcmQgPSBjdXJyZW50VmFsdWUucGFzc3dvcmQ7XG4gICAgICBjb25zdCByZVBhc3N3b3JkID0gY3VycmVudFZhbHVlLnJlX3Bhc3N3b3JkO1xuICAgICAgY29uc3QgcGFzc3dvcmRDb250cm9sID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXQoJ3Bhc3N3b3JkJyk7XG4gICAgICBjb25zdCByZVBhc3N3b3JkQ29udHJvbCA9IHRoaXMudXBkYXRlVXNlckZvcm0uZ2V0KCdyZV9wYXNzd29yZCcpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHBhc3N3b3JkQ29udHJvbD8udmFsaWQgJiZcbiAgICAgICAgcmVQYXNzd29yZENvbnRyb2w/LnZhbGlkICYmXG4gICAgICAgIHBhc3N3b3JkID09PSByZVBhc3N3b3JkICYmXG4gICAgICAgIHBhc3N3b3JkPy50cmltKCkgIT09ICcnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRzVG9Db21wYXJlOiAoa2V5b2YgSUZvcm1EYXRhUnEpW10gPSBbXG4gICAgICAnbmFtZScsXG4gICAgICAnbGFzdF9uYW1lJyxcbiAgICAgICdlbWFpbCcsXG4gICAgICAnZ2VuZGVyJyxcbiAgICAgICdpZF9jYXJkX3R5cGUnLFxuICAgICAgJ2lkX2NhcmQnLFxuICAgICAgJ3Bob25lX2luZGljYXRpdmUnLFxuICAgICAgJ3Bob25lX251bWJlcicsXG4gICAgICAnY291bnRyeScsXG4gICAgICAnc3RhdGUnLFxuICAgICAgJ2NpdHknLFxuICAgICAgJ3JvbGUnLFxuICAgICAgJ3N0YXR1cydcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIpIHtcbiAgICAgIGZpZWxkc1RvQ29tcGFyZS5wdXNoKFxuICAgICAgICAnZW1haWxfaXB0JyxcbiAgICAgICAgJ3NlcnZpY2VfaG91cidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd1BhcmVudFNlY3Rpb24pIHtcbiAgICAgIGZpZWxkc1RvQ29tcGFyZS5wdXNoKFxuICAgICAgICAncGFyZW50X25hbWUnLFxuICAgICAgICAncGFyZW50X2xhc3RfbmFtZScsXG4gICAgICAgICdwYXJlbnRfaWRfY2FyZF90eXBlJyxcbiAgICAgICAgJ3BhcmVudF9pZF9jYXJkJyxcbiAgICAgICAgJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJyxcbiAgICAgICAgJ3BhcmVudF9waG9uZV9udW1iZXInLFxuICAgICAgICAncGFyZW50X29jY3VwYXRpb24nLFxuICAgICAgICAncGFyZW50X29mZmljZV9hZHJyZXNzJyxcbiAgICAgICAgJ3BhcmVudF9lbWFpbCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHNUb0NvbXBhcmUpIHtcbiAgICAgIGxldCBvcmlnaW5hbFZhbHVlOiBhbnk7XG4gICAgICBsZXQgY3VycmVudEZpZWxkVmFsdWU6IGFueSA9IGN1cnJlbnRWYWx1ZVtmaWVsZF07XG5cbiAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQubmFtZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGFzdF9uYW1lJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5sYXN0X25hbWUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5lbWFpbCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZW1haWxfaXB0JzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5zaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91ciA/ICh0aGlzLkRhdGFTdHVkZW50LmVtYWlsX2lwdCB8fCAnJykgOiAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZ2VuZGVyJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5nZW5kZXIgfHwgbnVsbDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaWRfY2FyZF90eXBlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5pZF9jYXJkX3R5cGUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2lkX2NhcmQnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmlkX2NhcmQgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3Bob25lX2luZGljYXRpdmUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LnBob25lX2luZGljYXRpdmUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3Bob25lX251bWJlcic6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQucGhvbmVfbnVtYmVyIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjb3VudHJ5JzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jaXR5Py5jb3VudHJ5IHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdGF0ZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY2l0eT8uc3RhdGUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NpdHknOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNpdHk/LmNvZGUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JvbGUnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLmNhbkVkaXRSb2xlID8gdGhpcy5EYXRhU3R1ZGVudC5yb2xlIDogdGhpcy50cmFuc2Zvcm1Sb2xlKHRoaXMuRGF0YVN0dWRlbnQucm9sZSkgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NlcnZpY2VfaG91cic6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyAodGhpcy5EYXRhU3R1ZGVudC5zZXJ2aWNlX2hvdXIgfHwgMCkgOiAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdGF0dXMnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LnVzZXJfc3RhdHVzIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfbmFtZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5uYW1lIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfbGFzdF9uYW1lJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/Lmxhc3RfbmFtZSB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGFyZW50X2lkX2NhcmRfdHlwZSc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5pZF9jYXJkX3R5cGU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9pZF9jYXJkJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LmlkX2NhcmQgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9waG9uZV9pbmRpY2F0aXZlJzpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gdGhpcy5EYXRhU3R1ZGVudC5jb2RzPy5wYXJlbnQ/LnBob25lX2luZGljYXRpdmUgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9waG9uZV9udW1iZXInOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ucGhvbmVfbnVtYmVyIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfb2NjdXBhdGlvbic6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5vY2N1cGF0aW9uIHx8ICcnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXJlbnRfb2ZmaWNlX2FkcnJlc3MnOlxuICAgICAgICAgIG9yaWdpbmFsVmFsdWUgPSB0aGlzLkRhdGFTdHVkZW50LmNvZHM/LnBhcmVudD8ub2ZmaWNlX2FkcnJlc3MgfHwgJyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhcmVudF9lbWFpbCc6XG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5lbWFpbCB8fCAnJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDdXJyZW50ID0gY3VycmVudEZpZWxkVmFsdWUgIT0gbnVsbCA/IFN0cmluZyhjdXJyZW50RmllbGRWYWx1ZSkudHJpbSgpIDogJyc7XG4gICAgICBjb25zdCBub3JtYWxpemVkT3JpZ2luYWwgPSBvcmlnaW5hbFZhbHVlICE9IG51bGwgPyBTdHJpbmcob3JpZ2luYWxWYWx1ZSkudHJpbSgpIDogJyc7XG5cbiAgICAgIGlmIChub3JtYWxpemVkQ3VycmVudCAhPT0gbm9ybWFsaXplZE9yaWdpbmFsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNob3dDb25maXJtU2VjdGlvbkhhbmRsZXIoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5pbnZhbGlkIHx8XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLmhhc0Vycm9yKCdtaXNtYXRjaCcpIHx8XG4gICAgICAhdGhpcy5oYXNGb3JtQ2hhbmdlZCgpXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNob3dDb25maXJtU2VjdGlvbiA9IHRydWU7XG4gIH1cblxuICBzZW5kVXBkYXRlUmVxdWVzdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maXJtRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmNvbmZpcm1Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy51cGRhdGVVc2VyRm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgIGNvbnN0IGNvbmZpcm1WYWx1ZSA9IHRoaXMuY29uZmlybUZvcm0udmFsdWU7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBhbnkgPSB7XG4gICAgICB0b2tlbjogdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyVG9rZW4oKSxcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgY29kZTogdGhpcy5EYXRhU3R1ZGVudC5jb2RlLFxuICAgICAgICBuYW1lOiBmb3JtVmFsdWUubmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBmb3JtVmFsdWUubGFzdF9uYW1lLFxuICAgICAgICBpZF9jYXJkX3R5cGU6IGZvcm1WYWx1ZS5pZF9jYXJkX3R5cGUsXG4gICAgICAgIGlkX2NhcmQ6IGZvcm1WYWx1ZS5pZF9jYXJkLFxuICAgICAgICBwaG9uZV9pbmRpY2F0aXZlOiBmb3JtVmFsdWUucGhvbmVfaW5kaWNhdGl2ZSxcbiAgICAgICAgcGhvbmVfbnVtYmVyOiBmb3JtVmFsdWUucGhvbmVfbnVtYmVyLFxuICAgICAgICBlbWFpbDogZm9ybVZhbHVlLmVtYWlsLFxuICAgICAgICBnZW5kZXI6IGZvcm1WYWx1ZS5nZW5kZXIsXG4gICAgICAgIGNpdHk6IGZvcm1WYWx1ZS5jaXR5LFxuICAgICAgICBzZXJ2aWNlX2hvdXI6IHRoaXMuc2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXIgPyBmb3JtVmFsdWUuc2VydmljZV9ob3VyIDogMCxcbiAgICAgICAgcm9sZTogdGhpcy5jYW5FZGl0Um9sZSA/IGZvcm1WYWx1ZS5yb2xlIDogdGhpcy5EYXRhU3R1ZGVudC5yb2xlLFxuICAgICAgICBzdGF0dXM6IGZvcm1WYWx1ZS5zdGF0dXMsXG4gICAgICAgIC4uLih0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID8geyBlbWFpbF9pcHQ6IGZvcm1WYWx1ZS5lbWFpbF9pcHQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGZvcm1WYWx1ZS5jaGFuZ2VQYXNzd29yZCAmJiBmb3JtVmFsdWUucGFzc3dvcmQgPyB7IHBhc3N3b3JkOiBmb3JtVmFsdWUucGFzc3dvcmQgfSA6IHt9KVxuICAgICAgfSxcbiAgICAgIHBhcmVudDogdGhpcy5zaG93UGFyZW50U2VjdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGNvZGU6IHRoaXMuRGF0YVN0dWRlbnQuY29kcz8ucGFyZW50Py5jb2RlIHx8IG51bGwsXG4gICAgICAgICAgICBuYW1lOiBmb3JtVmFsdWUucGFyZW50X25hbWUgfHwgbnVsbCxcbiAgICAgICAgICAgIGxhc3RfbmFtZTogZm9ybVZhbHVlLnBhcmVudF9sYXN0X25hbWUgfHwgbnVsbCxcbiAgICAgICAgICAgIGlkX2NhcmRfdHlwZTogZm9ybVZhbHVlLnBhcmVudF9pZF9jYXJkX3R5cGUgfHwgbnVsbCxcbiAgICAgICAgICAgIGlkX2NhcmQ6IGZvcm1WYWx1ZS5wYXJlbnRfaWRfY2FyZCB8fCBudWxsLFxuICAgICAgICAgICAgcGhvbmVfaW5kaWNhdGl2ZTogZm9ybVZhbHVlLnBhcmVudF9waG9uZV9pbmRpY2F0aXZlIHx8IG51bGwsXG4gICAgICAgICAgICBwaG9uZV9udW1iZXI6IGZvcm1WYWx1ZS5wYXJlbnRfcGhvbmVfbnVtYmVyIHx8IG51bGwsXG4gICAgICAgICAgICBvY2N1cGF0aW9uOiBmb3JtVmFsdWUucGFyZW50X29jY3VwYXRpb24gfHwgbnVsbCxcbiAgICAgICAgICAgIG9mZmljZV9hZHJyZXNzOiBmb3JtVmFsdWUucGFyZW50X29mZmljZV9hZHJyZXNzIHx8IG51bGwsXG4gICAgICAgICAgICBlbWFpbDogZm9ybVZhbHVlLnBhcmVudF9lbWFpbCB8fCBudWxsXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgICByZWFzb246IGNvbmZpcm1WYWx1ZS5yZWFzb24sXG4gICAgICBvYnNlcnZhdGlvbjogY29uZmlybVZhbHVlLm9ic2VydmF0aW9uLFxuICAgIH07XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnVwZGF0ZVVzZXJCeUNvZGUocmVxdWVzdCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UubWVzc2FnZS5jb2RlID09PSAxKSB7XG4gICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGljb246ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIHRpdGxlOiAnVXN1YXJpbyBhY3R1YWxpemFkbyBzYXRpc2ZhY3RvcmlhbWVudGUnLFxuICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgdGltZXI6IDI1MDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy51c2VyVXBkYXRlZEV2ZW50LmVtaXQoKTtcbiAgICAgICAgICB0aGlzLmNsb3NlVGFibGUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5tZXNzYWdlLmNvZGUgPT09IDMpIHtcbiAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgcG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnLFxuICAgICAgICAgICAgdGl0bGU6IHJlc3BvbnNlLmRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgIHRleHQ6IHJlc3BvbnNlLmRhdGEuZXJyb3JzLFxuICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgdGltZXI6IDI1MDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGRhdGluZyB1c2VyOicsIGVycik7XG4gICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgcG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgIGljb246ICdlcnJvcicsXG4gICAgICAgICAgdGl0bGU6ICdIYSBvY3VycmlkbyB1biBlcnJvciBpbmVzcGVyYWRvJyxcbiAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgdGltZXI6IDI1MDAsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2hvd0NvbmZpcm1EaWFsb2dzKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMudXBkYXRlVXNlckZvcm0uaW52YWxpZCB8fFxuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSB8fFxuICAgICAgIXRoaXMuaGFzRm9ybUNoYW5nZWQoKVxuICAgICkge1xuICAgICAgdGhpcy51cGRhdGVVc2VyRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpcm1Gb3JtLnJlc2V0KCk7IFxuICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2cgPSB0cnVlOyBcbiAgfVxuXG4gIGFjY2VwdENvbmZpcm1EaWFsb2coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlybUZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5jb25maXJtRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VuZFVwZGF0ZVJlcXVlc3QoKTtcbiAgfVxuXG4gIHJlamVjdENvbmZpcm1EaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtRm9ybS5yZXNldCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2cgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpcm1Gb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5jb25maXJtRm9ybS5nZXQoJ3JlYXNvbicpPy5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5jb25maXJtRm9ybS5nZXQoJ29ic2VydmF0aW9uJyk/LnNldFZhbHVlKCcnKTtcbiAgfVxuXG4gIC8vIEFncmVnYXIgZXN0ZSBtw6l0b2RvIHBhcmEgdmVyaWZpY2FyIGVsIHJvbCB5IG1vc3RyYXIvb2N1bHRhciBjYW1wb3NcbiAgY2hlY2tSb2xlRm9yQWRkaXRpb25hbEZpZWxkcyhyb2xlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCByb2xlTnVtYmVyID0gdHlwZW9mIHJvbGUgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQocm9sZSwgMTApIDogcm9sZTtcbiAgICBcbiAgICAvLyBSb2xlcyBxdWUgTk8gcmVxdWllcmVuIGVtYWlsX2lwdCB5IHNlcnZpY2VfaG91cjogZXN0dWRpYW50ZSAoMTMpLCBwb3NpYmxlIGVzdHVkaWFudGUgKDE1KSwgcHJvdmVlZG9yICg2MClcbiAgICBjb25zdCByb2xlc1dpdGhvdXRBZGRpdGlvbmFsRmllbGRzID0gWzEzLCAxNSwgNjBdO1xuICAgIFxuICAgIC8vIFNpIGVsIHJvbCBhY3R1YWwgTk8gZXN0w6EgZW4gbGEgbGlzdGEgZGUgcm9sZXMgc2luIGNhbXBvcyBhZGljaW9uYWxlcywgbW9zdHJhbW9zIGxvcyBjYW1wb3NcbiAgICB0aGlzLnNob3dFbWFpbElwdEFuZFNlcnZpY2VIb3VyID0gIXJvbGVzV2l0aG91dEFkZGl0aW9uYWxGaWVsZHMuaW5jbHVkZXMocm9sZU51bWJlcik7XG4gIH1cblxuXG59IiwiPG1haW4gKm5nSWY9XCJ2aXNpYmxlTW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsX2NvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfbW9kYWwgeWVsbG93LTMwMFwiPlxuICAgICAgPGgxPkFjdHVhbGl6YXIgdXN1YXJpbzwvaDE+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZVRhYmxlKClcIj54PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdyaWRfY29udGFpbmVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8Zm9ybSAqbmdJZj1cInVwZGF0ZVVzZXJGb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJ1cGRhdGVVc2VyRm9ybVwiPlxuICAgICAgICAgIDwhLS0gVXNlciBJbmZvcm1hdGlvbiBTZWN0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgPGgyPkluZm9ybWFjacOzbiBkZWwgdXN1YXJpbzwvaDI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInTm9tYnJlcydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgZWwgbm9tYnJlJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ25hbWUnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyAzIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMyIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbmFtZSddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnU29sbyBsZXRyYXMsIGVzcGFjaW9zIHkgZ3Vpb25lcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ2hhc1doaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBlc3BhY2lvcyBhbCBpbmljaW8gbyBmaW5hbCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWyduYW1lJ10uaGFzRXJyb3IoJ29ubHlXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gc29sbyBlc3BhY2lvcycgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIGVsIG5vbWJyZSdcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInQXBlbGxpZG9zJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2xhc3RfbmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgbG9zIGFwZWxsaWRvcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyAzIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMzIgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1NvbG8gbGV0cmFzLCBlc3BhY2lvcyB5IGd1aW9uZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snbGFzdF9uYW1lJ10uaGFzRXJyb3IoJ2hhc1doaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBlc3BhY2lvcyBhbCBpbmljaW8gbyBmaW5hbCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydsYXN0X25hbWUnXS5oYXNFcnJvcignb25seVdoaXRlc3BhY2UnKSA/ICdObyBzZSBwZXJtaXRlbiBzb2xvIGVzcGFjaW9zJyA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgbG9zIGFwZWxsaWRvcydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidlbWFpbCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VtYWlsJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdEZWJlIGluZ3Jlc2FyIHVuIGNvcnJlbyB2w6FsaWRvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMzAwIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcigncGF0dGVybicpID8gJ1RpZW5lIHF1ZSBzZXIgdW4gZW1haWwgY29ycmVjdG8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZW1haWwnXS5oYXNFcnJvcignaGFzV2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIGVzcGFjaW9zIGFsIGluaWNpbyBvIGZpbmFsJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsJ10uaGFzRXJyb3IoJ29ubHlXaGl0ZXNwYWNlJykgPyAnTm8gc2UgcGVybWl0ZW4gc29sbyBlc3BhY2lvcycgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIHVuIGNvcnJlbyB2w6FsaWRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd0VtYWlsSXB0QW5kU2VydmljZUhvdXJcIlxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW1haWwgSVBUJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgdW4gY29ycmVvIElQVCB2w6FsaWRvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDI1NSBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnVGllbmUgcXVlIHNlciB1biBlbWFpbCBjb3JyZWN0bycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydlbWFpbF9pcHQnXS5oYXNFcnJvcignaGFzV2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIGVzcGFjaW9zIGFsIGluaWNpbyBvIGZpbmFsJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2VtYWlsX2lwdCddLmhhc0Vycm9yKCdvbmx5V2hpdGVzcGFjZScpID8gJ05vIHNlIHBlcm1pdGVuIHNvbG8gZXNwYWNpb3MnIDpcbiAgICAgICAgICAgICAgICAnRGViZSBpbmdyZXNhciB1biBjb3JyZW8gSVBUIHbDoWxpZG8nXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RW1haWxJcHRBbmRTZXJ2aWNlSG91clwiXG4gICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0hvcmFzIGRlIHNlcnZpY2lvJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgbGFzIGhvcmFzIGRlIHNlcnZpY2lvJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddLmhhc0Vycm9yKCdwYXR0ZXJuJykgPyAnU29sbyBuw7ptZXJvcyBwZXJtaXRpZG9zJyA6XG4gICAgICAgICAgICAgICAgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3NlcnZpY2VfaG91ciddLmhhc0Vycm9yKCdtaW4nKSA/ICdFbCB2YWxvciBkZWJlIHNlciBtYXlvciBvIGlndWFsIGEgMCcgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzZXJ2aWNlX2hvdXInXS5oYXNFcnJvcignbWF4JykgPyAnRWwgdmFsb3IgZGViZSBzZXIgbWVub3IgbyBpZ3VhbCBhIDQ0JyA6XG4gICAgICAgICAgICAgICAgJ0RlYmUgaW5ncmVzYXIgbGFzIGhvcmFzIGRlIHNlcnZpY2lvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5FZGl0Um9sZTsgZWxzZSByZWFkT25seVJvbGVcIj5cbiAgICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ10udmFsdWVcIlxuICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ11cIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyb2xlJ10udmFsdWUgPT09IG51bGwgPyAnU2VsZWNjaW9uZSByb2wnIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JvbGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwicm9sZXNcIlxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJjb2RlXCJcbiAgICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0Um9sZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1NlbGVjY2lvbmUgcm9sJ1wiXG4gICAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZE9ubHlSb2xlPlxuICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInUm9sJ1wiXG4gICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JvbGUnXVwiXG4gICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInUm9sIHJlcXVlcmlkbydcIlxuICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ11cIlxuICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ10udmFsdWUgPT09IG51bGwgPyAnU2VsZWNjaW9uZSBnw6luZXJvJyA6ICh1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snZ2VuZGVyJ10udmFsdWUgfCBnZW5kZXJEaXNwbGF5KVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cImdlbmRlcnNcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0R2VuZGVyKCRldmVudClcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1NlbGVjY2lvbmUgZ8OpbmVybydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3Bob25lX2luZGljYXRpdmUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwaG9uZV9pbmRpY2F0aXZlJ11cIlxuICAgICAgICAgICAgICBbZGF0YV09XCJpbmRpY2F0aXZlc1wiXG4gICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJbmRpY2F0aXZlKCdwaG9uZV9pbmRpY2F0aXZlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInSW5kaWNhdGl2bydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInVGVsw6lmb25vJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwaG9uZV9udW1iZXInXVwiXG4gICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgdW4gbsO6bWVybyBkZSB0ZWzDqWZvbm8gdsOhbGlkbydcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ11cIlxuICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWUgPT09IG51bGwgPyAnVGlwbyBkZSBkb2N1bWVudG8nIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cImlkVHlwZXNcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SWRUeXBlKCdpZF9jYXJkX3R5cGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidUaXBvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0RvY3VtZW50bydcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgaW5ncmVzYXIgZWwgbsO6bWVybyBkZSBkb2N1bWVudG8nIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZCddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSA/ICdNw61uaW1vIDUgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpID8gJ03DoXhpbW8gMjAgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydpZF9jYXJkJ10uaGFzRXJyb3IoJ3BhdHRlcm4nKSA/ICh1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snaWRfY2FyZF90eXBlJ10udmFsdWUgPT09IDcgfHwgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2lkX2NhcmRfdHlwZSddLnZhbHVlID09PSA1ID8gJ1NvbG8gbGV0cmFzIHkgbsO6bWVyb3MgcGVybWl0aWRvcycgOiAnU29sbyBuw7ptZXJvcyBwZXJtaXRpZG9zJykgOlxuICAgICAgICAgICAgICAgICdEZWJlIGluZ3Jlc2FyIGVsIG7Dum1lcm8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY291bnRyeSddLnZhbHVlID09PSBudWxsID8gJ1Bhw61zIGRlIHJlc2lkZW5jaWEnIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NvdW50cnknXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdENvdW50cnkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwiY291bnRyaWVzXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1Bhw61zIGRlIHJlc2lkZW5jaWEnXCJcbiAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3N0YXRlJ10udmFsdWVcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydzdGF0ZSddLnZhbHVlID09PSBudWxsID8gJ0RlcGFydGFtZW50byBvIGVzdGFkbycgOiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snc3RhdGUnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0U3RhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cInN0YXRlc1wiXG4gICAgICAgICAgICAgIFtkZWZhdWx0VGV4dF09XCInRGVwYXJ0YW1lbnRvIG8gZXN0YWRvJ1wiXG4gICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2l0eSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydjaXR5J10udmFsdWUgPT09IG51bGwgPyAnQ2l1ZGFkIGRlIHJlc2lkZW5jaWEnIDogdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NpdHknXS52YWx1ZVwiXG4gICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RDaXR5KCRldmVudClcIlxuICAgICAgICAgICAgICBbZGF0YV09XCJjaXRpZXNcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ0NpdWRhZCBkZSByZXNpZGVuY2lhJ1wiXG4gICAgICAgICAgICA+PC9pcHQtc2VsZWN0PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtc3RhdHVzXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi1zdGF0dXNcIj5Fc3RhZG88L3NwYW4+XG4gICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJqdXN0aWZ5T3B0aW9uc1wiIFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0YXR1c1wiIFxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiIFxuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwiY29kZVwiPlxuICAgICAgICAgICAgICA8L3Atc2VsZWN0QnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXVzZXJSb2xlQ29tbWVyY2lhbFwiIGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGFuZ2VQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJDYW1iaW8gZGUgY29udHJhc2XDsWFcIlxuICAgICAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L3AtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkXCIgKm5nSWY9XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1snY2hhbmdlUGFzc3dvcmQnXS52YWx1ZVwiPlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0NvbnRyYXNlw7FhJ1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddXCJcbiAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5oYXNFcnJvcigncmVxdWlyZWQnKSA/ICdMYSBjb250cmFzZcOxYSBlcyByZXF1ZXJpZGEnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5oYXNFcnJvcignbWlubGVuZ3RoJykgPyAnTcOtbmltbyA1IGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5oYXNFcnJvcignbWF4bGVuZ3RoJykgPyAnTcOheGltbyAzMiBjYXJhY3RlcmVzJyA6XG4gICAgICAgICAgICAgICAgJ0luZ3Jlc2UgdW5hIGNvbnRyYXNlw7FhIHbDoWxpZGEnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cblxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1JlcGV0aXIgY29udHJhc2XDsWEnXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3JlX3Bhc3N3b3JkJ11cIlxuICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpID8gJ0RlYmUgcmVwZXRpciBsYSBjb250cmFzZcOxYScgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKSA/ICdNw61uaW1vIDUgY2FyYWN0ZXJlcycgOlxuICAgICAgICAgICAgICAgIHVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydyZV9wYXNzd29yZCddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSA/ICdNw6F4aW1vIDMyIGNhcmFjdGVyZXMnIDpcbiAgICAgICAgICAgICAgICB1cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSA/ICdMYXMgY29udHJhc2XDsWFzIG5vIGNvaW5jaWRlbicgOlxuICAgICAgICAgICAgICAgICdSZXBpdGEgbGEgY29udHJhc2XDsWEnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gTWVuc2FqZSBhZGljaW9uYWwgcGFyYSBlbCBlcnJvciBkZSBtaXNtYXRjaCAob3BjaW9uYWwsIHNpIHF1aWVyZXMgbW9zdHJhcmxvIHBvciBzZXBhcmFkbykgLS0+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidXBkYXRlVXNlckZvcm0uaGFzRXJyb3IoJ21pc21hdGNoJykgJiYgdXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ2NoYW5nZVBhc3N3b3JkJ10udmFsdWVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxzbWFsbCA+TGFzIGNvbnRyYXNlw7FhcyBubyBjb2luY2lkZW48L3NtYWxsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gUGFyZW50IEluZm9ybWF0aW9uIFNlY3Rpb24gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCIgKm5nSWY9XCJEYXRhU3R1ZGVudD8uY29kc1wiPlxuICAgICAgICAgICAgPGgyPkluZm9ybWFjacOzbiBkZWwgYWN1ZGllbnRlPC9oMj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiRGF0YVN0dWRlbnQ/LmNvZHNcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UGFyZW50U2VjdGlvbjsgZWxzZSBub1BhcmVudE1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInTm9tYnJlcydcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9uYW1lJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBlbCBub21icmUnXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidBcGVsbGlkb3MnXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfbGFzdF9uYW1lJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBsb3MgYXBlbGxpZG9zJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInT2N1cGFjacOzbidcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9vY2N1cGF0aW9uJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBsYSBvY3VwYWNpw7NuJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VtYWlsJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2VtYWlsJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciB1biBjb3JyZW8gdsOhbGlkbydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfaWRfY2FyZF90eXBlJ11cIlxuICAgICAgICAgICAgICAgICAgW3NlbGVjdENvZGVdPVwidXBkYXRlVXNlckZvcm0uY29udHJvbHNbJ3BhcmVudF9pZF9jYXJkX3R5cGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdUaXBvIGRlIGRvY3VtZW50bycgOiB1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmRfdHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiaWRUeXBlc1wiXG4gICAgICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SWRUeXBlKCdwYXJlbnRfaWRfY2FyZF90eXBlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1RpcG8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X2lkX2NhcmQnXVwiXG4gICAgICAgICAgICAgICAgICBbdmFsaWRhdGVUZXh0XT1cIidEZWJlIGluZ3Jlc2FyIGVsIG7Dum1lcm8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICAgIDxpcHQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cInVwZGF0ZVVzZXJGb3JtLmNvbnRyb2xzWydwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZSddXCJcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImluZGljYXRpdmVzXCJcbiAgICAgICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJbmRpY2F0aXZlKCdwYXJlbnRfcGhvbmVfaW5kaWNhdGl2ZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidJbmRpY2F0aXZvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInVGVsw6lmb25vJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X3Bob25lX251bWJlciddXCJcbiAgICAgICAgICAgICAgICAgIFt2YWxpZGF0ZVRleHRdPVwiJ0RlYmUgaW5ncmVzYXIgdW4gbsO6bWVybyBkZSB0ZWzDqWZvbm8gdsOhbGlkbydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cblxuICAgICAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRGlyZWNjacOzbiBkZSBvZmljaW5hJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJ1cGRhdGVVc2VyRm9ybS5jb250cm9sc1sncGFyZW50X29mZmljZV9hZHJyZXNzJ11cIlxuICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRlVGV4dF09XCInRGViZSBpbmdyZXNhciBsYSBkaXJlY2Npw7NuJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1BhcmVudE1lc3NhZ2U+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1wYXJlbnQtbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxwPlNpbiBhY3VkaWVudGU8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lci1pbm5lclwiPlxuICAgICAgICAgICAgICA8aXB0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDZXJyYXInXCJcbiAgICAgICAgICAgICAgICAgIFtwcmltYXJ5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtpc0VuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJjbG9zZVRhYmxlKClcIlxuICAgICAgICAgICAgICA+PC9pcHQtYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxpcHQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBY3R1YWxpemFyJ1wiXG4gICAgICAgICAgICAgICAgW2lzRW5hYmxlZF09XCIhbG9hZGVyICYmIHVwZGF0ZVVzZXJGb3JtLnZhbGlkICYmICF1cGRhdGVVc2VyRm9ybS5oYXNFcnJvcignbWlzbWF0Y2gnKSAmJiBoYXNGb3JtQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJzaG93Q29uZmlybURpYWxvZ3MoKVwiXG4gICAgICAgICAgICAgICAgW3ByaW1hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPjwvaXB0LWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBDb25maXJtIERpYWxvZyBwYXJhIHJhesOzbiB5IG9ic2VydmFjacOzbiAtLT5cbjxwLWRpYWxvZ1xuICAgIGhlYWRlcj1cIkNvbmZpcm1hciBBanVzdGUgZGUgVXN1YXJpb1wiXG4gICAgWyh2aXNpYmxlKV09XCJzaG93Q29uZmlybURpYWxvZ1wiXG4gICAgW21vZGFsXT1cInRydWVcIlxuICAgIChvbkhpZGUpPVwiY2xvc2VDb25maXJtRGlhbG9nKClcIlxuICA+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiY29uZmlybUZvcm1cIiBjbGFzcz1cImNvbmZpcm0tZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwLWZpZWxkXCI+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbY29udHJvbF09XCJjb25maXJtRm9ybS5jb250cm9sc1sncmVhc29uJ11cIlxuICAgICAgICBbZGF0YV09XCJyZWFzb25zXCJcbiAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFJlYXNvbigkZXZlbnQpXCJcbiAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidTZWxlY2Npb25lIGxhIHJhesOzbidcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxzbWFsbCAqbmdJZj1cImNvbmZpcm1Gb3JtLmNvbnRyb2xzWydyZWFzb24nXS5pbnZhbGlkICYmIGNvbmZpcm1Gb3JtLmNvbnRyb2xzWydyZWFzb24nXS50b3VjaGVkXCIgY2xhc3M9XCJwLWVycm9yXCI+XG4gICAgICAgIExhIHJhesOzbiBlcyByZXF1ZXJpZGFcbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInAtZmllbGRcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRhaW5lci1vYnNlcnZhdGlvblwiPk9ic2VydmFjacOzbjwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgaWQ9XCJvYnNlcnZhdGlvblwiXG4gICAgICAgIHBJbnB1dFRleHRhcmVhXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9ic2VydmF0aW9uXCJcbiAgICAgICAgcm93cz1cIjNcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkRlc2NyaWJlIGRldGFsbGVzIGFkaWNpb25hbGVzIGRlbCBhanVzdGVcIlxuICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8c21hbGwgKm5nSWY9XCJjb25maXJtRm9ybS5jb250cm9sc1snb2JzZXJ2YXRpb24nXS5pbnZhbGlkICYmIGNvbmZpcm1Gb3JtLmNvbnRyb2xzWydvYnNlcnZhdGlvbiddLnRvdWNoZWRcIiBjbGFzcz1cInAtZXJyb3JcIj5cbiAgICAgICAgTGEgb2JzZXJ2YWNpw7NuIGVzIHJlcXVlcmlkYVxuICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuICA8cC1mb290ZXI+XG4gICAgPGlwdC1idXR0b25cbiAgICAgIGNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCJcbiAgICAgIFtidXR0b25UeXBlXT1cIididXR0b24nXCJcbiAgICAgIFtsYWJlbF09XCInQ2FuY2VsYXInXCJcbiAgICAgIFtwcmltYXJ5XT1cImZhbHNlXCJcbiAgICAgIFtpc0VuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAob25DbGljayk9XCJjbG9zZUNvbmZpcm1EaWFsb2coKVwiXG4gICAgPjwvaXB0LWJ1dHRvbj5cbiAgICA8aXB0LWJ1dHRvblxuICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIlxuICAgICAgW2J1dHRvblR5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgW2xhYmVsXT1cIidDb25maXJtYXInXCJcbiAgICAgIFtwcmltYXJ5XT1cInRydWVcIlxuICAgICAgW2lzRW5hYmxlZF09XCIhbG9hZGVyICYmIGNvbmZpcm1Gb3JtLnZhbGlkXCJcbiAgICAgIChvbkNsaWNrKT1cImFjY2VwdENvbmZpcm1EaWFsb2coKVwiXG4gICAgPjwvaXB0LWJ1dHRvbj5cbiAgPC9wLWZvb3Rlcj5cbjwvcC1kaWFsb2c+XG5cbjwvbWFpbj4iXX0=
|