@eqproject/eqp-dynamic-module 2.6.51 → 2.6.53
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/private/form-records/add-form-record/add-form-record.component.mjs +4 -3
- package/esm2020/lib/models/trigger.model.mjs +1 -1
- package/esm2020/lib/services/utilityHelper.services.mjs +16 -1
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +18 -2
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +18 -2
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/models/trigger.model.d.ts +1 -0
- package/lib/services/utilityHelper.services.d.ts +1 -0
- package/package.json +1 -1
package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs
CHANGED
|
@@ -173,14 +173,15 @@ export class AddFormRecordComponent {
|
|
|
173
173
|
];
|
|
174
174
|
GlobalService.debugLog('onSaveRecord - dynamicModuleParams', dynamicModuleParams);
|
|
175
175
|
this.utilityService.RunEndPointCall(this.endPointConfiguration.Records.SaveEndPoint, dynamicModuleParams, (res) => {
|
|
176
|
+
dynRec.ID = res.toString();
|
|
176
177
|
event.ID = res.toString();
|
|
177
178
|
this.checkTriggers(event);
|
|
178
|
-
this.afterSaveRecordEvent.emit(
|
|
179
|
+
this.afterSaveRecordEvent.emit(dynRec);
|
|
179
180
|
this.isSaving = false;
|
|
180
181
|
});
|
|
181
182
|
}
|
|
182
183
|
else {
|
|
183
|
-
this.saveRecordEvent.emit(
|
|
184
|
+
this.saveRecordEvent.emit(dynRec);
|
|
184
185
|
}
|
|
185
186
|
}
|
|
186
187
|
//#endregion onSaveRecord
|
|
@@ -784,4 +785,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
784
785
|
type: ViewChildren,
|
|
785
786
|
args: ["fieldTemplate"]
|
|
786
787
|
}] } });
|
|
787
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZvcm0tcmVjb3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXJlY29yZHMvYWRkLWZvcm0tcmVjb3JkL2FkZC1mb3JtLXJlY29yZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZm9ybS1yZWNvcmRzL2FkZC1mb3JtLXJlY29yZC9hZGQtZm9ybS1yZWNvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWEsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNILE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xKLE9BQU8sRUFBUSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFbkYsT0FBTyxFQUE2QyxhQUFhLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUU1SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFLcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQVcsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7OztBQVFqRyxNQUFNLE9BQU8sc0JBQXNCO0lBcUNqQyxZQUNVLEdBQXNCLEVBQ3ZCLGNBQW9DO1FBRG5DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3ZCLG1CQUFjLEdBQWQsY0FBYyxDQUFzQjtRQWxDcEMsV0FBTSxHQUFXLElBQUksQ0FBQyxDQUFDLFVBQVU7UUFFakMsV0FBTSxHQUFXLElBQUksQ0FBQyxDQUFDLFVBQVU7UUFDakMsU0FBSSxHQUFTLElBQUksQ0FBQyxDQUFDLGlCQUFpQjtRQUNwQyxXQUFNLEdBQW9CLElBQUksQ0FBQyxDQUFDLE9BQU87UUFDdkMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBSTlCLG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkUseUJBQW9CLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEUsUUFBRyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQzNELGdCQUFXLEdBQThCLElBQUksWUFBWSxFQUFlLENBQUM7UUFFbkYsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUc1QixnQkFBVyxHQUF3QyxFQUFFLENBQUM7UUFDdEQsdUJBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDeEMsa0JBQWEsR0FBRyxhQUFhLENBQUM7SUFRMUIsQ0FBQztJQUVMLFFBQVE7UUFHTixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFO1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDaEM7UUFFRCx3REFBd0Q7UUFDeEQsd0NBQXdDO1FBQ3hDLCtDQUErQztRQUMvQyx3R0FBd0c7UUFDeEcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUM7UUFFekQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUV2QyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLGFBQWEsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQTtZQUM3QyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDM0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7UUFFRCxnR0FBZ0c7UUFFaEcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QixhQUFhLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCOzs7T0FHRztJQUNILGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFDRCwyQkFBMkI7SUFFM0Isb0NBQW9DO0lBQ3BDLDBCQUEwQjtRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsaUJBQWlCO1FBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDckIsOEJBQThCO1lBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUU7WUFDOUIsb0JBQW9CO1lBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLDZCQUE2QjtTQUNsRDtJQUNILENBQUM7SUFDRCx1Q0FBdUM7SUFFdkMsNEJBQTRCO0lBQzVCLGtCQUFrQjtRQUVoQixvQkFBb0I7UUFDcEIsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQ25DLGlCQUFpQjtZQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7YUFBTTtZQUNMLG9DQUFvQztZQUNwQyxxQ0FBcUM7WUFDckMsaUNBQWlDO1lBQ2pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFDRCwrQkFBK0I7SUFFL0Isd0JBQXdCO0lBQ3hCOztPQUVHO0lBQ0gsY0FBYyxDQUFDLElBQWE7UUFDMUIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO1FBQ3pELElBQUksSUFBSSxFQUFFO1lBQ1IsbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7YUFBTTtZQUNMLDBDQUEwQztZQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFVLElBQUksQ0FBQyxNQUFPLENBQUMsQ0FBQztTQUMxQztJQUNILENBQUM7SUFDRCwyQkFBMkI7SUFFM0Isc0JBQXNCO0lBQ3RCOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFhO1FBQzlCLGFBQWEsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDckQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEQsSUFDRSxLQUFLLElBQUksSUFBSTtZQUNiLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJO1lBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUMvQztZQUNBLElBQUksTUFBTSxHQUFjLElBQUksU0FBUyxFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQztZQUM3QixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDbkMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQztZQUM5QixNQUFNLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdkUsSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDL0IsZUFBZTtnQkFDZixNQUFNLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ25DLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNuQyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0wsc0JBQXNCO2dCQUN0QixNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUE7Z0JBQzFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDckMsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNuQyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7YUFDaEM7WUFFRCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUM7WUFDcEksTUFBTSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUUzRCxpR0FBaUc7WUFDakcsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlHLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUV2RCxJQUFJLG1CQUFtQixHQUFHO2dCQUN4QjtvQkFDRSxTQUFTLEVBQUUsUUFBUTtvQkFDbkIsVUFBVSxFQUFFLE1BQU07b0JBQ2xCLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDO2lCQUNwQzthQUNGLENBQUM7WUFFRixhQUFhLENBQUMsUUFBUSxDQUFDLG9DQUFvQyxFQUFFLG1CQUFtQixDQUFDLENBQUE7WUFDakYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQ2pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUMvQyxtQkFBbUIsRUFDbkIsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDTixLQUFLLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDeEIsQ0FBQyxDQUNGLENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBQ0QseUJBQXlCO0lBRXpCLHFCQUFxQjtJQUNyQixXQUFXLENBQUMsS0FBYSxJQUFJLENBQUMsTUFBTTtRQUNsQyxNQUFNLG1CQUFtQixHQUN2QixJQUFJLEtBQUssRUFBc0IsQ0FBQztRQUNsQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDdkIsU0FBUyxFQUFFLElBQUk7WUFDZixVQUFVLEVBQUUsRUFBRTtZQUNkLFNBQVMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDO1NBQ3hDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUNqQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFDaEQsbUJBQW1CLEVBQ25CLENBQUMsR0FBUyxFQUFFLEVBQUU7WUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBRS9CLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFBRTtnQkFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQzNEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxFQUFXLENBQUM7YUFDM0M7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixhQUFhLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUMzRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFDRCx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBQ3ZCLHNFQUFzRTtJQUN0RSxhQUFhO1FBRVgsNEJBQTRCO1FBQzVCLElBQUksbUJBQW1CLEdBQUc7WUFDeEI7Z0JBQ0UsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUN2QixTQUFTLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQzthQUN4QztTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FDakMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQ2xELG1CQUFtQixFQUNuQixDQUFDLEdBQWMsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUVsQixJQUFJLENBQUMsTUFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQztZQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUV4QyxxREFBcUQ7WUFDckQsc0JBQXNCO1lBQ3RCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUNELDBCQUEwQjtJQUUxQiwrQkFBK0I7SUFDL0IscUJBQXFCLENBQUMsaUJBQTBCLEtBQUs7UUFDbkQsd0NBQXdDO1FBQ3hDLElBQUksbUJBQW1CLEdBQUc7WUFDeEI7Z0JBQ0UsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLFVBQVUsRUFBVyxJQUFJLENBQUMsTUFBTyxDQUFDLEtBQUs7Z0JBQ3ZDLFNBQVMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDO2FBQ3hDO1lBQ0Q7Z0JBQ0UsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFVBQVUsRUFBVyxJQUFJLENBQUMsTUFBTyxDQUFDLE9BQU87Z0JBQ3pDLFNBQVMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDO2FBQ3hDO1NBQ0YsQ0FBQztRQUNGLGFBQWEsQ0FBQyxRQUFRLENBQUMscUNBQXFDLEVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xGLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUNqQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUMxRCxtQkFBbUIsRUFDbkIsQ0FBQyxHQUFTLEVBQUUsRUFBRTtZQUNaLGFBQWEsQ0FBQyxRQUFRLENBQUMseUNBQXlDLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDdEUsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7WUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUUvQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3RFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUMzRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBVyxDQUFDO2FBQzNDO1lBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFOUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksa0JBQWtCLENBQUMsUUFBUSxFQUFFO2dCQUMzRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUMxQjtZQUVELElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzthQUN4QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsdUJBQXVCLENBQVUsSUFBSSxDQUFDLE1BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN4RDtRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUNELGtDQUFrQztJQUVsQyxpQ0FBaUM7SUFDakMsdUJBQXVCLENBQUMsUUFBZ0I7UUFFdEMsSUFBSSxtQkFBbUIsR0FBRztZQUN4QjtnQkFDRSxTQUFTLEVBQUUsVUFBVTtnQkFDckIsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLFNBQVMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDO2FBQ3hDO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUNqQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLHlCQUF5QixFQUM1RCxtQkFBbUIsRUFDbkIsQ0FBQyxHQUF5QixFQUFFLEVBQUU7WUFDNUIsYUFBYSxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUUzRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLGFBQWEsQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxhQUFhLENBQUMsc0JBQXNCLENBQUMsRUFBRTtvQkFDekcsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxDQUFDO2lCQUMzRDtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQyxDQUNGLENBQUM7SUFFSixDQUFDO0lBQ0Qsb0NBQW9DO0lBRXBDLHNCQUFzQjtJQUN0QixZQUFZO1FBQ1YsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQzNELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO1FBQ0QsYUFBYSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUNELHlCQUF5QjtJQUV6QixnQ0FBZ0M7SUFDaEM7O09BRUc7SUFDSyxzQkFBc0I7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBa0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ2hDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3BDLE1BQU0sU0FBUyxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxFQUFFO29CQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDN0I7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsYUFBYSxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELG1DQUFtQztJQUVuQzs7T0FFRztJQUNLLGlCQUFpQjtRQUN2QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQzdCLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRjtRQUNELGFBQWEsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWU7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFDUCxJQUFJLENBQUMsTUFBTyxFQUNyQixJQUFJLENBQUMsUUFBUSxDQUNkLENBQUM7UUFDRixhQUFhLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssaUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNsSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDbEIsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQ25ELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FDakMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsYUFBYSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQVFELGtDQUFrQztJQUNsQzs7T0FFRztJQUNLLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxNQUFjO1FBRW5ELGFBQWEsQ0FBQyxRQUFRLENBQUMsbUNBQW1DLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckUsSUFBSSxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckUsYUFBYSxDQUFDLFFBQVEsQ0FBQyw4Q0FBOEMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVsRixnQ0FBZ0M7UUFFaEMsSUFBSSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhFLGFBQWEsQ0FBQyxRQUFRLENBQUMsOENBQThDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUUxRixtQ0FBbUM7UUFDbkMsSUFBSSxRQUFRLEdBQVcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyw4RkFBOEY7UUFFbEssYUFBYSxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4RSxnQ0FBZ0M7UUFDaEMsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFFN0YsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQ0FBbUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRSxnQ0FBZ0M7UUFDaEMsT0FBTyxNQUFNLENBQUMsQ0FBQyw4Q0FBOEM7SUFFL0QsQ0FBQztJQUNELHFDQUFxQztJQUVyQywyQkFBMkI7SUFDbkIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQWMsRUFBRSxJQUFVO1FBQ3hELElBQUksaUJBQWlCLEdBQWUsRUFBRSxDQUFDLENBQUMsb0NBQW9DO1FBQzVFLDJFQUEyRTtRQUMzRSxxREFBcUQ7UUFFckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2pCLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNkLElBQUk7Z0JBQ0YsMkRBQTJEO2dCQUMzRCxpQ0FBaUM7Z0JBQ2pDLGdDQUFnQztnQkFDaEMsS0FBSztnQkFDTCxJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUVyQyxtRUFBbUU7Z0JBQ25FLDZCQUE2QjtnQkFDN0IsZ0ZBQWdGO2dCQUNoRix3QkFBd0I7Z0JBQ3hCLFFBQVEsS0FBSyxDQUFDLFNBQVMsRUFBRTtvQkFDdkIsS0FBSyxhQUFhLENBQUMsaUJBQWlCLENBQUM7d0JBQUU7NEJBQ3JDLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtnQ0FDMUMsMkNBQTJDO2dDQUMzQyx1SUFBdUk7Z0NBQ3ZJLElBQUksSUFBSSxHQUFHLG9CQUFvQixDQUFDLG9CQUFvQixDQUNsRCxLQUFLLENBQUMsT0FBTyxFQUNiLE1BQU0sRUFDTixJQUFJLENBQ0wsQ0FBQztnQ0FDRixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtvQ0FDckIsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7d0NBQzdCLEtBQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FDQUMvRDt5Q0FBTTt3Q0FDWSxLQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQ0FDdkQ7aUNBQ0Y7Z0NBQ0QsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFvQixLQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs2QkFDeEY7aUNBQU0sSUFBcUIsS0FBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLElBQXFCLEtBQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQ0FDdEcsZUFBZTs2QkFDaEI7aUNBQU0sSUFBcUIsS0FBTSxDQUFDLFdBQVcsSUFBSSxJQUFJLElBQXFCLEtBQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFO2dDQUNuRyw2Q0FBNkM7Z0NBQzVCLEtBQU0sQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFrQixLQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7NkJBQzVHOzRCQUVELElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQzs0QkFDbEIseUdBQXlHOzRCQUN6RyxtQ0FBbUM7NEJBQ25DLEtBQUssSUFBSSxHQUFHLElBQXFCLEtBQU0sQ0FBQyxVQUFVLEVBQUU7Z0NBQ2xELFFBQVEsQ0FBa0IsS0FBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQzs2QkFDekQ7NEJBQ2dCLEtBQU0sQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDOzRCQUM5QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFxQixLQUFNLENBQUMsY0FBYyxFQUFFO2dDQUN4RSxtQkFBbUI7Z0NBQ25CLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztnQ0FDZixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQ0FDeEMsS0FBSyxJQUFxQixLQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29DQUNyRCxLQUFLLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7Z0NBQ3pELENBQUMsQ0FBQyxDQUFDO2dDQUNILGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZDO2lDQUFNO2dDQUNMLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBb0IsS0FBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7NkJBQ3hGOzRCQUNELHFEQUFxRDs0QkFFckQsTUFBTTt5QkFDUDt3QkFBQSxDQUFDO29CQUNGLEtBQUssYUFBYSxDQUFDLGdCQUFnQixDQUFDO3dCQUFFOzRCQUNwQyxJQUFtQixLQUFNLENBQUMsU0FBUyxFQUFFO2dDQUNuQyxJQUFtQixLQUFNLENBQUMsZ0JBQWdCLElBQUksSUFBSSxFQUFFO29DQUNsRCxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQ0FDcEQ7cUNBQU07b0NBQ0wsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7aUNBQ3BEOzZCQUNGO2lDQUFNO2dDQUNMLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDOzZCQUNwRDs0QkFDRCxNQUFNO3lCQUNQO3dCQUFBLENBQUM7b0JBRUYsS0FBSyxhQUFhLENBQUMsVUFBVSxDQUFDO3dCQUFFOzRCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTs0QkFDeEQsOERBQThEOzRCQUM5RCxJQUFJLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7NEJBRXBKLHNDQUFzQzs0QkFDdEMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksR0FBRyxhQUFhLEdBQUcsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7NEJBRXRJLE1BQU07eUJBQ1A7d0JBQUEsQ0FBQztvQkFHRixLQUFLLGFBQWEsQ0FBQyxVQUFVLENBQUM7d0JBQUU7NEJBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQTs0QkFFaEUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtnQ0FDOUIsSUFBSSxhQUFhLENBQUM7Z0NBQ2xCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7b0NBQ2pDLDhEQUE4RDtvQ0FDOUQsYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztvQ0FDdEosT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxhQUFhLENBQUMsQ0FBQTtvQ0FDcEQsc0NBQXNDO29DQUN0QyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsa0NBQWtDLEdBQUcsYUFBYSxHQUFHLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDO2lDQUNoSztxQ0FBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFJLGlCQUFpQixFQUFFO29DQUNyRSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsMkNBQTJDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcscURBQXFELENBQUM7aUNBQzVLO3FDQUFNO29DQUNMLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcscURBQXFELENBQUM7aUNBQzFNO2dDQUVELHNDQUFzQztnQ0FDdEMsNElBQTRJO2dDQUM1SSxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBOzZCQUN6RTs0QkFFRCxNQUFNO3lCQUNQO3dCQUFBLENBQUM7b0JBRUYsS0FBSyxhQUFhLENBQUMsc0JBQXNCLENBQUM7d0JBQUU7NEJBRTFDLDhEQUE4RDs0QkFDOUQsSUFBSSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxHQUFHLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDOzRCQUVwSixzQ0FBc0M7NEJBQ3RDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLEdBQUcsYUFBYSxHQUFHLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEdBQUcsTUFBTSxDQUFDOzRCQUV0SSxNQUFNO3lCQUNQO3dCQUFBLENBQUM7b0JBRUYsS0FBSyxhQUFhLENBQUMsaUJBQWlCLENBQUM7d0JBQUU7NEJBQ3JDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7NEJBQ25DLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQXlCLEtBQU0sQ0FBQyxjQUFjLEVBQUU7Z0NBQzVFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFO29DQUM5QyxJQUFJLGdCQUFnQixHQUF1QyxLQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDLENBQUM7b0NBQzdHLElBQUksZ0JBQWdCLElBQUksSUFBSSxFQUFFO3dDQUM1QixpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztxQ0FDcEU7Z0NBQ0gsQ0FBQyxDQUFDLENBQUM7Z0NBQ0gsSUFBSSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQ0FDdEQsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzZCQUM3RTtpQ0FDSTtnQ0FDSCxJQUFJLGdCQUFnQixHQUF1QyxLQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dDQUN2SCxJQUFJLGdCQUFnQixJQUFJLElBQUksRUFBRTtvQ0FDNUIsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztpQ0FDNUQ7NkJBQ0Y7NEJBRUQsTUFBTTt5QkFDUDt3QkFBQSxDQUFDO29CQUVGLE9BQU8sQ0FBQyxDQUFDO3dCQUNQLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNwRDtpQkFDRjthQUNGO1lBQ0QsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FDRixDQUFBO1FBRUQsd0NBQXdDO1FBQ3hDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QixhQUFhLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDakUsdUNBQXVDO1FBQ3ZDLEtBQUssTUFBTSxNQUFNLElBQUksaUJBQWlCLEVBQUU7WUFDdEMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSTtnQkFDN0UsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFBO1NBQ2pDO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBQ0QsOEJBQThCO0lBRTlCLDZCQUE2QjtJQUNyQixtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsSUFBVTtRQUNwRCxJQUFJLFFBQVEsR0FBVyxtQkFBbUIsQ0FBQztRQUMzQyw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFvQixFQUFFLEVBQUU7WUFDM0MsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQ0FBbUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtZQUN0RSxJQUFJLFNBQVMsQ0FBQyxXQUFXLElBQUksSUFBSSxJQUFJLFNBQVMsQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFO2dCQUN2RSxTQUFTLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQzFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7Z0JBQzVELFNBQVMsQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUM7Z0JBQzlELFNBQVMsQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUM7Z0JBQzlELElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRTtvQkFDdkIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ2pIO3FCQUFNO29CQUNMLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7b0JBQ3hELFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7aUJBQ3ZEO2FBQ0Y7WUFDRCxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO2dCQUNuQyxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQzNHLGFBQWEsQ0FBQyxRQUFRLENBQUMsbUNBQW1DLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ3hFLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUN4RTtZQUNELElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BDLFFBQVEsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsR0FBRyw4Q0FBOEM7b0JBQ25JLDBDQUEwQyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUksR0FBRyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVU7b0JBQzVILDBDQUEwQyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLFdBQVc7b0JBQ3pILFlBQVksQ0FBQzthQUNoQjtpQkFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUkscUJBQXFCLENBQUMsNEJBQTRCLENBQUMsRUFBRTtnQkFDekksUUFBUSxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxHQUFHLDhDQUE4QztvQkFDbkksWUFBWSxDQUFDO2FBQ2hCO1lBRUQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUNILDREQUE0RDtRQUM1RCxRQUFRLElBQUksUUFBUSxDQUFDO1FBQ3JCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxnQ0FBZ0M7SUFFeEIscUNBQXFDLENBQUMsUUFBZ0IsRUFBRSxpQkFBNkIsRUFBRSxLQUFLO1FBQ2xHLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDOUMsT0FBZSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsRUFBVTtRQUNkLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxXQUFtQjtRQUNqRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN4QixHQUFHLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztZQUN0QixHQUFHLENBQUMsTUFBTSxHQUFHO2dCQUNYLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3hCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7Z0JBQzFCLE1BQU0sV0FBVyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBRW5DLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztnQkFDdEIsTUFBTSxRQUFRLEdBQUcsU0FBUyxHQUFHLFdBQVcsQ0FBQztnQkFFekMsTUFBTSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO2dCQUMxQixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUNsQixJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzNELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBSTtRQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBRTVCLHlFQUF5RTtZQUN6RSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsSUFBSSxJQUFJLEVBQUU7Z0JBQzdDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztnQkFDdkUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO2FBQzFJO2lCQUFNO2dCQUNMLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQzthQUNyQztZQUVELEtBQUssQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUM7UUFFM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLDZDQUE2QztJQUM3QyxhQUFhLENBQUMsTUFBYztRQUMxQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFdkIsYUFBYSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJGLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFO1lBQzlCLGFBQWEsQ0FBQyxRQUFRLENBQUMsdUNBQXVDLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDckMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDbkIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtvQkFDdkMsSUFBSSxDQUFDLFdBQVcsRUFBRTt3QkFBRSxPQUFPO3FCQUFFO29CQUM3QixJQUFJLGFBQWEsR0FBa0IsU0FBUyxDQUFDLGFBQThCLENBQUM7b0JBQzVFLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwRCxJQUFJLGNBQWMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNwRCxJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBRXZDLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxjQUFjLElBQUksV0FBVyxFQUFFO3dCQUN4RSxXQUFXLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQzVDLE9BQU87cUJBQ1I7b0JBRUQsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsSUFBSSxXQUFXLEVBQUU7d0JBQ3pFLFdBQVcsR0FBRyxLQUFLLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDNUMsT0FBTztxQkFDUjtvQkFFRCxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksY0FBYyxJQUFJLFdBQVcsRUFBRTt3QkFDeEUsV0FBVyxHQUFHLEtBQUssQ0FBQzt3QkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUM1QyxPQUFPO3FCQUNSO29CQUVELElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFjLEdBQUcsV0FBVyxFQUFFO3dCQUN4RSxXQUFXLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQzVDLE9BQU87cUJBQ1I7b0JBRUQsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGNBQWMsSUFBSSxXQUFXLEVBQUU7d0JBQ3hFLFdBQVcsR0FBRyxLQUFLLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDNUMsT0FBTztxQkFDUjtvQkFFRCxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxHQUFHLFdBQVcsRUFBRTt3QkFDeEUsV0FBVyxHQUFHLEtBQUssQ0FBQzt3QkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUM1QyxPQUFPO3FCQUNSO29CQUVELElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO3dCQUN2RixXQUFXLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQzVDLE9BQU87cUJBQ1I7b0JBRUQsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7d0JBQzNGLFdBQVcsR0FBRyxLQUFLLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDNUMsT0FBTztxQkFDUjtvQkFFRCxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO3dCQUNyRCxXQUFXLEdBQUcsS0FBSyxDQUFDO3dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQzVDLE9BQU87cUJBQ1I7b0JBRUQsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLEVBQUUsSUFBSSxXQUFXLEVBQUU7d0JBQ3BELFdBQVcsR0FBRyxLQUFLLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDNUMsT0FBTztxQkFDUjtnQkFFSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxhQUFhLENBQUMsUUFBUSxDQUFDLCtCQUErQixFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUVyRSxJQUFJLFdBQVcsRUFBRTtvQkFFZixvREFBb0Q7b0JBQ3BELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDNUQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFFdkUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDcEMsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQzt3QkFDbEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDeEUsSUFBSSxJQUFJLENBQUM7d0JBQ1QsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLHVCQUF1QixDQUFDLFFBQVEsRUFBRTs0QkFDMUQsSUFBSSxHQUFHLE9BQU8sQ0FBQTt5QkFDZjs2QkFBTTs0QkFDTCxJQUFJLEdBQUcsb0JBQW9CLENBQUMsb0JBQW9CLENBQzlDLE9BQU8sRUFDUCxNQUFNLEVBQ04sSUFBSSxDQUNMLENBQUM7eUJBQ0g7d0JBRUQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFFdkIsQ0FBQyxDQUFDLENBQUM7b0JBRUgsK0JBQStCO29CQUMvQixJQUFJLGFBQWEsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDbkQsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsc0NBQXNDO29CQUN0RSxhQUFhLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLHdDQUF3QztvQkFDdkUsYUFBYSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxhQUFhO29CQUM5QyxhQUFhLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLGlHQUFpRztvQkFDcEksYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUztvQkFFbEQsYUFBYSxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRSxhQUFhLENBQUMsQ0FBQztvQkFDeEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3RDO1lBRUgsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNO1FBQ25DLGFBQWEsQ0FBQyxRQUFRLENBQUMsZ0VBQWdFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxrRUFBa0UsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN0RyxhQUFhLENBQUMsUUFBUSxDQUFDLCtEQUErRCxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xHLENBQUM7O29IQTcxQlUsc0JBQXNCO3dHQUF0QixzQkFBc0IsMm1CQ3hCbkMsdzZKQW1HYzs0RkQzRUQsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGlCQUFpQjsySUFNbEIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxHQUFHO3NCQUFaLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFlUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9keW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEFuc3dlclN0eWxlLCBCYXNlRmllbGQsIERhdGFHZXR0ZXIsIERhdGFHZXR0ZXJUeXBlRW51bSwgRmllbGRJbnZpc2liaWxpdHlFbnVtLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm0sIEZvcm1TY2FsYXJUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgRHluUmVjb3JkLCBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUZpZWxkRml4Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZHluYW1pYy1tb2R1bGUtZmllbGQtZml4L2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVuZFBvaW50Q29uZmlndXJhdGlvbiwgRW5kUG9pbnREYXRhUGFyYW1zLCBQYXJhbVR5cGVFbnVtIH0gZnJvbSAnLi8uLi8uLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgTGlzdFZhbHVlRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmllbGRzL2xpc3RWYWx1ZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTnVtZXJpY0ZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9udW1lcmljRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBJbWFnZVNlbGVjdG9yRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlU2VsZWN0b3JGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IER5bkF0dGFjaG1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZHluQXR0YWNobWVudCc7XHJcbmltcG9ydCB7IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhLCBldmVudE91dCB9IGZyb20gXCIuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtbG9hZGVyL2R5bmFtaWMtbG9hZGVyLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBMb2dpY09wZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2xvZ2ljT3BlcmF0b3IubW9kZWwnO1xyXG5pbXBvcnQgeyBGaXJlVHJpZ2dlciwgVHJpZ2dlciwgVHJpZ2dlclByb3BlcnR5VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvdHJpZ2dlci5tb2RlbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYWRkLWZvcm0tcmVjb3JkXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9hZGQtZm9ybS1yZWNvcmQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vYWRkLWZvcm0tcmVjb3JkLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkRm9ybVJlY29yZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb25zOiBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZztcclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSB1c2VySUQ6IHN0cmluZztcclxuICBASW5wdXQoKSBvcmdhSUQ6IHN0cmluZyA9IG51bGw7IC8vIHByZXZpZXdcclxuICBcclxuICBASW5wdXQoKSBmb3JtSUQ6IHN0cmluZyA9IG51bGw7IC8vIHByZXZpZXdcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtID0gbnVsbDsgLy8gcHJldmlldyBjb25maWdcclxuICBASW5wdXQoKSByZWNvcmQ6IFJlY29yZCB8IHN0cmluZyA9IG51bGw7IC8vIGVkaXRcclxuICBASW5wdXQoKSBvbmx5VmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzRHVwbGljYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaW5Db25maWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93QWxsRmllbGRzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIFF1ZXJ5RWRpdG9yQ29tcG9uZW50OiBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YTsgLy8gTCdpbnRlcm8gY29tcG9uZW50ZSBxdWVyeSBFZGl0b3JcclxuXHJcbiAgQE91dHB1dCgpIHNhdmVSZWNvcmRFdmVudDogRXZlbnRFbWl0dGVyPFJlY29yZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZD4oKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJTYXZlUmVjb3JkRXZlbnQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgQE91dHB1dCgpIG91dDogRXZlbnRFbWl0dGVyPGV2ZW50T3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+KCk7XHJcbiAgQE91dHB1dCgpIGZpcmVUcmlnZ2VyOiBFdmVudEVtaXR0ZXI8RmlyZVRyaWdnZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaXJlVHJpZ2dlcj4oKTtcclxuXHJcbiAgc2hvd1RpdGxlID0gdHJ1ZTtcclxuICBzaG93U2F2ZUJ1dHRvbiA9IHRydWU7XHJcbiAgc2hvd0JhY2tCdXR0b24gPSB0cnVlO1xyXG4gIGxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU2F2aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZm9ybWxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBmb3JtRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBmaWVsZEdyb3VwczogeyBba2V5OiBzdHJpbmddOiBBcnJheTxCYXNlRmllbGQ+IH0gPSB7fTtcclxuICBGb3JtU2NhbGFyVHlwZUVudW0gPSBGb3JtU2NhbGFyVHlwZUVudW07XHJcbiAgRmllbGRUeXBlRW51bSA9IEZpZWxkVHlwZUVudW07XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oXCJmaWVsZFRlbXBsYXRlXCIpXHJcbiAgZmllbGRUZW1wbGF0ZTogUXVlcnlMaXN0PER5bmFtaWNNb2R1bGVGaWVsZEZpeENvbXBvbmVudD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuXHJcbiAgICBpZiAodGhpcy5mb3JtICE9IG51bGwgJiYgdGhpcy5vcmdhSUQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZvcm0uT3JnYUlEID0gdGhpcy5vcmdhSUQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWRkIHB1w7IgZnVuemlvbmFyZSBhbmNoZSBjb21lIG1vZGlmaWNhIGUgY29tZSBwcmV2aWV3XHJcbiAgICAvLyBpbiBhZGQgYWJiaWFtbyBpbiBpbnB1dCBsJ0lEIGRlbCBGb3JtXHJcbiAgICAvLyBpbiBtb2RpZmljYSBhYmJpYW1vIGluIGlucHV0IGwnSUQgZGVsIFJlY29yZFxyXG4gICAgLy8gaW4gcHJldmlldyBhYmJpYW1vIGluIGlucHV0IGlsIEZvcm0oY2FzbyBjb25maWd1cmF0b3IpIG8gbCdJRCBkZWwgbW9kdWxvIG9uIG9ubHlWaWV3IGltcG9zdGF0byBhIHRydWVcclxuICAgIHRoaXMuc2hvd1RpdGxlID0gdGhpcy5jb25maWd1cmF0aW9ucy5zaG93VGl0bGU7XHJcbiAgICB0aGlzLnNob3dTYXZlQnV0dG9uID0gdGhpcy5jb25maWd1cmF0aW9ucy5zaG93U2F2ZUJ1dHRvbjtcclxuICAgIHRoaXMuc2hvd0JhY2tCdXR0b24gPSB0aGlzLmNvbmZpZ3VyYXRpb25zLnNob3dCYWNrQnV0dG9uO1xyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJBZGRGb3JtUmVjb3JkXCIpXHJcblxyXG4gICAgaWYgKHRoaXMucmVjb3JkID09IG51bGwpIHtcclxuICAgICAgdGhpcy5zaG93VGl0bGUgPSB0cnVlO1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQWRkRm9ybVJlY29yZCAtIG5ld1wiKVxyXG4gICAgICB0aGlzLnByZXZpZXdPck5ld1Jlc3BvbnNlUmVjb3JkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dUaXRsZSA9IGZhbHNlO1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQWRkRm9ybVJlY29yZCAtIGVkaXRcIiwgdGhpcy5yZWNvcmQpXHJcbiAgICAgIHRoaXMuZWRpdFJlc3BvbnNlUmVjb3JkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gbCdpbml6aWFsaXp6YXppb25lIHRlcm1pbmEgY29uIGlsIHJlY3VwZXJvIGRlbCByZWNvcmQgbyBjb24gbCdpbml6aWFsaXp6YXppb25lIGRlbCBmb3JtIHZ1b3RvXHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnb25pbml0IC0gRHluYUZvcm0nLCB0aGlzLmZvcm0pXHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gb25SZWNvcmRDaGFuZ2VcclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWwgY2FtYmlvIGRlbCB2YWxvcmUgZGkgb2duaSBwcm9wcmlldMOgIGRlbGwnb2dnZXR0byByZWNvcmQuXHJcbiAgICogU2VydmUgYWQgYWdnaW9ybmFyZSBpbCB2YWxvcmUgZGkgdHV0dGkgaSBjYW1waSBjaGUgaGFubm8gdW5hIGZvcm11bGEuXHJcbiAgICovXHJcbiAgb25SZWNvcmRDaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZFRlbXBsYXRlICYmIHRoaXMuZmllbGRUZW1wbGF0ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZmllbGRUZW1wbGF0ZS5mb3JFYWNoKChmKSA9PiBmLnVwZGF0ZUZpZWxkKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb25SZWNvcmRDaGFuZ2VcclxuXHJcbiAgLy8jcmVnaW9uIHByZXZpZXdPck5ld1Jlc3BvbnNlUmVjb3JkXHJcbiAgcHJldmlld09yTmV3UmVzcG9uc2VSZWNvcmQoKSB7XHJcbiAgICB0aGlzLnJlY29yZCA9IG5ldyBSZWNvcmQoKTtcclxuICAgIC8vIGFnZ2l1Z25pIG51b3ZvXHJcbiAgICBpZiAodGhpcy5mb3JtICE9IG51bGwpIHtcclxuICAgICAgLy8gcHJldmlldyBwZXIgaWwgY29uZmlndXJhdG9yXHJcbiAgICAgIHRoaXMuZmllbGRzQ29uZmlnKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybUlEICE9IG51bGwpIHtcclxuICAgICAgLy8gcHJldmlldyBwZXIgYWRtaW5cclxuICAgICAgdGhpcy5nZXRGb3JtQnlJRCgpOyAvLyBkZW50cm8gY2hpYW1hIGZpZWxkc0NvbmZpZ1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gcHJldmlld09yTmV3UmVzcG9uc2VSZWNvcmRcclxuXHJcbiAgLy8jcmVnaW9uIGVkaXRSZXNwb25zZVJlY29yZFxyXG4gIGVkaXRSZXNwb25zZVJlY29yZCgpIHtcclxuXHJcbiAgICAvLyBtb2RpaWx0w6AgbW9kaWZpY2FcclxuICAgIGlmICh0eXBlb2YgdGhpcy5yZWNvcmQgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgLy8gYWxsb3JhIMOoIHVuIElEXHJcbiAgICAgIHRoaXMuZ2V0UmVjb3JkQnlJRCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gaWwgcmVjb3JkIHZpZW5lIHBhc3NhdG8gY29tZSB0YWxlXHJcbiAgICAgIC8vICg8UmVjb3JkPnRoaXMucmVjb3JkKS5FbnRJRCA9IFwiM1wiO1xyXG4gICAgICAvLyAoPFJlY29yZD50aGlzLnJlY29yZCkuVmVyc2lvbjtcclxuICAgICAgdGhpcy5nZXRGb3JtQnlJRGFuZFZlcnNpb24odHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBlZGl0UmVzcG9uc2VSZWNvcmRcclxuXHJcbiAgLy8jcmVnaW9uIHNhdmVPckV4aXRGb3JtXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBzYWx2YXJlIGkgZGF0aSBpbnNlcml0aSBkYWxsJ3V0ZW50ZSB1bmEgdm9sdGEgY29uY2x1c2EgbGEgY29tcGlsYXppb25lIGRlbGxhIGZvcm0uXHJcbiAgICovXHJcbiAgc2F2ZU9yRXhpdEZvcm0oZXhpdDogYm9vbGVhbikge1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnYWRkLWZvcm0tcmVjb3JkIHNhdmVSZWNvcmRFdmVudCcpXHJcbiAgICBpZiAoZXhpdCkge1xyXG4gICAgICAvLyB0aGlzLnNhdmVSZWNvcmRFdmVudC5lbWl0KG51bGwpO1xyXG4gICAgICB0aGlzLm9uU2F2ZVJlY29yZChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMuc2F2ZVJlY29yZEV2ZW50LmVtaXQodGhpcy5yZWNvcmQpO1xyXG4gICAgICB0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vblNhdmVSZWNvcmQoKDxSZWNvcmQ+dGhpcy5yZWNvcmQpKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIHNhdmVPckV4aXRGb3JtXHJcblxyXG4gIC8vI3JlZ2lvbiBvblNhdmVSZWNvcmRcclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNhbHZhcmUgaWwgcmVjb3JkIGFnZ2l1bnRvIG8gbW9kaWZpY2F0by5cclxuICAgKiBTZSDDqCBzdGF0byBjb25maWd1cmF0byB1biBlbmRQb2ludCBwZXIgaWwgc2FsdmF0YWdnaW8gdmllbmUgZWZmZXR0dWF0YSB1bmEgY2hpYW1hdGEgYWwgc2VydmVyIHBhc3NhbmRvIGwnb2dnZXRvIGRhIHNhbHZhcmVcclxuICAgKiBuZWwgYm9keSBkZWxsYSBjaGlhbWF0YSwgYWx0cmltZW50aSBzY2F0ZW5hIGwnZXZlbnRvIFwic2F2ZVJlY29yZFwiLlxyXG4gICAqIEBwYXJhbSBldmVudCBPZ2dldHRvIGRpIHRpcG8gUmVjb3JkIGRhIHNhbHZhcmUuXHJcbiAgICovXHJcbiAgYXN5bmMgb25TYXZlUmVjb3JkKGV2ZW50OiBSZWNvcmQpIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ29uU2F2ZVJlY29yZCAtIGV2ZW50JywgZXZlbnQpXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdvblNhdmVSZWNvcmQgLSBmb3JtJywgdGhpcy5mb3JtKVxyXG4gICAgaWYgKFxyXG4gICAgICBldmVudCAhPSBudWxsICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICE9IG51bGwgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5TYXZlRW5kUG9pbnRcclxuICAgICkge1xyXG4gICAgICB2YXIgZHluUmVjOiBEeW5SZWNvcmQgPSBuZXcgRHluUmVjb3JkKCk7XHJcbiAgICAgIGR5blJlYy5JRCA9IGV2ZW50LklEID8/IG51bGw7XHJcbiAgICAgIGR5blJlYy5FbnRJRCA9IHRoaXMuZm9ybS5JRDtcclxuICAgICAgZHluUmVjLlZlcnNpb24gPSB0aGlzLmZvcm0uVmVyc2lvbjtcclxuICAgICAgZHluUmVjLnVzZXJJRCA9IHRoaXMudXNlcklEO1xyXG4gICAgICBkeW5SZWMuVmFsdWVzID0gZXZlbnQgPz8gbnVsbDtcclxuICAgICAgZHluUmVjLkhUTUxyZWFkYWJsZVZhbHVlcyA9IGF3YWl0IHRoaXMuY3JlYXRlSFRNTHJlYWRhYmxlVmFsdWVzKGV2ZW50KTtcclxuXHJcbiAgICAgIGlmIChldmVudC5GS19JbnNlcnRVc2VyID09IG51bGwpIHtcclxuICAgICAgICAvLyBOdW92byBSZWNvcmRcclxuICAgICAgICBkeW5SZWMuRktfSW5zZXJ0VXNlciA9IHRoaXMudXNlcklEO1xyXG4gICAgICAgIGR5blJlYy5JbnNlcnREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBkeW5SZWMuRktfVXBkYXRlVXNlciA9IHRoaXMudXNlcklEO1xyXG4gICAgICAgIGR5blJlYy5VcGRhdGVEYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBNb2RpZmljYSBkZWwgUmVjb3JkXHJcbiAgICAgICAgZHluUmVjLkZLX0luc2VydFVzZXIgPSBldmVudC5GS19JbnNlcnRVc2VyXHJcbiAgICAgICAgZHluUmVjLkluc2VydERhdGUgPSBldmVudC5JbnNlcnREYXRlO1xyXG4gICAgICAgIGR5blJlYy5GS19VcGRhdGVVc2VyID0gdGhpcy51c2VySUQ7XHJcbiAgICAgICAgZHluUmVjLlVwZGF0ZURhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgYWRkaXRpb25hbFBhcmFtcyA9IHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcyA9PSBudWxsID8gZXZlbnQuQWRkaXRpb25hbFBhcmFtcyA6IHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbFBhcmFtcztcclxuICAgICAgZHluUmVjLkFkZGl0aW9uYWxQYXJhbXMgPSBKU09OLnN0cmluZ2lmeShhZGRpdGlvbmFsUGFyYW1zKTtcclxuXHJcbiAgICAgIC8vIHZhciBhZGRpdGlvbmFsSW5mbyA9IHRoaXMuYWRkaXRpb25hbEluZm8gPT0gbnVsbCA/IGV2ZW50LkFkZGl0aW9uYWxJbmZvIDogdGhpcy5hZGRpdGlvbmFsSW5mbztcclxuICAgICAgdmFyIGFkZGl0aW9uYWxJbmZvID0gZXZlbnQuQWRkaXRpb25hbEluZm8gPT0gbnVsbCA/IHRoaXMuY29uZmlndXJhdGlvbnMuYWRkaXRpb25hbEluZm8gOiBldmVudC5BZGRpdGlvbmFsSW5mbztcclxuICAgICAgZHluUmVjLkFkZGl0aW9uYWxJbmZvID0gSlNPTi5zdHJpbmdpZnkoYWRkaXRpb25hbEluZm8pO1xyXG5cclxuICAgICAgdmFyIGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgUGFyYW1OYW1lOiBcIlJlY29yZFwiLFxyXG4gICAgICAgICAgUGFyYW1WYWx1ZTogZHluUmVjLFxyXG4gICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG5cclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnb25TYXZlUmVjb3JkIC0gZHluYW1pY01vZHVsZVBhcmFtcycsIGR5bmFtaWNNb2R1bGVQYXJhbXMpXHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuU2F2ZUVuZFBvaW50LFxyXG4gICAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgZXZlbnQuSUQgPSByZXMudG9TdHJpbmcoKTtcclxuICAgICAgICAgIHRoaXMuY2hlY2tUcmlnZ2VycyhldmVudCk7XHJcbiAgICAgICAgICB0aGlzLmFmdGVyU2F2ZVJlY29yZEV2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2F2ZVJlY29yZEV2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb25TYXZlUmVjb3JkXHJcblxyXG4gIC8vI3JlZ2lvbiBnZXRGb3JtQnlJRFxyXG4gIGdldEZvcm1CeUlEKGlkOiBzdHJpbmcgPSB0aGlzLmZvcm1JRCkge1xyXG4gICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgUGFyYW1WYWx1ZTogaWQsXHJcbiAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREVuZFBvaW50LFxyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAocmVzOiBGb3JtKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtID0gcmVzO1xyXG4gICAgICAgIHRoaXMuZm9ybS5PcmdhSUQgPSB0aGlzLm9yZ2FJRDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5PYmplY3RUcmlnZ2VycyAhPSBudWxsICYmIHRoaXMuZm9ybS5PYmplY3RUcmlnZ2VycyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMgPSBKU09OLnBhcnNlKHRoaXMuZm9ybS5PYmplY3RUcmlnZ2Vycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IG5ldyBBcnJheTxUcmlnZ2VyPigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXREYXRhR2V0dGVyKHRoaXMuZm9ybSk7XHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnZ2V0Rm9ybUJ5SUQgLSBEeW5hRm9ybScsIHRoaXMuZm9ybSlcclxuICAgICAgICB0aGlzLmZpZWxkc0NvbmZpZygpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7IH1cclxuICAgICk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBnZXRGb3JtQnlJRFxyXG5cclxuICAvLyNyZWdpb24gZ2V0UmVjb3JkQnlJRFxyXG4gIC8vIGNpIGVudHJvIHNvbG8gc2Ugw6ggc3RhdG8gcGFzc2F0byBpbCBwYXJhbWV0cm8gXCJyZWNvcmRcIiBjb21lIHN0cmluZ2FcclxuICBnZXRSZWNvcmRCeUlEKCkge1xyXG5cclxuICAgIC8vIHByZXBhcm8gaSBkYXRpIGRlbCByZWNvcmRcclxuICAgIHZhciBkeW5hbWljUmVjb3JkUGFyYW1zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5yZWNvcmQsXHJcbiAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QnlJREVuZFBvaW50LFxyXG4gICAgICBkeW5hbWljUmVjb3JkUGFyYW1zLFxyXG4gICAgICAocmVzOiBEeW5SZWNvcmQpID0+IHtcclxuICAgICAgICB0aGlzLnJlY29yZCA9IG5ldyBSZWNvcmQoKTtcclxuXHJcbiAgICAgICAgKDxSZWNvcmQ+dGhpcy5yZWNvcmQpID0gSlNPTi5wYXJzZShyZXMuU2VyaWFsaXplZFZhbHVlcyk7XHJcbiAgICAgICAgdGhpcy5yZWNvcmQuSUQgPSB0aGlzLmlzRHVwbGljYXRlID8gXCJcIiA6IHJlcy5JRDtcclxuICAgICAgICB0aGlzLnJlY29yZC5FbnRJRCA9IHJlcy5FbnRJRDtcclxuICAgICAgICB0aGlzLnJlY29yZC51c2VySUQgPSByZXMudXNlcklEO1xyXG4gICAgICAgIHRoaXMucmVjb3JkLlZlcnNpb24gPSByZXMuVmVyc2lvbjtcclxuICAgICAgICB0aGlzLnJlY29yZC5WYWx1ZXMgPSBKU09OLnBhcnNlKHJlcy5TZXJpYWxpemVkVmFsdWVzKTtcclxuICAgICAgICB0aGlzLnJlY29yZC5GS19JbnNlcnRVc2VyID0gcmVzLkZLX0luc2VydFVzZXI7XHJcbiAgICAgICAgdGhpcy5yZWNvcmQuRktfVXBkYXRlVXNlciA9IHJlcy5GS19VcGRhdGVVc2VyO1xyXG4gICAgICAgIHRoaXMucmVjb3JkLkluc2VydERhdGUgPSByZXMuSW5zZXJ0RGF0ZTtcclxuICAgICAgICB0aGlzLnJlY29yZC5VcGRhdGVEYXRlID0gcmVzLlVwZGF0ZURhdGU7XHJcblxyXG4gICAgICAgIC8vIHRoaXMudmlld01vZGUgPSBEeW5hbWljTW9kdWxlVmlld01vZGVFbnVtLkNPTVBJTEU7XHJcbiAgICAgICAgLy8gdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZ2V0Rm9ybUJ5SURhbmRWZXJzaW9uKCk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBnZXRSZWNvcmRCeUlEXHJcblxyXG4gIC8vI3JlZ2lvbiBnZXRGb3JtQnlJRGFuZFZlcnNpb25cclxuICBnZXRGb3JtQnlJRGFuZFZlcnNpb24oZ2V0QXR0YWNobWVudHM6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgLy8gcHJlcGFybyBsYSB2ZXJzaW9uZSBjb3JyZXR0YSBkZWwgZm9ybVxyXG4gICAgdmFyIGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBQYXJhbU5hbWU6IFwiRW50SURcIixcclxuICAgICAgICBQYXJhbVZhbHVlOiAoPFJlY29yZD50aGlzLnJlY29yZCkuRW50SUQsXHJcbiAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBQYXJhbU5hbWU6IFwiVmVyc2lvblwiLFxyXG4gICAgICAgIFBhcmFtVmFsdWU6ICg8UmVjb3JkPnRoaXMucmVjb3JkKS5WZXJzaW9uLFxyXG4gICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJnZXRGb3JtQnlJRGFuZFZlcnNpb24gLSB0aGlzIHJlY29yZFwiLCA8UmVjb3JkPnRoaXMucmVjb3JkKVxyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURBbmRWZXJzaW9uRW5kUG9pbnQsXHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgIChyZXM6IEZvcm0pID0+IHtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQUZURVIgZ2V0Rm9ybUJ5SURhbmRWZXJzaW9uIC0gdGhpcy5mb3JtXCIsIHJlcylcclxuICAgICAgICB0aGlzLmZvcm0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5mb3JtLk9yZ2FJRCA9IHRoaXMub3JnYUlEO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzICE9IG51bGwgJiYgdGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IEpTT04ucGFyc2UodGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzID0gbmV3IEFycmF5PFRyaWdnZXI+KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldERhdGFHZXR0ZXIodGhpcy5mb3JtKTtcclxuXHJcbiAgICAgICAgdGhpcy5jcmVhdGVSZWNvcmRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgdGhpcy5yZW9yZGVyRm9ybUZpZWxkcygpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2UpIHtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlRmllbGRHcm91cHMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghZ2V0QXR0YWNobWVudHMpIHtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZm9ybWxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QWxsUmVjb3JkQXR0YWNobWVudHMoKDxSZWNvcmQ+dGhpcy5yZWNvcmQpLklEKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBnZXRGb3JtQnlJRGFuZFZlcnNpb25cclxuXHJcbiAgLy8jcmVnaW9uIGdldEFsbFJlY29yZEF0dGFjaG1lbnRzXHJcbiAgZ2V0QWxsUmVjb3JkQXR0YWNobWVudHMocmVjb3JkSUQ6IHN0cmluZykge1xyXG5cclxuICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgUGFyYW1OYW1lOiBcImFuc3dlcklkXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogcmVjb3JkSUQsXHJcbiAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgIH1cclxuICAgIF07XHJcblxyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuR2V0QWxsQXR0YWNobWVudHNFbmRQb2ludCxcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgKHJlczogQXJyYXk8RHluQXR0YWNobWVudD4pID0+IHtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiR2V0QWxsQXR0YWNobWVudHNFbmRQb2ludCgpXCIsIHJlcyk7XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICAgIGlmIChmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bS5JbW1hZ2luZSB8fCBmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnSW1tYWdpbmUgY29uIG1hcmtlcnMnXSkge1xyXG4gICAgICAgICAgICB2YXIgYXR0YWNoSWQgPSB0aGlzLnJlY29yZFtmaWVsZC5OYW1lXTtcclxuICAgICAgICAgICAgdGhpcy5yZWNvcmRbZmllbGQuTmFtZV0gPSByZXMuZmluZCh4ID0+IHguSUQgPT0gYXR0YWNoSWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5mb3JtbG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBnZXRBbGxSZWNvcmRBdHRhY2htZW50c1xyXG5cclxuICAvLyNyZWdpb24gZmllbGRzQ29uZmlnXHJcbiAgZmllbGRzQ29uZmlnKCkge1xyXG4gICAgdGhpcy5jcmVhdGVSZWNvcmRQcm9wZXJ0aWVzKCk7XHJcbiAgICB0aGlzLnJlb3JkZXJGb3JtRmllbGRzKCk7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2UpIHtcclxuICAgICAgdGhpcy5jcmVhdGVGaWVsZEdyb3VwcygpO1xyXG4gICAgfVxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImZpZWxkc0NvbmZpZyAtIGZvcm1cIiwgdGhpcy5mb3JtKTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuZm9ybWxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBmaWVsZHNDb25maWdcclxuXHJcbiAgLy8jcmVnaW9uIGNyZWF0ZVJlY29yZFByb3BlcnRpZXNcclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNyZWFyZSBuZWxsJ29nZ2V0dG8gUmVjb3JkIGxlIHByb3ByaWV0w6AgbWFuY2FudGkgcmlzcGV0dG8gYWkgY2FtcGkgY2hlIGNvbXBvbmdvbm8gbGEgZm9ybS5cclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZVJlY29yZFByb3BlcnRpZXMoKSB7XHJcbiAgICBjb25zdCByZWNvcmRQcm9wZXJ0aWVzOiBBcnJheTxzdHJpbmc+ID0gT2JqZWN0LmtleXModGhpcy5yZWNvcmQpO1xyXG4gICAgdGhpcy5mb3JtLkZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoIXJlY29yZFByb3BlcnRpZXMuZmluZCgocCkgPT4gcCA9PT0gZmllbGQuTmFtZSkpIHtcclxuICAgICAgICB0aGlzLnJlY29yZFtmaWVsZC5OYW1lXSA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5Jbm5lckZvcm1zICYmIHRoaXMuZm9ybS5Jbm5lckZvcm1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5mb3JtLklubmVyRm9ybXMuZm9yRWFjaCgoZm9ybSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFycmF5TmFtZTogc3RyaW5nID0gZm9ybS5OYW1lLnNwbGl0KFwiIFwiKS5qb2luKFwiX1wiKTtcclxuICAgICAgICBpZiAoIXJlY29yZFByb3BlcnRpZXMuZmluZCgocCkgPT4gcCA9PT0gYXJyYXlOYW1lKSkge1xyXG4gICAgICAgICAgdGhpcy5yZWNvcmRbYXJyYXlOYW1lXSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY3JlYXRlUmVjb3JkUHJvcGVydGllcyAtIGZvcm1cIiwgdGhpcy5mb3JtKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJjcmVhdGVSZWNvcmRQcm9wZXJ0aWVzIC0gcmVjb3JkXCIsIHRoaXMucmVjb3JkKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIGNyZWF0ZVJlY29yZFByb3BlcnRpZXNcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByaW9yZGluYXJlIGkgY2FtcGkgY2hlIGNvbXBvbmdvbm8gbGEgZm9ybS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlb3JkZXJGb3JtRmllbGRzKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5GaWVsZHMgJiYgdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5GaWVsZHMuc29ydCgoYSwgYikgPT5cclxuICAgICAgICBhLk9yZGluYWxQb3NpdGlvbiA+IGIuT3JkaW5hbFBvc2l0aW9uID8gMSA6IGIuT3JkaW5hbFBvc2l0aW9uID4gYS5PcmRpbmFsUG9zaXRpb24gPyAtMSA6IDApO1xyXG4gICAgfVxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInJlb3JkZXJGb3JtRmllbGRzIC0gZm9ybVwiLCB0aGlzLmZvcm0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjcmVhcmUgaWwgRm9ybUdyb3VwIGNoZSByYXBwcmVzZW50YSBsYSBmb3JtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlRm9ybUdyb3VwKCkge1xyXG4gICAgdGhpcy5mb3JtRm9ybSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuQ3JlYXRlRm9ybUZvcm1Hcm91cChcclxuICAgICAgdGhpcy5mb3JtLkZpZWxkcyxcclxuICAgICAgKDxSZWNvcmQ+dGhpcy5yZWNvcmQpLFxyXG4gICAgICB0aGlzLm9ubHlWaWV3XHJcbiAgICApO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNyZWF0ZUZvcm1Hcm91cCAtIGZvcm1cIiwgdGhpcy5mb3JtKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY3JlYXJlIGkgZ3J1cHBpIGluIGN1aSByYWdncnVwcGFyZSBpIGNhbXBpIGRlbGxhIGZvcm0gaW4gYmFzZVxyXG4gICAqIGEgY29tZSDDqCBzdGF0YSBjb25maWd1cmF0YSBkYWxsJ3V0ZW50ZS5cclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUZpZWxkR3JvdXBzKCkge1xyXG4gICAgdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMuc29ydCgoYSwgYikgPT4gYS5PcmRpbmFsUG9zaXRpb24gPiBiLk9yZGluYWxQb3NpdGlvbiA/IDEgOiBiLk9yZGluYWxQb3NpdGlvbiA+IGEuT3JkaW5hbFBvc2l0aW9uID8gLTEgOiAwKVxyXG4gICAgICAubWFwKChnKSA9PiBnLk5hbWUpXHJcbiAgICAgIC5mb3JFYWNoKChncm91cE5hbWUpID0+IHtcclxuICAgICAgICB0aGlzLmZpZWxkR3JvdXBzW2dyb3VwTmFtZV0gPSB0aGlzLmZvcm0uRmllbGRzLmZpbHRlcihcclxuICAgICAgICAgIChmKSA9PiBmLkZpZWxkR3JvdXAgPT0gZ3JvdXBOYW1lXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY3JlYXRlRmllbGRHcm91cHMgLSBmb3JtXCIsIHRoaXMuZm9ybSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvLyNyZWdpb24gY3JlYXRlSFRNTHJlYWRhYmxlVmFsdWVzXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjcmVhcmUgaWwgRm9ybUdyb3VwIGNoZSByYXBwcmVzZW50YSBsYSBmb3JtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlSFRNTHJlYWRhYmxlVmFsdWVzKHJlY29yZDogUmVjb3JkKSB7XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNyZWF0ZUhUTUxyZWFkYWJsZVZhbHVlcyAtIHJlY29yZFwiLCByZWNvcmQpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNyZWF0ZUhUTUxyZWFkYWJsZVZhbHVlcyAtIGZvcm1cIiwgdGhpcy5mb3JtKTtcclxuXHJcbiAgICB2YXIgZm9ybW5hbWVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuICAgIHRoaXMuZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHsgZm9ybW5hbWVzLnB1c2goZmllbGQuTmFtZSk7IH0pO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNyZWF0ZUhUTUxyZWFkYWJsZVZhbHVlcyAtIGZvcm0gZmllbGRzIG5hbWVzXCIsIGZvcm1uYW1lcyk7XHJcblxyXG4gICAgLy8gYWxlcnQoXCJjb250aW51ZSBmb3IgdmFsdWVzP1wiKVxyXG5cclxuICAgIGxldCBvdXRwdXRWYWx1ZXNBcnJheSA9IGF3YWl0IHRoaXMuZ2V0UmVzcG9uc2VWYWx1ZXMocmVjb3JkLCB0aGlzLmZvcm0pO1xyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJjcmVhdGVIVE1McmVhZGFibGVWYWx1ZXMgLSBvdXRwdXRWYWx1ZXNBcnJheVwiLCBvdXRwdXRWYWx1ZXNBcnJheSk7XHJcblxyXG4gICAgLy8gYWxlcnQoXCJjb250aW51ZSBmb3IgdGVtcGxhdGVzP1wiKVxyXG4gICAgbGV0IHRlbXBsYXRlOiBzdHJpbmcgPSB0aGlzLmdldFJlc3BvbnNlVGVtcGxhdGUocmVjb3JkLCB0aGlzLmZvcm0pOyAvLyBvZ2dldHRvIG5lbCBxdWFsZSB2aWVuZSBjb3N0cnVpdG8gaWwgdGVtcGxhdGUgbyBjaGUgcHJlbmRlIGlsIHZhbG9yZSBkYSB1biB0ZW1wbGF0ZSBlc3Rlcm5vXHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNyZWF0ZUhUTUxyZWFkYWJsZVZhbHVlcyAtIHRlbXBsYXRlXCIsIHRlbXBsYXRlKTtcclxuICAgIC8vIGFsZXJ0KFwiY29udGludWUgZm9yIG91dHB1dD9cIilcclxuICAgIGNvbnN0IHJlZ2V4ID0gLyMjKFtcXHddKykjIy9nO1xyXG4gICAgY29uc3Qgb3V0cHV0ID0gdGhpcy5yZXBsYWNlVGVtcGxhdGVQbGFjZWhvbGRlcnNXaXRoVmFsdWVzKHRlbXBsYXRlLCBvdXRwdXRWYWx1ZXNBcnJheSwgcmVnZXgpXHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNyZWF0ZUhUTUxyZWFkYWJsZVZhbHVlcyAtIG91dHB1dFwiLCBvdXRwdXQpO1xyXG4gICAgLy8gYWxlcnQoXCJjb250aW51ZSBmb3IgZW5kaW5nP1wiKVxyXG4gICAgcmV0dXJuIG91dHB1dDsgLy8gb2dnZXR0byBjaGUgY29udGVycsOgIGwnb3V0cHV0IGVsYWJvcmF0byAgICBcclxuXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBjcmVhdGVIVE1McmVhZGFibGVWYWx1ZXNcclxuXHJcbiAgLy8jcmVnaW9uIGdldFJlc3BvbnNlVmFsdWVzXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRSZXNwb25zZVZhbHVlcyhyZWNvcmQ6IFJlY29yZCwgZm9ybTogRm9ybSkge1xyXG4gICAgbGV0IG91dHB1dFZhbHVlc0FycmF5OiBBcnJheTxhbnk+ID0gW107IC8vIGFycmF5IGNvbiBpIHZhbG9yaSBkZWxsZSByaXNwb3N0ZVxyXG4gICAgLy8oPER5blJlY29yZD50aGlzLnJlY29yZCkuVmFsdWVzIMOoIGxhIGxpc3RhIGRpIG9nZ2V0dGkge2ZpZWxkTmFtZTogdmFsb3JlfVxyXG4gICAgLy8gR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIihyZWNvcmQpLlZhbHVlc1wiLCByZWNvcmQpO1xyXG5cclxuICAgIGZvcm0uRmllbGRzLmZvckVhY2goXHJcbiAgICAgIGFzeW5jIChmaWVsZCkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAvL0dsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJnZXRSZXNwb25zZVZhbHVlcyBmaWVsZFwiLCBmaWVsZCk7XHJcbiAgICAgICAgICAvLyBsZXQgZm91bmRPYmplY3QgPSByZWNvcmQuZmluZChcclxuICAgICAgICAgIC8vICAgKG9iaikgPT4gb2JqID09PSBmaWVsZC5OYW1lXHJcbiAgICAgICAgICAvLyApO1xyXG4gICAgICAgICAgbGV0IGZvdW5kT2JqZWN0ID0gcmVjb3JkW2ZpZWxkLk5hbWVdO1xyXG5cclxuICAgICAgICAgIC8vIGZhcmUgdW4gZXZhbCBwZXIgcG9wb2xhcmUgaSB2YWx1ZVBhaXJzIHNlIMOoIHByZXNlbnRlIHVuYSBmb3JtdWxhXHJcbiAgICAgICAgICAvLyBwcmVuZGVyZSBsYSBsYWJlbCBjb3JyZXR0YVxyXG4gICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAgIC8vIFBSRVBBUk8gSUwgVkFMVUVQQUlSU1xyXG4gICAgICAgICAgc3dpdGNoIChmaWVsZC5GaWVsZFR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGdlbmVyaWNvXCJdOiB7XHJcbiAgICAgICAgICAgICAgaWYgKGZpZWxkLkZvcm11bGEgIT0gbnVsbCAmJiBmaWVsZC5Gb3JtdWxhKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhZ2dpdW5nbyBhIHZhbHVlcGFpcnMgaSB2YWxvcmkgY2FsY29sYXRpXHJcbiAgICAgICAgICAgICAgICAvLyAoPExpc3RWYWx1ZUZpZWxkPmZvdW5kT2JqZWN0KS5WYWx1ZVBhaXJzID0gKDxMaXN0VmFsdWVGaWVsZD5mb3VuZE9iamVjdCkuVmFsdWVQYWlycyA/ICg8TGlzdFZhbHVlRmllbGQ+Zm91bmRPYmplY3QpLlZhbHVlUGFpcnMgOiB7fTtcclxuICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuRXZhbHVhdGVGaWVsZEZvcm11bGEoXHJcbiAgICAgICAgICAgICAgICAgIGZpZWxkLkZvcm11bGEsXHJcbiAgICAgICAgICAgICAgICAgIHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGtleTIgaW4gdGVtcCkge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoVXRpbGl0eUhlbHBlclNlcnZpY2UuaXNOdW1lcmljKHRlbXBba2V5Ml0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVQYWlyc1tOdW1iZXIoa2V5MildID0gdGVtcFtrZXkyXTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzW2tleTJdID0gdGVtcFtrZXkyXTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSAoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzW3JlY29yZFtmaWVsZC5OYW1lXV07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICgoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzICE9IG51bGwgJiYgKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVQYWlycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB2YSBiZW5lIGNvc8OsXHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICgoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVN0cmluZyAhPSBudWxsICYmICg8TGlzdFZhbHVlRmllbGQ+ZmllbGQpLlZhbHVlU3RyaW5nICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgIC8vIHZhIHByZXNhIGxhIHN0cmlnbmEgZSByaW1hcHBhdGEgbmVsIGRpYXJpb1xyXG4gICAgICAgICAgICAgICAgKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVQYWlycyA9IEdsb2JhbFNlcnZpY2Uuc3RyaW5nVG9WYWx1ZVBhaXJzKCg8TGlzdFZhbHVlRmllbGQ+ZmllbGQpLlZhbHVlU3RyaW5nKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGxldCBpbnZlcnRlZCA9IHt9O1xyXG4gICAgICAgICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIig8TGlzdFZhbHVlRmllbGQ+Zm91bmRPYmplY3QpLlZhbHVlUGFpcnNcIiwgKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVQYWlycyk7XHJcbiAgICAgICAgICAgICAgLy8gVmFsdWVQYWlyczoge1NpOiAnU2knLCBObzogJ05vJ31cclxuICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVQYWlycykge1xyXG4gICAgICAgICAgICAgICAgaW52ZXJ0ZWRbKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVQYWlyc1trZXldXSA9IGtleTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVQYWlycyA9IGludmVydGVkO1xyXG4gICAgICAgICAgICAgIGlmIChyZWNvcmRbZmllbGQuTmFtZV0gIT0gbnVsbCAmJiAoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5Jc011bHRpQ2hvaWNoZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2FzbyBNVUxUSVNDRUxUQVxyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIHJlY29yZFtmaWVsZC5OYW1lXS5mb3JFYWNoKChlbGVtZW50LCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlICs9ICg8TGlzdFZhbHVlRmllbGQ+ZmllbGQpLlZhbHVlUGFpcnNbZWxlbWVudF07XHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlICs9IGkgPT0gcmVjb3JkW2ZpZWxkLk5hbWVdLmxlbmd0aCAtIDEgPyBcIlwiIDogXCIsIFwiXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVQYWlyc1tyZWNvcmRbZmllbGQuTmFtZV1dO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwib3V0cHV0VmFsdWVzQXJyYXlcIiwgb3V0cHV0VmFsdWVzQXJyYXkpXHJcblxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJDYW1wbyBudW1lcmljb1wiXToge1xyXG4gICAgICAgICAgICAgIGlmICgoPE51bWVyaWNGaWVsZD5maWVsZCkuSXNJbnRlZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKDxOdW1lcmljRmllbGQ+ZmllbGQpLkRlY2ltYWxTZXBhcmF0b3IgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBvdXRwdXRWYWx1ZXNBcnJheVtmaWVsZC5OYW1lXSA9IHJlY29yZFtmaWVsZC5OYW1lXTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gcmVjb3JkW2ZpZWxkLk5hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvdXRwdXRWYWx1ZXNBcnJheVtmaWVsZC5OYW1lXSA9IHJlY29yZFtmaWVsZC5OYW1lXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW1bJ0ltbWFnaW5lJ106IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImltbWFnaW5lIFwiLCBmaWVsZC5OYW1lLCByZWNvcmRbZmllbGQuTmFtZV0pXHJcbiAgICAgICAgICAgICAgLy8gUmVjdXBlcm8gaWwgQkFTRTY0IGRlbGwnaW1tYWdpbmUgUmVzaXplZCB2aWEgcHJvbWlzZSBjbGllbnRcclxuICAgICAgICAgICAgICB2YXIgcmVzaXplZEJhc2U2NCA9IGF3YWl0IHRoaXMucmVzaXplQmFzZTY0SW1hZ2UoXCJkYXRhOmltYWdlL1wiICsgcmVjb3JkW2ZpZWxkLk5hbWVdLkZpbGVFeHRlbnNpb24gKyBcIjtiYXNlNjQsXCIgKyByZWNvcmRbZmllbGQuTmFtZV0uRmlsZURhdGFCYXNlNjQpO1xyXG5cclxuICAgICAgICAgICAgICAvLyBBZ2dpdW5nbyBsJ0hUTUwgY29uIGlsIG51b3ZvIEJBU0U2NFxyXG4gICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gXCI8aW1nIHNyYz0nXCIgKyByZXNpemVkQmFzZTY0ICsgXCInIHN0eWxlPSdoZWlnaHQ6IFwiICsgcmVjb3JkW2ZpZWxkLk5hbWVdLlJlc2l6ZWRJbWFnZUhlaWdodFB4ICsgXCJweCc+XCI7XHJcblxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuXHJcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlRW51bVsnQWxsZWdhdG8nXToge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQWxsZWdhdG8gXCIsIGZpZWxkLk5hbWUsIHJlY29yZFtmaWVsZC5OYW1lXSwgcmVjb3JkKVxyXG5cclxuICAgICAgICAgICAgICBpZiAocmVjb3JkW2ZpZWxkLk5hbWVdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXNpemVkQmFzZTY0O1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZFtmaWVsZC5OYW1lXVswXS5Jc0ltYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIFJlY3VwZXJvIGlsIEJBU0U2NCBkZWxsJ2ltbWFnaW5lIFJlc2l6ZWQgdmlhIHByb21pc2UgY2xpZW50XHJcbiAgICAgICAgICAgICAgICAgIHJlc2l6ZWRCYXNlNjQgPSBhd2FpdCB0aGlzLnJlc2l6ZUJhc2U2NEltYWdlKFwiZGF0YTppbWFnZS9cIiArIHJlY29yZFtmaWVsZC5OYW1lXVswXS5GaWxlRXh0ZW5zaW9uICsgXCI7YmFzZTY0LFwiICsgcmVjb3JkW2ZpZWxkLk5hbWVdWzBdLkZpbGVEYXRhQmFzZTY0KTtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJBbGxlZ2F0byByZXNpemVkQmFzZTY0XCIsIHJlc2l6ZWRCYXNlNjQpXHJcbiAgICAgICAgICAgICAgICAgIC8vIEFnZ2l1bmdvIGwnSFRNTCBjb24gaWwgbnVvdm8gQkFTRTY0XHJcbiAgICAgICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gJzxpbWcgY2xhc3M9XCJpbWFnZS1wcmV2aWV3XCIgc3JjPVwiJyArIHJlc2l6ZWRCYXNlNjQgKyAnXCIgc3R5bGU9XCJoZWlnaHQ6ICcgKyByZWNvcmRbZmllbGQuTmFtZV1bMF0uUmVzaXplZEltYWdlSGVpZ2h0UHggKyAncHhcIj4nO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWNvcmRbZmllbGQuTmFtZV1bMF0uRmlsZUNvbnRlbnRUeXBlID09IFwiYXBwbGljYXRpb24vcGRmXCIpIHtcclxuICAgICAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSAnPGlmcmFtZSBzcmM9XCJkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsJyArIHJlY29yZFtmaWVsZC5OYW1lXVswXS5GaWxlRGF0YUJhc2U2NCArICdcInN0eWxlPVwibWluLWhlaWdodDogMzAwcHg7IGhlaWdodDogMTAwJTtcIj48L2lmcmFtZT4nO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSAnPGlmcmFtZSBzcmM9XCJkYXRhOlwiJyArIHJlY29yZFtmaWVsZC5OYW1lXVswXS5GaWxlRXh0ZW5zaW9uICsgJ1wiO2Jhc2U2NCwnICsgcmVjb3JkW2ZpZWxkLk5hbWVdWzBdLkZpbGVEYXRhQmFzZTY0ICsgJ1wic3R5bGU9XCJtaW4taGVpZ2h0OiAzMDBweDsgaGVpZ2h0OiAxMDAlO1wiPjwvaWZyYW1lPic7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gQWdnaXVuZ28gbCdIVE1MIGNvbiBpbCBudW92byBCQVNFNjRcclxuICAgICAgICAgICAgICAgIC8vIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gXCI8aW1nIHNyYz0nXCIgKyByZXNpemVkQmFzZTY0ICsgXCInIHN0eWxlPSdoZWlnaHQ6IFwiICsgcmVjb3JkW2ZpZWxkLk5hbWVdWzBdLlJlc2l6ZWRJbWFnZUhlaWdodFB4ICsgXCJweCc+XCI7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkFsbGVnYXRvIG91dHB1dFZhbHVlc0FycmF5XCIsIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdKVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW1bJ0ltbWFnaW5lIGNvbiBtYXJrZXJzJ106IHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gUmVjdXBlcm8gaWwgQkFTRTY0IGRlbGwnaW1tYWdpbmUgUmVzaXplZCB2aWEgcHJvbWlzZSBjbGllbnRcclxuICAgICAgICAgICAgICB2YXIgcmVzaXplZEJhc2U2NCA9IGF3YWl0IHRoaXMucmVzaXplQmFzZTY0SW1hZ2UoXCJkYXRhOmltYWdlL1wiICsgcmVjb3JkW2ZpZWxkLk5hbWVdLkZpbGVFeHRlbnNpb24gKyBcIjtiYXNlNjQsXCIgKyByZWNvcmRbZmllbGQuTmFtZV0uRmlsZURhdGFCYXNlNjQpO1xyXG5cclxuICAgICAgICAgICAgICAvLyBBZ2dpdW5nbyBsJ0hUTUwgY29uIGlsIG51b3ZvIEJBU0U2NFxyXG4gICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gXCI8aW1nIHNyYz0nXCIgKyByZXNpemVkQmFzZTY0ICsgXCInIHN0eWxlPSdoZWlnaHQ6IFwiICsgcmVjb3JkW2ZpZWxkLk5hbWVdLlJlc2l6ZWRJbWFnZUhlaWdodFB4ICsgXCJweCc+XCI7XHJcblxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtWydFbGVuY28gaW1tYWdpbmknXToge1xyXG4gICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gXCJcIjtcclxuICAgICAgICAgICAgICBpZiAocmVjb3JkW2ZpZWxkLk5hbWVdICE9IG51bGwgJiYgKDxJbWFnZVNlbGVjdG9yRmllbGQ+ZmllbGQpLklzTXVsdGlDaG9pY2hlKSB7XHJcbiAgICAgICAgICAgICAgICByZWNvcmRbZmllbGQuTmFtZV0uZm9yRWFjaCgoaW1hZ2VvYmo6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB2YXIgYXR0YWNobWVudEluRm9ybTogRHluQXR0YWNobWVudCA9ICg8SW1hZ2VTZWxlY3RvckZpZWxkPmZpZWxkKS5BdHRhY2htZW50TGlzdC5maW5kKHggPT4geC5JRCA9PSBpbWFnZW9iaik7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50SW5Gb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRWYWx1ZXNBcnJheVtmaWVsZC5OYW1lXSArPSBhdHRhY2htZW50SW5Gb3JtLkJ1dHRvbktleSArIFwiLCBcIjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgcGFydHMgPSBvdXRwdXRWYWx1ZXNBcnJheVtmaWVsZC5OYW1lXS5zcGxpdChcIiwgXCIpO1xyXG4gICAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSBwYXJ0cy5zbGljZSgwLCBwYXJ0cy5sZW5ndGggLSAxKS5qb2luKFwiLCBcIik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGF0dGFjaG1lbnRJbkZvcm06IER5bkF0dGFjaG1lbnQgPSAoPEltYWdlU2VsZWN0b3JGaWVsZD5maWVsZCkuQXR0YWNobWVudExpc3QuZmluZCh4ID0+IHguSUQgPT0gcmVjb3JkW2ZpZWxkLk5hbWVdKTtcclxuICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50SW5Gb3JtICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSBhdHRhY2htZW50SW5Gb3JtLkJ1dHRvbktleTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gcmVjb3JkW2ZpZWxkLk5hbWVdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKVxyXG5cclxuICAgIC8vIEZ1bnppb25hLCBtYSBub24gw6ggYWZmaWRhYmlsZSBhbCAxMDAlXHJcbiAgICBhd2FpdCB0aGlzLmRlbGF5KDMwMDApO1xyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJvdXRwdXRWYWx1ZXNBcnJheSAxXCIsIG91dHB1dFZhbHVlc0FycmF5KTtcclxuICAgIC8vIGNhbmNlbGxvIGkgdmFsb3JpIGluZGVmaW5pdGkgbyBudWxsaVxyXG4gICAgZm9yIChjb25zdCBjaGlhdmUgaW4gb3V0cHV0VmFsdWVzQXJyYXkpIHtcclxuICAgICAgaWYgKG91dHB1dFZhbHVlc0FycmF5W2NoaWF2ZV0gPT0gdW5kZWZpbmVkIHx8IG91dHB1dFZhbHVlc0FycmF5W2NoaWF2ZV0gPT0gbnVsbClcclxuICAgICAgICBvdXRwdXRWYWx1ZXNBcnJheVtjaGlhdmVdID0gJydcclxuICAgIH1cclxuICAgIHJldHVybiBvdXRwdXRWYWx1ZXNBcnJheTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIGdldFJlc3BvbnNlVmFsdWVzXHJcblxyXG4gIC8vI3JlZ2lvbiBnZXRSZXNwb25zZVRlbXBsYXRlXHJcbiAgcHJpdmF0ZSBnZXRSZXNwb25zZVRlbXBsYXRlKHJlY29yZDogUmVjb3JkLCBmb3JtOiBGb3JtKTogc3RyaW5nIHtcclxuICAgIGxldCB0ZW1wbGF0ZTogc3RyaW5nID0gJzxkaXYgY2xhc3M9XCJyb3dcIj4nO1xyXG4gICAgLy8gUFJFUEFSTyBPIFBSRU5ETyBMQSBTVFJVVFRVUkEgREEgU1RBTVBBUkVcclxuICAgIGZvcm0uRmllbGRzLmZvckVhY2goKGJhc2VGaWVsZDogQmFzZUZpZWxkKSA9PiB7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2dldFJlc3Bvc25lVGVtcGxhdGUgLSBwcmUgLSBmaWVsZCcsIGJhc2VGaWVsZClcclxuICAgICAgaWYgKGJhc2VGaWVsZC5BbnN3ZXJTdHlsZSA9PSBudWxsIHx8IGJhc2VGaWVsZC5BbnN3ZXJTdHlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBiYXNlRmllbGQuQW5zd2VyU3R5bGUgPSBuZXcgQW5zd2VyU3R5bGUoKTtcclxuICAgICAgICBiYXNlRmllbGQuQW5zd2VyU3R5bGUuQ29sU3BhblNpemVzID0gYmFzZUZpZWxkLkNvbFNwYW5TaXplcztcclxuICAgICAgICBiYXNlRmllbGQuQW5zd2VyU3R5bGUuRmllbGRzdHlsZUNTUyA9IGJhc2VGaWVsZC5GaWVsZHN0eWxlQ1NTO1xyXG4gICAgICAgIGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5MYWJlbHN0eWxlQ1NTID0gYmFzZUZpZWxkLkxhYmVsc3R5bGVDU1M7XHJcbiAgICAgICAgaWYgKGJhc2VGaWVsZC5WaXNpYmxlSWYpIHtcclxuICAgICAgICAgIGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3ID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuRXZhbHVhdGVGaWVsZEZvcm11bGEoYmFzZUZpZWxkLlZpc2libGVJZiwgcmVjb3JkLCBudWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYmFzZUZpZWxkLkFuc3dlclN0eWxlLkluTGlzdFZpZXcgPSBiYXNlRmllbGQuSW5MaXN0VmlldztcclxuICAgICAgICAgIGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYgPSBiYXNlRmllbGQuVmlzaWJsZUlmO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoYmFzZUZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZikge1xyXG4gICAgICAgIGNvbnN0IHZpc2liaWxpdHkgPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYShiYXNlRmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmLCByZWNvcmQsIG51bGwpXHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIkV2YWx1YXRlRmllbGRGb3JtdWxhIC0gdmlzaWJpbGl0eVwiLCB2aXNpYmlsaXR5KTtcclxuICAgICAgICBiYXNlRmllbGQuQW5zd2VyU3R5bGUuSW5MaXN0VmlldyA9ICh2aXNpYmlsaXR5ID09IHRydWUpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChiYXNlRmllbGQuQW5zd2VyU3R5bGUuSW5MaXN0Vmlldykge1xyXG4gICAgICAgIHRlbXBsYXRlICs9ICc8ZGl2IGNsYXNzPVwiJyArIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0RmllbGRBbnN3ZXJTdHlsZUNsYXNzKGJhc2VGaWVsZCkgKyAnIGQtZmxleCBmbGV4LWNvbHVtbiBkeW5hZm9ybS1hbnN3ZXItZmllbGRcIj4gJyArXHJcbiAgICAgICAgICAnIDxzcGFuIGNsYXNzPVwiZHluYWZvcm0tcXVlc3Rpb25cIiBzdHlsZT1cIicgKyBiYXNlRmllbGQuQW5zd2VyU3R5bGUuTGFiZWxzdHlsZUNTUyArICdcIj4nICsgYmFzZUZpZWxkLkRlc2NyaXB0aW9uICsgJzo8L3NwYW4+JyArXHJcbiAgICAgICAgICAnIDxzcGFuIGNsYXNzPVwiZHluYWZvcm0tcmVzcG9uc2VcIiBzdHlsZT1cIicgKyBiYXNlRmllbGQuQW5zd2VyU3R5bGUuRmllbGRzdHlsZUNTUyArICdcIj4gIyMnICsgYmFzZUZpZWxkLk5hbWUgKyAnIyM8L3NwYW4+JyArXHJcbiAgICAgICAgICAnPC9kaXY+IFxcbiAnO1xyXG4gICAgICB9IGVsc2UgaWYgKCFiYXNlRmllbGQuQW5zd2VyU3R5bGUuSW5MaXN0VmlldyAmJiBiYXNlRmllbGQuQW5zd2VyU3R5bGUuSW52aXNpYmlsaXR5ID09IEZpZWxkSW52aXNpYmlsaXR5RW51bVsnTkFTQ09TVE8gQ09OIEFSRUEgVklTSUJJTEUnXSkge1xyXG4gICAgICAgIHRlbXBsYXRlICs9ICc8ZGl2IGNsYXNzPVwiJyArIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0RmllbGRBbnN3ZXJTdHlsZUNsYXNzKGJhc2VGaWVsZCkgKyAnIGQtZmxleCBmbGV4LWNvbHVtbiBkeW5hZm9ybS1hbnN3ZXItZmllbGRcIj4gJyArXHJcbiAgICAgICAgICAnPC9kaXY+IFxcbiAnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdnZXRSZXNwb3NuZVRlbXBsYXRlIC0gcG9zdCAtIGZpZWxkJywgYmFzZUZpZWxkKVxyXG4gICAgfSk7XHJcbiAgICAvLyAoYXR0dWFsbWVudGUgbm9uIGVzaXN0ZSBpbCBjb25jZXR0byBkaSB0ZW1wYXRlIGRpIG91dHB1dClcclxuICAgIHRlbXBsYXRlICs9ICc8L2Rpdj4nO1xyXG4gICAgcmV0dXJuIHRlbXBsYXRlO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gZ2V0UmVzcG9uc2VUZW1wbGF0ZVxyXG5cclxuICBwcml2YXRlIHJlcGxhY2VUZW1wbGF0ZVBsYWNlaG9sZGVyc1dpdGhWYWx1ZXModGVtcGxhdGU6IHN0cmluZywgb3V0cHV0VmFsdWVzQXJyYXk6IEFycmF5PGFueT4sIHJlZ2V4KTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0ZW1wbGF0ZS5yZXBsYWNlKHJlZ2V4LCAobWF0Y2gsIGdyb3VwKSA9PiB7XHJcbiAgICAgIHJldHVybiA8c3RyaW5nPm91dHB1dFZhbHVlc0FycmF5W2dyb3VwXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsYXkobXM6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZXNpemVCYXNlNjRJbWFnZShiYXNlNjRJbWFnZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCBpbWFnZXR5cGUgPSAvZGF0YTppbWFnZVxcLyhbXFx3XSspOy87XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gYmFzZTY0SW1hZ2UubWF0Y2goaW1hZ2V0eXBlKTtcclxuICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgIGltZy5zcmMgPSBiYXNlNjRJbWFnZTtcclxuICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xyXG4gICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gaW1nLndpZHRoO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGltZy5oZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgYXNwZWN0UmF0aW8gPSB3aWR0aCAvIGhlaWdodDtcclxuXHJcbiAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gMTI4O1xyXG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gbmV3SGVpZ2h0ICogYXNwZWN0UmF0aW87XHJcblxyXG4gICAgICAgIGNhbnZhcy53aWR0aCA9IG5ld1dpZHRoO1xyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBuZXdIZWlnaHQ7XHJcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIG5ld1dpZHRoLCBuZXdIZWlnaHQpO1xyXG4gICAgICAgIGxldCBxdWFsaXR5ID0gMC44O1xyXG4gICAgICAgIGxldCBkYXRhVVJMID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvJyttYXRjaFsxXSwgcXVhbGl0eSk7XHJcbiAgICAgICAgcmVzb2x2ZShkYXRhVVJMKTtcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0YUdldHRlcihmb3JtKSB7XHJcbiAgICBmb3JtLkZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG5cclxuICAgICAgLy8gVHJhc2Zvcm1vIGlsIEJhc2U2NFN0cmluZyBkZWwgRGF0YWdldHRlciBuZWwgRGF0YWdldHRlciB2ZXJvIGUgcHJvcHJpb1xyXG4gICAgICBpZiAoZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nICE9IG51bGwpIHtcclxuICAgICAgICBmaWVsZC5EYXRhR2V0dGVyID0gSlNPTi5wYXJzZShhdG9iKGZpZWxkLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZykpO1xyXG4gICAgICAgIGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPSBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IG51bGwgPyBEYXRhR2V0dGVyVHlwZUVudW0uTWFudWFsZSA6IGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmllbGQuRGF0YUdldHRlciA9IG5ldyBEYXRhR2V0dGVyKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZpZWxkLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gY2hlY2tUcmlnZ2Vyc1xyXG4gIC8vIENvbnRyb2xsYSBlIHNwYXJhIGlsIHRyaWdnZXIgc2UgbmVjZXNzYXJpb1xyXG4gIGNoZWNrVHJpZ2dlcnMocmVjb3JkOiBSZWNvcmQpIHtcclxuICAgIHZhciBmaXJlVHJpZ2dlciA9IHRydWU7XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNoZWNrVHJpZ2dlcnMgLSBpbnNpZGUgY2hlY2tUcmlnZ2VycygpXCIsIHRoaXMuZm9ybS5UcmlnZ2Vycyk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybS5UcmlnZ2VycyAhPSBudWxsKSB7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJjaGVja1RyaWdnZXJzIC0gaGF2ZSB0cmlnZ2VycyBpbiBmb3JtXCIpO1xyXG4gICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMuZm9yRWFjaCgodHJpZ2dlcikgPT4ge1xyXG4gICAgICAgIGZpcmVUcmlnZ2VyID0gdHJ1ZTtcclxuICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvbnMuZm9yRWFjaCgoY29uZGl0aW9uKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWZpcmVUcmlnZ2VyKSB7IHJldHVybjsgfVxyXG4gICAgICAgICAgdmFyIGxvZ2ljT3BlcmF0b3I6IExvZ2ljT3BlcmF0b3IgPSBjb25kaXRpb24ubG9naWNvcGVyYXRvciBhcyBMb2dpY09wZXJhdG9yO1xyXG4gICAgICAgICAgdmFyIGNvbmRpdGlvbktleSA9IE9iamVjdC5rZXlzKGNvbmRpdGlvbi5yZWNvcmQpWzBdO1xyXG4gICAgICAgICAgdmFyIGNvbmRpdGlvblZhbHVlID0gY29uZGl0aW9uLnJlY29yZFtjb25kaXRpb25LZXldO1xyXG4gICAgICAgICAgdmFyIHJlY29yZFZhbHVlID0gcmVjb3JkW2NvbmRpdGlvbktleV07XHJcblxyXG4gICAgICAgICAgaWYgKGxvZ2ljT3BlcmF0b3IgPT0gTG9naWNPcGVyYXRvclsnPSddICYmIGNvbmRpdGlvblZhbHVlICE9IHJlY29yZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZpcmVUcmlnZ2VyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubG9nVHJpZ2dlcih0cmlnZ2VyLCBjb25kaXRpb24sIHJlY29yZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobG9naWNPcGVyYXRvciA9PSBMb2dpY09wZXJhdG9yWychPSddICYmIGNvbmRpdGlvblZhbHVlID09IHJlY29yZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZpcmVUcmlnZ2VyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubG9nVHJpZ2dlcih0cmlnZ2VyLCBjb25kaXRpb24sIHJlY29yZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobG9naWNPcGVyYXRvciA9PSBMb2dpY09wZXJhdG9yWyc8J10gJiYgY29uZGl0aW9uVmFsdWUgPD0gcmVjb3JkVmFsdWUpIHtcclxuICAgICAgICAgICAgZmlyZVRyaWdnZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2dUcmlnZ2VyKHRyaWdnZXIsIGNvbmRpdGlvbiwgcmVjb3JkKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChsb2dpY09wZXJhdG9yID09IExvZ2ljT3BlcmF0b3JbJzw9J10gJiYgY29uZGl0aW9uVmFsdWUgPCByZWNvcmRWYWx1ZSkge1xyXG4gICAgICAgICAgICBmaXJlVHJpZ2dlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ1RyaWdnZXIodHJpZ2dlciwgY29uZGl0aW9uLCByZWNvcmQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGxvZ2ljT3BlcmF0b3IgPT0gTG9naWNPcGVyYXRvclsnPiddICYmIGNvbmRpdGlvblZhbHVlID49IHJlY29yZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZpcmVUcmlnZ2VyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubG9nVHJpZ2dlcih0cmlnZ2VyLCBjb25kaXRpb24sIHJlY29yZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobG9naWNPcGVyYXRvciA9PSBMb2dpY09wZXJhdG9yWyc+PSddICYmIGNvbmRpdGlvblZhbHVlID4gcmVjb3JkVmFsdWUpIHtcclxuICAgICAgICAgICAgZmlyZVRyaWdnZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2dUcmlnZ2VyKHRyaWdnZXIsIGNvbmRpdGlvbiwgcmVjb3JkKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChsb2dpY09wZXJhdG9yID09IExvZ2ljT3BlcmF0b3JbJ0xJS0UnXSAmJiByZWNvcmRWYWx1ZS5pbmRleE9mKGNvbmRpdGlvblZhbHVlKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBmaXJlVHJpZ2dlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ1RyaWdnZXIodHJpZ2dlciwgY29uZGl0aW9uLCByZWNvcmQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGxvZ2ljT3BlcmF0b3IgPT0gTG9naWNPcGVyYXRvclsnTk9UIExJS0UnXSAmJiByZWNvcmRWYWx1ZS5pbmRleE9mKGNvbmRpdGlvblZhbHVlKSAhPSAtMSkge1xyXG4gICAgICAgICAgICBmaXJlVHJpZ2dlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ1RyaWdnZXIodHJpZ2dlciwgY29uZGl0aW9uLCByZWNvcmQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGxvZ2ljT3BlcmF0b3IgPT0gTG9naWNPcGVyYXRvci5TaSAmJiAhcmVjb3JkVmFsdWUpIHtcclxuICAgICAgICAgICAgZmlyZVRyaWdnZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2dUcmlnZ2VyKHRyaWdnZXIsIGNvbmRpdGlvbiwgcmVjb3JkKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChsb2dpY09wZXJhdG9yID09IExvZ2ljT3BlcmF0b3IuTm8gJiYgcmVjb3JkVmFsdWUpIHtcclxuICAgICAgICAgICAgZmlyZVRyaWdnZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2dUcmlnZ2VyKHRyaWdnZXIsIGNvbmRpdGlvbiwgcmVjb3JkKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNoZWNrVHJpZ2dlcnMgLSBmaXJlVHJpZ2dlcj8gXCIsIGZpcmVUcmlnZ2VyKTtcclxuXHJcbiAgICAgICAgaWYgKGZpcmVUcmlnZ2VyKSB7XHJcblxyXG4gICAgICAgICAgLy8gSWwgdHJpZ2dlciB2YSBzcGFyYXRvLiBWYWx1dG8gbGUgZnVuemlvbmkgaW50ZXJuZVxyXG4gICAgICAgICAgdmFyIGZvcm11bGFzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0cmlnZ2VyLmZvcm11bGFzKSk7XHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY2hlY2tUcmlnZ2VycyAtIGV2YWx1YXRlIGZvcm11bGFzIFwiLCBmb3JtdWxhcyk7XHJcblxyXG4gICAgICAgICAgT2JqZWN0LmtleXMoZm9ybXVsYXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgZm9ybXVsYSA9IGZvcm11bGFzW2tleV0udmFsdWU7XHJcbiAgICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJjaGVja1RyaWdnZXJzIC0gZm9ybXVsYXNba2V5XSBcIiwgZm9ybXVsYXNba2V5XSk7XHJcbiAgICAgICAgICAgIHZhciB0ZW1wO1xyXG4gICAgICAgICAgICBpZiAoZm9ybXVsYXNba2V5XS50eXBlID09IFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtLkRNTU9EVUxFKSB7XHJcbiAgICAgICAgICAgICAgdGVtcCA9IGZvcm11bGFcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0ZW1wID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuRXZhbHVhdGVGaWVsZEZvcm11bGEoXHJcbiAgICAgICAgICAgICAgICBmb3JtdWxhLFxyXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZvcm11bGFzW2tleV0gPSB0ZW1wO1xyXG5cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIC8vIFNwYXJvIGlsIHRyaWdnZXIgYWxsJ2VzdGVybm9cclxuICAgICAgICAgIHZhciB0cmlnZ2VyVG9GaXJlOiBGaXJlVHJpZ2dlciA9IG5ldyBGaXJlVHJpZ2dlcigpO1xyXG4gICAgICAgICAgdHJpZ2dlclRvRmlyZS5mb3JtID0gdGhpcy5mb3JtOyAvLyBJbCBmb3JtIGNoZSBoYSBwcm92b2NhdG8gaWwgdHJpZ2dlclxyXG4gICAgICAgICAgdHJpZ2dlclRvRmlyZS5yZWNvcmQgPSByZWNvcmQ7IC8vIElsIHJlY29yZCBjaGUgaGEgcHJvdm9jYXRvIGlsIHRyaWdnZXJcclxuICAgICAgICAgIHRyaWdnZXJUb0ZpcmUudHJpZ2dlciA9IHRyaWdnZXI7IC8vIElsIHRyaWdnZXJcclxuICAgICAgICAgIHRyaWdnZXJUb0ZpcmUuZm9ybXVsYXMgPSBmb3JtdWxhczsgLy8gTGUgZm9ybXVsZSBpbnZpYXRlIGluIGlucHV0IGFsIG1vZHVsbyBkaW5hbWljbywgdmFsdXRhdGUgbmVsIGNvbnRlc3RvIGRlbCB0cmlnZ2VyIGUgZGVsIHJlY29yZFxyXG4gICAgICAgICAgdHJpZ2dlclRvRmlyZS51c2VyUGF0aWVudCA9IHRoaXMudXNlcklEOyAvLyBVc2VySURcclxuXHJcbiAgICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY2hlY2tUcmlnZ2VycyAtIFRyaWdnZXIgRmlyZWQgXCIsIHRyaWdnZXJUb0ZpcmUpO1xyXG4gICAgICAgICAgdGhpcy5maXJlVHJpZ2dlci5lbWl0KHRyaWdnZXJUb0ZpcmUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9nVHJpZ2dlcih0cmlnZ2VyLCBjb25kaXRpb24sIHJlY29yZCkge1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNoZWNrVHJpZ2dlcnMgLSBDb25kaXRpb24gdGhhdCBpbnZhbGlkYXRlZCB0aGUgdHJpZ2dlciBUUklHR0VSXCIsIHRyaWdnZXIpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNoZWNrVHJpZ2dlcnMgLSBDb25kaXRpb24gdGhhdCBpbnZhbGlkYXRlZCB0aGUgdHJpZ2dlciBDT05ESVRJT05cIiwgY29uZGl0aW9uKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJjaGVja1RyaWdnZXJzIC0gQ29uZGl0aW9uIHRoYXQgaW52YWxpZGF0ZWQgdGhlIHRyaWdnZXIgUkVDT1JEXCIsIHJlY29yZCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBjaGVja1RyaWdnZXJzXHJcblxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkZXJcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGVxcC1keW5hbWljLW1vZHVsZS10aXRsZSBhZGQtZm9ybS1yZWNvcmQtaGVhZGVyXCIgKm5nSWY9XCJzaG93VGl0bGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7Zm9ybS5OYW1lfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Gb3JtXCIgY2xhc3M9XCJhZGQtZm9ybS1yZWNvcmQtZm9ybVwiPlxyXG5cclxuICAgICAgICA8IS0tIFZJU1VBTElaWkFaSU9ORSBTRU1QTElDRSAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybS5Gb3JtU2NhbGFyVHlwZSA9PSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2VcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWVsZFRlbXBsYXRlc1wiXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkczogZm9ybS5GaWVsZHMgfVwiIGNsYXNzPVwiYWRkLWZvcm0tcmVjb3JkLXNlbXBsaWNlXCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gVklTVUFMSVpaQVpJT05FIEEgU1RFUFBFUiAtLT5cclxuICAgICAgICA8bWF0LWhvcml6b250YWwtc3RlcHBlciBsaW5lYXIgKm5nSWY9XCJmb3JtLkZvcm1TY2FsYXJUeXBlID09IEZvcm1TY2FsYXJUeXBlRW51bVsnQSBzdGVwJ11cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFkZC1mb3JtLXJlY29yZC1zdGVwcGVyXCI+XHJcbiAgICAgICAgICAgIDxtYXQtc3RlcCAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZm9ybS5Gb3JtRmllbGRzR3JvdXBzOyBsZXQgaSA9IGluZGV4OyBsZXQgZmlyc3QgPSBmaXJzdDsgbGV0IGxhc3QgPSBsYXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Z3JvdXAuTmFtZX19XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmllbGRUZW1wbGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkczogZmllbGRHcm91cHNbZ3JvdXAuTmFtZV0gfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWRkLWZvcm0tcmVjb3JkLWJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWZpcnN0XCIgY2xhc3M9XCJtci0yIHByZXZpb3VzXCIgbWF0LXJhaXNlZC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVjZWRlbnRlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJidXR0b24tbmV4dFwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFN0ZXBwZXJOZXh0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzaXZvXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImxhc3QgJiYgc2hvd1NhdmVCdXR0b25cIiAoY2xpY2spPVwic2F2ZU9yRXhpdEZvcm0oZmFsc2UpXCIgY2xhc3M9XCJidXR0b24tbmV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTYWx2YVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L21hdC1zdGVwPlxyXG4gICAgICAgIDwvbWF0LWhvcml6b250YWwtc3RlcHBlcj5cclxuXHJcbiAgICAgICAgPCEtLSBWSVNVQUxJWlpBWklPTkUgQSBUQUIgLS0+XHJcbiAgICAgICAgPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJmb3JtLkZvcm1TY2FsYXJUeXBlID09IEZvcm1TY2FsYXJUeXBlRW51bVsnSW4gdGFiJ11cIiBjbGFzcz1cImFkZC1mb3JtLXJlY29yZC10YWJcIj5cclxuICAgICAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGZvcm0uRm9ybUZpZWxkc0dyb3Vwc1wiIFtsYWJlbF09XCJncm91cC5OYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmllbGRUZW1wbGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZHM6IGZpZWxkR3JvdXBzW2dyb3VwLk5hbWVdIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgPC9tYXQtdGFiLWdyb3VwPlxyXG5cclxuICAgICAgICA8IS0tIFZJU1VBTElaWkFaSU9ORSBBRCBBQ0NPUkRJT04gLS0+XHJcbiAgICAgICAgPG1hdC1hY2NvcmRpb24gbXVsdGkgKm5nSWY9XCJmb3JtLkZvcm1TY2FsYXJUeXBlID09IEZvcm1TY2FsYXJUeXBlRW51bVsnSW4gYWNjb3JkaW9uJ11cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFkZC1mb3JtLXJlY29yZC1hY2NvcmRpb25cIj5cclxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGZvcm0uRm9ybUZpZWxkc0dyb3Vwc1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Z3JvdXAuTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmllbGRUZW1wbGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkczogZmllbGRHcm91cHNbZ3JvdXAuTmFtZV0gfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICA8L21hdC1hY2NvcmRpb24+XHJcbiAgICA8L2Zvcm0+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yIGFkZC1mb3JtLXJlY29yZC1idXR0b25zXCJcclxuICAgICAgICAqbmdJZj1cIihzaG93QmFja0J1dHRvbiB8fCBzaG93U2F2ZUJ1dHRvbikgJiYgZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW1bJ0Egc3RlcCddXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiB0ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yXCIgbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2hvd0JhY2tCdXR0b25cIiAoY2xpY2spPVwic2F2ZU9yRXhpdEZvcm0odHJ1ZSlcIj5cclxuICAgICAgICAgICAgICAgIEFubnVsbGFcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2hvd1NhdmVCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVPckV4aXRGb3JtKGZhbHNlKVwiIFtkaXNhYmxlZF09XCJmb3JtRm9ybS5pbnZhbGlkIHx8IGZvcm1Gb3JtLmRpc2FibGVkIHx8IGlzU2F2aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc1NhdmluZ1wiPlNhbHZhPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1NhdmluZ1wiPlNhbHZhdGFnZ2lvIGluIENvcnNvLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuXHJcbjwhLS0gVEVNUExBVEUgUEVSIExBIFZJU1VBTElaWkFaSU9ORSBERUkgQ0FNUEkgREVMTEEgRk9STSAtLT5cclxuPG5nLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlcyBsZXQtZmllbGRzPSdmaWVsZHMnPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZm9ybWxvYWRlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInV0aWxpdHlTZXJ2aWNlLmdldEZpZWxkU3lsZUNsYXNzKGZpZWxkLCBzaG93QWxsRmllbGRzKVwiPlxyXG4gICAgICAgICAgICA8ZHluYW1pYy1tb2R1bGUtZmllbGQtZml4ICNmaWVsZFRlbXBsYXRlIFtmaWVsZF09XCJmaWVsZFwiIFtRdWVyeUVkaXRvckNvbXBvbmVudF09XCJRdWVyeUVkaXRvckNvbXBvbmVudFwiIFtmb3JtXT1cImZvcm1cIiBbcmVjb3JkXT1cInJlY29yZFwiIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCIgW3VzZXJJRF09XCJ1c2VySURcIiBbaW5Db25maWddPVwiaW5Db25maWdcIlxyXG4gICAgICAgICAgICAgICAgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgIDwvZHluYW1pYy1tb2R1bGUtZmllbGQtZml4PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
788
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZvcm0tcmVjb3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9mb3JtLXJlY29yZHMvYWRkLWZvcm0tcmVjb3JkL2FkZC1mb3JtLXJlY29yZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL3ByaXZhdGUvZm9ybS1yZWNvcmRzL2FkZC1mb3JtLXJlY29yZC9hZGQtZm9ybS1yZWNvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWEsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNILE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xKLE9BQU8sRUFBUSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFbkYsT0FBTyxFQUE2QyxhQUFhLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUU1SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFLcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQVcsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7OztBQVFqRyxNQUFNLE9B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QUFDOztvSEE5MUJVLHNCQUFzQjt3R0FBdEIsc0JBQXNCLDJtQkN4Qm5DLHc2SkFtR2M7NEZEM0VELHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxpQkFBaUI7MklBTWxCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csR0FBRztzQkFBWixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBZVAsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBBbnN3ZXJTdHlsZSwgQmFzZUZpZWxkLCBEYXRhR2V0dGVyLCBEYXRhR2V0dGVyVHlwZUVudW0sIEZpZWxkSW52aXNpYmlsaXR5RW51bSwgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtLCBGb3JtU2NhbGFyVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IER5blJlY29yZCwgUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3JlY29yZC5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVGaWVsZEZpeENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2R5bmFtaWMtbW9kdWxlLWZpZWxkLWZpeC9keW5hbWljLW1vZHVsZS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24sIEVuZFBvaW50RGF0YVBhcmFtcywgUGFyYW1UeXBlRW51bSB9IGZyb20gJy4vLi4vLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IExpc3RWYWx1ZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9saXN0VmFsdWVGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IE51bWVyaWNGaWVsZCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9maWVsZHMvbnVtZXJpY0ZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgSW1hZ2VTZWxlY3RvckZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9pbWFnZVNlbGVjdG9yRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBEeW5BdHRhY2htZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2R5bkF0dGFjaG1lbnQnO1xyXG5pbXBvcnQgeyBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YSwgZXZlbnRPdXQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy9keW5hbWljLWxvYWRlci9keW5hbWljLWxvYWRlci5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgTG9naWNPcGVyYXRvciB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9sb2dpY09wZXJhdG9yLm1vZGVsJztcclxuaW1wb3J0IHsgRmlyZVRyaWdnZXIsIFRyaWdnZXIsIFRyaWdnZXJQcm9wZXJ0eVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3RyaWdnZXIubW9kZWwnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFkZC1mb3JtLXJlY29yZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWRkLWZvcm0tcmVjb3JkLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2FkZC1mb3JtLXJlY29yZC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZEZvcm1SZWNvcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uczogRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWc7XHJcbiAgQElucHV0KCkgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgdXNlcklEOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3JnYUlEOiBzdHJpbmcgPSBudWxsOyAvLyBwcmV2aWV3XHJcbiAgXHJcbiAgQElucHV0KCkgZm9ybUlEOiBzdHJpbmcgPSBudWxsOyAvLyBwcmV2aWV3XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybSA9IG51bGw7IC8vIHByZXZpZXcgY29uZmlnXHJcbiAgQElucHV0KCkgcmVjb3JkOiBSZWNvcmQgfCBzdHJpbmcgPSBudWxsOyAvLyBlZGl0XHJcbiAgQElucHV0KCkgb25seVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0R1cGxpY2F0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGluQ29uZmlnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0FsbEZpZWxkczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBRdWVyeUVkaXRvckNvbXBvbmVudDogRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGE7IC8vIEwnaW50ZXJvIGNvbXBvbmVudGUgcXVlcnkgRWRpdG9yXHJcblxyXG4gIEBPdXRwdXQoKSBzYXZlUmVjb3JkRXZlbnQ6IEV2ZW50RW1pdHRlcjxSZWNvcmQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ+KCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyU2F2ZVJlY29yZEV2ZW50OiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG4gIEBPdXRwdXQoKSBvdXQ6IEV2ZW50RW1pdHRlcjxldmVudE91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPGV2ZW50T3V0PigpO1xyXG4gIEBPdXRwdXQoKSBmaXJlVHJpZ2dlcjogRXZlbnRFbWl0dGVyPEZpcmVUcmlnZ2VyPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlyZVRyaWdnZXI+KCk7XHJcblxyXG4gIHNob3dUaXRsZSA9IHRydWU7XHJcbiAgc2hvd1NhdmVCdXR0b24gPSB0cnVlO1xyXG4gIHNob3dCYWNrQnV0dG9uID0gdHJ1ZTtcclxuICBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1sb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZm9ybUZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgZmllbGRHcm91cHM6IHsgW2tleTogc3RyaW5nXTogQXJyYXk8QmFzZUZpZWxkPiB9ID0ge307XHJcbiAgRm9ybVNjYWxhclR5cGVFbnVtID0gRm9ybVNjYWxhclR5cGVFbnVtO1xyXG4gIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFwiZmllbGRUZW1wbGF0ZVwiKVxyXG4gIGZpZWxkVGVtcGxhdGU6IFF1ZXJ5TGlzdDxEeW5hbWljTW9kdWxlRmllbGRGaXhDb21wb25lbnQ+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eUhlbHBlclNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybSAhPSBudWxsICYmIHRoaXMub3JnYUlEICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5mb3JtLk9yZ2FJRCA9IHRoaXMub3JnYUlEO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCBwdcOyIGZ1bnppb25hcmUgYW5jaGUgY29tZSBtb2RpZmljYSBlIGNvbWUgcHJldmlld1xyXG4gICAgLy8gaW4gYWRkIGFiYmlhbW8gaW4gaW5wdXQgbCdJRCBkZWwgRm9ybVxyXG4gICAgLy8gaW4gbW9kaWZpY2EgYWJiaWFtbyBpbiBpbnB1dCBsJ0lEIGRlbCBSZWNvcmRcclxuICAgIC8vIGluIHByZXZpZXcgYWJiaWFtbyBpbiBpbnB1dCBpbCBGb3JtKGNhc28gY29uZmlndXJhdG9yKSBvIGwnSUQgZGVsIG1vZHVsbyBvbiBvbmx5VmlldyBpbXBvc3RhdG8gYSB0cnVlXHJcbiAgICB0aGlzLnNob3dUaXRsZSA9IHRoaXMuY29uZmlndXJhdGlvbnMuc2hvd1RpdGxlO1xyXG4gICAgdGhpcy5zaG93U2F2ZUJ1dHRvbiA9IHRoaXMuY29uZmlndXJhdGlvbnMuc2hvd1NhdmVCdXR0b247XHJcbiAgICB0aGlzLnNob3dCYWNrQnV0dG9uID0gdGhpcy5jb25maWd1cmF0aW9ucy5zaG93QmFja0J1dHRvbjtcclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiQWRkRm9ybVJlY29yZFwiKVxyXG5cclxuICAgIGlmICh0aGlzLnJlY29yZCA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2hvd1RpdGxlID0gdHJ1ZTtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIkFkZEZvcm1SZWNvcmQgLSBuZXdcIilcclxuICAgICAgdGhpcy5wcmV2aWV3T3JOZXdSZXNwb25zZVJlY29yZCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93VGl0bGUgPSBmYWxzZTtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIkFkZEZvcm1SZWNvcmQgLSBlZGl0XCIsIHRoaXMucmVjb3JkKVxyXG4gICAgICB0aGlzLmVkaXRSZXNwb25zZVJlY29yZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGwnaW5pemlhbGl6emF6aW9uZSB0ZXJtaW5hIGNvbiBpbCByZWN1cGVybyBkZWwgcmVjb3JkIG8gY29uIGwnaW5pemlhbGl6emF6aW9uZSBkZWwgZm9ybSB2dW90b1xyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ29uaW5pdCAtIER5bmFGb3JtJywgdGhpcy5mb3JtKVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIG9uUmVjb3JkQ2hhbmdlXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIGNhbWJpbyBkZWwgdmFsb3JlIGRpIG9nbmkgcHJvcHJpZXTDoCBkZWxsJ29nZ2V0dG8gcmVjb3JkLlxyXG4gICAqIFNlcnZlIGFkIGFnZ2lvcm5hcmUgaWwgdmFsb3JlIGRpIHR1dHRpIGkgY2FtcGkgY2hlIGhhbm5vIHVuYSBmb3JtdWxhLlxyXG4gICAqL1xyXG4gIG9uUmVjb3JkQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGRUZW1wbGF0ZSAmJiB0aGlzLmZpZWxkVGVtcGxhdGUubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpZWxkVGVtcGxhdGUuZm9yRWFjaCgoZikgPT4gZi51cGRhdGVGaWVsZCgpKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9uUmVjb3JkQ2hhbmdlXHJcblxyXG4gIC8vI3JlZ2lvbiBwcmV2aWV3T3JOZXdSZXNwb25zZVJlY29yZFxyXG4gIHByZXZpZXdPck5ld1Jlc3BvbnNlUmVjb3JkKCkge1xyXG4gICAgdGhpcy5yZWNvcmQgPSBuZXcgUmVjb3JkKCk7XHJcbiAgICAvLyBhZ2dpdWduaSBudW92b1xyXG4gICAgaWYgKHRoaXMuZm9ybSAhPSBudWxsKSB7XHJcbiAgICAgIC8vIHByZXZpZXcgcGVyIGlsIGNvbmZpZ3VyYXRvclxyXG4gICAgICB0aGlzLmZpZWxkc0NvbmZpZygpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm1JRCAhPSBudWxsKSB7XHJcbiAgICAgIC8vIHByZXZpZXcgcGVyIGFkbWluXHJcbiAgICAgIHRoaXMuZ2V0Rm9ybUJ5SUQoKTsgLy8gZGVudHJvIGNoaWFtYSBmaWVsZHNDb25maWdcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIHByZXZpZXdPck5ld1Jlc3BvbnNlUmVjb3JkXHJcblxyXG4gIC8vI3JlZ2lvbiBlZGl0UmVzcG9uc2VSZWNvcmRcclxuICBlZGl0UmVzcG9uc2VSZWNvcmQoKSB7XHJcblxyXG4gICAgLy8gbW9kaWlsdMOgIG1vZGlmaWNhXHJcbiAgICBpZiAodHlwZW9mIHRoaXMucmVjb3JkID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIC8vIGFsbG9yYSDDqCB1biBJRFxyXG4gICAgICB0aGlzLmdldFJlY29yZEJ5SUQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGlsIHJlY29yZCB2aWVuZSBwYXNzYXRvIGNvbWUgdGFsZVxyXG4gICAgICAvLyAoPFJlY29yZD50aGlzLnJlY29yZCkuRW50SUQgPSBcIjNcIjtcclxuICAgICAgLy8gKDxSZWNvcmQ+dGhpcy5yZWNvcmQpLlZlcnNpb247XHJcbiAgICAgIHRoaXMuZ2V0Rm9ybUJ5SURhbmRWZXJzaW9uKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gZWRpdFJlc3BvbnNlUmVjb3JkXHJcblxyXG4gIC8vI3JlZ2lvbiBzYXZlT3JFeGl0Rm9ybVxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgc2FsdmFyZSBpIGRhdGkgaW5zZXJpdGkgZGFsbCd1dGVudGUgdW5hIHZvbHRhIGNvbmNsdXNhIGxhIGNvbXBpbGF6aW9uZSBkZWxsYSBmb3JtLlxyXG4gICAqL1xyXG4gIHNhdmVPckV4aXRGb3JtKGV4aXQ6IGJvb2xlYW4pIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2FkZC1mb3JtLXJlY29yZCBzYXZlUmVjb3JkRXZlbnQnKVxyXG4gICAgaWYgKGV4aXQpIHtcclxuICAgICAgLy8gdGhpcy5zYXZlUmVjb3JkRXZlbnQuZW1pdChudWxsKTtcclxuICAgICAgdGhpcy5vblNhdmVSZWNvcmQobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLnNhdmVSZWNvcmRFdmVudC5lbWl0KHRoaXMucmVjb3JkKTtcclxuICAgICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMub25TYXZlUmVjb3JkKCg8UmVjb3JkPnRoaXMucmVjb3JkKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBzYXZlT3JFeGl0Rm9ybVxyXG5cclxuICAvLyNyZWdpb24gb25TYXZlUmVjb3JkXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBzYWx2YXJlIGlsIHJlY29yZCBhZ2dpdW50byBvIG1vZGlmaWNhdG8uXHJcbiAgICogU2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gdW4gZW5kUG9pbnQgcGVyIGlsIHNhbHZhdGFnZ2lvIHZpZW5lIGVmZmV0dHVhdGEgdW5hIGNoaWFtYXRhIGFsIHNlcnZlciBwYXNzYW5kbyBsJ29nZ2V0byBkYSBzYWx2YXJlXHJcbiAgICogbmVsIGJvZHkgZGVsbGEgY2hpYW1hdGEsIGFsdHJpbWVudGkgc2NhdGVuYSBsJ2V2ZW50byBcInNhdmVSZWNvcmRcIi5cclxuICAgKiBAcGFyYW0gZXZlbnQgT2dnZXR0byBkaSB0aXBvIFJlY29yZCBkYSBzYWx2YXJlLlxyXG4gICAqL1xyXG4gIGFzeW5jIG9uU2F2ZVJlY29yZChldmVudDogUmVjb3JkKSB7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdvblNhdmVSZWNvcmQgLSBldmVudCcsIGV2ZW50KVxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnb25TYXZlUmVjb3JkIC0gZm9ybScsIHRoaXMuZm9ybSlcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQgIT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAhPSBudWxsICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLlJlY29yZHMuU2F2ZUVuZFBvaW50XHJcbiAgICApIHtcclxuICAgICAgdmFyIGR5blJlYzogRHluUmVjb3JkID0gbmV3IER5blJlY29yZCgpO1xyXG4gICAgICBkeW5SZWMuSUQgPSBldmVudC5JRCA/PyBudWxsO1xyXG4gICAgICBkeW5SZWMuRW50SUQgPSB0aGlzLmZvcm0uSUQ7XHJcbiAgICAgIGR5blJlYy5WZXJzaW9uID0gdGhpcy5mb3JtLlZlcnNpb247XHJcbiAgICAgIGR5blJlYy51c2VySUQgPSB0aGlzLnVzZXJJRDtcclxuICAgICAgZHluUmVjLlZhbHVlcyA9IGV2ZW50ID8/IG51bGw7XHJcbiAgICAgIGR5blJlYy5IVE1McmVhZGFibGVWYWx1ZXMgPSBhd2FpdCB0aGlzLmNyZWF0ZUhUTUxyZWFkYWJsZVZhbHVlcyhldmVudCk7XHJcblxyXG4gICAgICBpZiAoZXZlbnQuRktfSW5zZXJ0VXNlciA9PSBudWxsKSB7XHJcbiAgICAgICAgLy8gTnVvdm8gUmVjb3JkXHJcbiAgICAgICAgZHluUmVjLkZLX0luc2VydFVzZXIgPSB0aGlzLnVzZXJJRDtcclxuICAgICAgICBkeW5SZWMuSW5zZXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgZHluUmVjLkZLX1VwZGF0ZVVzZXIgPSB0aGlzLnVzZXJJRDtcclxuICAgICAgICBkeW5SZWMuVXBkYXRlRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gTW9kaWZpY2EgZGVsIFJlY29yZFxyXG4gICAgICAgIGR5blJlYy5GS19JbnNlcnRVc2VyID0gZXZlbnQuRktfSW5zZXJ0VXNlclxyXG4gICAgICAgIGR5blJlYy5JbnNlcnREYXRlID0gZXZlbnQuSW5zZXJ0RGF0ZTtcclxuICAgICAgICBkeW5SZWMuRktfVXBkYXRlVXNlciA9IHRoaXMudXNlcklEO1xyXG4gICAgICAgIGR5blJlYy5VcGRhdGVEYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIGFkZGl0aW9uYWxQYXJhbXMgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXMgPT0gbnVsbCA/IGV2ZW50LkFkZGl0aW9uYWxQYXJhbXMgOiB0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxQYXJhbXM7XHJcbiAgICAgIGR5blJlYy5BZGRpdGlvbmFsUGFyYW1zID0gSlNPTi5zdHJpbmdpZnkoYWRkaXRpb25hbFBhcmFtcyk7XHJcblxyXG4gICAgICAvLyB2YXIgYWRkaXRpb25hbEluZm8gPSB0aGlzLmFkZGl0aW9uYWxJbmZvID09IG51bGwgPyBldmVudC5BZGRpdGlvbmFsSW5mbyA6IHRoaXMuYWRkaXRpb25hbEluZm87XHJcbiAgICAgIHZhciBhZGRpdGlvbmFsSW5mbyA9IGV2ZW50LkFkZGl0aW9uYWxJbmZvID09IG51bGwgPyB0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZGl0aW9uYWxJbmZvIDogZXZlbnQuQWRkaXRpb25hbEluZm87XHJcbiAgICAgIGR5blJlYy5BZGRpdGlvbmFsSW5mbyA9IEpTT04uc3RyaW5naWZ5KGFkZGl0aW9uYWxJbmZvKTtcclxuXHJcbiAgICAgIHZhciBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFBhcmFtTmFtZTogXCJSZWNvcmRcIixcclxuICAgICAgICAgIFBhcmFtVmFsdWU6IGR5blJlYyxcclxuICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuXHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ29uU2F2ZVJlY29yZCAtIGR5bmFtaWNNb2R1bGVQYXJhbXMnLCBkeW5hbWljTW9kdWxlUGFyYW1zKVxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5SZWNvcmRzLlNhdmVFbmRQb2ludCxcclxuICAgICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgIGR5blJlYy5JRCA9IHJlcy50b1N0cmluZygpO1xyXG4gICAgICAgICAgZXZlbnQuSUQgPSByZXMudG9TdHJpbmcoKTtcclxuICAgICAgICAgIHRoaXMuY2hlY2tUcmlnZ2VycyhldmVudCk7XHJcbiAgICAgICAgICB0aGlzLmFmdGVyU2F2ZVJlY29yZEV2ZW50LmVtaXQoZHluUmVjKTtcclxuICAgICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNhdmVSZWNvcmRFdmVudC5lbWl0KGR5blJlYyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBvblNhdmVSZWNvcmRcclxuXHJcbiAgLy8jcmVnaW9uIGdldEZvcm1CeUlEXHJcbiAgZ2V0Rm9ybUJ5SUQoaWQ6IHN0cmluZyA9IHRoaXMuZm9ybUlEKSB7XHJcbiAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID1cclxuICAgICAgbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcclxuICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxyXG4gICAgICBQYXJhbVZhbHVlOiBpZCxcclxuICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlERW5kUG9pbnQsXHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgIChyZXM6IEZvcm0pID0+IHtcclxuICAgICAgICB0aGlzLmZvcm0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5mb3JtLk9yZ2FJRCA9IHRoaXMub3JnYUlEO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzICE9IG51bGwgJiYgdGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IEpTT04ucGFyc2UodGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzID0gbmV3IEFycmF5PFRyaWdnZXI+KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldERhdGFHZXR0ZXIodGhpcy5mb3JtKTtcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdnZXRGb3JtQnlJRCAtIER5bmFGb3JtJywgdGhpcy5mb3JtKVxyXG4gICAgICAgIHRoaXMuZmllbGRzQ29uZmlnKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHsgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIGdldEZvcm1CeUlEXHJcblxyXG4gIC8vI3JlZ2lvbiBnZXRSZWNvcmRCeUlEXHJcbiAgLy8gY2kgZW50cm8gc29sbyBzZSDDqCBzdGF0byBwYXNzYXRvIGlsIHBhcmFtZXRybyBcInJlY29yZFwiIGNvbWUgc3RyaW5nYVxyXG4gIGdldFJlY29yZEJ5SUQoKSB7XHJcblxyXG4gICAgLy8gcHJlcGFybyBpIGRhdGkgZGVsIHJlY29yZFxyXG4gICAgdmFyIGR5bmFtaWNSZWNvcmRQYXJhbXMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgICBQYXJhbVZhbHVlOiB0aGlzLnJlY29yZCxcclxuICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRCeUlERW5kUG9pbnQsXHJcbiAgICAgIGR5bmFtaWNSZWNvcmRQYXJhbXMsXHJcbiAgICAgIChyZXM6IER5blJlY29yZCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjb3JkID0gbmV3IFJlY29yZCgpO1xyXG5cclxuICAgICAgICAoPFJlY29yZD50aGlzLnJlY29yZCkgPSBKU09OLnBhcnNlKHJlcy5TZXJpYWxpemVkVmFsdWVzKTtcclxuICAgICAgICB0aGlzLnJlY29yZC5JRCA9IHRoaXMuaXNEdXBsaWNhdGUgPyBcIlwiIDogcmVzLklEO1xyXG4gICAgICAgIHRoaXMucmVjb3JkLkVudElEID0gcmVzLkVudElEO1xyXG4gICAgICAgIHRoaXMucmVjb3JkLnVzZXJJRCA9IHJlcy51c2VySUQ7XHJcbiAgICAgICAgdGhpcy5yZWNvcmQuVmVyc2lvbiA9IHJlcy5WZXJzaW9uO1xyXG4gICAgICAgIHRoaXMucmVjb3JkLlZhbHVlcyA9IEpTT04ucGFyc2UocmVzLlNlcmlhbGl6ZWRWYWx1ZXMpO1xyXG4gICAgICAgIHRoaXMucmVjb3JkLkZLX0luc2VydFVzZXIgPSByZXMuRktfSW5zZXJ0VXNlcjtcclxuICAgICAgICB0aGlzLnJlY29yZC5GS19VcGRhdGVVc2VyID0gcmVzLkZLX1VwZGF0ZVVzZXI7XHJcbiAgICAgICAgdGhpcy5yZWNvcmQuSW5zZXJ0RGF0ZSA9IHJlcy5JbnNlcnREYXRlO1xyXG4gICAgICAgIHRoaXMucmVjb3JkLlVwZGF0ZURhdGUgPSByZXMuVXBkYXRlRGF0ZTtcclxuXHJcbiAgICAgICAgLy8gdGhpcy52aWV3TW9kZSA9IER5bmFtaWNNb2R1bGVWaWV3TW9kZUVudW0uQ09NUElMRTtcclxuICAgICAgICAvLyB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5nZXRGb3JtQnlJRGFuZFZlcnNpb24oKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIGdldFJlY29yZEJ5SURcclxuXHJcbiAgLy8jcmVnaW9uIGdldEZvcm1CeUlEYW5kVmVyc2lvblxyXG4gIGdldEZvcm1CeUlEYW5kVmVyc2lvbihnZXRBdHRhY2htZW50czogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAvLyBwcmVwYXJvIGxhIHZlcnNpb25lIGNvcnJldHRhIGRlbCBmb3JtXHJcbiAgICB2YXIgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIFBhcmFtTmFtZTogXCJFbnRJRFwiLFxyXG4gICAgICAgIFBhcmFtVmFsdWU6ICg8UmVjb3JkPnRoaXMucmVjb3JkKS5FbnRJRCxcclxuICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIFBhcmFtTmFtZTogXCJWZXJzaW9uXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogKDxSZWNvcmQ+dGhpcy5yZWNvcmQpLlZlcnNpb24sXHJcbiAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImdldEZvcm1CeUlEYW5kVmVyc2lvbiAtIHRoaXMgcmVjb3JkXCIsIDxSZWNvcmQ+dGhpcy5yZWNvcmQpXHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREFuZFZlcnNpb25FbmRQb2ludCxcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgKHJlczogRm9ybSkgPT4ge1xyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJBRlRFUiBnZXRGb3JtQnlJRGFuZFZlcnNpb24gLSB0aGlzLmZvcm1cIiwgcmVzKVxyXG4gICAgICAgIHRoaXMuZm9ybSA9IHJlcztcclxuICAgICAgICB0aGlzLmZvcm0uT3JnYUlEID0gdGhpcy5vcmdhSUQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMgIT0gbnVsbCAmJiB0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzID0gSlNPTi5wYXJzZSh0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMgPSBuZXcgQXJyYXk8VHJpZ2dlcj4oKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2V0RGF0YUdldHRlcih0aGlzLmZvcm0pO1xyXG5cclxuICAgICAgICB0aGlzLmNyZWF0ZVJlY29yZFByb3BlcnRpZXMoKTtcclxuICAgICAgICB0aGlzLnJlb3JkZXJGb3JtRmllbGRzKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcclxuICAgICAgICBpZiAodGhpcy5mb3JtLkZvcm1TY2FsYXJUeXBlICE9IEZvcm1TY2FsYXJUeXBlRW51bS5TZW1wbGljZSkge1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGVGaWVsZEdyb3VwcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFnZXRBdHRhY2htZW50cykge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5mb3JtbG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5nZXRBbGxSZWNvcmRBdHRhY2htZW50cygoPFJlY29yZD50aGlzLnJlY29yZCkuSUQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIGdldEZvcm1CeUlEYW5kVmVyc2lvblxyXG5cclxuICAvLyNyZWdpb24gZ2V0QWxsUmVjb3JkQXR0YWNobWVudHNcclxuICBnZXRBbGxSZWNvcmRBdHRhY2htZW50cyhyZWNvcmRJRDogc3RyaW5nKSB7XHJcblxyXG4gICAgdmFyIGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBQYXJhbU5hbWU6IFwiYW5zd2VySWRcIixcclxuICAgICAgICBQYXJhbVZhbHVlOiByZWNvcmRJRCxcclxuICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uUmVjb3Jkcy5HZXRBbGxBdHRhY2htZW50c0VuZFBvaW50LFxyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAocmVzOiBBcnJheTxEeW5BdHRhY2htZW50PikgPT4ge1xyXG4gICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJHZXRBbGxBdHRhY2htZW50c0VuZFBvaW50KClcIiwgcmVzKTtcclxuXHJcbiAgICAgICAgdGhpcy5mb3JtLkZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtLkltbWFnaW5lIHx8IGZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydJbW1hZ2luZSBjb24gbWFya2VycyddKSB7XHJcbiAgICAgICAgICAgIHZhciBhdHRhY2hJZCA9IHRoaXMucmVjb3JkW2ZpZWxkLk5hbWVdO1xyXG4gICAgICAgICAgICB0aGlzLnJlY29yZFtmaWVsZC5OYW1lXSA9IHJlcy5maW5kKHggPT4geC5JRCA9PSBhdHRhY2hJZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZvcm1sb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIGdldEFsbFJlY29yZEF0dGFjaG1lbnRzXHJcblxyXG4gIC8vI3JlZ2lvbiBmaWVsZHNDb25maWdcclxuICBmaWVsZHNDb25maWcoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZVJlY29yZFByb3BlcnRpZXMoKTtcclxuICAgIHRoaXMucmVvcmRlckZvcm1GaWVsZHMoKTtcclxuICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XHJcbiAgICBpZiAodGhpcy5mb3JtLkZvcm1TY2FsYXJUeXBlICE9IEZvcm1TY2FsYXJUeXBlRW51bS5TZW1wbGljZSkge1xyXG4gICAgICB0aGlzLmNyZWF0ZUZpZWxkR3JvdXBzKCk7XHJcbiAgICB9XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiZmllbGRzQ29uZmlnIC0gZm9ybVwiLCB0aGlzLmZvcm0pO1xyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5mb3JtbG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIGZpZWxkc0NvbmZpZ1xyXG5cclxuICAvLyNyZWdpb24gY3JlYXRlUmVjb3JkUHJvcGVydGllc1xyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY3JlYXJlIG5lbGwnb2dnZXR0byBSZWNvcmQgbGUgcHJvcHJpZXTDoCBtYW5jYW50aSByaXNwZXR0byBhaSBjYW1waSBjaGUgY29tcG9uZ29ubyBsYSBmb3JtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlUmVjb3JkUHJvcGVydGllcygpIHtcclxuICAgIGNvbnN0IHJlY29yZFByb3BlcnRpZXM6IEFycmF5PHN0cmluZz4gPSBPYmplY3Qua2V5cyh0aGlzLnJlY29yZCk7XHJcbiAgICB0aGlzLmZvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgIGlmICghcmVjb3JkUHJvcGVydGllcy5maW5kKChwKSA9PiBwID09PSBmaWVsZC5OYW1lKSkge1xyXG4gICAgICAgIHRoaXMucmVjb3JkW2ZpZWxkLk5hbWVdID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5mb3JtLklubmVyRm9ybXMgJiYgdGhpcy5mb3JtLklubmVyRm9ybXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZvcm0uSW5uZXJGb3Jtcy5mb3JFYWNoKChmb3JtKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYXJyYXlOYW1lOiBzdHJpbmcgPSBmb3JtLk5hbWUuc3BsaXQoXCIgXCIpLmpvaW4oXCJfXCIpO1xyXG4gICAgICAgIGlmICghcmVjb3JkUHJvcGVydGllcy5maW5kKChwKSA9PiBwID09PSBhcnJheU5hbWUpKSB7XHJcbiAgICAgICAgICB0aGlzLnJlY29yZFthcnJheU5hbWVdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJjcmVhdGVSZWNvcmRQcm9wZXJ0aWVzIC0gZm9ybVwiLCB0aGlzLmZvcm0pO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNyZWF0ZVJlY29yZFByb3BlcnRpZXMgLSByZWNvcmRcIiwgdGhpcy5yZWNvcmQpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gY3JlYXRlUmVjb3JkUHJvcGVydGllc1xyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpb3JkaW5hcmUgaSBjYW1waSBjaGUgY29tcG9uZ29ubyBsYSBmb3JtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVvcmRlckZvcm1GaWVsZHMoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLkZpZWxkcyAmJiB0aGlzLmZvcm0uRmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5mb3JtLkZpZWxkcy5zb3J0KChhLCBiKSA9PlxyXG4gICAgICAgIGEuT3JkaW5hbFBvc2l0aW9uID4gYi5PcmRpbmFsUG9zaXRpb24gPyAxIDogYi5PcmRpbmFsUG9zaXRpb24gPiBhLk9yZGluYWxQb3NpdGlvbiA/IC0xIDogMCk7XHJcbiAgICB9XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwicmVvcmRlckZvcm1GaWVsZHMgLSBmb3JtXCIsIHRoaXMuZm9ybSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNyZWFyZSBpbCBGb3JtR3JvdXAgY2hlIHJhcHByZXNlbnRhIGxhIGZvcm0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXAoKSB7XHJcbiAgICB0aGlzLmZvcm1Gb3JtID0gdGhpcy51dGlsaXR5U2VydmljZS5DcmVhdGVGb3JtRm9ybUdyb3VwKFxyXG4gICAgICB0aGlzLmZvcm0uRmllbGRzLFxyXG4gICAgICAoPFJlY29yZD50aGlzLnJlY29yZCksXHJcbiAgICAgIHRoaXMub25seVZpZXdcclxuICAgICk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY3JlYXRlRm9ybUdyb3VwIC0gZm9ybVwiLCB0aGlzLmZvcm0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjcmVhcmUgaSBncnVwcGkgaW4gY3VpIHJhZ2dydXBwYXJlIGkgY2FtcGkgZGVsbGEgZm9ybSBpbiBiYXNlXHJcbiAgICogYSBjb21lIMOoIHN0YXRhIGNvbmZpZ3VyYXRhIGRhbGwndXRlbnRlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlRmllbGRHcm91cHMoKSB7XHJcbiAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3Vwcy5zb3J0KChhLCBiKSA9PiBhLk9yZGluYWxQb3NpdGlvbiA+IGIuT3JkaW5hbFBvc2l0aW9uID8gMSA6IGIuT3JkaW5hbFBvc2l0aW9uID4gYS5PcmRpbmFsUG9zaXRpb24gPyAtMSA6IDApXHJcbiAgICAgIC5tYXAoKGcpID0+IGcuTmFtZSlcclxuICAgICAgLmZvckVhY2goKGdyb3VwTmFtZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmllbGRHcm91cHNbZ3JvdXBOYW1lXSA9IHRoaXMuZm9ybS5GaWVsZHMuZmlsdGVyKFxyXG4gICAgICAgICAgKGYpID0+IGYuRmllbGRHcm91cCA9PSBncm91cE5hbWVcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJjcmVhdGVGaWVsZEdyb3VwcyAtIGZvcm1cIiwgdGhpcy5mb3JtKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBjcmVhdGVIVE1McmVhZGFibGVWYWx1ZXNcclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNyZWFyZSBpbCBGb3JtR3JvdXAgY2hlIHJhcHByZXNlbnRhIGxhIGZvcm0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVIVE1McmVhZGFibGVWYWx1ZXMocmVjb3JkOiBSZWNvcmQpIHtcclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY3JlYXRlSFRNTHJlYWRhYmxlVmFsdWVzIC0gcmVjb3JkXCIsIHJlY29yZCk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY3JlYXRlSFRNTHJlYWRhYmxlVmFsdWVzIC0gZm9ybVwiLCB0aGlzLmZvcm0pO1xyXG5cclxuICAgIHZhciBmb3JtbmFtZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG4gICAgdGhpcy5mb3JtLkZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4geyBmb3JtbmFtZXMucHVzaChmaWVsZC5OYW1lKTsgfSk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY3JlYXRlSFRNTHJlYWRhYmxlVmFsdWVzIC0gZm9ybSBmaWVsZHMgbmFtZXNcIiwgZm9ybW5hbWVzKTtcclxuXHJcbiAgICAvLyBhbGVydChcImNvbnRpbnVlIGZvciB2YWx1ZXM/XCIpXHJcblxyXG4gICAgbGV0IG91dHB1dFZhbHVlc0FycmF5ID0gYXdhaXQgdGhpcy5nZXRSZXNwb25zZVZhbHVlcyhyZWNvcmQsIHRoaXMuZm9ybSk7XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNyZWF0ZUhUTUxyZWFkYWJsZVZhbHVlcyAtIG91dHB1dFZhbHVlc0FycmF5XCIsIG91dHB1dFZhbHVlc0FycmF5KTtcclxuXHJcbiAgICAvLyBhbGVydChcImNvbnRpbnVlIGZvciB0ZW1wbGF0ZXM/XCIpXHJcbiAgICBsZXQgdGVtcGxhdGU6IHN0cmluZyA9IHRoaXMuZ2V0UmVzcG9uc2VUZW1wbGF0ZShyZWNvcmQsIHRoaXMuZm9ybSk7IC8vIG9nZ2V0dG8gbmVsIHF1YWxlIHZpZW5lIGNvc3RydWl0byBpbCB0ZW1wbGF0ZSBvIGNoZSBwcmVuZGUgaWwgdmFsb3JlIGRhIHVuIHRlbXBsYXRlIGVzdGVybm9cclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY3JlYXRlSFRNTHJlYWRhYmxlVmFsdWVzIC0gdGVtcGxhdGVcIiwgdGVtcGxhdGUpO1xyXG4gICAgLy8gYWxlcnQoXCJjb250aW51ZSBmb3Igb3V0cHV0P1wiKVxyXG4gICAgY29uc3QgcmVnZXggPSAvIyMoW1xcd10rKSMjL2c7XHJcbiAgICBjb25zdCBvdXRwdXQgPSB0aGlzLnJlcGxhY2VUZW1wbGF0ZVBsYWNlaG9sZGVyc1dpdGhWYWx1ZXModGVtcGxhdGUsIG91dHB1dFZhbHVlc0FycmF5LCByZWdleClcclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY3JlYXRlSFRNTHJlYWRhYmxlVmFsdWVzIC0gb3V0cHV0XCIsIG91dHB1dCk7XHJcbiAgICAvLyBhbGVydChcImNvbnRpbnVlIGZvciBlbmRpbmc/XCIpXHJcbiAgICByZXR1cm4gb3V0cHV0OyAvLyBvZ2dldHRvIGNoZSBjb250ZXJyw6AgbCdvdXRwdXQgZWxhYm9yYXRvICAgIFxyXG5cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIGNyZWF0ZUhUTUxyZWFkYWJsZVZhbHVlc1xyXG5cclxuICAvLyNyZWdpb24gZ2V0UmVzcG9uc2VWYWx1ZXNcclxuICBwcml2YXRlIGFzeW5jIGdldFJlc3BvbnNlVmFsdWVzKHJlY29yZDogUmVjb3JkLCBmb3JtOiBGb3JtKSB7XHJcbiAgICBsZXQgb3V0cHV0VmFsdWVzQXJyYXk6IEFycmF5PGFueT4gPSBbXTsgLy8gYXJyYXkgY29uIGkgdmFsb3JpIGRlbGxlIHJpc3Bvc3RlXHJcbiAgICAvLyg8RHluUmVjb3JkPnRoaXMucmVjb3JkKS5WYWx1ZXMgw6ggbGEgbGlzdGEgZGkgb2dnZXR0aSB7ZmllbGROYW1lOiB2YWxvcmV9XHJcbiAgICAvLyBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiKHJlY29yZCkuVmFsdWVzXCIsIHJlY29yZCk7XHJcblxyXG4gICAgZm9ybS5GaWVsZHMuZm9yRWFjaChcclxuICAgICAgYXN5bmMgKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIC8vR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImdldFJlc3BvbnNlVmFsdWVzIGZpZWxkXCIsIGZpZWxkKTtcclxuICAgICAgICAgIC8vIGxldCBmb3VuZE9iamVjdCA9IHJlY29yZC5maW5kKFxyXG4gICAgICAgICAgLy8gICAob2JqKSA9PiBvYmogPT09IGZpZWxkLk5hbWVcclxuICAgICAgICAgIC8vICk7XHJcbiAgICAgICAgICBsZXQgZm91bmRPYmplY3QgPSByZWNvcmRbZmllbGQuTmFtZV07XHJcblxyXG4gICAgICAgICAgLy8gZmFyZSB1biBldmFsIHBlciBwb3BvbGFyZSBpIHZhbHVlUGFpcnMgc2Ugw6ggcHJlc2VudGUgdW5hIGZvcm11bGFcclxuICAgICAgICAgIC8vIHByZW5kZXJlIGxhIGxhYmVsIGNvcnJldHRhXHJcbiAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgICAgICAgLy8gUFJFUEFSTyBJTCBWQUxVRVBBSVJTXHJcbiAgICAgICAgICBzd2l0Y2ggKGZpZWxkLkZpZWxkVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06IHtcclxuICAgICAgICAgICAgICBpZiAoZmllbGQuRm9ybXVsYSAhPSBudWxsICYmIGZpZWxkLkZvcm11bGEpIHtcclxuICAgICAgICAgICAgICAgIC8vIGFnZ2l1bmdvIGEgdmFsdWVwYWlycyBpIHZhbG9yaSBjYWxjb2xhdGlcclxuICAgICAgICAgICAgICAgIC8vICg8TGlzdFZhbHVlRmllbGQ+Zm91bmRPYmplY3QpLlZhbHVlUGFpcnMgPSAoPExpc3RWYWx1ZUZpZWxkPmZvdW5kT2JqZWN0KS5WYWx1ZVBhaXJzID8gKDxMaXN0VmFsdWVGaWVsZD5mb3VuZE9iamVjdCkuVmFsdWVQYWlycyA6IHt9O1xyXG4gICAgICAgICAgICAgICAgdmFyIHRlbXAgPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYShcclxuICAgICAgICAgICAgICAgICAgZmllbGQuRm9ybXVsYSxcclxuICAgICAgICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQga2V5MiBpbiB0ZW1wKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChVdGlsaXR5SGVscGVyU2VydmljZS5pc051bWVyaWModGVtcFtrZXkyXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzW051bWJlcihrZXkyKV0gPSB0ZW1wW2tleTJdO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICg8TGlzdFZhbHVlRmllbGQ+ZmllbGQpLlZhbHVlUGFpcnNba2V5Ml0gPSB0ZW1wW2tleTJdO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBvdXRwdXRWYWx1ZXNBcnJheVtmaWVsZC5OYW1lXSA9ICg8TGlzdFZhbHVlRmllbGQ+ZmllbGQpLlZhbHVlUGFpcnNbcmVjb3JkW2ZpZWxkLk5hbWVdXTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKCg8TGlzdFZhbHVlRmllbGQ+ZmllbGQpLlZhbHVlUGFpcnMgIT0gbnVsbCAmJiAoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIC8vIHZhIGJlbmUgY29zw6xcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKCg8TGlzdFZhbHVlRmllbGQ+ZmllbGQpLlZhbHVlU3RyaW5nICE9IG51bGwgJiYgKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVTdHJpbmcgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgLy8gdmEgcHJlc2EgbGEgc3RyaWduYSBlIHJpbWFwcGF0YSBuZWwgZGlhcmlvXHJcbiAgICAgICAgICAgICAgICAoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzID0gR2xvYmFsU2VydmljZS5zdHJpbmdUb1ZhbHVlUGFpcnMoKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVTdHJpbmcpO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgbGV0IGludmVydGVkID0ge307XHJcbiAgICAgICAgICAgICAgLy9HbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiKDxMaXN0VmFsdWVGaWVsZD5mb3VuZE9iamVjdCkuVmFsdWVQYWlyc1wiLCAoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzKTtcclxuICAgICAgICAgICAgICAvLyBWYWx1ZVBhaXJzOiB7U2k6ICdTaScsIE5vOiAnTm8nfVxyXG4gICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiAoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpbnZlcnRlZFsoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzW2tleV1dID0ga2V5O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzID0gaW52ZXJ0ZWQ7XHJcbiAgICAgICAgICAgICAgaWYgKHJlY29yZFtmaWVsZC5OYW1lXSAhPSBudWxsICYmICg8TGlzdFZhbHVlRmllbGQ+ZmllbGQpLklzTXVsdGlDaG9pY2hlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjYXNvIE1VTFRJU0NFTFRBXHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgcmVjb3JkW2ZpZWxkLk5hbWVdLmZvckVhY2goKGVsZW1lbnQsIGkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gKDxMaXN0VmFsdWVGaWVsZD5maWVsZCkuVmFsdWVQYWlyc1tlbGVtZW50XTtcclxuICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gaSA9PSByZWNvcmRbZmllbGQuTmFtZV0ubGVuZ3RoIC0gMSA/IFwiXCIgOiBcIiwgXCJcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSAoPExpc3RWYWx1ZUZpZWxkPmZpZWxkKS5WYWx1ZVBhaXJzW3JlY29yZFtmaWVsZC5OYW1lXV07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJvdXRwdXRWYWx1ZXNBcnJheVwiLCBvdXRwdXRWYWx1ZXNBcnJheSlcclxuXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkNhbXBvIG51bWVyaWNvXCJdOiB7XHJcbiAgICAgICAgICAgICAgaWYgKCg8TnVtZXJpY0ZpZWxkPmZpZWxkKS5Jc0ludGVnZXIpIHtcclxuICAgICAgICAgICAgICAgIGlmICgoPE51bWVyaWNGaWVsZD5maWVsZCkuRGVjaW1hbFNlcGFyYXRvciA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gcmVjb3JkW2ZpZWxkLk5hbWVdO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSByZWNvcmRbZmllbGQuTmFtZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdID0gcmVjb3JkW2ZpZWxkLk5hbWVdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlRW51bVsnSW1tYWdpbmUnXToge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaW1tYWdpbmUgXCIsIGZpZWxkLk5hbWUsIHJlY29yZFtmaWVsZC5OYW1lXSlcclxuICAgICAgICAgICAgICAvLyBSZWN1cGVybyBpbCBCQVNFNjQgZGVsbCdpbW1hZ2luZSBSZXNpemVkIHZpYSBwcm9taXNlIGNsaWVudFxyXG4gICAgICAgICAgICAgIHZhciByZXNpemVkQmFzZTY0ID0gYXdhaXQgdGhpcy5yZXNpemVCYXNlNjRJbWFnZShcImRhdGE6aW1hZ2UvXCIgKyByZWNvcmRbZmllbGQuTmFtZV0uRmlsZUV4dGVuc2lvbiArIFwiO2Jhc2U2NCxcIiArIHJlY29yZFtmaWVsZC5OYW1lXS5GaWxlRGF0YUJhc2U2NCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIEFnZ2l1bmdvIGwnSFRNTCBjb24gaWwgbnVvdm8gQkFTRTY0XHJcbiAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSBcIjxpbWcgc3JjPSdcIiArIHJlc2l6ZWRCYXNlNjQgKyBcIicgc3R5bGU9J2hlaWdodDogXCIgKyByZWNvcmRbZmllbGQuTmFtZV0uUmVzaXplZEltYWdlSGVpZ2h0UHggKyBcInB4Jz5cIjtcclxuXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG5cclxuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtWydBbGxlZ2F0byddOiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJBbGxlZ2F0byBcIiwgZmllbGQuTmFtZSwgcmVjb3JkW2ZpZWxkLk5hbWVdLCByZWNvcmQpXHJcblxyXG4gICAgICAgICAgICAgIGlmIChyZWNvcmRbZmllbGQuTmFtZV0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc2l6ZWRCYXNlNjQ7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkW2ZpZWxkLk5hbWVdWzBdLklzSW1hZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgLy8gUmVjdXBlcm8gaWwgQkFTRTY0IGRlbGwnaW1tYWdpbmUgUmVzaXplZCB2aWEgcHJvbWlzZSBjbGllbnRcclxuICAgICAgICAgICAgICAgICAgcmVzaXplZEJhc2U2NCA9IGF3YWl0IHRoaXMucmVzaXplQmFzZTY0SW1hZ2UoXCJkYXRhOmltYWdlL1wiICsgcmVjb3JkW2ZpZWxkLk5hbWVdWzBdLkZpbGVFeHRlbnNpb24gKyBcIjtiYXNlNjQsXCIgKyByZWNvcmRbZmllbGQuTmFtZV1bMF0uRmlsZURhdGFCYXNlNjQpO1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkFsbGVnYXRvIHJlc2l6ZWRCYXNlNjRcIiwgcmVzaXplZEJhc2U2NClcclxuICAgICAgICAgICAgICAgICAgLy8gQWdnaXVuZ28gbCdIVE1MIGNvbiBpbCBudW92byBCQVNFNjRcclxuICAgICAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSAnPGltZyBjbGFzcz1cImltYWdlLXByZXZpZXdcIiBzcmM9XCInICsgcmVzaXplZEJhc2U2NCArICdcIiBzdHlsZT1cImhlaWdodDogJyArIHJlY29yZFtmaWVsZC5OYW1lXVswXS5SZXNpemVkSW1hZ2VIZWlnaHRQeCArICdweFwiPic7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlY29yZFtmaWVsZC5OYW1lXVswXS5GaWxlQ29udGVudFR5cGUgPT0gXCJhcHBsaWNhdGlvbi9wZGZcIikge1xyXG4gICAgICAgICAgICAgICAgICBvdXRwdXRWYWx1ZXNBcnJheVtmaWVsZC5OYW1lXSA9ICc8aWZyYW1lIHNyYz1cImRhdGE6YXBwbGljYXRpb24vcGRmO2Jhc2U2NCwnICsgcmVjb3JkW2ZpZWxkLk5hbWVdWzBdLkZpbGVEYXRhQmFzZTY0ICsgJ1wic3R5bGU9XCJtaW4taGVpZ2h0OiAzMDBweDsgaGVpZ2h0OiAxMDAlO1wiPjwvaWZyYW1lPic7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBvdXRwdXRWYWx1ZXNBcnJheVtmaWVsZC5OYW1lXSA9ICc8aWZyYW1lIHNyYz1cImRhdGE6XCInICsgcmVjb3JkW2ZpZWxkLk5hbWVdWzBdLkZpbGVFeHRlbnNpb24gKyAnXCI7YmFzZTY0LCcgKyByZWNvcmRbZmllbGQuTmFtZV1bMF0uRmlsZURhdGFCYXNlNjQgKyAnXCJzdHlsZT1cIm1pbi1oZWlnaHQ6IDMwMHB4OyBoZWlnaHQ6IDEwMCU7XCI+PC9pZnJhbWU+JztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBBZ2dpdW5nbyBsJ0hUTUwgY29uIGlsIG51b3ZvIEJBU0U2NFxyXG4gICAgICAgICAgICAgICAgLy8gb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSBcIjxpbWcgc3JjPSdcIiArIHJlc2l6ZWRCYXNlNjQgKyBcIicgc3R5bGU9J2hlaWdodDogXCIgKyByZWNvcmRbZmllbGQuTmFtZV1bMF0uUmVzaXplZEltYWdlSGVpZ2h0UHggKyBcInB4Jz5cIjtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQWxsZWdhdG8gb3V0cHV0VmFsdWVzQXJyYXlcIiwgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0pXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlRW51bVsnSW1tYWdpbmUgY29uIG1hcmtlcnMnXToge1xyXG5cclxuICAgICAgICAgICAgICAvLyBSZWN1cGVybyBpbCBCQVNFNjQgZGVsbCdpbW1hZ2luZSBSZXNpemVkIHZpYSBwcm9taXNlIGNsaWVudFxyXG4gICAgICAgICAgICAgIHZhciByZXNpemVkQmFzZTY0ID0gYXdhaXQgdGhpcy5yZXNpemVCYXNlNjRJbWFnZShcImRhdGE6aW1hZ2UvXCIgKyByZWNvcmRbZmllbGQuTmFtZV0uRmlsZUV4dGVuc2lvbiArIFwiO2Jhc2U2NCxcIiArIHJlY29yZFtmaWVsZC5OYW1lXS5GaWxlRGF0YUJhc2U2NCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIEFnZ2l1bmdvIGwnSFRNTCBjb24gaWwgbnVvdm8gQkFTRTY0XHJcbiAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSBcIjxpbWcgc3JjPSdcIiArIHJlc2l6ZWRCYXNlNjQgKyBcIicgc3R5bGU9J2hlaWdodDogXCIgKyByZWNvcmRbZmllbGQuTmFtZV0uUmVzaXplZEltYWdlSGVpZ2h0UHggKyBcInB4Jz5cIjtcclxuXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW1bJ0VsZW5jbyBpbW1hZ2luaSddOiB7XHJcbiAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSBcIlwiO1xyXG4gICAgICAgICAgICAgIGlmIChyZWNvcmRbZmllbGQuTmFtZV0gIT0gbnVsbCAmJiAoPEltYWdlU2VsZWN0b3JGaWVsZD5maWVsZCkuSXNNdWx0aUNob2ljaGUpIHtcclxuICAgICAgICAgICAgICAgIHJlY29yZFtmaWVsZC5OYW1lXS5mb3JFYWNoKChpbWFnZW9iajogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHZhciBhdHRhY2htZW50SW5Gb3JtOiBEeW5BdHRhY2htZW50ID0gKDxJbWFnZVNlbGVjdG9yRmllbGQ+ZmllbGQpLkF0dGFjaG1lbnRMaXN0LmZpbmQoeCA9PiB4LklEID09IGltYWdlb2JqKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRJbkZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdICs9IGF0dGFjaG1lbnRJbkZvcm0uQnV0dG9uS2V5ICsgXCIsIFwiO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHZhciBwYXJ0cyA9IG91dHB1dFZhbHVlc0FycmF5W2ZpZWxkLk5hbWVdLnNwbGl0KFwiLCBcIik7XHJcbiAgICAgICAgICAgICAgICBvdXRwdXRWYWx1ZXNBcnJheVtmaWVsZC5OYW1lXSA9IHBhcnRzLnNsaWNlKDAsIHBhcnRzLmxlbmd0aCAtIDEpLmpvaW4oXCIsIFwiKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYXR0YWNobWVudEluRm9ybTogRHluQXR0YWNobWVudCA9ICg8SW1hZ2VTZWxlY3RvckZpZWxkPmZpZWxkKS5BdHRhY2htZW50TGlzdC5maW5kKHggPT4geC5JRCA9PSByZWNvcmRbZmllbGQuTmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRJbkZvcm0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBvdXRwdXRWYWx1ZXNBcnJheVtmaWVsZC5OYW1lXSA9IGF0dGFjaG1lbnRJbkZvcm0uQnV0dG9uS2V5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgICAgb3V0cHV0VmFsdWVzQXJyYXlbZmllbGQuTmFtZV0gPSByZWNvcmRbZmllbGQuTmFtZV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApXHJcblxyXG4gICAgLy8gRnVuemlvbmEsIG1hIG5vbiDDqCBhZmZpZGFiaWxlIGFsIDEwMCVcclxuICAgIGF3YWl0IHRoaXMuZGVsYXkoMzAwMCk7XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm91dHB1dFZhbHVlc0FycmF5IDFcIiwgb3V0cHV0VmFsdWVzQXJyYXkpO1xyXG4gICAgLy8gY2FuY2VsbG8gaSB2YWxvcmkgaW5kZWZpbml0aSBvIG51bGxpXHJcbiAgICBmb3IgKGNvbnN0IGNoaWF2ZSBpbiBvdXRwdXRWYWx1ZXNBcnJheSkge1xyXG4gICAgICBpZiAob3V0cHV0VmFsdWVzQXJyYXlbY2hpYXZlXSA9PSB1bmRlZmluZWQgfHwgb3V0cHV0VmFsdWVzQXJyYXlbY2hpYXZlXSA9PSBudWxsKVxyXG4gICAgICAgIG91dHB1dFZhbHVlc0FycmF5W2NoaWF2ZV0gPSAnJ1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG91dHB1dFZhbHVlc0FycmF5O1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gZ2V0UmVzcG9uc2VWYWx1ZXNcclxuXHJcbiAgLy8jcmVnaW9uIGdldFJlc3BvbnNlVGVtcGxhdGVcclxuICBwcml2YXRlIGdldFJlc3BvbnNlVGVtcGxhdGUocmVjb3JkOiBSZWNvcmQsIGZvcm06IEZvcm0pOiBzdHJpbmcge1xyXG4gICAgbGV0IHRlbXBsYXRlOiBzdHJpbmcgPSAnPGRpdiBjbGFzcz1cInJvd1wiPic7XHJcbiAgICAvLyBQUkVQQVJPIE8gUFJFTkRPIExBIFNUUlVUVFVSQSBEQSBTVEFNUEFSRVxyXG4gICAgZm9ybS5GaWVsZHMuZm9yRWFjaCgoYmFzZUZpZWxkOiBCYXNlRmllbGQpID0+IHtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnZ2V0UmVzcG9zbmVUZW1wbGF0ZSAtIHByZSAtIGZpZWxkJywgYmFzZUZpZWxkKVxyXG4gICAgICBpZiAoYmFzZUZpZWxkLkFuc3dlclN0eWxlID09IG51bGwgfHwgYmFzZUZpZWxkLkFuc3dlclN0eWxlID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGJhc2VGaWVsZC5BbnN3ZXJTdHlsZSA9IG5ldyBBbnN3ZXJTdHlsZSgpO1xyXG4gICAgICAgIGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5Db2xTcGFuU2l6ZXMgPSBiYXNlRmllbGQuQ29sU3BhblNpemVzO1xyXG4gICAgICAgIGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5GaWVsZHN0eWxlQ1NTID0gYmFzZUZpZWxkLkZpZWxkc3R5bGVDU1M7XHJcbiAgICAgICAgYmFzZUZpZWxkLkFuc3dlclN0eWxlLkxhYmVsc3R5bGVDU1MgPSBiYXNlRmllbGQuTGFiZWxzdHlsZUNTUztcclxuICAgICAgICBpZiAoYmFzZUZpZWxkLlZpc2libGVJZikge1xyXG4gICAgICAgICAgYmFzZUZpZWxkLkFuc3dlclN0eWxlLkluTGlzdFZpZXcgPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYShiYXNlRmllbGQuVmlzaWJsZUlmLCByZWNvcmQsIG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBiYXNlRmllbGQuQW5zd2VyU3R5bGUuSW5MaXN0VmlldyA9IGJhc2VGaWVsZC5Jbkxpc3RWaWV3O1xyXG4gICAgICAgICAgYmFzZUZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZiA9IGJhc2VGaWVsZC5WaXNpYmxlSWY7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChiYXNlRmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmKSB7XHJcbiAgICAgICAgY29uc3QgdmlzaWJpbGl0eSA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkV2YWx1YXRlRmllbGRGb3JtdWxhKGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYsIHJlY29yZCwgbnVsbClcclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiRXZhbHVhdGVGaWVsZEZvcm11bGEgLSB2aXNpYmlsaXR5XCIsIHZpc2liaWxpdHkpO1xyXG4gICAgICAgIGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3ID0gKHZpc2liaWxpdHkgPT0gdHJ1ZSkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3KSB7XHJcbiAgICAgICAgdGVtcGxhdGUgKz0gJzxkaXYgY2xhc3M9XCInICsgdGhpcy51dGlsaXR5U2VydmljZS5nZXRGaWVsZEFuc3dlclN0eWxlQ2xhc3MoYmFzZUZpZWxkKSArICcgZC1mbGV4IGZsZXgtY29sdW1uIGR5bmFmb3JtLWFuc3dlci1maWVsZFwiPiAnICtcclxuICAgICAgICAgICcgPHNwYW4gY2xhc3M9XCJkeW5hZm9ybS1xdWVzdGlvblwiIHN0eWxlPVwiJyArIGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5MYWJlbHN0eWxlQ1NTICsgJ1wiPicgKyBiYXNlRmllbGQuRGVzY3JpcHRpb24gKyAnOjwvc3Bhbj4nICtcclxuICAgICAgICAgICcgPHNwYW4gY2xhc3M9XCJkeW5hZm9ybS1yZXNwb25zZVwiIHN0eWxlPVwiJyArIGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5GaWVsZHN0eWxlQ1NTICsgJ1wiPiAjIycgKyBiYXNlRmllbGQuTmFtZSArICcjIzwvc3Bhbj4nICtcclxuICAgICAgICAgICc8L2Rpdj4gXFxuICc7XHJcbiAgICAgIH0gZWxzZSBpZiAoIWJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3ICYmIGJhc2VGaWVsZC5BbnN3ZXJTdHlsZS5JbnZpc2liaWxpdHkgPT0gRmllbGRJbnZpc2liaWxpdHlFbnVtWydOQVNDT1NUTyBDT04gQVJFQSBWSVNJQklMRSddKSB7XHJcbiAgICAgICAgdGVtcGxhdGUgKz0gJzxkaXYgY2xhc3M9XCInICsgdGhpcy51dGlsaXR5U2VydmljZS5nZXRGaWVsZEFuc3dlclN0eWxlQ2xhc3MoYmFzZUZpZWxkKSArICcgZC1mbGV4IGZsZXgtY29sdW1uIGR5bmFmb3JtLWFuc3dlci1maWVsZFwiPiAnICtcclxuICAgICAgICAgICc8L2Rpdj4gXFxuICc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2dldFJlc3Bvc25lVGVtcGxhdGUgLSBwb3N0IC0gZmllbGQnLCBiYXNlRmllbGQpXHJcbiAgICB9KTtcclxuICAgIC8vIChhdHR1YWxtZW50ZSBub24gZXNpc3RlIGlsIGNvbmNldHRvIGRpIHRlbXBhdGUgZGkgb3V0cHV0KVxyXG4gICAgdGVtcGxhdGUgKz0gJzwvZGl2Pic7XHJcbiAgICByZXR1cm4gdGVtcGxhdGU7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBnZXRSZXNwb25zZVRlbXBsYXRlXHJcblxyXG4gIHByaXZhdGUgcmVwbGFjZVRlbXBsYXRlUGxhY2Vob2xkZXJzV2l0aFZhbHVlcyh0ZW1wbGF0ZTogc3RyaW5nLCBvdXRwdXRWYWx1ZXNBcnJheTogQXJyYXk8YW55PiwgcmVnZXgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRlbXBsYXRlLnJlcGxhY2UocmVnZXgsIChtYXRjaCwgZ3JvdXApID0+IHtcclxuICAgICAgcmV0dXJuIDxzdHJpbmc+b3V0cHV0VmFsdWVzQXJyYXlbZ3JvdXBdO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxheShtczogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHJlc2l6ZUJhc2U2NEltYWdlKGJhc2U2NEltYWdlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IGltYWdldHlwZSA9IC9kYXRhOmltYWdlXFwvKFtcXHddKyk7LztcclxuICAgICAgY29uc3QgbWF0Y2ggPSBiYXNlNjRJbWFnZS5tYXRjaChpbWFnZXR5cGUpO1xyXG4gICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgaW1nLnNyYyA9IGJhc2U2NEltYWdlO1xyXG4gICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XHJcbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSBpbWcud2lkdGg7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gaW1nLmhlaWdodDtcclxuICAgICAgICBjb25zdCBhc3BlY3RSYXRpbyA9IHdpZHRoIC8gaGVpZ2h0O1xyXG5cclxuICAgICAgICBjb25zdCBuZXdIZWlnaHQgPSAxMjg7XHJcbiAgICAgICAgY29uc3QgbmV3V2lkdGggPSBuZXdIZWlnaHQgKiBhc3BlY3RSYXRpbztcclxuXHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gbmV3V2lkdGg7XHJcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IG5ld0hlaWdodDtcclxuICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgbmV3V2lkdGgsIG5ld0hlaWdodCk7XHJcbiAgICAgICAgbGV0IHF1YWxpdHkgPSAwLjg7XHJcbiAgICAgICAgbGV0IGRhdGFVUkwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS8nK21hdGNoWzFdLCBxdWFsaXR5KTtcclxuICAgICAgICByZXNvbHZlKGRhdGFVUkwpO1xyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhR2V0dGVyKGZvcm0pIHtcclxuICAgIGZvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblxyXG4gICAgICAvLyBUcmFzZm9ybW8gaWwgQmFzZTY0U3RyaW5nIGRlbCBEYXRhZ2V0dGVyIG5lbCBEYXRhZ2V0dGVyIHZlcm8gZSBwcm9wcmlvXHJcbiAgICAgIGlmIChmaWVsZC5EYXRhR2V0dGVyVmFsdWVCYXNlNjRTdHJpbmcgIT0gbnVsbCkge1xyXG4gICAgICAgIGZpZWxkLkRhdGFHZXR0ZXIgPSBKU09OLnBhcnNlKGF0b2IoZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nKSk7XHJcbiAgICAgICAgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9IGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gbnVsbCA/IERhdGFHZXR0ZXJUeXBlRW51bS5NYW51YWxlIDogZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWVsZC5EYXRhR2V0dGVyID0gbmV3IERhdGFHZXR0ZXIoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBjaGVja1RyaWdnZXJzXHJcbiAgLy8gQ29udHJvbGxhIGUgc3BhcmEgaWwgdHJpZ2dlciBzZSBuZWNlc3NhcmlvXHJcbiAgY2hlY2tUcmlnZ2VycyhyZWNvcmQ6IFJlY29yZCkge1xyXG4gICAgdmFyIGZpcmVUcmlnZ2VyID0gdHJ1ZTtcclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY2hlY2tUcmlnZ2VycyAtIGluc2lkZSBjaGVja1RyaWdnZXJzKClcIiwgdGhpcy5mb3JtLlRyaWdnZXJzKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtLlRyaWdnZXJzICE9IG51bGwpIHtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNoZWNrVHJpZ2dlcnMgLSBoYXZlIHRyaWdnZXJzIGluIGZvcm1cIik7XHJcbiAgICAgIHRoaXMuZm9ybS5UcmlnZ2Vycy5mb3JFYWNoKCh0cmlnZ2VyKSA9PiB7XHJcbiAgICAgICAgZmlyZVRyaWdnZXIgPSB0cnVlO1xyXG4gICAgICAgIHRyaWdnZXIuY29uZGl0aW9ucy5mb3JFYWNoKChjb25kaXRpb24pID0+IHtcclxuICAgICAgICAgIGlmICghZmlyZVRyaWdnZXIpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgICB2YXIgbG9naWNPcGVyYXRvcjogTG9naWNPcGVyYXRvciA9IGNvbmRpdGlvbi5sb2dpY29wZXJhdG9yIGFzIExvZ2ljT3BlcmF0b3I7XHJcbiAgICAgICAgICB2YXIgY29uZGl0aW9uS2V5ID0gT2JqZWN0LmtleXMoY29uZGl0aW9uLnJlY29yZClbMF07XHJcbiAgICAgICAgICB2YXIgY29uZGl0aW9uVmFsdWUgPSBjb25kaXRpb24ucmVjb3JkW2NvbmRpdGlvbktleV07XHJcbiAgICAgICAgICB2YXIgcmVjb3JkVmFsdWUgPSByZWNvcmRbY29uZGl0aW9uS2V5XTtcclxuXHJcbiAgICAgICAgICBpZiAobG9naWNPcGVyYXRvciA9PSBMb2dpY09wZXJhdG9yWyc9J10gJiYgY29uZGl0aW9uVmFsdWUgIT0gcmVjb3JkVmFsdWUpIHtcclxuICAgICAgICAgICAgZmlyZVRyaWdnZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2dUcmlnZ2VyKHRyaWdnZXIsIGNvbmRpdGlvbiwgcmVjb3JkKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChsb2dpY09wZXJhdG9yID09IExvZ2ljT3BlcmF0b3JbJyE9J10gJiYgY29uZGl0aW9uVmFsdWUgPT0gcmVjb3JkVmFsdWUpIHtcclxuICAgICAgICAgICAgZmlyZVRyaWdnZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2dUcmlnZ2VyKHRyaWdnZXIsIGNvbmRpdGlvbiwgcmVjb3JkKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChsb2dpY09wZXJhdG9yID09IExvZ2ljT3BlcmF0b3JbJzwnXSAmJiBjb25kaXRpb25WYWx1ZSA8PSByZWNvcmRWYWx1ZSkge1xyXG4gICAgICAgICAgICBmaXJlVHJpZ2dlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ1RyaWdnZXIodHJpZ2dlciwgY29uZGl0aW9uLCByZWNvcmQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGxvZ2ljT3BlcmF0b3IgPT0gTG9naWNPcGVyYXRvclsnPD0nXSAmJiBjb25kaXRpb25WYWx1ZSA8IHJlY29yZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZpcmVUcmlnZ2VyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubG9nVHJpZ2dlcih0cmlnZ2VyLCBjb25kaXRpb24sIHJlY29yZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobG9naWNPcGVyYXRvciA9PSBMb2dpY09wZXJhdG9yWyc+J10gJiYgY29uZGl0aW9uVmFsdWUgPj0gcmVjb3JkVmFsdWUpIHtcclxuICAgICAgICAgICAgZmlyZVRyaWdnZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2dUcmlnZ2VyKHRyaWdnZXIsIGNvbmRpdGlvbiwgcmVjb3JkKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChsb2dpY09wZXJhdG9yID09IExvZ2ljT3BlcmF0b3JbJz49J10gJiYgY29uZGl0aW9uVmFsdWUgPiByZWNvcmRWYWx1ZSkge1xyXG4gICAgICAgICAgICBmaXJlVHJpZ2dlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ1RyaWdnZXIodHJpZ2dlciwgY29uZGl0aW9uLCByZWNvcmQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGxvZ2ljT3BlcmF0b3IgPT0gTG9naWNPcGVyYXRvclsnTElLRSddICYmIHJlY29yZFZhbHVlLmluZGV4T2YoY29uZGl0aW9uVmFsdWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgIGZpcmVUcmlnZ2VyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubG9nVHJpZ2dlcih0cmlnZ2VyLCBjb25kaXRpb24sIHJlY29yZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobG9naWNPcGVyYXRvciA9PSBMb2dpY09wZXJhdG9yWydOT1QgTElLRSddICYmIHJlY29yZFZhbHVlLmluZGV4T2YoY29uZGl0aW9uVmFsdWUpICE9IC0xKSB7XHJcbiAgICAgICAgICAgIGZpcmVUcmlnZ2VyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubG9nVHJpZ2dlcih0cmlnZ2VyLCBjb25kaXRpb24sIHJlY29yZCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobG9naWNPcGVyYXRvciA9PSBMb2dpY09wZXJhdG9yLlNpICYmICFyZWNvcmRWYWx1ZSkge1xyXG4gICAgICAgICAgICBmaXJlVHJpZ2dlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ1RyaWdnZXIodHJpZ2dlciwgY29uZGl0aW9uLCByZWNvcmQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGxvZ2ljT3BlcmF0b3IgPT0gTG9naWNPcGVyYXRvci5ObyAmJiByZWNvcmRWYWx1ZSkge1xyXG4gICAgICAgICAgICBmaXJlVHJpZ2dlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ1RyaWdnZXIodHJpZ2dlciwgY29uZGl0aW9uLCByZWNvcmQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY2hlY2tUcmlnZ2VycyAtIGZpcmVUcmlnZ2VyPyBcIiwgZmlyZVRyaWdnZXIpO1xyXG5cclxuICAgICAgICBpZiAoZmlyZVRyaWdnZXIpIHtcclxuXHJcbiAgICAgICAgICAvLyBJbCB0cmlnZ2VyIHZhIHNwYXJhdG8uIFZhbHV0byBsZSBmdW56aW9uaSBpbnRlcm5lXHJcbiAgICAgICAgICB2YXIgZm9ybXVsYXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRyaWdnZXIuZm9ybXVsYXMpKTtcclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJjaGVja1RyaWdnZXJzIC0gZXZhbHVhdGUgZm9ybXVsYXMgXCIsIGZvcm11bGFzKTtcclxuXHJcbiAgICAgICAgICBPYmplY3Qua2V5cyhmb3JtdWxhcykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBmb3JtdWxhID0gZm9ybXVsYXNba2V5XS52YWx1ZTtcclxuICAgICAgICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNoZWNrVHJpZ2dlcnMgLSBmb3JtdWxhc1trZXldIFwiLCBmb3JtdWxhc1trZXldKTtcclxuICAgICAgICAgICAgdmFyIHRlbXA7XHJcbiAgICAgICAgICAgIGlmIChmb3JtdWxhc1trZXldLnR5cGUgPT0gVHJpZ2dlclByb3BlcnR5VHlwZUVudW0uRE1NT0RVTEUpIHtcclxuICAgICAgICAgICAgICB0ZW1wID0gZm9ybXVsYVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRlbXAgPSBVdGlsaXR5SGVscGVyU2VydmljZS5FdmFsdWF0ZUZpZWxkRm9ybXVsYShcclxuICAgICAgICAgICAgICAgIGZvcm11bGEsXHJcbiAgICAgICAgICAgICAgICByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZm9ybXVsYXNba2V5XSA9IHRlbXA7XHJcblxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgLy8gU3Bhcm8gaWwgdHJpZ2dlciBhbGwnZXN0ZXJub1xyXG4gICAgICAgICAgdmFyIHRyaWdnZXJUb0ZpcmU6IEZpcmVUcmlnZ2VyID0gbmV3IEZpcmVUcmlnZ2VyKCk7XHJcbiAgICAgICAgICB0cmlnZ2VyVG9GaXJlLmZvcm0gPSB0aGlzLmZvcm07IC8vIElsIGZvcm0gY2hlIGhhIHByb3ZvY2F0byBpbCB0cmlnZ2VyXHJcbiAgICAgICAgICB0cmlnZ2VyVG9GaXJlLnJlY29yZCA9IHJlY29yZDsgLy8gSWwgcmVjb3JkIGNoZSBoYSBwcm92b2NhdG8gaWwgdHJpZ2dlclxyXG4gICAgICAgICAgdHJpZ2dlclRvRmlyZS50cmlnZ2VyID0gdHJpZ2dlcjsgLy8gSWwgdHJpZ2dlclxyXG4gICAgICAgICAgdHJpZ2dlclRvRmlyZS5mb3JtdWxhcyA9IGZvcm11bGFzOyAvLyBMZSBmb3JtdWxlIGludmlhdGUgaW4gaW5wdXQgYWwgbW9kdWxvIGRpbmFtaWNvLCB2YWx1dGF0ZSBuZWwgY29udGVzdG8gZGVsIHRyaWdnZXIgZSBkZWwgcmVjb3JkXHJcbiAgICAgICAgICB0cmlnZ2VyVG9GaXJlLnVzZXJQYXRpZW50ID0gdGhpcy51c2VySUQ7IC8vIFVzZXJJRFxyXG5cclxuICAgICAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJjaGVja1RyaWdnZXJzIC0gVHJpZ2dlciBGaXJlZCBcIiwgdHJpZ2dlclRvRmlyZSk7XHJcbiAgICAgICAgICB0aGlzLmZpcmVUcmlnZ2VyLmVtaXQodHJpZ2dlclRvRmlyZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2dUcmlnZ2VyKHRyaWdnZXIsIGNvbmRpdGlvbiwgcmVjb3JkKSB7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY2hlY2tUcmlnZ2VycyAtIENvbmRpdGlvbiB0aGF0IGludmFsaWRhdGVkIHRoZSB0cmlnZ2VyIFRSSUdHRVJcIiwgdHJpZ2dlcik7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiY2hlY2tUcmlnZ2VycyAtIENvbmRpdGlvbiB0aGF0IGludmFsaWRhdGVkIHRoZSB0cmlnZ2VyIENPTkRJVElPTlwiLCBjb25kaXRpb24pO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImNoZWNrVHJpZ2dlcnMgLSBDb25kaXRpb24gdGhhdCBpbnZhbGlkYXRlZCB0aGUgdHJpZ2dlciBSRUNPUkRcIiwgcmVjb3JkKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIGNoZWNrVHJpZ2dlcnNcclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlclwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZXFwLWR5bmFtaWMtbW9kdWxlLXRpdGxlIGFkZC1mb3JtLXJlY29yZC1oZWFkZXJcIiAqbmdJZj1cInNob3dUaXRsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPHNwYW4+e3tmb3JtLk5hbWV9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUZvcm1cIiBjbGFzcz1cImFkZC1mb3JtLXJlY29yZC1mb3JtXCI+XHJcblxyXG4gICAgICAgIDwhLS0gVklTVUFMSVpaQVpJT05FIFNFTVBMSUNFIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtLkZvcm1TY2FsYXJUeXBlID09IEZvcm1TY2FsYXJUeXBlRW51bS5TZW1wbGljZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpZWxkVGVtcGxhdGVzXCJcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGRzOiBmb3JtLkZpZWxkcyB9XCIgY2xhc3M9XCJhZGQtZm9ybS1yZWNvcmQtc2VtcGxpY2VcIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBWSVNVQUxJWlpBWklPTkUgQSBTVEVQUEVSIC0tPlxyXG4gICAgICAgIDxtYXQtaG9yaXpvbnRhbC1zdGVwcGVyIGxpbmVhciAqbmdJZj1cImZvcm0uRm9ybVNjYWxhclR5cGUgPT0gRm9ybVNjYWxhclR5cGVFbnVtWydBIHN0ZXAnXVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRkLWZvcm0tcmVjb3JkLXN0ZXBwZXJcIj5cclxuICAgICAgICAgICAgPG1hdC1zdGVwICpuZ0Zvcj1cImxldCBncm91cCBvZiBmb3JtLkZvcm1GaWVsZHNHcm91cHM7IGxldCBpID0gaW5kZXg7IGxldCBmaXJzdCA9IGZpcnN0OyBsZXQgbGFzdCA9IGxhc3RcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAge3tncm91cC5OYW1lfX1cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWVsZFRlbXBsYXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGRzOiBmaWVsZEdyb3Vwc1tncm91cC5OYW1lXSB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhZGQtZm9ybS1yZWNvcmQtYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZmlyc3RcIiBjbGFzcz1cIm1yLTIgcHJldmlvdXNcIiBtYXQtcmFpc2VkLWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFByZWNlZGVudGVcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWxhc3RcIiBjbGFzcz1cImJ1dHRvbi1uZXh0XCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LXJhaXNlZC1idXR0b24gbWF0U3RlcHBlck5leHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3Npdm9cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwibGFzdCAmJiBzaG93U2F2ZUJ1dHRvblwiIChjbGljayk9XCJzYXZlT3JFeGl0Rm9ybShmYWxzZSlcIiBjbGFzcz1cImJ1dHRvbi1uZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgbWF0LXJhaXNlZC1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNhbHZhXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvbWF0LXN0ZXA+XHJcbiAgICAgICAgPC9tYXQtaG9yaXpvbnRhbC1zdGVwcGVyPlxyXG5cclxuICAgICAgICA8IS0tIFZJU1VBTElaWkFaSU9ORSBBIFRBQiAtLT5cclxuICAgICAgICA8bWF0LXRhYi1ncm91cCAqbmdJZj1cImZvcm0uRm9ybVNjYWxhclR5cGUgPT0gRm9ybVNjYWxhclR5cGVFbnVtWydJbiB0YWInXVwiIGNsYXNzPVwiYWRkLWZvcm0tcmVjb3JkLXRhYlwiPlxyXG4gICAgICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZm9ybS5Gb3JtRmllbGRzR3JvdXBzXCIgW2xhYmVsXT1cImdyb3VwLk5hbWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWVsZFRlbXBsYXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkczogZmllbGRHcm91cHNbZ3JvdXAuTmFtZV0gfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICA8L21hdC10YWItZ3JvdXA+XHJcblxyXG4gICAgICAgIDwhLS0gVklTVUFMSVpaQVpJT05FIEFEIEFDQ09SRElPTiAtLT5cclxuICAgICAgICA8bWF0LWFjY29yZGlvbiBtdWx0aSAqbmdJZj1cImZvcm0uRm9ybVNjYWxhclR5cGUgPT0gRm9ybVNjYWxhclR5cGVFbnVtWydJbiBhY2NvcmRpb24nXVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRkLWZvcm0tcmVjb3JkLWFjY29yZGlvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZm9ybS5Gb3JtRmllbGRzR3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tncm91cC5OYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWVsZFRlbXBsYXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGRzOiBmaWVsZEdyb3Vwc1tncm91cC5OYW1lXSB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgIDwvbWF0LWFjY29yZGlvbj5cclxuICAgIDwvZm9ybT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IG10LTIgYWRkLWZvcm0tcmVjb3JkLWJ1dHRvbnNcIlxyXG4gICAgICAgICpuZ0lmPVwiKHNob3dCYWNrQnV0dG9uIHx8IHNob3dTYXZlQnV0dG9uKSAmJiBmb3JtLkZvcm1TY2FsYXJUeXBlICE9IEZvcm1TY2FsYXJUeXBlRW51bVsnQSBzdGVwJ11cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtcmlnaHRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzaG93QmFja0J1dHRvblwiIChjbGljayk9XCJzYXZlT3JFeGl0Rm9ybSh0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgQW5udWxsYVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJzaG93U2F2ZUJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZU9yRXhpdEZvcm0oZmFsc2UpXCIgW2Rpc2FibGVkXT1cImZvcm1Gb3JtLmludmFsaWQgfHwgZm9ybUZvcm0uZGlzYWJsZWQgfHwgaXNTYXZpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWlzU2F2aW5nXCI+U2FsdmE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzU2F2aW5nXCI+U2FsdmF0YWdnaW8gaW4gQ29yc28uLi48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG5cclxuPCEtLSBURU1QTEFURSBQRVIgTEEgVklTVUFMSVpaQVpJT05FIERFSSBDQU1QSSBERUxMQSBGT1JNIC0tPlxyXG48bmctdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGVzIGxldC1maWVsZHM9J2ZpZWxkcyc+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmb3JtbG9hZGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidXRpbGl0eVNlcnZpY2UuZ2V0RmllbGRTeWxlQ2xhc3MoZmllbGQsIHNob3dBbGxGaWVsZHMpXCI+XHJcbiAgICAgICAgICAgIDxkeW5hbWljLW1vZHVsZS1maWVsZC1maXggI2ZpZWxkVGVtcGxhdGUgW2ZpZWxkXT1cImZpZWxkXCIgW1F1ZXJ5RWRpdG9yQ29tcG9uZW50XT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgW2Zvcm1dPVwiZm9ybVwiIFtyZWNvcmRdPVwicmVjb3JkXCIgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIiBbdXNlcklEXT1cInVzZXJJRFwiIFtpbkNvbmZpZ109XCJpbkNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgPC9keW5hbWljLW1vZHVsZS1maWVsZC1maXg+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -38,4 +38,4 @@ export var BooleanLogicOperatorType;
|
|
|
38
38
|
})(BooleanLogicOperatorType || (BooleanLogicOperatorType = {}));
|
|
39
39
|
export class FireTrigger {
|
|
40
40
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL21vZGVscy90cmlnZ2VyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdoRCxNQUFNLE9BQU8sT0FBTztJQU9oQjtRQUZBLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFHZixJQUFJLENBQUMsR0FBRyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO1lBQ3pELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUM1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDckMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGdCQUFnQjtJQU96QjtRQUpBLFdBQU0sR0FBVyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBSzFCLElBQUksQ0FBQyxHQUFHLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7WUFDekQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQzVCLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNyQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQUl4QixZQUFZLElBQUk7UUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0NBQ0o7QUFFRCxNQUFNLENBQU4sSUFBWSx1QkFHWDtBQUhELFdBQVksdUJBQXVCO0lBQy9CLHlFQUFVLENBQUE7SUFDViw2RUFBWSxDQUFBO0FBQ2hCLENBQUMsRUFIVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBR2xDO0FBRUQsTUFBTSxPQUFPLFNBQVM7Q0FNckI7QUFFRCxNQUFNLENBQU4sSUFBWSx3QkFLWDtBQUxELFdBQVksd0JBQXdCO0lBQ2hDLHFFQUFTLENBQUE7SUFDVCw2RUFBYSxDQUFBO0lBQ2IsbUVBQVEsQ0FBQTtJQUNSLDJFQUFZLENBQUE7QUFDaEIsQ0FBQyxFQUxXLHdCQUF3QixLQUF4Qix3QkFBd0IsUUFLbkM7QUFFRCxNQUFNLE9BQU8sV0FBVztDQU92QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkVHlwZUVudW0sIEJhc2VGaWVsZCB9IGZyb20gJy4vYmFzZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgTG9naWNPcGVyYXRvckJvb2xlYW4sIExvZ2ljT3BlcmF0b3JMaXN0VmFsdWUsIExvZ2ljT3BlcmF0b3JOdW1lcmljLCBMb2dpY09wZXJhdG9yVGV4dCwgTG9naWNPcGVyYXRvckRhdGUsIExvZ2ljT3BlcmF0b3JJbWFnZVNlbGVjdG9yLCBMb2dpY09wZXJhdG9yIH0gZnJvbSBcIi4vbG9naWNPcGVyYXRvci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gXCIuL2Zvcm0ubW9kZWxcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUcmlnZ2VyIHtcclxuICAgIENJRDogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIGV4ZWN1dGlvbjogc3RyaW5nO1xyXG4gICAgY29uZGl0aW9uczogQXJyYXk8VHJpZ2dlckNvbmRpdGlvbj47XHJcbiAgICBmb3JtdWxhczogYW55ID0ge307XHJcblxyXG4gICAgY29uc3RydWN0b3IoKXtcclxuICAgICAgICB0aGlzLkNJRCA9ICd4eHh4LXh4eHgteHh4eC14eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgICAgIHZhciByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCxcclxuICAgICAgICAgICAgICB2ID0gYyA9PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpO1xyXG4gICAgICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUcmlnZ2VyQ29uZGl0aW9uIHtcclxuICAgIENJRDogc3RyaW5nO1xyXG4gICAgRmllbGQ6IEJhc2VGaWVsZDtcclxuICAgIHJlY29yZDogUmVjb3JkID0gbmV3IFJlY29yZCgpO1xyXG4gICAgbG9naWNvcGVyYXRvcjpMb2dpY09wZXJhdG9yQm9vbGVhbiB8IExvZ2ljT3BlcmF0b3JMaXN0VmFsdWUgfCBMb2dpY09wZXJhdG9yTnVtZXJpYyB8IExvZ2ljT3BlcmF0b3JUZXh0IHwgTG9naWNPcGVyYXRvckRhdGUgfCBMb2dpY09wZXJhdG9ySW1hZ2VTZWxlY3RvciB8IExvZ2ljT3BlcmF0b3JcclxuICAgIGJvb2xlYW5sb2dpY29wZXJhdG9yOiBCb29sZWFuTG9naWNPcGVyYXRvclR5cGVcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcigpe1xyXG4gICAgICAgIHRoaXMuQ0lEID0gJ3h4eHgteHh4eC14eHh4LXh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICAgICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwLFxyXG4gICAgICAgICAgICAgIHYgPSBjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7XHJcbiAgICAgICAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRyaWdnZXJQcm9wZXJ0eSB7XHJcbiAgICB0eXBlOiBUcmlnZ2VyUHJvcGVydHlUeXBlRW51bTtcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IodHlwZSl7XHJcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGVudW0gVHJpZ2dlclByb3BlcnR5VHlwZUVudW0ge1xyXG4gICAgU1RSSU5HID0gMSxcclxuICAgIERNTU9EVUxFID0gMlxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9ue1xyXG4gICAgZmllbGRUeXBlOkZpZWxkVHlwZUVudW07XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgICBsb2dpY29wZXJhdG9yOkxvZ2ljT3BlcmF0b3JCb29sZWFuIHwgTG9naWNPcGVyYXRvckxpc3RWYWx1ZSB8IExvZ2ljT3BlcmF0b3JOdW1lcmljIHwgTG9naWNPcGVyYXRvclRleHQgfCBMb2dpY09wZXJhdG9yRGF0ZSB8IExvZ2ljT3BlcmF0b3JJbWFnZVNlbGVjdG9yXHJcbiAgICBib29sZWFubG9naWNvcGVyYXRvcjogQm9vbGVhbkxvZ2ljT3BlcmF0b3JUeXBlXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEJvb2xlYW5Mb2dpY09wZXJhdG9yVHlwZSB7XHJcbiAgICBcIkFORFwiID0gMSxcclxuICAgIFwiQU5EIE5PVFwiID0gMixcclxuICAgIFwiT1JcIiA9IDMsXHJcbiAgICBcIk9SIE5PVFwiID0gNFxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRmlyZVRyaWdnZXIge1xyXG4gICAgZm9ybTogRm9ybTtcclxuICAgIHRyaWdnZXI6IFRyaWdnZXI7XHJcbiAgICByZWNvcmQ6IFJlY29yZDtcclxuICAgIGZvcm11bGFzOiBhbnk7XHJcbiAgICB1c2VyUGF0aWVudDogc3RyaW5nO1xyXG4gICAgdXNlck1lZGljYWxFeGFtaW5hdGlvbj86IHN0cmluZztcclxufSJdfQ==
|