@arsedizioni/ars-utils 18.1.158 → 18.1.159
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.
|
@@ -81,9 +81,9 @@ export class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
if (this.lastQuery) {
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
/* if (this.lastQuery) {
|
|
85
|
+
this.updateRelevants();
|
|
86
|
+
}*/
|
|
87
87
|
// Listen to window messages
|
|
88
88
|
this.rendererListener1 = this.renderer.listen('window', 'message', (e) => {
|
|
89
89
|
let event = e;
|
|
@@ -378,6 +378,9 @@ export class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
378
378
|
this.lastDocument.lastUpdate = r.value;
|
|
379
379
|
}
|
|
380
380
|
});
|
|
381
|
+
if (this.lastQuery) {
|
|
382
|
+
this.updateRelevants();
|
|
383
|
+
}
|
|
381
384
|
// Notify navigation has completed
|
|
382
385
|
this.broadcastService.sendMessage(ClipperMessages.DOCUMENT_NAVIGATED, {
|
|
383
386
|
document: this.lastDocument,
|
|
@@ -452,7 +455,6 @@ export class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
452
455
|
* Update relevant items
|
|
453
456
|
*/
|
|
454
457
|
updateRelevants() {
|
|
455
|
-
console.log("si 1");
|
|
456
458
|
if (!this.lastQuery ||
|
|
457
459
|
this.lastQuery.length === 0 ||
|
|
458
460
|
this.lastQuery === ' ' ||
|
|
@@ -471,7 +473,6 @@ export class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
471
473
|
if (!r.success)
|
|
472
474
|
this.dialogService.error(r.message);
|
|
473
475
|
else {
|
|
474
|
-
console.log("si 2");
|
|
475
476
|
let minimumScore = 0;
|
|
476
477
|
if (r.value?.items && r.value?.items.length > 0) {
|
|
477
478
|
r.value.items[0].anchors.forEach((n) => {
|
|
@@ -730,4 +731,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
730
731
|
}], onComplianceUsageReport: [{
|
|
731
732
|
type: Output
|
|
732
733
|
}] } });
|
|
733
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBR0wsZUFBZSxFQUNmLFlBQVksRUFDWiww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UkFuQm5CLFdBQVcsQ0FBQyxZQUFZLEVBQUUscUtDbEQ1QyxzcmJBZ1JNLG9oUkR4TkYsVUFBVSwraEdBQ1YsZUFBZSx3VUFDZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsYUFBYSw2dkJBQ2IsY0FBYyxtK0JBQ2QsZ0JBQWdCLGtJQUNoQixvQkFBb0IseU5BQ3BCLGdCQUFnQix3R0FDaEIsZ0JBQWdCLG9kQUNoQixXQUFXOzsyRkFHRix3QkFBd0I7a0JBcEJwQyxTQUFTOzJCQUNGLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxtQkFHM0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixXQUFXO3FCQUNaOzhCQUkyQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ2hCLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFHRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IE1hdERyYXdlciwgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQ2xpcHBlckRvY3VtZW50SW5mbyxcclxuICBDbGlwcGVyRG9jdW1lbnRSZWxldmFudHMsXHJcbiAgQ2xpcHBlck1lc3NhZ2VzLFxyXG4gIENsaXBwZXJNb2RlbCxcclxuICBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZVxyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY2xpcHBlci5jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIFNhZmVVcmxQaXBlLFxyXG4gIFN5c3RlbVV0aWxzXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRmlsZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uJztcclxuaW1wb3J0IHsgRXh0ZW5kZWRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZXh0ZW5kZWQnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENsaXBwZXJSZWZlcmVuY2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVmZXJlbmNlcy9yZWZlcmVuY2VzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZGV4Q29tcG9uZW50IH0gZnJvbSAnLi4vZG9jdW1lbnQtaW5kZXgvZG9jdW1lbnQtaW5kZXguY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50TWFuYWdlciB9IGZyb20gJy4uL2RvY3VtZW50LW1hbmFnZXIvZG9jdW1lbnQtbWFuYWdlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENsaXBwZXJEb2N1bWVudERpYWxvZ0RhdGEge1xyXG4gIHNlbGVjdGlvbk1vZGU6IG51bWJlcjtcclxuICBpZDogc3RyaW5nO1xyXG4gIHF1ZXJ5Pzogc3RyaW5nIHwgbnVsbDtcclxuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZsZXhNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBFeHRlbmRlZE1vZHVsZSxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxyXG4gICAgU2FmZVVybFBpcGUsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJEb2N1bWVudENvbXBvbmVudCBleHRlbmRzIENsaXBwZXJEb2N1bWVudE1hbmFnZXJcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdyZWxldmFudHNQYW5lJykgcmVsZXZhbnRzUGFuZSE6IE1hdERyYXdlcjtcclxuICBAT3V0cHV0KCkgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8vIENvbXBsaWFuY2UgcmVsYXRlZCBldmVudHNcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlQW5hbHlzaXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlUGxhbm5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlVXNhZ2VSZXBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZW5kZXJlckxpc3RlbmVyMTogYW55O1xyXG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPENsaXBwZXJEb2N1bWVudENvbXBvbmVudD4pO1xyXG4gIHByb3RlY3RlZCBkaWFsb2dEYXRhOiBDbGlwcGVyRG9jdW1lbnREaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgPz8geyBtb2RlOiBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW4gfTtcclxuXHJcblxyXG4gIHByaXZhdGUgaGVpZ2h0OiBudW1iZXIgPSAtMTtcclxuICBwcm90ZWN0ZWQgdXJsID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIHRpdGxlID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIGJ1c3kgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByb3RlY3RlZCBsYXN0UXVlcnk/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgbGFzdERvY3VtZW50PzogQ2xpcHBlckRvY3VtZW50SW5mbyB8IG51bGwgPSBudWxsO1xyXG4gIHByb3RlY3RlZCByZWxldmFudHM6IENsaXBwZXJEb2N1bWVudFJlbGV2YW50cyA9IHtcclxuICAgIGl0ZW1zOiBbXSxcclxuICAgIGhpdHM6IDAsXHJcbiAgICBoaXQ6IDAsXHJcbiAgICBtaW5pbXVtU2NvcmU6IDEwMCxcclxuICB9O1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzUGFuZUNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNCdXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgaGFzUmVsZXZhbnRzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uTW9kZT86IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlID0gdGhpcy5kaWFsb2dEYXRhLnNlbGVjdGlvbk1vZGU7XHJcbiAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEucXVlcnkpIHtcclxuICAgICAgICB0aGlzLmxhc3RRdWVyeSA9IHRoaXMuZGlhbG9nRGF0YS5xdWVyeTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxhc3RRdWVyeSA9ICcnO1xyXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuaWQpIHtcclxuICAgICAgICAgIGxldCB1cmwgPVxyXG4gICAgICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgICAgICAnL2RvY3VtZW50cy9yZW5kZXIvP3F1ZXJ5PScgK1xyXG4gICAgICAgICAgICB0aGlzLmxhc3RRdWVyeSArXHJcbiAgICAgICAgICAgICcmaWQ9JyArXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YS5pZDtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh1cmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmxhc3RRdWVyeSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVJlbGV2YW50cygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIExpc3RlbiB0byB3aW5kb3cgbWVzc2FnZXNcclxuICAgIHRoaXMucmVuZGVyZXJMaXN0ZW5lcjEgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcclxuICAgICAgJ3dpbmRvdycsXHJcbiAgICAgICdtZXNzYWdlJyxcclxuICAgICAgKGU6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgbGV0IGV2ZW50ID0gZSBhcyBNZXNzYWdlRXZlbnQ7XHJcbiAgICAgICAgaWYgKCFldmVudCkgcmV0dXJuO1xyXG4gICAgICAgIGlmIChldmVudC5kYXRhKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ25hdmlnYXRlZCc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGVkKFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS50aXRsZTEsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS50aXRsZTIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2RlbCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZHVsZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZHVsZU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5kYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYXV0aG9yLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEub3JpZ2luLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEub3JpZ2luRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5iYWcsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS52YWxpZGl0eUluZm8sXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5leHBpcmluZ0luZm8sXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wcmltYXJ5SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wcmltYXJ5TW9kZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5zZWNvbmRhcnlJZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmlzVHJpYWxcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICduYXZpZ2F0ZSc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGUoZGF0YS51cmwpO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3JlZmVyZW5jZXMnOlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9wZW5SZWZlcmVuY2VzKFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hbmNob3IsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hbmNob3JUaXRsZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2hpdHMnOlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlbGV2YW50cy5oaXRzID0gZGF0YS50b3RhbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVSZWxldmFudHMoKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBPYnNlcnZlIGxheW91dCBjaGFuZ2VzXHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxyXG4gICAgICAub2JzZXJ2ZShbXHJcbiAgICAgICAgQnJlYWtwb2ludHMuWFNtYWxsLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLlNtYWxsLFxyXG4gICAgICAgIEJyZWFrcG9pbnRzLk1lZGl1bSxcclxuICAgICAgICBCcmVha3BvaW50cy5MYXJnZSxcclxuICAgICAgICBCcmVha3BvaW50cy5YTGFyZ2UsXHJcbiAgICAgIF0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgcXVlcnkgb2YgT2JqZWN0LmtleXMocmVzdWx0LmJyZWFrcG9pbnRzKSkge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5icmVha3BvaW50c1txdWVyeV0pIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpLCBkZWJvdW5jZVRpbWUoNTAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIGlmICh0aGlzLnJlbmRlcmVyTGlzdGVuZXIxKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXJMaXN0ZW5lcjEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXNpemUgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNpemUoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1zY3JvbGxhYmxlJyk7XHJcbiAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldEN1cnJlbnREaWFsb2dTY3JvbGxhYmxlSGVpZ2h0KFxyXG4gICAgICAgICAgWydjbGlwcGVyLWRvY3VtZW50LWZpeGVkJ10sXHJcbiAgICAgICAgICB3aW5kb3cuaW5uZXJIZWlnaHRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChoZWlnaHQgIT0gdGhpcy5oZWlnaHQpIHtcclxuICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCdzdHlsZScsICdwYWRkaW5nOjA7aGVpZ2h0OicgKyBoZWlnaHQgKyAncHggIWltcG9ydGFudDttYXgtaGVpZ2h0OicgKyBoZWlnaHQgKyAncHggIWltcG9ydGFudCcpO1xyXG4gICAgICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICogU2hvdyBoaWRlIHJlbGV2YW50cyBwYW5lIG1hbnVhbGx5XHJcbiAqL1xyXG4gIHByb3RlY3RlZCB0b2dnbGVSZWxldmFudHNQYW5lKCkge1xyXG4gICAgdGhpcy5yZWxldmFudHNQYW5lQ2xvc2VkID0gIXRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZDtcclxuICAgIHRoaXMucmVsZXZhbnRzUGFuZT8udG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBmaWx0ZXIgcGFuZSB2aXNpYmlsaXR5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpIHtcclxuICAgIGlmICh0aGlzLnJlbGV2YW50c1BhbmUpIHtcclxuICAgICAgaWYgKHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5YU21hbGwpIHx8XHJcbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLlNtYWxsKSB8fFxyXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5NZWRpdW0pKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVsZXZhbnRzUGFuZS5vcGVuZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUubW9kZSA9ICdvdmVyJztcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuZGlzYWJsZUNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lSGFzQmFja2Ryb3AgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5yZWxldmFudHNQYW5lLm9wZW5lZCAmJiAhdGhpcy5yZWxldmFudHNQYW5lQ2xvc2VkICYmIHRoaXMuaGFzUmVsZXZhbnRzKCkpIHtcclxuICAgICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5vcGVuKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlbGV2YW50c1BhbmUub3BlbmVkICYmIHRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5tb2RlID0gJ3NpZGUnO1xyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlIGRpYWxvZ1xyXG4gICAqL1xyXG5cclxuICBwcm90ZWN0ZWQgY2xvc2UoKSB7XHJcbiAgICBpZiAodGhpcy5jbG9zaW5nKSB7XHJcbiAgICAgIHRoaXMuY2xvc2luZy5lbWl0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGUgdG8gYSBuZXcgZG9jdW1lbnRcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKi9cclxuICBuYXZpZ2F0ZShpZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIWlkIHx8IGlkLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG9cclxuICAgIGlmIChpZC5pbmRleE9mKCc/JykgIT09IC0xKSB7XHJcbiAgICAgIGlmIChpZC5zdGFydHNXaXRoKCcvYXBpJykpXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArIGlkLnN1YnN0cmluZyg0KSk7XHJcbiAgICAgIGVsc2UgaWYgKCFpZC5zdGFydHNXaXRoKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSkpXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArIGlkKTtcclxuICAgICAgZWxzZSB0aGlzLm5hdmlnYXRlQnlVcmwoaWQpO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIHRoaXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgICcvZG9jdW1lbnRzL3JlbmRlci8/cXVlcnk9JmlkPScgK1xyXG4gICAgICAgIGlkXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSBieSB1cmxcclxuICAgKiBAcGFyYW0gdXJsIDogdGhlIHVybCAgdG8gbmF2aWdhdGUgdG9cclxuICAgKi9cclxuICBuYXZpZ2F0ZUJ5VXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXVybCB8fCB1cmwubGVuZ3RoID09PSAwIHx8IHVybCA9PT0gJ2Fib3V0OmJsYW5rJylcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcbiAgICAvLyBDbGVhbiB1cmxcclxuICAgIGxldCBwYXJ0cyA9IHVybC5zcGxpdCgnIycpO1xyXG4gICAgdXJsID0gcGFydHNbMF07XHJcbiAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xyXG4gICAgICB1cmwgKz0gJyMnICsgcGFydHNbMV07XHJcbiAgICB9XHJcbiAgICAvLyBIYW5kbGUgZnJlZSB0ZXh0IHF1ZXJ5XHJcbiAgICBsZXQgcSA9ICcnO1xyXG4gICAgbGV0IHBvcyA9IHVybC5pbmRleE9mKCdxdWVyeT0nKTtcclxuICAgIGlmIChwb3MgIT09IC0xKSB7XHJcbiAgICAgIHBvcyArPSA2O1xyXG4gICAgICB3aGlsZSAodXJsLmxlbmd0aCA+IHBvcyAmJiB1cmxbcG9zXSAhPT0gJyYnICYmIHVybFtwb3NdICE9PSAnIycpXHJcbiAgICAgICAgcSArPSB1cmxbcG9zKytdO1xyXG4gICAgfVxyXG4gICAgaWYgKHEubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyBSZXNldFxyXG4gICAgICB0aGlzLnJlbGV2YW50cy5oaXQgPSAwO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIC8vIEFzc2lnbiBxdWVyeSB0byBlbmFibGUgc2VhcmNoIGZvciBmcmFnbWVudHNcclxuICAgICAgICB0aGlzLmxhc3RRdWVyeSA9IGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQocSkpO1xyXG4gICAgICB9IGNhdGNoIHtcclxuICAgICAgICB0aGlzLmxhc3RRdWVyeSA9IHE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgbmF2aWdhdGVUb0ZpbGUgPSB1cmwuaW5kZXhPZignJmZpbGU9dHJ1ZScpICE9PSAtMTtcclxuICAgIGlmIChuYXZpZ2F0ZVRvRmlsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAvLyBQcmV2aWV3XHJcbiAgICAgIHRoaXMucHJldmlld0ZpbGUodXJsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEJlZ2luIGxvYWRpbmcgb25seSBpZiBub3QgZG93bmxvYWRpbmcgYSBmaWxlXHJcbiAgICAgIHRoaXMuYnVzeS5zZXQodXJsLmluZGV4T2YoJ2RvY3VtZW50cy9yZW5kZXIvaXRlbScpID09PSAtMSk7XHJcbiAgICAgIC8vIE5hdmlnYXRlXHJcbiAgICAgIHRoaXMudXJsLnNldCh1cmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVkIGNhbGxiYWNrICAgXHJcbiAgICovXHJcbiAgcHVibGljIG5hdmlnYXRlZChcclxuICAgIGlkOiBzdHJpbmcsIC8vIERvY3VtbmVudCBpZFxyXG4gICAgdGl0bGUxOiBzdHJpbmcsIC8vIFRpdGxlIDFcclxuICAgIHRpdGxlMjogc3RyaW5nLCAvLyBUaXRsZSAyXHJcbiAgICBtb2RlbDogbnVtYmVyLCAvLyBNb2RlbFxyXG4gICAgbW9kdWxlSWQ6IG51bWJlciwgLy8gTW9kdWxlXHJcbiAgICBtb2R1bGVOYW1lOiBzdHJpbmcsIC8vIE1vZHVsZSBuYW1lXHJcbiAgICBkYXRlOiBzdHJpbmcsIC8vIERhdGVcclxuICAgIG51bWJlcjogc3RyaW5nLCAvLyBOdW1iZXJcclxuICAgIGF1dGhvcjogc3RyaW5nLCAvLyBBdXRob3JcclxuICAgIG9yaWdpbjogc3RyaW5nLCAvLyBPcmlnaW5cclxuICAgIG9yaWdpbkRlc2NyaXB0aW9uOiBzdHJpbmcsIC8vIE9yaWdpbiBkZXNjcmlwdGlvblxyXG4gICAgYmFnOiBzdHJpbmcsIC8vIEZsYWdzXHJcbiAgICB2YWxpZGl0eUluZm86IHN0cmluZywgLy8gSW5mbyBhYm91dCB2YWxpZGl0eVxyXG4gICAgZXhwaXJpbmdJbmZvOiBzdHJpbmcsIC8vIEluZm8gYWJvdXQgZXhwaXJpbmcgZGF0ZVxyXG4gICAgcHJpbWFyeUlkOiBzdHJpbmcsIC8vIFByaW1hcnkgZG9jdW1lbnQgaWRcclxuICAgIHByaW1hcnlNb2RlbDogbnVtYmVyLCAvLyBQcmltYXJ5IGRvY3VtZW50IG1vZGVsXHJcbiAgICBzZWNvbmRhcnlJZDogc3RyaW5nLCAvLyBTZWNvbmRhcnkgZG9jdW1lbnQgaWRcclxuICAgIGlzVHJpYWw6IGJvb2xlYW4gLy8gVHJ1ZSBpZiBpcyBhIHRyaWFsIHJlcXVlc3RcclxuICApIHtcclxuICAgIC8vIENoZWNrIGZvciBzZXNzaW9uIGV4cGlyaW5nXHJcbiAgICBpZiAodGl0bGUxID09PSAnU2Vzc2lvbmUgbm9uIHZhbGlkYScpIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgLmVycm9yKHRpdGxlMiwgbnVsbCwgdGl0bGUxLCAnQWNjZWRpIGRpIG51b3ZvJylcclxuICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsb2dpbiddKTtcclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN0b3JlIGRhdGFcclxuICAgIGlmICghdGhpcy5sYXN0RG9jdW1lbnQpIHtcclxuICAgICAgdGhpcy5sYXN0RG9jdW1lbnQgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMubGFzdERvY3VtZW50LmlkID0gaWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC50aXRsZTEgPSB0aXRsZTEgPyBTeXN0ZW1VdGlscy51cmxEZWNvZGUodGl0bGUxKSA6IG51bGw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC50aXRsZTIgPSB0aXRsZTIgPyBTeXN0ZW1VdGlscy51cmxEZWNvZGUodGl0bGUyKSA6IG51bGw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5tb2RlbCA9IG1vZGVsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kdWxlID0gbW9kdWxlSWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5tb2R1bGVOYW1lID0gbW9kdWxlTmFtZTtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm51bWJlciA9IG51bWJlcjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmF1dGhvciA9IGF1dGhvcjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm9yaWdpbiA9IG9yaWdpbjtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm9yaWdpbkRlc2NyaXB0aW9uID0gb3JpZ2luRGVzY3JpcHRpb247XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5iYWcgPSBiYWc7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC52YWxpZGl0eUluZm8gPSB2YWxpZGl0eUluZm87XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5wcmltYXJ5SWQgPSBwcmltYXJ5SWQ7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5wcmltYXJ5TW9kZWwgPSBwcmltYXJ5TW9kZWw7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5oYXNQcmltYXJ5ID1cclxuICAgICAgcHJpbWFyeUlkICYmXHJcbiAgICAgIChtb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8gfHxcclxuICAgICAgICBtb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUpO1xyXG4gICAgaWYgKHByaW1hcnlJZCkge1xyXG4gICAgICB2YXIgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgc3dpdGNoIChwcmltYXJ5TW9kZWwgPyBwcmltYXJ5TW9kZWwgOiBtb2RlbCkge1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGU6XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdUZXN0byB2aWdlbnRlJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm86XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdUZXN0byBzdG9yaWNvJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlNjYWRlbnphOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnU2NhZGVuemEnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuQ29vcmRpbmFtZW50bzpcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ01vZGlmaWNhJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb2xsZWdhbWVudG8nO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeURlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5zZWNvbmRhcnlJZCA9IHNlY29uZGFyeUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuaXNUcmlhbCA9IGlzVHJpYWw7XHJcblxyXG4gICAgLy8gSGFuZGxlIGV4cGlyaW5nIGluZm9cclxuICAgIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nRGVzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgaWYgKGV4cGlyaW5nSW5mbykge1xyXG4gICAgICBsZXQgcGFydHMgPSBleHBpcmluZ0luZm8uc3BsaXQoJyMnKTtcclxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgcGFydHMyID0gcGFydHNbMF0uc3BsaXQoJ3wnKTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0RhdGUgPSBuZXcgRGF0ZShwYXJ0czJbMF0pO1xyXG4gICAgICAgIGlmIChwYXJ0czIubGVuZ3RoID4gMSkgdGhpcy5sYXN0RG9jdW1lbnQuZXhwaXJpbmdJbmZvID0gcGFydHMyWzFdO1xyXG4gICAgICAgIGlmIChwYXJ0czIubGVuZ3RoID4gMilcclxuICAgICAgICAgIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nSW5mbyArPSAnfCcgKyBwYXJ0czJbMl07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nRGVzY3JpcHRpb24gPSBwYXJ0c1sxXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXQgdGl0bGVcclxuICAgIHRoaXMudGl0bGUuc2V0KHRoaXMubGFzdERvY3VtZW50LnRpdGxlMVxyXG4gICAgICA/IHRoaXMubGFzdERvY3VtZW50LnRpdGxlMVxyXG4gICAgICA6IHRoaXMubGFzdERvY3VtZW50LnRpdGxlMik7XHJcblxyXG4gICAgLy8gR2V0IGxhc3QgZG9jdW1lbnQgdXBkYXRlXHJcbiAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLmxhc3RVcGRhdGUodGhpcy5sYXN0RG9jdW1lbnQuaWQpLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5sYXN0VXBkYXRlID0gci52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gTm90aWZ5IG5hdmlnYXRpb24gaGFzIGNvbXBsZXRlZFxyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5ET0NVTUVOVF9OQVZJR0FURUQsIHtcclxuICAgICAgZG9jdW1lbnQ6IHRoaXMubGFzdERvY3VtZW50LFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5idXN5LnNldChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnb3RvIHByZXZpb3VzIGRvY3VtZW50IGluIGhpc3RvcnlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFjaygpIHtcclxuICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgZi5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCd7XCJ0eXBlXCI6IFwiYmFja1wifScsICcqJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIG5leHQgZG9jdW1lbnQgaW4gaGlzdG9yeVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBmb3J3YXJkKCkge1xyXG4gICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJ3tcInR5cGVcIjogXCJmb3J3YXJkXCJ9JywgJyonKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByaW50IGN1cnJlbnQgZG9jdW1lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcHJpbnQoKSB7XHJcbiAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgIGYuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgne1widHlwZVwiOiBcInByaW50XCJ9JywgJyonKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgaW4gY3VycmVudCBkb2N1bWVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBmaW5kKCkge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oJ1BlciBjZXJjYXJlIG5lbCBkb2N1bWVudG8gcHJlbWkgQ1RSTCArIEYuJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIG5leHQgcmVsZXZhbnQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBuZXh0UmVsZXZhbnQoKSB7XHJcbiAgICBsZXQgaSA9IHRoaXMucmVsZXZhbnRzLmhpdCArIDE7XHJcbiAgICBpZiAoaSA8PSB0aGlzLnJlbGV2YW50cy5oaXRzKSB7XHJcbiAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJ3tcInR5cGVcIjogXCJyZWxldmFudFwiLCBcInZhbHVlXCI6IFwibmV4dFwifScsICcqJyk7XHJcbiAgICAgIHRoaXMucmVsZXZhbnRzLmhpdCsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBwcmV2aW91cyByZWxldmFudCBpdGVtXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHByZXZpb3VzUmVsZXZhbnQoKSB7XHJcbiAgICBsZXQgaSA9IHRoaXMucmVsZXZhbnRzLmhpdCAtIDE7XHJcbiAgICBpZiAoaSA+IDApIHtcclxuICAgICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICAgIGYuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcclxuICAgICAgICAne1widHlwZVwiOiBcInJlbGV2YW50XCIsIFwidmFsdWVcIjogXCJwcmV2aW91c1wifScsXHJcbiAgICAgICAgJyonXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucmVsZXZhbnRzLmhpdC0tO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBhIHJlbGV2YW50IGl0ZW1cclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGdvIHRvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdvdG9SZWxldmFudChpdGVtOiBhbnkpIHtcclxuICAgIGlmIChpdGVtLnR5cGUgPT09IDIwKSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKFxyXG4gICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2Uuc2VydmljZVVyaSArXHJcbiAgICAgICAgJy9kb2N1bWVudHMvcmVuZGVyL2l0ZW0vP2lkPScgK1xyXG4gICAgICAgIGl0ZW0uZG9jdW1lbnRJZCxcclxuICAgICAgICAnX2JsYW5rJ1xyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICAgIGYuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShcclxuICAgICAgICAne1widHlwZVwiOiBcInJlbGV2YW50XCIsIFwidmFsdWVcIjogXCInICsgaXRlbS51cmkgKyAnXCJ9JyxcclxuICAgICAgICAnKidcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSByZWxldmFudCBpdGVtc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlUmVsZXZhbnRzKCkge1xyXG4gICAgY29uc29sZS5sb2coXCJzaSAxXCIpO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5sYXN0UXVlcnkgfHxcclxuICAgICAgdGhpcy5sYXN0UXVlcnkubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgIHRoaXMubGFzdFF1ZXJ5ID09PSAnICcgfHxcclxuICAgICAgKHRoaXMubGFzdERvY3VtZW50ICYmXHJcbiAgICAgICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kZWwgIT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGlwcGVyU2VydmljZVxyXG4gICAgICAgIC5xdWVyeSh7XHJcbiAgICAgICAgICBkb2N1bWVudElkOiB0aGlzLmxhc3REb2N1bWVudC5pZCxcclxuICAgICAgICAgIHRleHQ6IHRoaXMubGFzdFF1ZXJ5LFxyXG4gICAgICAgICAgY291bnQ6IDEsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInNpIDJcIik7XHJcbiAgICAgICAgICAgIGxldCBtaW5pbXVtU2NvcmUgPSAwO1xyXG4gICAgICAgICAgICBpZiAoci52YWx1ZT8uaXRlbXMgJiYgci52YWx1ZT8uaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHIudmFsdWUuaXRlbXNbMF0uYW5jaG9ycy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzY29yZSA9IG4uc2NvcmU7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2NvcmUgPiA3KSBzY29yZSAtPSA3O1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiA1KSBzY29yZSAtPSA1O1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiAzKSBzY29yZSAtPSAzO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1pbmltdW1TY29yZSA+IHNjb3JlKSBtaW5pbXVtU2NvcmUgPSBzY29yZTtcclxuICAgICAgICAgICAgICAgIG4uc2NvcmUgPSBzY29yZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnJlbGV2YW50cy5taW5pbXVtU2NvcmUgPSBtaW5pbXVtU2NvcmU7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxldmFudHMuaXRlbXMgPSByLnZhbHVlLml0ZW1zWzBdLmFuY2hvcnM7ICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICB0aGlzLmhhc1JlbGV2YW50cy5zZXQodGhpcy5yZWxldmFudHMuaXRlbXM/Lmxlbmd0aCA+IDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBkb2N1bWVudCBzdHJ1Y3R1cmVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaW5kZXgoZG9jdW1lbnRJZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgZCA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKENsaXBwZXJEb2N1bWVudEluZGV4Q29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2luZGljZSBkb2N1bWVudG8nLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGRvY3VtZW50SWQ6IGRvY3VtZW50SWQsXHJcbiAgICAgICAgZXhjbHVkZWRUeXBlczogbnVsbCxcclxuICAgICAgICBtdWx0aXBsZTogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnNjAwcHgnLFxyXG4gICAgICB3aWR0aDogJzk5JScsXHJcbiAgICB9KTtcclxuICAgIGQuY29tcG9uZW50SW5zdGFuY2UuZG9uZVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoci5kYXRhLmRvY3VtZW50SWQgPT09IGRvY3VtZW50SWQpIHtcclxuICAgICAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICAgICAgZi5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKFxyXG4gICAgICAgICAgICAne1widHlwZVwiOiBcImdvdG9cIiwgXCJ2YWx1ZVwiOlwiJyArIHIuZGF0YS51cmkgKyAnXCJ9JyxcclxuICAgICAgICAgICAgJyonXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm9wZW5Eb2N1bWVudChyLmRhdGEuZG9jdW1lbnRJZCArICcjJyArIHIuZGF0YS51cmkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZC5jbG9zZSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBHZXQgdGhlIGlkIGluIGEgcXVlcnkgc3RyaW5nXHJcbiAqIEBwYXJhbSB1cmwgOiB0aGUgdXJsIHRvIHByb2Nlc3NcclxuICogQHBhcmFtIG5hbWUgOiB0aGUgb3B0aW9uYWwgaWQgcGFyYW1lbnRlciBuYW1lLiBEZWZhdWx0IGlzICdpZCdcclxuICogQHJldHVybnMgOiB0aGUgaWQgcGFyYW1lXHJcbiAqL1xyXG4gIHByaXZhdGUgZ2V0SWQodXJsOiBzdHJpbmcsIG5hbWU6IHN0cmluZyA9ICdpZCcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3RhcnQgPSB1cmwubGFzdEluZGV4T2YobmFtZSArICc9JykgKyAzO1xyXG4gICAgY29uc3QgZW5kID0gdXJsLmluZGV4T2YoJyYnLCBzdGFydCk7XHJcbiAgICByZXR1cm4gdXJsLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByZXZpZXcgYSBmaWxlIGlmIHBvc3NpYmxlXHJcbiAgICogQHBhcmFtIHVybCA6IHRoZSB1cmwgdG8gcHJldmlld1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcHJldmlld0ZpbGUodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdXJsIHx8IHVybC5sZW5ndGggPT09IDApXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG4gICAgLy8gR2V0IHRoZSBpZFxyXG4gICAgbGV0IGlkID0gdGhpcy5nZXRJZCh1cmwpO1xyXG4gICAgaWYgKCFpZCB8fCBpZC5sZW5ndGggPT09IDApXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG4gICAgLy8gQ3JlYXRlIHRoZSB1cmxcclxuICAgIHRoaXMuY2xpcHBlclNlcnZpY2UubmV3T1RQKGlkKS5zdWJzY3JpYmUoXHJcbiAgICAgIHIgPT4ge1xyXG4gICAgICAgIGlmICghci5zdWNjZXNzKSB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICBlbHNlIGlmICghci52YWx1ZS5jYW5QcmV2aWV3KVxyXG4gICAgICAgICAgLy8gRG9ubG9hZCBtYW51YWxseVxyXG4gICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEZpbGVQcmV2aWV3Q29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdwcmV2aWV3LXBhbmVsJyxcclxuICAgICAgICAgICAgYXJpYUxhYmVsOiAnYW50ZXByaW1hJyxcclxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgICAgZW1iZWQ6IHIudmFsdWUuY2FuRW1iZWRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiAnOTAwcHgnLFxyXG4gICAgICAgICAgICB3aWR0aDogJzk5JScsXHJcbiAgICAgICAgICAgIGhlaWdodDogJzk5JSdcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogU2hvdyBkb2N1bWVudCBjb21tZW50XHJcbiAgICAqL1xyXG4gIHByb3RlY3RlZCBzaG93Q29tbWVudCgpIHtcclxuICAgIGlmICh0aGlzLmxhc3REb2N1bWVudD8uYmFnWzddICE9PSAnVCcpIHJldHVybjtcclxuICAgIHRoaXMuY2xpcHBlclNlcnZpY2VcclxuICAgICAgLmNvbW1lbnQodGhpcy5sYXN0RG9jdW1lbnQ/LmlkKVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgaWYgKHIubWVzc2FnZSA9PT0gXCJJbCB0dW8gYWJib25hbWVudG8gbm9uIGNvbnNlbnRlIGRpIHZpc3VhbGl6emFyZSBpIGNvbW1lbnRpIGFsbGUgbm9ybWUuXCIpXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihcIklsIHNlcnZpemlvIGRpIDxiPmNvbW1lbnRpIGFsbGUgbm9ybWU8L2I+IG5vbiDDqCBjb21wcmVzbyBuZWwgdHVvIGFiYm9uYW1lbnRvLCBwZXIgbWFnZ2lvcmkgaW5mb3JtYXppb25pIHJpdm9sZ2Vyc2kgYWxsJ2FnZW50ZSBjb21tZXJjaWFsZSBkaSByaWZlcmltZW50byBvIGludmlhcmUgdW5hIG1haWwgYSA8YSBocmVmPSdtYWlsdG86c2FsZXNAYXJzZWRpemlvbmkuaXQnIHRhcmdldD0nX2JsYW5rJz5zYWxlc0BhcnNlZGl6aW9uaS5pdDwvYT4uXCIsIG51bGwsIFwiQXR0ZW56aW9uZVwiKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChyLnZhbHVlICYmIHIudmFsdWUubGVuZ3RoID4gMSlcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oci52YWx1ZS5yZXBsYWNlKC9cXG4vZywgJzxicj5cXHJcXG4nKSwgXCJDb21tZW50b1wiLCBcIkNISVVESVwiLCA3MDApO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuaW5mbyhcIkNvbW1lbnRvIG5vbiBwacO5IGRpc3BvbmliaWxlIG8gaW4gZmFzZSBkaSByZXZpc2lvbmUuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhbiBpdGVtXHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gbmV3V2luZG93OiB0cnVlIGlmIHRoZSBkb2N1bWVudCBtdXN0IGJlIG9wZW4gaW50byBhIG5ldyB3aW5kb3dcclxuICAgKi9cclxuICBvcGVuKGRvY3VtZW50SWQ6IHN0cmluZywgbmV3V2luZG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICghbmV3V2luZG93KSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5pbmcpIHRoaXMub3BlbmluZy5lbWl0KHsgaWQ6IGRvY3VtZW50SWQgfSk7XHJcbiAgICAgIGVsc2UgdGhpcy5vcGVuRG9jdW1lbnQoZG9jdW1lbnRJZCk7XHJcbiAgICB9IGVsc2Ugd2luZG93Lm9wZW4oJy9kb2N1bWVudG8vJyArIGRvY3VtZW50SWQsICdfYmxhbmsnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gYSBkb2N1bWVudFxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvcGVuRG9jdW1lbnQoZG9jdW1lbnRJZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIWRvY3VtZW50SWQpIHJldHVybjtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKENsaXBwZXJEb2N1bWVudENvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdkb2N1bWVudG8nLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGRhdGE6IHsgaWQ6IGRvY3VtZW50SWQgfSxcclxuICAgICAgcGFuZWxDbGFzczogJ2RvY3VtZW50LWNvbnRhaW5lcicsXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzE0MDBweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgICAgaGVpZ2h0OiAnOTklJyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnJvd3NlIGRvY3VtZW50IHJlZmVyZW5jZXNcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqIEBwYXJhbSBtb2RlIDogdGhlIG1vZGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb3BlblJlZmVyZW5jZXMoXHJcbiAgICBkb2N1bWVudElkOiBzdHJpbmcsXHJcbiAgICBtb2RlOiBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZSA9IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLlJlZmVyZW5jZXNJbixcclxuICAgIG1vZGVsOiBudW1iZXIgPSBudWxsLFxyXG4gICAgYW5jaG9yOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgYW5jaG9yVGl0bGU6IHN0cmluZyA9IG51bGwsXHJcbiAgICB1cGRhdGU6IGJvb2xlYW4gPSB0cnVlXHJcbiAgKSB7XHJcbiAgICBpZiAoIWRvY3VtZW50SWQpIGRvY3VtZW50SWQgPSB0aGlzLmxhc3REb2N1bWVudD8uaWQ7XHJcbiAgICBsZXQgZCA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKENsaXBwZXJSZWZlcmVuY2VzQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ3JpZmVyaW1lbnRpIGxlZ2F0aSBhbCBkb2N1bWVudG8nLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGlkOiBkb2N1bWVudElkLFxyXG4gICAgICAgIG1vZGU6IG1vZGUsXHJcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxyXG4gICAgICAgIGFuY2hvcjogYW5jaG9yLFxyXG4gICAgICAgIGFuY2hvclRpdGxlOiBhbmNob3JUaXRsZSxcclxuICAgICAgICB1cGRhdGU6IHVwZGF0ZSxcclxuICAgICAgfSxcclxuICAgICAgcGFuZWxDbGFzczogJ3JlZmVyZW5jZXMtY29udGFpbmVyJyxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnMTAwMHB4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgICBoZWlnaHQ6ICc5OSUnLFxyXG4gICAgfSk7XHJcbiAgICBkLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHIgJiYgci5pZCkge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZShyLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIHJlcG9ydFxyXG4gICAqIEBwYXJhbSBpdGVtXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRpc3BsYXlSZXBvcnQoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcclxuICAgIGlmIChpdGVtLm1vZGVsICE9IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlICYmIGl0ZW0ubW9kZWwgIT0gQ2xpcHBlck1vZGVsLlNjYWRlbnphKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKFwiUXVlc3RhIGZ1bnppb25hbGl0w6Agbm9uIMOoIGRpc3BvbmliaWxlIHBlciBxdWVzdG8gdGlwbyBkaSBkb2N1bWVudG8uXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5SZXBvcnQoaXRlbS5pZCwgaXRlbS50aXRsZTEgPyBpdGVtLnRpdGxlMSA6IGl0ZW0udGl0bGUyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBkb2N1bWVudHMgY2FuIGJlIHNlbGVjdGVkIGFuZCByZXR1cm5lZCBhcyBtZXNzYWdlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNhblNlbGVjdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbk1vZGUgPiAwICYmIHRoaXMubGFzdERvY3VtZW50ICYmICh0aGlzLmxhc3REb2N1bWVudD8ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlIHx8IHRoaXMubGFzdERvY3VtZW50Py5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIGEgbWVzc2FnZSB3aXRoIGN1cnJlbnQgc2VsZWN0aW9uIGFuZCBjbG9zZSBkaWFsb2dcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2VsZWN0KCkge1xyXG4gICAgaWYgKHRoaXMubGFzdERvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURURfSU5ORVIsIFtcclxuICAgICAgICB0aGlzLmxhc3REb2N1bWVudCxcclxuICAgICAgXSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8ZGl2IGlkPVwiY2xpcHBlci1kb2N1bWVudC1maXhlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjbGlwcGVyLWRvY3VtZW50LWhlYWRlclwiPlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiIGZ4TGF5b3V0R2FwPScxMHB4JyBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4Lmx0LW1kPVwiNTBcIiBmeEZsZXg9XCI3MFwiIGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgc3RhcnRcIiBmeExheW91dEdhcD1cIjVweFwiIGNsYXNzPVwidHJ1bmNhdGVkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFyZ2UgYm9sZFwiPnt7dGl0bGUoKX19PC9kaXY+XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudCAmJiBsYXN0RG9jdW1lbnQ/Lmxhc3RVcGRhdGUpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbCBhY2NlbnRcIj5cclxuICAgICAgICAgICAgQUdHSU9STkFUTyBBOlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8ubGFzdFVwZGF0ZX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50ICYmIGxhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsIGFjY2VudC1sb3dcIj5cclxuICAgICAgICAgICAge3tsYXN0RG9jdW1lbnQ/LmV4cGlyaW5nRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQgJiYgbGFzdERvY3VtZW50Py52YWxpZGl0eUluZm8pIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbCBiYWRnZS1yZWRcIj48Yj5BdHRlbnppb25lITwvYj5cclxuICAgICAgICAgICAge3tsYXN0RG9jdW1lbnQ/LnZhbGlkaXR5SW5mb319PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleC5sdC1tZD1cIjUwXCIgZnhGbGV4PVwiMzBcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jbG9zZVwiPlxyXG4gICAgICAgICAgQGlmIChjYW5TZWxlY3QoKSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJzZWxlY3QoKVwiPlxyXG4gICAgICAgICAgICBVc2Egc2VsZXppb25lXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJzdGFydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkluZGlldHJvXCIgYXJpYS1sYWJlbD1cIkluZGlldHJvXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImJhY2soKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJzdGFydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkF2YW50aVwiIGFyaWEtbGFiZWw9XCJBdmFudGlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZm9yd2FyZCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19mb3J3YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQ2hpdWRpXCIgYXJpYS1sYWJlbD1cIkNoaXVkaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcCBcIiBmeEZpbGwgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgc3R5bGU9XCJwYWRkaW5nOiAwIDEwcHggMjBweCAxNXB4XCI+XHJcbiAgICAgIDxkaXYgZnhGbGV4LnhzPVwiMTAwXCI+XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/Lm1vZGVsID09PSA5KSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBpbmRpY2UnXCJcclxuICAgICAgICAgIChjbGljayk9XCJpbmRleChsYXN0RG9jdW1lbnQ/LmlkKVwiPlxyXG4gICAgICAgICAgSW5kaWNlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgKGxhc3REb2N1bWVudD8uYmFnWzFdID09PSdUJyB8fCBsYXN0RG9jdW1lbnQ/LmJhZ1szXSA9PT0nVCcpKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIG1hdFRvb2x0aXA9XCJDb2xsZWdhbWVudGlcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ29sbGVnYW1lbnRpIGFsIGRvY3VtZW50bydcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUxpbmtzXCI+XHJcbiAgICAgICAgICBDb2xsZWdhbWVudGlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPG1hdC1tZW51ICNtZW51TGlua3M9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzFdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBkb2N1bWVudGkgcmljaGlhbWF0aSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5pZCwgMSlcIj5cclxuICAgICAgICAgICAgRG9jdW1lbnRpIHJpY2hpYW1hdGlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1szXSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRpIGNoZSByaWNoaWFtYW5vJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCAyKVwiPlxyXG4gICAgICAgICAgICBEb2N1bWVudGkgY2hlIHJpY2hpYW1hbm9cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1syXSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gZnhIaWRlIGZ4U2hvdy5sdC1tZCBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBqdXJpcydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5pZCwgNClcIj5cclxuICAgICAgICAgICAgSnVyaXNcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSA9PT0nVCcpIHtcclxuICAgICAgICAgIDxidXR0b24gZnhIaWRlIGZ4U2hvdy5sdC1tZCBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBtb2RpZmljaGUgc3ViaXRlJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCAzKVwiPlxyXG4gICAgICAgICAgICBNb2RpZmljaGUgc3ViaXRlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gIT09J1QnICYmIGxhc3REb2N1bWVudD8uYmFnWzZdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBhcHBvcnRhdGUnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDUpXCI+XHJcbiAgICAgICAgICAgIE1vZGlmaWNoZSBhcHBvcnRhdGVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/Lmhhc1ByaW1hcnkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGRvY3VtZW50byBwcmltYXJpbydcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlKGxhc3REb2N1bWVudD8ucHJpbWFyeUlkKVwiPlxyXG4gICAgICAgICAge3tsYXN0RG9jdW1lbnQ/LnByaW1hcnlEZXNjcmlwdGlvbn19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbMl0gPT09J1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBmeEhpZGUubHQtbWQgbWF0LWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEganVyaXMnXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCA0KVwiPlxyXG4gICAgICAgICAgSnVyaXNcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSA9PT0gJ1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBmeEhpZGUubHQtbWQgbWF0LWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgbW9kaWZpY2hlIHN1Yml0ZSdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDMpXCI+XHJcbiAgICAgICAgICBNb2RpZmljaGUgc3ViaXRlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbNF0gIT09ICdUJyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s2XSA9PT0gJ1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiICB0eXBlPVwiYnV0dG9uXCIgZnhIaWRlLmx0LW1kIG1hdC1idXR0b25cclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBtb2RpZmljaGUgYXBwb3J0YXRlJ1wiIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCA1KVwiPlxyXG4gICAgICAgICAgTW9kaWZpY2hlIGFwcG9ydGF0ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uc2Vjb25kYXJ5SWQpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGRvY3VtZW50byBzZWNvbmRhcmlvJ1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGUobGFzdERvY3VtZW50Py5zZWNvbmRhcnlJZClcIj5cclxuICAgICAgICAgIFRlc3RvIHN0b3JpY29cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s3XSA9PT0gJ1QnKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNvbG9yPVwicHJpbWFyeVwiICB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgY29tbWVudG8nXCJcclxuICAgICAgICAgIChjbGljayk9XCJzaG93Q29tbWVudCgpXCI+XHJcbiAgICAgICAgICBDb21tZW50b1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4LnhzPVwiMTAwXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIEBpZiAoaGFzUmVsZXZhbnRzKCkgJiYgcmVsZXZhbnRzLmhpdHMpIHtcclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGNsYXNzPVwic21hbGwgaXRlbS1ncmV5ZWRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OjIwcHg7IG1hcmdpbi1yaWdodDogNXB4XCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUGFyb2xlIGV2aWRlbnppYXRlXCI+e3tyZWxldmFudHMuaGl0fX1cclxuICAgICAgICAgICAgICBkaSB7e3JlbGV2YW50cy5oaXRzfX08L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiICB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1ZhaSBhbGxhIHBhcm9sYSBwcmVjZWRlbnRlJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzUmVsZXZhbnQoKVwiIG1hdFRvb2x0aXA9XCJQYXJvbGEgcHJlY2VkZW50ZVwiIFtkaXNhYmxlZF09XCJyZWxldmFudHMuaGl0IDw9IDFcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1ZhaSBhbGxhIHByb3NzaW1hIHBhcm9sYSdcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJuZXh0UmVsZXZhbnQoKVwiIG1hdFRvb2x0aXA9XCJQcm9zc2ltYSBwYXJvbGFcIiBbZGlzYWJsZWRdPVwicmVsZXZhbnRzLmhpdCA+PSByZWxldmFudHMuaGl0c1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQXppb25pIHN1bCBkb2N1bWVudG9cIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQXppb25pIGRhIGVzZWd1aXJlIHN1bCBkb2N1bWVudG8nXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBY3Rpb25zXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8bWF0LW1lbnUgI21lbnVBY3Rpb25zPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FwcmkgZG9jdW1lbnRvIGluIHVuYSBudW92YSBmaW5lc3RyYSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbihsYXN0RG9jdW1lbnQ/LmlkLCB0cnVlKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+b3Blbl9pbl9icm93c2VyPC9tYXQtaWNvbj5BcHJpIGluIG51b3ZhIGZpbmVzdHJhXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicHJpbnQoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1N0YW1wYSBkb2N1bWVudG8nXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5wcmludDwvbWF0LWljb24+U3RhbXBhXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZmluZCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInVHJvdmEgbmVsIGRvY3VtZW50bydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmZpbmRfaW5fcGFnZTwvbWF0LWljb24+VHJvdmEgbmVsIGRvY3VtZW50byAoQ1RSTCtGKVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNlbmRJdGVtc1RvKFtsYXN0RG9jdW1lbnRdKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0ludmlhIGRvY3VtZW50byBwZXIgZW1haWwnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZW5kPC9tYXQtaWNvbj5JbnZpYSBwZXIgZW1haWxcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhZGRJdGVtc1RvQmFnKFtsYXN0RG9jdW1lbnRdKVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FnZ2l1bmdpIGFpIGRvY3VtZW50aSBkaSBsYXZvcm8nXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj53b3JrX291dGxpbmU8L21hdC1pY29uPkFnZ2l1bmdpIGFpIGRvY3VtZW50aSBkaSBsYXZvcm9cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQgJiYgbGFzdERvY3VtZW50Py5tb2RlbCAhPSAxMSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJleHBvcnRQZGYobGFzdERvY3VtZW50KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NhbHZhIGRvY3VtZW50byBpbiBwZGYnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zYXZlX2FsdDwvbWF0LWljb24+U2FsdmEgaW4gcGRmXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidHZW5lcmEgdW4gbGluayBwZXJtYW5lbnRlIGRhIHV0aWxpenphcmUgZXN0ZXJuYW1lbnRlJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93TGluayhsYXN0RG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5saW5rPC9tYXQtaWNvbj5MaW5rXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIEBpZiAoKGxhc3REb2N1bWVudD8ubW9kZWwgPT09IDkgfHwgbGFzdERvY3VtZW50Py5tb2RlbCA9PT0gMTApKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInR2VuZXJhIHVuIHJlcG9ydCBzdWwgZG9jdW1lbnRvJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkaXNwbGF5UmVwb3J0KGxhc3REb2N1bWVudClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFzc2lnbm1lbnQ8L21hdC1pY29uPlJlcG9ydFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKFJTX2VuYWJsZWQoW2xhc3REb2N1bWVudF0pICYmICFjYW5TZWxlY3QoKSkge1xyXG4gICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKFJTX2VuYWJsZWQoW2xhc3REb2N1bWVudF0pICYmICFjYW5TZWxlY3QoKSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSBtYXRUb29sdGlwPVwiUmVnaXN0cm8gJiBTY2FkZW56YXJpb1wiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09wemlvbmkgZGkgUmVnaXN0cm8gJiBTY2FkZW56YXJpbydcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVJTXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hbGFybV9vbjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIFJlZ2lzdHJvIGUgc2NhZGVuemFyaW9cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51UlM9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidOdW92YSBsZWdnZSdcIiAoY2xpY2spPVwiUlNfbmV3TGF3KFtsYXN0RG9jdW1lbnRdKVwiPlxyXG4gICAgICAgICAgICAgIE51b3ZhIGxlZ2dlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTnVvdmEgYXR0aXZpdMOgJ1wiIChjbGljayk9XCJSU19uZXdBY3Rpdml0eShsYXN0RG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgTnVvdmEgYXR0aXZpdMOgXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInUmVwb3J0IHV0aWxpenpvIG5vcm1hJ1wiIChjbGljayk9XCJSU191c2FnZVJlcG9ydChsYXN0RG9jdW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgUmVwb3J0IHV0aWxpenpvIG5vcm1hXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIEBpZiAoaGFzUmVsZXZhbnRzKCkgJiYgcmVsZXZhbnRzLml0ZW1zICYmIHJlbGV2YW50c1BhbmUgJiYgKCFyZWxldmFudHNQYW5lLm9wZW5lZCB8fCByZWxldmFudHNQYW5lQ2xvc2VkKSkge1xyXG4gICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiUmlsZXZhbnphXCIgYXJpYS1sYWJlbD1cIidSaWxldmFuemEnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlbGV2YW50c1BhbmUoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+bWVudV9vcGVuPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoYnVzeSgpKSB7XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBzdHlsZT1cInotaW5kZXg6MTFcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGlkPVwiY2xpcHBlci1kb2N1bWVudC1zY3JvbGxhYmxlXCI+XHJcbiAgPG1hdC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiZmlsbFwiIFtoYXNCYWNrZHJvcF09XCJbcmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wXVwiPlxyXG4gICAgPG1hdC1kcmF3ZXIgI3JlbGV2YW50c1BhbmUgcG9zaXRpb249XCJlbmRcIiBjbGFzcz1cImRyYXdlci1zbWFsbCBkcmF3ZXItd2l0aC1sb2FkZXJcIj5cclxuICAgICAgQGlmIChyZWxldmFudHNCdXN5KCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIj48L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4PVwiNnB4XCI+XHJcbiAgICAgICAgICBAaWYgKHJlbGV2YW50c0J1c3koKSkge1xyXG4gICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgc3R5bGU9XCJ6LWluZGV4OiAxMTtcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPlxyXG4gICAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgZnhGbGV4PVwiNDhweFwiIGNsYXNzPVwidGl0bGUtY29udGFpbmVyLXdpdGgtbG9hZGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+UmlsZXZhbnphPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlUmVsZXZhbnRzUGFuZSgpXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJOYXNjb25kaVwiPjxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgY2xhc3M9XCJzY3JvbGwtaGlkZGVuXCI+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMCAxMHB4XCI+XHJcbiAgICAgICAgICAgIDxwPlBhcnRpIGRlbCBkb2N1bWVudG8gcGnDuSBzaWduaWZpY2F0aXZlIHBlciBsYSByaWNlcmNhIGRpIDxzcGFuIGNsYXNzPSd3b3JkLWhpdCc+e3tsYXN0UXVlcnl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8bmF2IGNsYXNzPVwicmVsZXZhbnQtaXRlbXNcIj5cclxuICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHJlbGV2YW50cy5pdGVtczsgdHJhY2sgaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwic21hbGxcIiAoY2xpY2spPVwiZ290b1JlbGV2YW50KGl0ZW0pXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLnRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RhcnRcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0udGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnNjb3JlID4gMS4yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9J2ZvbnQtc2l6ZTp4LXNtYWxsOyBoZWlnaHQ6IDEwcHg7IHdpZHRoOjEwcHgnIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb2x0byByaWxldmFudGVcIj50aHVtYl91cF9hbHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1kcmF3ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsbFwiPlxyXG4gICAgICA8aWZyYW1lIGlkPVwiY2xpcHBlci1kb2N1bWVudC1pZnJhbWVcIiBjbGFzcz1cImlmcmFtZVwiIFtzcmNdPVwidXJsKCkgfCBzYWZlVXJsXCI+PC9pZnJhbWU+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1kcmF3ZXItY29udGFpbmVyPlxyXG48L2Rpdj4iXX0=
|
|
734
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvZG9jdW1lbnQvZG9jdW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBR0wsZUFBZSxFQUNmLFlBQVksRUFDWiww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ZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsYUFBYSw2dkJBQ2IsY0FBYyxtK0JBQ2QsZ0JBQWdCLGtJQUNoQixvQkFBb0IseU5BQ3BCLGdCQUFnQix3R0FDaEIsZ0JBQWdCLG9kQUNoQixXQUFXOzsyRkFHRix3QkFBd0I7a0JBcEJwQyxTQUFTOzJCQUNGLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxtQkFHM0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixXQUFXO3FCQUNaOzhCQUkyQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ2hCLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFHRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IE1hdERyYXdlciwgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQ2xpcHBlckRvY3VtZW50SW5mbyxcclxuICBDbGlwcGVyRG9jdW1lbnRSZWxldmFudHMsXHJcbiAgQ2xpcHBlck1lc3NhZ2VzLFxyXG4gIENsaXBwZXJNb2RlbCxcclxuICBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZVxyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY2xpcHBlci5jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIFNhZmVVcmxQaXBlLFxyXG4gIFN5c3RlbVV0aWxzXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRmlsZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uJztcclxuaW1wb3J0IHsgRXh0ZW5kZWRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZXh0ZW5kZWQnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENsaXBwZXJSZWZlcmVuY2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVmZXJlbmNlcy9yZWZlcmVuY2VzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudEluZGV4Q29tcG9uZW50IH0gZnJvbSAnLi4vZG9jdW1lbnQtaW5kZXgvZG9jdW1lbnQtaW5kZXguY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50TWFuYWdlciB9IGZyb20gJy4uL2RvY3VtZW50LW1hbmFnZXIvZG9jdW1lbnQtbWFuYWdlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENsaXBwZXJEb2N1bWVudERpYWxvZ0RhdGEge1xyXG4gIHNlbGVjdGlvbk1vZGU6IG51bWJlcjtcclxuICBpZDogc3RyaW5nO1xyXG4gIHF1ZXJ5Pzogc3RyaW5nIHwgbnVsbDtcclxuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZsZXhNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBFeHRlbmRlZE1vZHVsZSxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxyXG4gICAgU2FmZVVybFBpcGUsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJEb2N1bWVudENvbXBvbmVudCBleHRlbmRzIENsaXBwZXJEb2N1bWVudE1hbmFnZXJcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdyZWxldmFudHNQYW5lJykgcmVsZXZhbnRzUGFuZSE6IE1hdERyYXdlcjtcclxuICBAT3V0cHV0KCkgY2xvc2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8vIENvbXBsaWFuY2UgcmVsYXRlZCBldmVudHNcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlQW5hbHlzaXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlUGxhbm5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25Db21wbGlhbmNlVXNhZ2VSZXBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXIgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcclxuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgcHJpdmF0ZSByZW5kZXJlckxpc3RlbmVyMTogYW55O1xyXG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJpdmF0ZSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPENsaXBwZXJEb2N1bWVudENvbXBvbmVudD4pO1xyXG4gIHByb3RlY3RlZCBkaWFsb2dEYXRhOiBDbGlwcGVyRG9jdW1lbnREaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgPz8geyBtb2RlOiBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW4gfTtcclxuXHJcblxyXG4gIHByaXZhdGUgaGVpZ2h0OiBudW1iZXIgPSAtMTtcclxuICBwcm90ZWN0ZWQgdXJsID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIHRpdGxlID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XHJcbiAgcHJvdGVjdGVkIGJ1c3kgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByb3RlY3RlZCBsYXN0UXVlcnk/OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgbGFzdERvY3VtZW50PzogQ2xpcHBlckRvY3VtZW50SW5mbyB8IG51bGwgPSBudWxsO1xyXG4gIHByb3RlY3RlZCByZWxldmFudHM6IENsaXBwZXJEb2N1bWVudFJlbGV2YW50cyA9IHtcclxuICAgIGl0ZW1zOiBbXSxcclxuICAgIGhpdHM6IDAsXHJcbiAgICBoaXQ6IDAsXHJcbiAgICBtaW5pbXVtU2NvcmU6IDEwMCxcclxuICB9O1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgcmVsZXZhbnRzUGFuZUNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCByZWxldmFudHNCdXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgaGFzUmVsZXZhbnRzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uTW9kZT86IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlID0gdGhpcy5kaWFsb2dEYXRhLnNlbGVjdGlvbk1vZGU7XHJcbiAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEucXVlcnkpIHtcclxuICAgICAgICB0aGlzLmxhc3RRdWVyeSA9IHRoaXMuZGlhbG9nRGF0YS5xdWVyeTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxhc3RRdWVyeSA9ICcnO1xyXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ0RhdGEuaWQpIHtcclxuICAgICAgICAgIGxldCB1cmwgPVxyXG4gICAgICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgICAgICAnL2RvY3VtZW50cy9yZW5kZXIvP3F1ZXJ5PScgK1xyXG4gICAgICAgICAgICB0aGlzLmxhc3RRdWVyeSArXHJcbiAgICAgICAgICAgICcmaWQ9JyArXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YS5pZDtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh1cmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgLyogaWYgKHRoaXMubGFzdFF1ZXJ5KSB7XHJcbiAgICAgIHRoaXMudXBkYXRlUmVsZXZhbnRzKCk7XHJcbiAgICB9Ki9cclxuXHJcbiAgICAvLyBMaXN0ZW4gdG8gd2luZG93IG1lc3NhZ2VzXHJcbiAgICB0aGlzLnJlbmRlcmVyTGlzdGVuZXIxID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oXHJcbiAgICAgICd3aW5kb3cnLFxyXG4gICAgICAnbWVzc2FnZScsXHJcbiAgICAgIChlOiBFdmVudCkgPT4ge1xyXG4gICAgICAgIGxldCBldmVudCA9IGUgYXMgTWVzc2FnZUV2ZW50O1xyXG4gICAgICAgIGlmICghZXZlbnQpIHJldHVybjtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YSkge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICduYXZpZ2F0ZWQnOlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlZChcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudGl0bGUxLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudGl0bGUyLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2R1bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tb2R1bGVOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmF1dGhvcixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm9yaWdpbixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm9yaWdpbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYmFnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEudmFsaWRpdHlJbmZvLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZXhwaXJpbmdJbmZvLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHJpbWFyeUlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHJpbWFyeU1vZGVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuc2Vjb25kYXJ5SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pc1RyaWFsXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbmF2aWdhdGUnOlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRlKGRhdGEudXJsKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdyZWZlcmVuY2VzJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuUmVmZXJlbmNlcyhcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubW9kZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLm1vZGVsLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYW5jaG9yLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYW5jaG9yVGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS51cGRhdGVcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdoaXRzJzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5yZWxldmFudHMuaGl0cyA9IGRhdGEudG90YWw7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUmVsZXZhbnRzKCk7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgLy8gT2JzZXJ2ZSBsYXlvdXQgY2hhbmdlc1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcclxuICAgICAgLm9ic2VydmUoW1xyXG4gICAgICAgIEJyZWFrcG9pbnRzLlhTbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5TbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5NZWRpdW0sXHJcbiAgICAgICAgQnJlYWtwb2ludHMuTGFyZ2UsXHJcbiAgICAgICAgQnJlYWtwb2ludHMuWExhcmdlLFxyXG4gICAgICBdKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IHF1ZXJ5IG9mIE9iamVjdC5rZXlzKHJlc3VsdC5icmVha3BvaW50cykpIHtcclxuICAgICAgICAgIGlmIChyZXN1bHQuYnJlYWtwb2ludHNbcXVlcnldKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFJlYWN0IHRvIHdpbmRvdyBzaXplIGNoYW5nZVxyXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSwgZGVib3VuY2VUaW1lKDUwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5yZXNpemUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICBpZiAodGhpcy5yZW5kZXJlckxpc3RlbmVyMSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyTGlzdGVuZXIxKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzaXplIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzaXplKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtc2Nyb2xsYWJsZScpO1xyXG4gICAgICBpZiAoZWxlbSkge1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXRDdXJyZW50RGlhbG9nU2Nyb2xsYWJsZUhlaWdodChcclxuICAgICAgICAgIFsnY2xpcHBlci1kb2N1bWVudC1maXhlZCddLFxyXG4gICAgICAgICAgd2luZG93LmlubmVySGVpZ2h0XHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoaGVpZ2h0ICE9IHRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAncGFkZGluZzowO2hlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQ7bWF4LWhlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQnKTtcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLyoqXHJcbiAqIFNob3cgaGlkZSByZWxldmFudHMgcGFuZSBtYW51YWxseVxyXG4gKi9cclxuICBwcm90ZWN0ZWQgdG9nZ2xlUmVsZXZhbnRzUGFuZSgpIHtcclxuICAgIHRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZCA9ICF0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQ7XHJcbiAgICB0aGlzLnJlbGV2YW50c1BhbmU/LnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgZmlsdGVyIHBhbmUgdmlzaWJpbGl0eVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKSB7XHJcbiAgICBpZiAodGhpcy5yZWxldmFudHNQYW5lKSB7XHJcbiAgICAgIGlmICh0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuWFNtYWxsKSB8fFxyXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5TbWFsbCkgfHxcclxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuTWVkaXVtKSkge1xyXG4gICAgICAgIGlmICh0aGlzLnJlbGV2YW50c1BhbmUub3BlbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLm1vZGUgPSAnb3Zlcic7XHJcbiAgICAgICAgdGhpcy5yZWxldmFudHNQYW5lLmRpc2FibGVDbG9zZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZUhhc0JhY2tkcm9wID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMucmVsZXZhbnRzUGFuZS5vcGVuZWQgJiYgIXRoaXMucmVsZXZhbnRzUGFuZUNsb3NlZCAmJiB0aGlzLmhhc1JlbGV2YW50cygpKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUub3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWxldmFudHNQYW5lLm9wZW5lZCAmJiB0aGlzLnJlbGV2YW50c1BhbmVDbG9zZWQpIHtcclxuICAgICAgICAgIHRoaXMucmVsZXZhbnRzUGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUubW9kZSA9ICdzaWRlJztcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmUuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlbGV2YW50c1BhbmVIYXNCYWNrZHJvcCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBkaWFsb2dcclxuICAgKi9cclxuXHJcbiAgcHJvdGVjdGVkIGNsb3NlKCkge1xyXG4gICAgaWYgKHRoaXMuY2xvc2luZykge1xyXG4gICAgICB0aGlzLmNsb3NpbmcuZW1pdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlIHRvIGEgbmV3IGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGlkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICovXHJcbiAgbmF2aWdhdGUoaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFpZCB8fCBpZC5sZW5ndGggPT0gMClcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcbiAgICBpZiAoaWQuaW5kZXhPZignPycpICE9PSAtMSkge1xyXG4gICAgICBpZiAoaWQuc3RhcnRzV2l0aCgnL2FwaScpKVxyXG4gICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgKyBpZC5zdWJzdHJpbmcoNCkpO1xyXG4gICAgICBlbHNlIGlmICghaWQuc3RhcnRzV2l0aCh0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkpKVxyXG4gICAgICAgIHRoaXMubmF2aWdhdGVCeVVybCh0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgKyBpZCk7XHJcbiAgICAgIGVsc2UgdGhpcy5uYXZpZ2F0ZUJ5VXJsKGlkKTtcclxuICAgIH0gZWxzZVxyXG4gICAgICB0aGlzLm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS5zZXJ2aWNlVXJpICtcclxuICAgICAgICAnL2RvY3VtZW50cy9yZW5kZXIvP3F1ZXJ5PSZpZD0nICtcclxuICAgICAgICBpZFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGUgYnkgdXJsXHJcbiAgICogQHBhcmFtIHVybCA6IHRoZSB1cmwgIHRvIG5hdmlnYXRlIHRvXHJcbiAgICovXHJcbiAgbmF2aWdhdGVCeVVybCh1cmw6IHN0cmluZykge1xyXG4gICAgaWYgKCF1cmwgfHwgdXJsLmxlbmd0aCA9PT0gMCB8fCB1cmwgPT09ICdhYm91dDpibGFuaycpXHJcbiAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkb1xyXG4gICAgLy8gQ2xlYW4gdXJsXHJcbiAgICBsZXQgcGFydHMgPSB1cmwuc3BsaXQoJyMnKTtcclxuICAgIHVybCA9IHBhcnRzWzBdO1xyXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdXJsICs9ICcjJyArIHBhcnRzWzFdO1xyXG4gICAgfVxyXG4gICAgLy8gSGFuZGxlIGZyZWUgdGV4dCBxdWVyeVxyXG4gICAgbGV0IHEgPSAnJztcclxuICAgIGxldCBwb3MgPSB1cmwuaW5kZXhPZigncXVlcnk9Jyk7XHJcbiAgICBpZiAocG9zICE9PSAtMSkge1xyXG4gICAgICBwb3MgKz0gNjtcclxuICAgICAgd2hpbGUgKHVybC5sZW5ndGggPiBwb3MgJiYgdXJsW3Bvc10gIT09ICcmJyAmJiB1cmxbcG9zXSAhPT0gJyMnKVxyXG4gICAgICAgIHEgKz0gdXJsW3BvcysrXTtcclxuICAgIH1cclxuICAgIGlmIChxLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gUmVzZXRcclxuICAgICAgdGhpcy5yZWxldmFudHMuaGl0ID0gMDtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICAvLyBBc3NpZ24gcXVlcnkgdG8gZW5hYmxlIHNlYXJjaCBmb3IgZnJhZ21lbnRzXHJcbiAgICAgICAgdGhpcy5sYXN0UXVlcnkgPSBkZWNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KHEpKTtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgdGhpcy5sYXN0UXVlcnkgPSBxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IG5hdmlnYXRlVG9GaWxlID0gdXJsLmluZGV4T2YoJyZmaWxlPXRydWUnKSAhPT0gLTE7XHJcbiAgICBpZiAobmF2aWdhdGVUb0ZpbGUgPT09IHRydWUpIHtcclxuICAgICAgLy8gUHJldmlld1xyXG4gICAgICB0aGlzLnByZXZpZXdGaWxlKHVybCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBCZWdpbiBsb2FkaW5nIG9ubHkgaWYgbm90IGRvd25sb2FkaW5nIGEgZmlsZVxyXG4gICAgICB0aGlzLmJ1c3kuc2V0KHVybC5pbmRleE9mKCdkb2N1bWVudHMvcmVuZGVyL2l0ZW0nKSA9PT0gLTEpO1xyXG4gICAgICAvLyBOYXZpZ2F0ZVxyXG4gICAgICB0aGlzLnVybC5zZXQodXJsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlZCBjYWxsYmFjayAgIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0ZWQoXHJcbiAgICBpZDogc3RyaW5nLCAvLyBEb2N1bW5lbnQgaWRcclxuICAgIHRpdGxlMTogc3RyaW5nLCAvLyBUaXRsZSAxXHJcbiAgICB0aXRsZTI6IHN0cmluZywgLy8gVGl0bGUgMlxyXG4gICAgbW9kZWw6IG51bWJlciwgLy8gTW9kZWxcclxuICAgIG1vZHVsZUlkOiBudW1iZXIsIC8vIE1vZHVsZVxyXG4gICAgbW9kdWxlTmFtZTogc3RyaW5nLCAvLyBNb2R1bGUgbmFtZVxyXG4gICAgZGF0ZTogc3RyaW5nLCAvLyBEYXRlXHJcbiAgICBudW1iZXI6IHN0cmluZywgLy8gTnVtYmVyXHJcbiAgICBhdXRob3I6IHN0cmluZywgLy8gQXV0aG9yXHJcbiAgICBvcmlnaW46IHN0cmluZywgLy8gT3JpZ2luXHJcbiAgICBvcmlnaW5EZXNjcmlwdGlvbjogc3RyaW5nLCAvLyBPcmlnaW4gZGVzY3JpcHRpb25cclxuICAgIGJhZzogc3RyaW5nLCAvLyBGbGFnc1xyXG4gICAgdmFsaWRpdHlJbmZvOiBzdHJpbmcsIC8vIEluZm8gYWJvdXQgdmFsaWRpdHlcclxuICAgIGV4cGlyaW5nSW5mbzogc3RyaW5nLCAvLyBJbmZvIGFib3V0IGV4cGlyaW5nIGRhdGVcclxuICAgIHByaW1hcnlJZDogc3RyaW5nLCAvLyBQcmltYXJ5IGRvY3VtZW50IGlkXHJcbiAgICBwcmltYXJ5TW9kZWw6IG51bWJlciwgLy8gUHJpbWFyeSBkb2N1bWVudCBtb2RlbFxyXG4gICAgc2Vjb25kYXJ5SWQ6IHN0cmluZywgLy8gU2Vjb25kYXJ5IGRvY3VtZW50IGlkXHJcbiAgICBpc1RyaWFsOiBib29sZWFuIC8vIFRydWUgaWYgaXMgYSB0cmlhbCByZXF1ZXN0XHJcbiAgKSB7XHJcbiAgICAvLyBDaGVjayBmb3Igc2Vzc2lvbiBleHBpcmluZ1xyXG4gICAgaWYgKHRpdGxlMSA9PT0gJ1Nlc3Npb25lIG5vbiB2YWxpZGEnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZVxyXG4gICAgICAgIC5lcnJvcih0aXRsZTIsIG51bGwsIHRpdGxlMSwgJ0FjY2VkaSBkaSBudW92bycpXHJcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbG9naW4nXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdG9yZSBkYXRhXHJcbiAgICBpZiAoIXRoaXMubGFzdERvY3VtZW50KSB7XHJcbiAgICAgIHRoaXMubGFzdERvY3VtZW50ID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5pZCA9IGlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudGl0bGUxID0gdGl0bGUxID8gU3lzdGVtVXRpbHMudXJsRGVjb2RlKHRpdGxlMSkgOiBudWxsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudGl0bGUyID0gdGl0bGUyID8gU3lzdGVtVXRpbHMudXJsRGVjb2RlKHRpdGxlMikgOiBudWxsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kZWwgPSBtb2RlbDtcclxuICAgIHRoaXMubGFzdERvY3VtZW50Lm1vZHVsZSA9IG1vZHVsZUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQubW9kdWxlTmFtZSA9IG1vZHVsZU5hbWU7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5kYXRlID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5udW1iZXIgPSBudW1iZXI7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5hdXRob3IgPSBhdXRob3I7XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5vcmlnaW4gPSBvcmlnaW47XHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5vcmlnaW5EZXNjcmlwdGlvbiA9IG9yaWdpbkRlc2NyaXB0aW9uO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuYmFnID0gYmFnO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQudmFsaWRpdHlJbmZvID0gdmFsaWRpdHlJbmZvO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeUlkID0gcHJpbWFyeUlkO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQucHJpbWFyeU1vZGVsID0gcHJpbWFyeU1vZGVsO1xyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuaGFzUHJpbWFyeSA9XHJcbiAgICAgIHByaW1hcnlJZCAmJlxyXG4gICAgICAobW9kZWwgPT09IENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvIHx8XHJcbiAgICAgICAgbW9kZWwgPT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlKTtcclxuICAgIGlmIChwcmltYXJ5SWQpIHtcclxuICAgICAgdmFyIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgIHN3aXRjaCAocHJpbWFyeU1vZGVsID8gcHJpbWFyeU1vZGVsIDogbW9kZWwpIHtcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnVGVzdG8gdmlnZW50ZSc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5BZ2dpb3JuYW1lbnRvTm9ybWF0aXZvOlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnVGVzdG8gc3Rvcmljbyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5TY2FkZW56YTpcclxuICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ1NjYWRlbnphJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLkNvb3JkaW5hbWVudG86XHJcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdNb2RpZmljYSc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29sbGVnYW1lbnRvJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFzdERvY3VtZW50LnByaW1hcnlEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXN0RG9jdW1lbnQuc2Vjb25kYXJ5SWQgPSBzZWNvbmRhcnlJZDtcclxuICAgIHRoaXMubGFzdERvY3VtZW50LmlzVHJpYWwgPSBpc1RyaWFsO1xyXG5cclxuICAgIC8vIEhhbmRsZSBleHBpcmluZyBpbmZvXHJcbiAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0Rlc2NyaXB0aW9uID0gbnVsbDtcclxuICAgIGlmIChleHBpcmluZ0luZm8pIHtcclxuICAgICAgbGV0IHBhcnRzID0gZXhwaXJpbmdJbmZvLnNwbGl0KCcjJyk7XHJcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHBhcnRzMiA9IHBhcnRzWzBdLnNwbGl0KCd8Jyk7XHJcbiAgICAgICAgaWYgKHBhcnRzMi5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgdGhpcy5sYXN0RG9jdW1lbnQuZXhwaXJpbmdEYXRlID0gbmV3IERhdGUocGFydHMyWzBdKTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDEpIHRoaXMubGFzdERvY3VtZW50LmV4cGlyaW5nSW5mbyA9IHBhcnRzMlsxXTtcclxuICAgICAgICBpZiAocGFydHMyLmxlbmd0aCA+IDIpXHJcbiAgICAgICAgICB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0luZm8gKz0gJ3wnICsgcGFydHMyWzJdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB0aGlzLmxhc3REb2N1bWVudC5leHBpcmluZ0Rlc2NyaXB0aW9uID0gcGFydHNbMV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0IHRpdGxlXHJcbiAgICB0aGlzLnRpdGxlLnNldCh0aGlzLmxhc3REb2N1bWVudC50aXRsZTFcclxuICAgICAgPyB0aGlzLmxhc3REb2N1bWVudC50aXRsZTFcclxuICAgICAgOiB0aGlzLmxhc3REb2N1bWVudC50aXRsZTIpO1xyXG5cclxuICAgIC8vIEdldCBsYXN0IGRvY3VtZW50IHVwZGF0ZVxyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZS5sYXN0VXBkYXRlKHRoaXMubGFzdERvY3VtZW50LmlkKS5zdWJzY3JpYmUoKHI6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5sYXN0RG9jdW1lbnQubGFzdFVwZGF0ZSA9IHIudmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmxhc3RRdWVyeSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVJlbGV2YW50cygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5vdGlmeSBuYXZpZ2F0aW9uIGhhcyBjb21wbGV0ZWRcclxuICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfTkFWSUdBVEVELCB7XHJcbiAgICAgIGRvY3VtZW50OiB0aGlzLmxhc3REb2N1bWVudCxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ290byBwcmV2aW91cyBkb2N1bWVudCBpbiBoaXN0b3J5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGJhY2soKSB7XHJcbiAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgIGYuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgne1widHlwZVwiOiBcImJhY2tcIn0nLCAnKicpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IGRvY3VtZW50IGluIGhpc3RvcnlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZm9yd2FyZCgpIHtcclxuICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgZi5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCd7XCJ0eXBlXCI6IFwiZm9yd2FyZFwifScsICcqJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcmludCBjdXJyZW50IGRvY3VtZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHByaW50KCkge1xyXG4gICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoJ3tcInR5cGVcIjogXCJwcmludFwifScsICcqJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIGluIGN1cnJlbnQgZG9jdW1lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZmluZCgpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKCdQZXIgY2VyY2FyZSBuZWwgZG9jdW1lbnRvIHByZW1pIENUUkwgKyBGLicpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR290byBuZXh0IHJlbGV2YW50IGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbmV4dFJlbGV2YW50KCkge1xyXG4gICAgbGV0IGkgPSB0aGlzLnJlbGV2YW50cy5oaXQgKyAxO1xyXG4gICAgaWYgKGkgPD0gdGhpcy5yZWxldmFudHMuaGl0cykge1xyXG4gICAgICBsZXQgZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGlwcGVyLWRvY3VtZW50LWlmcmFtZScpIGFzIGFueTtcclxuICAgICAgZi5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKCd7XCJ0eXBlXCI6IFwicmVsZXZhbnRcIiwgXCJ2YWx1ZVwiOiBcIm5leHRcIn0nLCAnKicpO1xyXG4gICAgICB0aGlzLnJlbGV2YW50cy5oaXQrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvdG8gcHJldmlvdXMgcmVsZXZhbnQgaXRlbVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBwcmV2aW91c1JlbGV2YW50KCkge1xyXG4gICAgbGV0IGkgPSB0aGlzLnJlbGV2YW50cy5oaXQgLSAxO1xyXG4gICAgaWYgKGkgPiAwKSB7XHJcbiAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgJ3tcInR5cGVcIjogXCJyZWxldmFudFwiLCBcInZhbHVlXCI6IFwicHJldmlvdXNcIn0nLFxyXG4gICAgICAgICcqJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnJlbGV2YW50cy5oaXQtLTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvdG8gYSByZWxldmFudCBpdGVtXHJcbiAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBnbyB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnb3RvUmVsZXZhbnQoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoaXRlbS50eXBlID09PSAyMCkge1xyXG4gICAgICB3aW5kb3cub3BlbihcclxuICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkgK1xyXG4gICAgICAgICcvZG9jdW1lbnRzL3JlbmRlci9pdGVtLz9pZD0nICtcclxuICAgICAgICBpdGVtLmRvY3VtZW50SWQsXHJcbiAgICAgICAgJ19ibGFuaydcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItZG9jdW1lbnQtaWZyYW1lJykgYXMgYW55O1xyXG4gICAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgJ3tcInR5cGVcIjogXCJyZWxldmFudFwiLCBcInZhbHVlXCI6IFwiJyArIGl0ZW0udXJpICsgJ1wifScsXHJcbiAgICAgICAgJyonXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgcmVsZXZhbnQgaXRlbXNcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVJlbGV2YW50cygpIHtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMubGFzdFF1ZXJ5IHx8XHJcbiAgICAgIHRoaXMubGFzdFF1ZXJ5Lmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICB0aGlzLmxhc3RRdWVyeSA9PT0gJyAnIHx8XHJcbiAgICAgICh0aGlzLmxhc3REb2N1bWVudCAmJlxyXG4gICAgICAgIHRoaXMubGFzdERvY3VtZW50Lm1vZGVsICE9IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlUmVsZXZhbnRzUGFuZVZpc2liaWxpdHkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2VcclxuICAgICAgICAucXVlcnkoe1xyXG4gICAgICAgICAgZG9jdW1lbnRJZDogdGhpcy5sYXN0RG9jdW1lbnQuaWQsXHJcbiAgICAgICAgICB0ZXh0OiB0aGlzLmxhc3RRdWVyeSxcclxuICAgICAgICAgIGNvdW50OiAxLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXIuc3VjY2VzcykgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IG1pbmltdW1TY29yZSA9IDA7XHJcbiAgICAgICAgICAgIGlmIChyLnZhbHVlPy5pdGVtcyAmJiByLnZhbHVlPy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgci52YWx1ZS5pdGVtc1swXS5hbmNob3JzLmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNjb3JlID0gbi5zY29yZTtcclxuICAgICAgICAgICAgICAgIGlmIChzY29yZSA+IDcpIHNjb3JlIC09IDc7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29yZSA+IDUpIHNjb3JlIC09IDU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29yZSA+IDMpIHNjb3JlIC09IDM7XHJcbiAgICAgICAgICAgICAgICBpZiAobWluaW11bVNjb3JlID4gc2NvcmUpIG1pbmltdW1TY29yZSA9IHNjb3JlO1xyXG4gICAgICAgICAgICAgICAgbi5zY29yZSA9IHNjb3JlO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVsZXZhbnRzLm1pbmltdW1TY29yZSA9IG1pbmltdW1TY29yZTtcclxuICAgICAgICAgICAgICB0aGlzLnJlbGV2YW50cy5pdGVtcyA9IHIudmFsdWUuaXRlbXNbMF0uYW5jaG9yczsgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIHRoaXMuaGFzUmVsZXZhbnRzLnNldCh0aGlzLnJlbGV2YW50cy5pdGVtcz8ubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVSZWxldmFudHNQYW5lVmlzaWJpbGl0eSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGRvY3VtZW50IHN0cnVjdHVyZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbmRleChkb2N1bWVudElkOiBzdHJpbmcpIHtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlckRvY3VtZW50SW5kZXhDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAnaW5kaWNlIGRvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZG9jdW1lbnRJZDogZG9jdW1lbnRJZCxcclxuICAgICAgICBleGNsdWRlZFR5cGVzOiBudWxsLFxyXG4gICAgICAgIG11bHRpcGxlOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6ICc2MDBweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgIH0pO1xyXG4gICAgZC5jb21wb25lbnRJbnN0YW5jZS5kb25lXHJcbiAgICAgIC5zdWJzY3JpYmUoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyLmRhdGEuZG9jdW1lbnRJZCA9PT0gZG9jdW1lbnRJZCkge1xyXG4gICAgICAgICAgbGV0IGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpcHBlci1kb2N1bWVudC1pZnJhbWUnKSBhcyBhbnk7XHJcbiAgICAgICAgICBmLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICd7XCJ0eXBlXCI6IFwiZ290b1wiLCBcInZhbHVlXCI6XCInICsgci5kYXRhLnVyaSArICdcIn0nLFxyXG4gICAgICAgICAgICAnKidcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub3BlbkRvY3VtZW50KHIuZGF0YS5kb2N1bWVudElkICsgJyMnICsgci5kYXRhLnVyaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkLmNsb3NlKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEdldCB0aGUgaWQgaW4gYSBxdWVyeSBzdHJpbmdcclxuICogQHBhcmFtIHVybCA6IHRoZSB1cmwgdG8gcHJvY2Vzc1xyXG4gKiBAcGFyYW0gbmFtZSA6IHRoZSBvcHRpb25hbCBpZCBwYXJhbWVudGVyIG5hbWUuIERlZmF1bHQgaXMgJ2lkJ1xyXG4gKiBAcmV0dXJucyA6IHRoZSBpZCBwYXJhbWVcclxuICovXHJcbiAgcHJpdmF0ZSBnZXRJZCh1cmw6IHN0cmluZywgbmFtZTogc3RyaW5nID0gJ2lkJyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzdGFydCA9IHVybC5sYXN0SW5kZXhPZihuYW1lICsgJz0nKSArIDM7XHJcbiAgICBjb25zdCBlbmQgPSB1cmwuaW5kZXhPZignJicsIHN0YXJ0KTtcclxuICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJldmlldyBhIGZpbGUgaWYgcG9zc2libGVcclxuICAgKiBAcGFyYW0gdXJsIDogdGhlIHVybCB0byBwcmV2aWV3XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwcmV2aWV3RmlsZSh1cmw6IHN0cmluZykge1xyXG4gICAgaWYgKCF1cmwgfHwgdXJsLmxlbmd0aCA9PT0gMClcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcbiAgICAvLyBHZXQgdGhlIGlkXHJcbiAgICBsZXQgaWQgPSB0aGlzLmdldElkKHVybCk7XHJcbiAgICBpZiAoIWlkIHx8IGlkLmxlbmd0aCA9PT0gMClcclxuICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvXHJcbiAgICAvLyBDcmVhdGUgdGhlIHVybFxyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZS5uZXdPVFAoaWQpLnN1YnNjcmliZShcclxuICAgICAgciA9PiB7XHJcbiAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgIGVsc2UgaWYgKCFyLnZhbHVlLmNhblByZXZpZXcpXHJcbiAgICAgICAgICAvLyBEb25sb2FkIG1hbnVhbGx5XHJcbiAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oRmlsZVByZXZpZXdDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3ByZXZpZXctcGFuZWwnLFxyXG4gICAgICAgICAgICBhcmlhTGFiZWw6ICdhbnRlcHJpbWEnLFxyXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgICBlbWJlZDogci52YWx1ZS5jYW5FbWJlZFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgICAgICAgbWF4V2lkdGg6ICc5MDBweCcsXHJcbiAgICAgICAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgICAgICAgICAgaGVpZ2h0OiAnOTklJ1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBTaG93IGRvY3VtZW50IGNvbW1lbnRcclxuICAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dDb21tZW50KCkge1xyXG4gICAgaWYgKHRoaXMubGFzdERvY3VtZW50Py5iYWdbN10gIT09ICdUJykgcmV0dXJuO1xyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZVxyXG4gICAgICAuY29tbWVudCh0aGlzLmxhc3REb2N1bWVudD8uaWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICBpZiAoci5tZXNzYWdlID09PSBcIklsIHR1byBhYmJvbmFtZW50byBub24gY29uc2VudGUgZGkgdmlzdWFsaXp6YXJlIGkgY29tbWVudGkgYWxsZSBub3JtZS5cIilcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKFwiSWwgc2Vydml6aW8gZGkgPGI+Y29tbWVudGkgYWxsZSBub3JtZTwvYj4gbm9uIMOoIGNvbXByZXNvIG5lbCB0dW8gYWJib25hbWVudG8sIHBlciBtYWdnaW9yaSBpbmZvcm1hemlvbmkgcml2b2xnZXJzaSBhbGwnYWdlbnRlIGNvbW1lcmNpYWxlIGRpIHJpZmVyaW1lbnRvIG8gaW52aWFyZSB1bmEgbWFpbCBhIDxhIGhyZWY9J21haWx0bzpzYWxlc0BhcnNlZGl6aW9uaS5pdCcgdGFyZ2V0PSdfYmxhbmsnPnNhbGVzQGFyc2VkaXppb25pLml0PC9hPi5cIiwgbnVsbCwgXCJBdHRlbnppb25lXCIpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHIudmFsdWUgJiYgci52YWx1ZS5sZW5ndGggPiAxKVxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuaW5mbyhyLnZhbHVlLnJlcGxhY2UoL1xcbi9nLCAnPGJyPlxcclxcbicpLCBcIkNvbW1lbnRvXCIsIFwiQ0hJVURJXCIsIDcwMCk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5pbmZvKFwiQ29tbWVudG8gbm9uIHBpw7kgZGlzcG9uaWJpbGUgbyBpbiBmYXNlIGRpIHJldmlzaW9uZS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGFuIGl0ZW1cclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqIEBwYXJhbSBuZXdXaW5kb3c6IHRydWUgaWYgdGhlIGRvY3VtZW50IG11c3QgYmUgb3BlbiBpbnRvIGEgbmV3IHdpbmRvd1xyXG4gICAqL1xyXG4gIG9wZW4oZG9jdW1lbnRJZDogc3RyaW5nLCBuZXdXaW5kb3c6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgaWYgKCFuZXdXaW5kb3cpIHtcclxuICAgICAgaWYgKHRoaXMub3BlbmluZykgdGhpcy5vcGVuaW5nLmVtaXQoeyBpZDogZG9jdW1lbnRJZCB9KTtcclxuICAgICAgZWxzZSB0aGlzLm9wZW5Eb2N1bWVudChkb2N1bWVudElkKTtcclxuICAgIH0gZWxzZSB3aW5kb3cub3BlbignL2RvY3VtZW50by8nICsgZG9jdW1lbnRJZCwgJ19ibGFuaycpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhIGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKi9cclxuICBwcml2YXRlIG9wZW5Eb2N1bWVudChkb2N1bWVudElkOiBzdHJpbmcpIHtcclxuICAgIGlmICghZG9jdW1lbnRJZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlckRvY3VtZW50Q29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2RvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgZGF0YTogeyBpZDogZG9jdW1lbnRJZCB9LFxyXG4gICAgICBwYW5lbENsYXNzOiAnZG9jdW1lbnQtY29udGFpbmVyJyxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnMTQwMHB4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgICBoZWlnaHQ6ICc5OSUnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCcm93c2UgZG9jdW1lbnQgcmVmZXJlbmNlc1xyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICogQHBhcmFtIG1vZGUgOiB0aGUgbW9kZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvcGVuUmVmZXJlbmNlcyhcclxuICAgIGRvY3VtZW50SWQ6IHN0cmluZyxcclxuICAgIG1vZGU6IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlID0gQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuUmVmZXJlbmNlc0luLFxyXG4gICAgbW9kZWw6IG51bWJlciA9IG51bGwsXHJcbiAgICBhbmNob3I6IHN0cmluZyA9IG51bGwsXHJcbiAgICBhbmNob3JUaXRsZTogc3RyaW5nID0gbnVsbCxcclxuICAgIHVwZGF0ZTogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGlmICghZG9jdW1lbnRJZCkgZG9jdW1lbnRJZCA9IHRoaXMubGFzdERvY3VtZW50Py5pZDtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlclJlZmVyZW5jZXNDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAncmlmZXJpbWVudGkgbGVnYXRpIGFsIGRvY3VtZW50bycsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgaWQ6IGRvY3VtZW50SWQsXHJcbiAgICAgICAgbW9kZTogbW9kZSxcclxuICAgICAgICBtb2RlbDogbW9kZWwsXHJcbiAgICAgICAgYW5jaG9yOiBhbmNob3IsXHJcbiAgICAgICAgYW5jaG9yVGl0bGU6IGFuY2hvclRpdGxlLFxyXG4gICAgICAgIHVwZGF0ZTogdXBkYXRlLFxyXG4gICAgICB9LFxyXG4gICAgICBwYW5lbENsYXNzOiAncmVmZXJlbmNlcy1jb250YWluZXInLFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6ICcxMDAwcHgnLFxyXG4gICAgICB3aWR0aDogJzk5JScsXHJcbiAgICAgIGhlaWdodDogJzk5JScsXHJcbiAgICB9KTtcclxuICAgIGQuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAociAmJiByLmlkKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlKHIuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGEgcmVwb3J0XHJcbiAgICogQHBhcmFtIGl0ZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGlzcGxheVJlcG9ydChpdGVtOiBhbnkpIHtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuO1xyXG4gICAgaWYgKGl0ZW0ubW9kZWwgIT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgJiYgaXRlbS5tb2RlbCAhPSBDbGlwcGVyTW9kZWwuU2NhZGVuemEpIHtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmluZm8oXCJRdWVzdGEgZnVuemlvbmFsaXTDoCBub24gw6ggZGlzcG9uaWJpbGUgcGVyIHF1ZXN0byB0aXBvIGRpIGRvY3VtZW50by5cIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub3BlblJlcG9ydChpdGVtLmlkLCBpdGVtLnRpdGxlMSA/IGl0ZW0udGl0bGUxIDogaXRlbS50aXRsZTIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGRvY3VtZW50cyBjYW4gYmUgc2VsZWN0ZWQgYW5kIHJldHVybmVkIGFzIG1lc3NhZ2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY2FuU2VsZWN0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZSA+IDAgJiYgdGhpcy5sYXN0RG9jdW1lbnQgJiYgKHRoaXMubGFzdERvY3VtZW50Py5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGUgfHwgdGhpcy5sYXN0RG9jdW1lbnQ/Lm1vZGVsID09PSBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2bylcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmQgYSBtZXNzYWdlIHdpdGggY3VycmVudCBzZWxlY3Rpb24gYW5kIGNsb3NlIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZWxlY3QoKSB7XHJcbiAgICBpZiAodGhpcy5sYXN0RG9jdW1lbnQpIHtcclxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5ET0NVTUVOVF9TRUxFQ1RFRF9JTk5FUiwgW1xyXG4gICAgICAgIHRoaXMubGFzdERvY3VtZW50LFxyXG4gICAgICBdKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjxkaXYgaWQ9XCJjbGlwcGVyLWRvY3VtZW50LWZpeGVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNsaXBwZXItZG9jdW1lbnQtaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0YXJ0XCIgZnhMYXlvdXRHYXA9JzEwcHgnIGZ4RmlsbD5cclxuICAgICAgPGRpdiBmeEZsZXgubHQtbWQ9XCI1MFwiIGZ4RmxleD1cIjcwXCIgY2xhc3M9XCJ0aXRsZS1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBzdGFydFwiIGZ4TGF5b3V0R2FwPVwiNXB4XCIgY2xhc3M9XCJ0cnVuY2F0ZWRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXJnZSBib2xkXCI+e3t0aXRsZSgpfX08L2Rpdj5cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50ICYmIGxhc3REb2N1bWVudD8ubGFzdFVwZGF0ZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsIGFjY2VudFwiPlxyXG4gICAgICAgICAgICBBR0dJT1JOQVRPIEE6XHJcbiAgICAgICAgICAgIHt7bGFzdERvY3VtZW50Py5sYXN0VXBkYXRlfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQgJiYgbGFzdERvY3VtZW50Py5leHBpcmluZ0Rlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic21hbGwgYWNjZW50LWxvd1wiPlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8uZXhwaXJpbmdEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudCAmJiBsYXN0RG9jdW1lbnQ/LnZhbGlkaXR5SW5mbykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsIGJhZGdlLXJlZFwiPjxiPkF0dGVuemlvbmUhPC9iPlxyXG4gICAgICAgICAgICB7e2xhc3REb2N1bWVudD8udmFsaWRpdHlJbmZvfX08L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4Lmx0LW1kPVwiNTBcIiBmeEZsZXg9XCIzMFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNsb3NlXCI+XHJcbiAgICAgICAgICBAaWYgKGNhblNlbGVjdCgpKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cInNlbGVjdCgpXCI+XHJcbiAgICAgICAgICAgIFVzYSBzZWxlemlvbmVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiSW5kaWV0cm9cIiBhcmlhLWxhYmVsPVwiSW5kaWV0cm9cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYmFjaygpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQXZhbnRpXCIgYXJpYS1sYWJlbD1cIkF2YW50aVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3J3YXJkKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFycm93X2ZvcndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIiBhcmlhLWxhYmVsPVwiQ2hpdWRpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvdyB3cmFwIFwiIGZ4RmlsbCBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAgMTBweCAyMHB4IDE1cHhcIj5cclxuICAgICAgPGRpdiBmeEZsZXgueHM9XCIxMDBcIj5cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8ubW9kZWwgPT09IDkpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGluZGljZSdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImluZGV4KGxhc3REb2N1bWVudD8uaWQpXCI+XHJcbiAgICAgICAgICBJbmRpY2VcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiAobGFzdERvY3VtZW50Py5iYWdbMV0gPT09J1QnIHx8IGxhc3REb2N1bWVudD8uYmFnWzNdID09PSdUJykpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gbWF0VG9vbHRpcD1cIkNvbGxlZ2FtZW50aVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDb2xsZWdhbWVudGkgYWwgZG9jdW1lbnRvJ1wiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51TGlua3NcIj5cclxuICAgICAgICAgIENvbGxlZ2FtZW50aVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8bWF0LW1lbnUgI21lbnVMaW5rcz1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5iYWcgJiYgbGFzdERvY3VtZW50Py5iYWdbMV0gPT09J1QnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGRvY3VtZW50aSByaWNoaWFtYXRpJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCAxKVwiPlxyXG4gICAgICAgICAgICBEb2N1bWVudGkgcmljaGlhbWF0aVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzNdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBkb2N1bWVudGkgY2hlIHJpY2hpYW1hbm8nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDIpXCI+XHJcbiAgICAgICAgICAgIERvY3VtZW50aSBjaGUgcmljaGlhbWFub1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzJdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGp1cmlzJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVmZXJlbmNlcyhsYXN0RG9jdW1lbnQ/LmlkLCA0KVwiPlxyXG4gICAgICAgICAgICBKdXJpc1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzRdID09PSdUJykge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEhpZGUgZnhTaG93Lmx0LW1kIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBzdWJpdGUnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDMpXCI+XHJcbiAgICAgICAgICAgIE1vZGlmaWNoZSBzdWJpdGVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSAhPT0nVCcgJiYgbGFzdERvY3VtZW50Py5iYWdbNl0gPT09J1QnKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4SGlkZSBmeFNob3cubHQtbWQgbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgbW9kaWZpY2hlIGFwcG9ydGF0ZSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5pZCwgNSlcIj5cclxuICAgICAgICAgICAgTW9kaWZpY2hlIGFwcG9ydGF0ZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uaGFzUHJpbWFyeSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRvIHByaW1hcmlvJ1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGUobGFzdERvY3VtZW50Py5wcmltYXJ5SWQpXCI+XHJcbiAgICAgICAgICB7e2xhc3REb2N1bWVudD8ucHJpbWFyeURlc2NyaXB0aW9ufX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1syXSA9PT0nVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGZ4SGlkZS5sdC1tZCBtYXQtYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBqdXJpcydcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDQpXCI+XHJcbiAgICAgICAgICBKdXJpc1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzRdID09PSAnVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGZ4SGlkZS5sdC1tZCBtYXQtYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBtb2RpZmljaGUgc3ViaXRlJ1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlblJlZmVyZW5jZXMobGFzdERvY3VtZW50Py5pZCwgMylcIj5cclxuICAgICAgICAgIE1vZGlmaWNoZSBzdWJpdGVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChsYXN0RG9jdW1lbnQ/LmJhZyAmJiBsYXN0RG9jdW1lbnQ/LmJhZ1s0XSAhPT0gJ1QnICYmIGxhc3REb2N1bWVudD8uYmFnWzZdID09PSAnVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgIHR5cGU9XCJidXR0b25cIiBmeEhpZGUubHQtbWQgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIG1vZGlmaWNoZSBhcHBvcnRhdGUnXCIgKGNsaWNrKT1cIm9wZW5SZWZlcmVuY2VzKGxhc3REb2N1bWVudD8uaWQsIDUpXCI+XHJcbiAgICAgICAgICBNb2RpZmljaGUgYXBwb3J0YXRlXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAobGFzdERvY3VtZW50Py5zZWNvbmRhcnlJZCkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgZG9jdW1lbnRvIHNlY29uZGFyaW8nXCJcclxuICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZShsYXN0RG9jdW1lbnQ/LnNlY29uZGFyeUlkKVwiPlxyXG4gICAgICAgICAgVGVzdG8gc3Rvcmljb1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGxhc3REb2N1bWVudD8uYmFnICYmIGxhc3REb2N1bWVudD8uYmFnWzddID09PSAnVCcpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY29sb3I9XCJwcmltYXJ5XCIgIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01vc3RyYSBjb21tZW50bydcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dDb21tZW50KClcIj5cclxuICAgICAgICAgIENvbW1lbnRvXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXgueHM9XCIxMDBcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgQGlmIChoYXNSZWxldmFudHMoKSAmJiByZWxldmFudHMuaGl0cykge1xyXG4gICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJzbWFsbCBpdGVtLWdyZXllZFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6MjBweDsgbWFyZ2luLXJpZ2h0OiA1cHhcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJQYXJvbGUgZXZpZGVuemlhdGVcIj57e3JlbGV2YW50cy5oaXR9fVxyXG4gICAgICAgICAgICAgIGRpIHt7cmVsZXZhbnRzLmhpdHN9fTwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInVmFpIGFsbGEgcGFyb2xhIHByZWNlZGVudGUnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNSZWxldmFudCgpXCIgbWF0VG9vbHRpcD1cIlBhcm9sYSBwcmVjZWRlbnRlXCIgW2Rpc2FibGVkXT1cInJlbGV2YW50cy5oaXQgPD0gMVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInVmFpIGFsbGEgcHJvc3NpbWEgcGFyb2xhJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRSZWxldmFudCgpXCIgbWF0VG9vbHRpcD1cIlByb3NzaW1hIHBhcm9sYVwiIFtkaXNhYmxlZF09XCJyZWxldmFudHMuaGl0ID49IHJlbGV2YW50cy5oaXRzXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBemlvbmkgc3VsIGRvY3VtZW50b1wiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBemlvbmkgZGEgZXNlZ3VpcmUgc3VsIGRvY3VtZW50bydcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUFjdGlvbnNcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjbWVudUFjdGlvbnM9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInQXByaSBkb2N1bWVudG8gaW4gdW5hIG51b3ZhIGZpbmVzdHJhJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuKGxhc3REb2N1bWVudD8uaWQsIHRydWUpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5vcGVuX2luX2Jyb3dzZXI8L21hdC1pY29uPkFwcmkgaW4gbnVvdmEgZmluZXN0cmFcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJwcmludCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInU3RhbXBhIGRvY3VtZW50bydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnByaW50PC9tYXQtaWNvbj5TdGFtcGFcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJmaW5kKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidUcm92YSBuZWwgZG9jdW1lbnRvJ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZmluZF9pbl9wYWdlPC9tYXQtaWNvbj5Ucm92YSBuZWwgZG9jdW1lbnRvIChDVFJMK0YpXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2VuZEl0ZW1zVG8oW2xhc3REb2N1bWVudF0pXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInSW52aWEgZG9jdW1lbnRvIHBlciBlbWFpbCdcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnNlbmQ8L21hdC1pY29uPkludmlhIHBlciBlbWFpbFxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFkZEl0ZW1zVG9CYWcoW2xhc3REb2N1bWVudF0pXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQWdnaXVuZ2kgYWkgZG9jdW1lbnRpIGRpIGxhdm9ybydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPndvcmtfb3V0bGluZTwvbWF0LWljb24+QWdnaXVuZ2kgYWkgZG9jdW1lbnRpIGRpIGxhdm9yb1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGxhc3REb2N1bWVudCAmJiBsYXN0RG9jdW1lbnQ/Lm1vZGVsICE9IDExKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImV4cG9ydFBkZihsYXN0RG9jdW1lbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInU2FsdmEgZG9jdW1lbnRvIGluIHBkZidcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnNhdmVfYWx0PC9tYXQtaWNvbj5TYWx2YSBpbiBwZGZcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0dlbmVyYSB1biBsaW5rIHBlcm1hbmVudGUgZGEgdXRpbGl6emFyZSBlc3Rlcm5hbWVudGUnXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dMaW5rKGxhc3REb2N1bWVudClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmxpbms8L21hdC1pY29uPkxpbmtcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgQGlmICgobGFzdERvY3VtZW50Py5tb2RlbCA9PT0gOSB8fCBsYXN0RG9jdW1lbnQ/Lm1vZGVsID09PSAxMCkpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidHZW5lcmEgdW4gcmVwb3J0IHN1bCBkb2N1bWVudG8nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlSZXBvcnQobGFzdERvY3VtZW50KVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXNzaWdubWVudDwvbWF0LWljb24+UmVwb3J0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoUlNfZW5hYmxlZChbbGFzdERvY3VtZW50XSkgJiYgIWNhblNlbGVjdCgpKSB7XHJcbiAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoUlNfZW5hYmxlZChbbGFzdERvY3VtZW50XSkgJiYgIWNhblNlbGVjdCgpKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIG1hdFRvb2x0aXA9XCJSZWdpc3RybyAmIFNjYWRlbnphcmlvXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInT3B6aW9uaSBkaSBSZWdpc3RybyAmIFNjYWRlbnphcmlvJ1wiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51UlNcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmFsYXJtX29uPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgUmVnaXN0cm8gZSBzY2FkZW56YXJpb1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVSUz1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFthdHRyLmFyaWEtbGFiZWxdPVwiJ051b3ZhIGxlZ2dlJ1wiIChjbGljayk9XCJSU19uZXdMYXcoW2xhc3REb2N1bWVudF0pXCI+XHJcbiAgICAgICAgICAgICAgTnVvdmEgbGVnZ2VcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidOdW92YSBhdHRpdml0w6AnXCIgKGNsaWNrKT1cIlJTX25ld0FjdGl2aXR5KGxhc3REb2N1bWVudClcIj5cclxuICAgICAgICAgICAgICBOdW92YSBhdHRpdml0w6BcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZXBvcnQgdXRpbGl6em8gbm9ybWEnXCIgKGNsaWNrKT1cIlJTX3VzYWdlUmVwb3J0KGxhc3REb2N1bWVudClcIj5cclxuICAgICAgICAgICAgICBSZXBvcnQgdXRpbGl6em8gbm9ybWFcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgQGlmIChoYXNSZWxldmFudHMoKSAmJiByZWxldmFudHMuaXRlbXMgJiYgcmVsZXZhbnRzUGFuZSAmJiAoIXJlbGV2YW50c1BhbmUub3BlbmVkIHx8IHJlbGV2YW50c1BhbmVDbG9zZWQpKSB7XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJSaWxldmFuemFcIiBhcmlhLWxhYmVsPVwiJ1JpbGV2YW56YSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUmVsZXZhbnRzUGFuZSgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5tZW51X29wZW48L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmIChidXN5KCkpIHtcclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIHN0eWxlPVwiei1pbmRleDoxMVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgaWQ9XCJjbGlwcGVyLWRvY3VtZW50LXNjcm9sbGFibGVcIj5cclxuICA8bWF0LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJmaWxsXCIgW2hhc0JhY2tkcm9wXT1cIltyZWxldmFudHNQYW5lSGFzQmFja2Ryb3BdXCI+XHJcbiAgICA8bWF0LWRyYXdlciAjcmVsZXZhbnRzUGFuZSBwb3NpdGlvbj1cImVuZFwiIGNsYXNzPVwiZHJhd2VyLXNtYWxsIGRyYXdlci13aXRoLWxvYWRlclwiPlxyXG4gICAgICBAaWYgKHJlbGV2YW50c0J1c3koKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI2cHhcIj5cclxuICAgICAgICAgIEBpZiAocmVsZXZhbnRzQnVzeSgpKSB7XHJcbiAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBzdHlsZT1cInotaW5kZXg6IDExO1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XHJcbiAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI0OHB4XCIgY2xhc3M9XCJ0aXRsZS1jb250YWluZXItd2l0aC1sb2FkZXJcIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5SaWxldmFuemE8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVSZWxldmFudHNQYW5lKClcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk5hc2NvbmRpXCI+PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBjbGFzcz1cInNjcm9sbC1oaWRkZW5cIj5cclxuICAgICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDEwcHhcIj5cclxuICAgICAgICAgICAgPHA+UGFydGkgZGVsIGRvY3VtZW50byBwacO5IHNpZ25pZmljYXRpdmUgcGVyIGxhIHJpY2VyY2EgZGkgPHNwYW4gY2xhc3M9J3dvcmQtaGl0Jz57e2xhc3RRdWVyeX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDxuYXYgY2xhc3M9XCJyZWxldmFudC1pdGVtc1wiPlxyXG4gICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgcmVsZXZhbnRzLml0ZW1zOyB0cmFjayBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJzbWFsbFwiIChjbGljayk9XCJnb3RvUmVsZXZhbnQoaXRlbSlcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0udGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uc2NvcmUgPiAxLjIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT0nZm9udC1zaXplOngtc21hbGw7IGhlaWdodDogMTBweDsgd2lkdGg6MTBweCcgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vbHRvIHJpbGV2YW50ZVwiPnRodW1iX3VwX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L25hdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWRyYXdlcj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxsXCI+XHJcbiAgICAgIDxpZnJhbWUgaWQ9XCJjbGlwcGVyLWRvY3VtZW50LWlmcmFtZVwiIGNsYXNzPVwiaWZyYW1lXCIgW3NyY109XCJ1cmwoKSB8IHNhZmVVcmxcIj48L2lmcmFtZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWRyYXdlci1jb250YWluZXI+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1801,9 +1801,9 @@ class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
1801
1801
|
}
|
|
1802
1802
|
}
|
|
1803
1803
|
}
|
|
1804
|
-
if (this.lastQuery) {
|
|
1805
|
-
|
|
1806
|
-
|
|
1804
|
+
/* if (this.lastQuery) {
|
|
1805
|
+
this.updateRelevants();
|
|
1806
|
+
}*/
|
|
1807
1807
|
// Listen to window messages
|
|
1808
1808
|
this.rendererListener1 = this.renderer.listen('window', 'message', (e) => {
|
|
1809
1809
|
let event = e;
|
|
@@ -2098,6 +2098,9 @@ class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
2098
2098
|
this.lastDocument.lastUpdate = r.value;
|
|
2099
2099
|
}
|
|
2100
2100
|
});
|
|
2101
|
+
if (this.lastQuery) {
|
|
2102
|
+
this.updateRelevants();
|
|
2103
|
+
}
|
|
2101
2104
|
// Notify navigation has completed
|
|
2102
2105
|
this.broadcastService.sendMessage(ClipperMessages.DOCUMENT_NAVIGATED, {
|
|
2103
2106
|
document: this.lastDocument,
|
|
@@ -2172,7 +2175,6 @@ class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
2172
2175
|
* Update relevant items
|
|
2173
2176
|
*/
|
|
2174
2177
|
updateRelevants() {
|
|
2175
|
-
console.log("si 1");
|
|
2176
2178
|
if (!this.lastQuery ||
|
|
2177
2179
|
this.lastQuery.length === 0 ||
|
|
2178
2180
|
this.lastQuery === ' ' ||
|
|
@@ -2191,7 +2193,6 @@ class ClipperDocumentComponent extends ClipperDocumentManager {
|
|
|
2191
2193
|
if (!r.success)
|
|
2192
2194
|
this.dialogService.error(r.message);
|
|
2193
2195
|
else {
|
|
2194
|
-
console.log("si 2");
|
|
2195
2196
|
let minimumScore = 0;
|
|
2196
2197
|
if (r.value?.items && r.value?.items.length > 0) {
|
|
2197
2198
|
r.value.items[0].anchors.forEach((n) => {
|