fabrikantencore 2.36.8 → 2.36.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -92,7 +92,7 @@ class FabActionmenuComponent {
92
92
  this.FabrikantenService.DownloadBestek(this.BestekService.FabrikantenBestekViewModel.osfhtml);
93
93
  }
94
94
  else {
95
- alert("Error: unabled to download specifications");
95
+ alert("Error: unable to download specifications");
96
96
  }
97
97
  }
98
98
  else {
@@ -100,7 +100,7 @@ class FabActionmenuComponent {
100
100
  this.FabrikantenService.DownloadBestek(this.BestekService.FabrikantenBestekViewModel.suf);
101
101
  }
102
102
  else {
103
- alert("Error: unabled to download specifications");
103
+ alert("Error: unable to download specifications");
104
104
  }
105
105
  }
106
106
  }
@@ -108,7 +108,7 @@ class FabActionmenuComponent {
108
108
  this.FabrikantenService.DownloadBestek(this.BestekService.fabProductBestek.nativeElement.innerText);
109
109
  }
110
110
  else {
111
- alert("Error: unabled to download specifications");
111
+ alert("Error: unable to download specifications");
112
112
  }
113
113
  }
114
114
  DownloadAutoSpecification() {
@@ -117,7 +117,7 @@ class FabActionmenuComponent {
117
117
  this.FabrikantenService.DownloadBestek(this.BestekService.fabProductAutoSpecifcation.nativeElement.innerText);
118
118
  }
119
119
  else {
120
- alert("Error: unabled to download specifications");
120
+ alert("Error: unable to download specifications");
121
121
  }
122
122
  }
123
123
  DownloadLastenboek() {
@@ -133,7 +133,7 @@ class FabActionmenuComponent {
133
133
  this.BestekService.CopyToClipboard(this.BestekService.fabProductBestek.nativeElement.innerText);
134
134
  }
135
135
  else {
136
- console.warn("Error: unabled to copy specifications");
136
+ console.warn("Error: unable to copy specifications");
137
137
  setTimeout(() => {
138
138
  this.CopyToClipBoard();
139
139
  }, 500);
@@ -145,7 +145,10 @@ class FabActionmenuComponent {
145
145
  this.BestekService.CopyToClipboard(this.BestekService.FabrikantenBestekViewModel.osfhtml);
146
146
  }
147
147
  else {
148
- alert("Error: unabled to copy specifications");
148
+ console.warn("Error: unable to copy specifications");
149
+ setTimeout(() => {
150
+ this.CopyToClipBoardSUF();
151
+ }, 500);
149
152
  }
150
153
  }
151
154
  else {
@@ -153,7 +156,10 @@ class FabActionmenuComponent {
153
156
  this.BestekService.CopyToClipboard(this.BestekService.FabrikantenBestekViewModel.suf);
154
157
  }
155
158
  else {
156
- alert("Error: unabled to copy specifications");
159
+ console.warn("Error: unable to copy specifications");
160
+ setTimeout(() => {
161
+ this.CopyToClipBoardSUF();
162
+ }, 500);
157
163
  }
158
164
  }
159
165
  }
@@ -162,7 +168,10 @@ class FabActionmenuComponent {
162
168
  this.BestekService.CopyToClipboard(this.BestekService.fabProductAutoSpecifcation.nativeElement.innerText);
163
169
  }
164
170
  else {
165
- alert("Error: unabled to copy specifications");
171
+ console.warn("Error: unable to copy specifications");
172
+ setTimeout(() => {
173
+ this.CopyToClipBoardAutoSpecification();
174
+ }, 500);
166
175
  }
167
176
  }
168
177
  CopyToClipBoardLastenboek() {
@@ -170,7 +179,10 @@ class FabActionmenuComponent {
170
179
  this.BestekService.CopyToClipboard(this.BestekService.fabProductLastenboek.nativeElement.innerText);
171
180
  }
172
181
  else {
173
- alert("Error: unabled to copy specifications");
182
+ console.warn("Error: unable to copy specifications");
183
+ setTimeout(() => {
184
+ this.CopyToClipBoardLastenboek();
185
+ }, 500);
174
186
  }
175
187
  }
176
188
  ShowBestekSelect() {
@@ -299,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
299
311
  }], ctorParameters: function () { return [{ type: i1.MobileService }, { type: i2.FabrikantenService }, { type: i3.TranslateService }, { type: i4.BestekService }, { type: i5.TextureService }, { type: i6.SVGService }, { type: i7.MatLegacyDialog }, { type: i8.WebGLService }, { type: i9.ToebehorenService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { display: [{
300
312
  type: Input
301
313
  }] } });
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWFjdGlvbm1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1hY3Rpb25tZW51L2ZhYi1hY3Rpb25tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItYWN0aW9ubWVudS9mYWItYWN0aW9ubWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdkYsT0FBTyxFQUF1RSx3Q0FBd0MsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pNLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRGLE1BTWEsc0JBQXNCO0lBWWQ7SUFDVjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFuQlQsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRVEsT0FBTyxDQUFTO0lBRXpCLFlBQW1CLGFBQTRCLEVBQ3RDLGtCQUFzQyxFQUN0QyxnQkFBa0MsRUFDbEMsYUFBNEIsRUFDNUIsY0FBOEIsRUFDOUIsVUFBc0IsRUFDdEIsTUFBaUIsRUFDakIsWUFBMEIsRUFDMUIsaUJBQW9DLEVBQ3BDLGlCQUFvQztRQVQxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FB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LENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUM3SDtJQUNILENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzdIO0lBQ0gsQ0FBQzt3R0FwVVUsc0JBQXNCOzRGQUF0QixzQkFBc0IsMEZDbkJuQyxzcmJBNlBBOztTRDFPYSxzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxvQkFBb0IsaUJBR2YsaUJBQWlCLENBQUMsSUFBSTsrV0FZNUIsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcclxuaW1wb3J0IHsgQmVzdGVrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jlc3Rlay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmFicmlrYW50ZW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFicmlrYW50ZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IE1vYmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2JpbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNWR1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdmcuc2VydmljZSc7XHJcbmltcG9ydCB7IFRleHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGV4dHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9lYmVob3JlblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b2ViZWhvcmVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXZWJHTFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93ZWJnbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmFicmlrYW50ZW5DdXN0b21Eb3dubG9hZFZpZXdNb2RlbCwgRmFicmlrYW50ZW5QREZUZW1wbGF0ZVZpZXdNb2RlbCwgRmFicmlrYW50ZW5TZXR0aW5nc0Rvd25sb2FkSXRlbVZpZXdNb2RlbCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSB9IGZyb20gJy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcbmltcG9ydCB7IEZhYkZvcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9mYWItZm9ybS1kaWFsb2cvZmFiLWZvcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mYWItYWN0aW9ubWVudScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhYi1hY3Rpb25tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mYWItYWN0aW9ubWVudS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEZhYkFjdGlvbm1lbnVDb21wb25lbnQge1xyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25DYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgZGlzcGxheTogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgTW9iaWxlU2VydmljZTogTW9iaWxlU2VydmljZSxcclxuICAgIHB1YmxpYyBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcclxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIEJlc3Rla1NlcnZpY2U6IEJlc3Rla1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgVGV4dHVyZVNlcnZpY2U6IFRleHR1cmVTZXJ2aWNlLFxyXG4gICAgcHVibGljIFNWR1NlcnZpY2U6IFNWR1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwdWJsaWMgV2ViR0xTZXJ2aWNlOiBXZWJHTFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgVG9lYmVob3JlblNlcnZpY2U6IFRvZWJlaG9yZW5TZXJ2aWNlLFxyXG4gICAgcHVibGljIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIE9wZW5MaW5rKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB3aW5kb3cub3Blbih1cmwsIFwiX2JsYW5rXCIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dEb3dubG9hZENhdGVnb3J5KG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheSA9PSBuYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3czREJ1dHRvbnMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ID09IFwiM0RcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93MkRCdXR0b25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheSA9PSBcIjJEXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0Jlc3Rla0J1dHRvbnMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ID09IFwiQmVzdGVrXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0F1dG9TcGVjaWZpY2F0aW9uQnV0dG9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gXCJBdXRvU3BlY2lmaWNhdGlvblwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dMYXN0ZW5ib2VrQnV0dG9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gXCJMYXN0ZW5ib2VrXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1RleHR1cmVCdXR0b25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheSA9PSBcIlRleHR1cmVcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93VG9lYmVob3JlbkJ1dHRvbnMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ID09IFwiVG9lYmVob3JlblwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dCQ0JCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5kaXNwbGF5ID09IFwiQXV0b1NwZWNpZmljYXRpb25cIikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWw/LnNob3dCQ0JCdXR0b24gPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWRCZXN0ZWsoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLlR5cGVCZXN0ZWsgPT0gXCJTVEFCVVwiKSB7XHJcblxyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5vc2ZOZXcgPT0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwub3NmaHRtbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZEJlc3Rlayh0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwub3NmaHRtbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgYWxlcnQoXCJFcnJvcjogdW5hYmxlZCB0byBkb3dubG9hZCBzcGVjaWZpY2F0aW9uc1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5zdWYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRCZXN0ZWsodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLnN1Zik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgYWxlcnQoXCJFcnJvcjogdW5hYmxlZCB0byBkb3dubG9hZCBzcGVjaWZpY2F0aW9uc1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLlR5cGVCZXN0ZWsgPT0gXCJWcmlqXCIgJiYgdGhpcy5CZXN0ZWtTZXJ2aWNlLmZhYlByb2R1Y3RCZXN0ZWsgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZEJlc3Rlayh0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEJlc3Rlay5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgYWxlcnQoXCJFcnJvcjogdW5hYmxlZCB0byBkb3dubG9hZCBzcGVjaWZpY2F0aW9uc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZEF1dG9TcGVjaWZpY2F0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5mYWJQcm9kdWN0QXV0b1NwZWNpZmNhdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuQmVzdGVrU2VydmljZS5UeXBlQmVzdGVrID0gXCJBdXRvU3BlY2lmaWNhdGlvblwiO1xyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZEJlc3Rlayh0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEF1dG9TcGVjaWZjYXRpb24ubmF0aXZlRWxlbWVudC5pbm5lclRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGFsZXJ0KFwiRXJyb3I6IHVuYWJsZWQgdG8gZG93bmxvYWQgc3BlY2lmaWNhdGlvbnNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWRMYXN0ZW5ib2VrKCk6IHZvaWQge1xyXG4gICAgdmFyIGRvd25sb2FkaXRlbSA9IG5ldyBGYWJyaWthbnRlblNldHRpbmdzRG93bmxvYWRJdGVtVmlld01vZGVsKCk7XHJcblxyXG4gICAgZG93bmxvYWRpdGVtLmZpbGVUeXBlID0gXCJkb2N4XCI7XHJcblxyXG4gICAgdGhpcy5Eb3dubG9hZChkb3dubG9hZGl0ZW0sIHVuZGVmaW5lZCk7XHJcbiAgICAvL3ZhciB1cmwgPSBcIi9Eb3dubG9hZC9DcmVhdGVQREZMYXN0ZW5ib2VrP3BTZXNzaW9uSWQ9XCIgKyB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICAvL3VybCArPSBcIiZwTGFuZ3VhZ2VJZD1cIiArIHRoaXMuVHJhbnNsYXRlU2VydmljZS5BY3RpdmVMYW5ndWFnZS5pZDtcclxuXHJcbiAgICAvL3dpbmRvdy5vcGVuKHVybCwgXCJfYmxhbmtcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ29weVRvQ2xpcEJvYXJkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5mYWJQcm9kdWN0QmVzdGVrICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5CZXN0ZWtTZXJ2aWNlLkNvcHlUb0NsaXBib2FyZCh0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEJlc3Rlay5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKFwiRXJyb3I6IHVuYWJsZWQgdG8gY29weSBzcGVjaWZpY2F0aW9uc1wiKTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuQ29weVRvQ2xpcEJvYXJkKCk7XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ29weVRvQ2xpcEJvYXJkU1VGKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwub3NmTmV3ID09IHRydWUpIHtcclxuICAgICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5vc2ZodG1sICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLkJlc3Rla1NlcnZpY2UuQ29weVRvQ2xpcGJvYXJkKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5vc2ZodG1sKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydChcIkVycm9yOiB1bmFibGVkIHRvIGNvcHkgc3BlY2lmaWNhdGlvbnNcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLnN1ZiAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5CZXN0ZWtTZXJ2aWNlLkNvcHlUb0NsaXBib2FyZCh0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwuc3VmKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydChcIkVycm9yOiB1bmFibGVkIHRvIGNvcHkgc3BlY2lmaWNhdGlvbnNcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBDb3B5VG9DbGlwQm9hcmRBdXRvU3BlY2lmaWNhdGlvbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEF1dG9TcGVjaWZjYXRpb24gIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkJlc3Rla1NlcnZpY2UuQ29weVRvQ2xpcGJvYXJkKHRoaXMuQmVzdGVrU2VydmljZS5mYWJQcm9kdWN0QXV0b1NwZWNpZmNhdGlvbi5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgYWxlcnQoXCJFcnJvcjogdW5hYmxlZCB0byBjb3B5IHNwZWNpZmljYXRpb25zXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIENvcHlUb0NsaXBCb2FyZExhc3RlbmJvZWsoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLmZhYlByb2R1Y3RMYXN0ZW5ib2VrICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5CZXN0ZWtTZXJ2aWNlLkNvcHlUb0NsaXBib2FyZCh0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdExhc3RlbmJvZWsubmF0aXZlRWxlbWVudC5pbm5lclRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGFsZXJ0KFwiRXJyb3I6IHVuYWJsZWQgdG8gY29weSBzcGVjaWZpY2F0aW9uc1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93QmVzdGVrU2VsZWN0KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuU2hvd1ZyaWooKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NUQUJVKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbD8uc3RhYnUgIT0gJycgJiYgdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsPy5zdGFidSAhPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NVRigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnN1ZiAhPSAnJyAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnN1ZiAhPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd09TRigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/Lm9zZmh0bWwgIT0gJycgJiYgdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsPy5vc2ZodG1sICE9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93VnJpaigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5lbmFibGVWcmlqZUJlc3Rla1Rla3N0ID09IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsPy52cmlqQmVzdGVrSFRNTCAhPSAnJyAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnZyaWpCZXN0ZWtIVE1MICE9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEaXNwbGF5Q3VzdG9tRG93bmxvYWQoZG93bmxvYWQ6IEZhYnJpa2FudGVuQ3VzdG9tRG93bmxvYWRWaWV3TW9kZWwpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLlNob3dMYXN0ZW5ib2VrQnV0dG9ucygpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZG93bmxvYWQubGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgaWYgKGRvd25sb2FkLmxhbmd1YWdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKGRvd25sb2FkLmxhbmd1YWdlcy5pbmRleE9mKHRoaXMuVHJhbnNsYXRlU2VydmljZS5BY3RpdmVMYW5ndWFnZT8uaWQpID09IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgT3BlbkJDQkxpbmsoKTogdm9pZCB7XHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5PcGVuQkNCTGluaygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkUERGVGVtcGxhdGUodGVtcGxhdGU6IEZhYnJpa2FudGVuUERGVGVtcGxhdGVWaWV3TW9kZWwpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5kb3dubG9hZEZvcm1FbmFibGVkICYmICF0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5oYXNGaWxsZWRGb3Jtcykge1xyXG4gICAgICB2YXIgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihGYWJGb3JtRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgZm9ybTogdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5kb3dubG9hZEZvcm1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaGFzRmlsbGVkRm9ybXMpIHtcclxuICAgICAgICAgIHRoaXMuRG93bmxvYWRQREZUZW1wbGF0ZSh0ZW1wbGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB2YXIgdXJsID0gXCIvRG93bmxvYWQvQ3JlYXRlUERGP3BMYW5ndWFnZUlkPVwiICsgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkFjdGl2ZUxhbmd1YWdlLmlkO1xyXG4gICAgICB1cmwgKz0gXCImcFBERlRlbXBsYXRlSWQ9XCIgKyB0ZW1wbGF0ZS50ZW1wbGF0ZUlkO1xyXG4gICAgICB1cmwgKz0gXCImcFNlc3Npb25JZD1cIiArIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuXHJcbiAgICAgIHdpbmRvdy5vcGVuKHVybCwgXCJfYmxhbmtcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWRDdXN0b20oY3VzdG9tZG93bmxvYWQ6IEZhYnJpa2FudGVuQ3VzdG9tRG93bmxvYWRWaWV3TW9kZWwpOiB2b2lkIHtcclxuXHJcblxyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwubGlua2VkSW5FbmFibGVkKSB7XHJcbiAgICAgIGlmICghdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwudXNlckhhc0xvZ2dlZEluV2l0aExpbmtlZEluKSB7XHJcbiAgICAgICAgdGhpcy5TdGFydExpbmtlZEluUG9wdXAoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZEN1c3RvbShjdXN0b21kb3dubG9hZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgT3BlblBERihjdXN0b21kb3dubG9hZDogRmFicmlrYW50ZW5DdXN0b21Eb3dubG9hZFZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgd2luZG93Lm9wZW4oY3VzdG9tZG93bmxvYWQuZmlsZU5hbWUsICdfYmxhbmsnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZChkb3dubG9hZGl0ZW06IEZhYnJpa2FudGVuU2V0dGluZ3NEb3dubG9hZEl0ZW1WaWV3TW9kZWwsIGN1c3RvbWJjYmVib2lkOiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmxpbmtlZEluRW5hYmxlZCkge1xyXG4gICAgICBpZiAoIXRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnVzZXJIYXNMb2dnZWRJbldpdGhMaW5rZWRJbikge1xyXG4gICAgICAgIHRoaXMuU3RhcnRMaW5rZWRJblBvcHVwKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGRvd25sb2FkcyA9IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuZG93bmxvYWRDYXRlZ29yaWVzO1xyXG5cclxuICAgIGlmIChkb3dubG9hZHMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvd25sb2Fkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBpdGVtcyA9IGRvd25sb2Fkc1tpXS5pdGVtcztcclxuXHJcbiAgICAgICAgaWYgKGl0ZW1zICE9IG51bGwpIHtcclxuICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaXRlbXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW1zW2pdLmxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZChkb3dubG9hZGl0ZW0sIGN1c3RvbWJjYmVib2lkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTdGFydExpbmtlZEluUG9wdXAoKSB7XHJcbiAgICBjb25zdCBwb3B1cCA9IHdpbmRvdy5vcGVuKFxyXG4gICAgICAnL2F1dGgvbGlua2VkaW4/c3RhdGU9MTIzJyxcclxuICAgICAgJ2xpbmtlZGluTG9naW4nLFxyXG4gICAgICAnd2lkdGg9NTIwLGhlaWdodD02NTAnXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IG9uTWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudC5vcmlnaW4gIT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGRhdGEgPSBldmVudC5kYXRhO1xyXG4gICAgICBpZiAoIWRhdGEgfHwgZGF0YS50eXBlICE9PSAnbGlua2VkaW4tYXV0aCcpIHJldHVybjtcclxuXHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgb25NZXNzYWdlKTtcclxuXHJcbiAgICAgIC8vIGhpZXIgaGViIGplIGRlIGVtYWlsXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFbWFpbDonLCBkYXRhLmVtYWlsKTtcclxuXHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLlNldExpbmtlZEluVXNlcihkYXRhLmVtYWlsLCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlZnJlc2hTbmVkZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZT8uRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlc3Npb25JZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuU1ZHU2VydmljZS5Mb2FkRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkLCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZWZyZXNoU2NoYWFsKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlPy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2Vzc2lvbklkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5TVkdTZXJ2aWNlLkxvYWRGYWJyaWthbnRlblNWR1ZpZXdNb2RlbCh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQsIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwgIT0gbnVsbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93MkRCdXR0b25zKClcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInNlbGVjdC1tYXQtbGFiZWxcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNuZWRlKSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiU1ZHU2VydmljZS5TbmVkZVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiUmVmcmVzaFNuZWRlKClcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzbmVkZSBvZiBTVkdTZXJ2aWNlLlNuZWRlc1wiIFt2YWx1ZV09XCJzbmVkZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNuZWRlSXRlbSwgbnVsbCwgc25lZGUpIH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cclxuICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwic2VsZWN0LW1hdC1sYWJlbFwiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuU2NoYWFsKSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiU1ZHU2VydmljZS5TY2hhYWxcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIlJlZnJlc2hTY2hhYWwoKVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicwJ1wiPjE6MTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMSdcIj4xOjI8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzInXCI+MTo1PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIiczJ1wiPjE6MTA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzQnXCI+MToyMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInNSdcIj4xOjUwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic2J1wiPjE6MTAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic3J1wiPjE6MjAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic4J1wiPjE6NTAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic5J1wiPjE6MTAwMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMTAnXCI+MToyMDAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicxMSdcIj4xOjUwMDA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEyJ1wiPjE6MTAwMDA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEzJ1wiPjE6MjAwMDA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzE0J1wiPjE6NTAwMDA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dCZXN0ZWtCdXR0b25zKClcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dCZXN0ZWtTZWxlY3QoKVwiPlxyXG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbdmFsdWVdPVwiQmVzdGVrU2VydmljZS5UeXBlQmVzdGVrXCIgKGNoYW5nZSk9XCJCZXN0ZWtTZXJ2aWNlLlR5cGVCZXN0ZWsgPSAkZXZlbnQuc291cmNlLnZhbHVlXCIgYXBwZWFyYW5jZT1cImxlZ2FjeVwiPlxyXG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlICpuZ0lmPVwiU2hvd1NUQUJVKClcIiB2YWx1ZT1cIlNUQUJVXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TVEFCVSkgfX08L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlICpuZ0lmPVwiU2hvd09TRigpXCIgdmFsdWU9XCJPU0ZcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk9TRikgfX08L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlICpuZ0lmPVwiU2hvd1ZyaWooKVwiIHZhbHVlPVwiVnJpalwiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuU3BlY2lmaWNhdGlvblRleHQpIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAmbmJzcDtcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGNvcHktYnV0dG9uXCIgKGNsaWNrKT1cIkNvcHlUb0NsaXBCb2FyZCgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gY29udGVudF9jb3B5XCI+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkNsaXBib2FyZCkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBjb3B5LXN1Zi1idXR0b25cIiAoY2xpY2spPVwiQ29weVRvQ2xpcEJvYXJkU1VGKClcIiAqbmdJZj1cIkJlc3Rla1NlcnZpY2UuVHlwZUJlc3RlayA9PSAnU1RBQlUnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gY29udGVudF9jb3B5XCI+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkNsaXBib2FyZFNVRikgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBkb3dubG9hZC1iZXN0ZWstYnV0dG9uXCIgKGNsaWNrKT1cIkRvd25sb2FkQmVzdGVrKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBmaWxlX2Rvd25sb2FkXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5Eb3dubG9hZCkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93QXV0b1NwZWNpZmljYXRpb25CdXR0b25zKClcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBjb3B5LWJ1dHRvblwiIChjbGljayk9XCJDb3B5VG9DbGlwQm9hcmRBdXRvU3BlY2lmaWNhdGlvbigpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gY29udGVudF9jb3B5XCI+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkNsaXBib2FyZCkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBkb3dubG9hZC1iZXN0ZWstYnV0dG9uXCIgKGNsaWNrKT1cIkRvd25sb2FkQXV0b1NwZWNpZmljYXRpb24oKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGZpbGVfZG93bmxvYWRcIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkRvd25sb2FkKSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dMYXN0ZW5ib2VrQnV0dG9ucygpXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gY29weS1idXR0b25cIiAoY2xpY2spPVwiQ29weVRvQ2xpcEJvYXJkTGFzdGVuYm9laygpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gY29udGVudF9jb3B5XCI+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkNsaXBib2FyZCkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBkb3dubG9hZC1iZXN0ZWstYnV0dG9uXCIgKGNsaWNrKT1cIkRvd25sb2FkTGFzdGVuYm9laygpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gZmlsZV9kb3dubG9hZFwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuRG93bmxvYWQpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvd1RvZWJlaG9yZW5CdXR0b25zKClcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInNlbGVjdC1tYXQtbGFiZWxcIj5Ub2ViZWhvcmVuPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJGYWJyaWthbnRlblNlcnZpY2UuU2VsZWN0ZWRUb2ViZWhvcmVuXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJUb2ViZWhvcmVuU2VydmljZS5PcGVuVG9lYmVob3Jlbih0aGlzLkNoYW5nZURldGVjdG9yUmVmKVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNbMF0uYmNiUHJvZHVjdFRvZWJlaG9yZW5cIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhaXRlbS5iY2JQcm9kdWN0XCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuVG9lYmVob3JlbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBpdGVtLmlkKSB9fVxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiaXRlbS5iY2JQcm9kdWN0XCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZG93bmxvYWRjYXRlZ29yeSBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5kb3dubG9hZENhdGVnb3JpZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dEb3dubG9hZENhdGVnb3J5KGRvd25sb2FkY2F0ZWdvcnkubmFtZSlcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkb3dubG9hZGl0ZW0gb2YgZG93bmxvYWRjYXRlZ29yeS5pdGVtc1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkY2F0ZWdvcnkubmFtZSA9PSAnVG9lYmVob3JlbidcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cImRvd25sb2FkaXRlbS5maWxlVHlwZSArICctYnV0dG9uJ1wiIChjbGljayk9XCJEb3dubG9hZChkb3dubG9hZGl0ZW0sIEZhYnJpa2FudGVuU2VydmljZS5HZXRTZWxlY3RlZFRvZWJlaG9yZW4oKT8uYmNiZWJvSWQpXCIgKm5nSWY9XCIoIWRvd25sb2FkaXRlbS5pc05hdGl2ZVJldml0IHx8IFdlYkdMU2VydmljZS5IYXNOYXRpdmVSRkEoKSkgJiYgKEZhYnJpa2FudGVuU2VydmljZS5HZXRTZWxlY3RlZFRvZWJlaG9yZW4oKSAhPSBudWxsKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGZpbGVfZG93bmxvYWRcIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRvd25sb2FkaXRlbS5sb2FkaW5nXCI+Li4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFkb3dubG9hZGl0ZW0ubG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIGRvd25sb2FkaXRlbS50cmFuc2xhdGlvblN1YkNhdGVnb3J5KSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkY2F0ZWdvcnkubmFtZSAhPSAnVG9lYmVob3JlbidcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cImRvd25sb2FkaXRlbS5maWxlVHlwZSArICctYnV0dG9uJ1wiIChjbGljayk9XCJEb3dubG9hZChkb3dubG9hZGl0ZW0sIHVuZGVmaW5lZClcIiAqbmdJZj1cIiFkb3dubG9hZGl0ZW0uaXNOYXRpdmVSZXZpdCB8fCBXZWJHTFNlcnZpY2UuSGFzTmF0aXZlUkZBKClcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBmaWxlX2Rvd25sb2FkXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkb3dubG9hZGl0ZW0ubG9hZGluZ1wiPi4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZG93bmxvYWRpdGVtLmxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBkb3dubG9hZGl0ZW0udHJhbnNsYXRpb25TdWJDYXRlZ29yeSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21Eb3dubG9hZCBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmN1c3RvbURvd25sb2Fkc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5Q3VzdG9tRG93bmxvYWQoY3VzdG9tRG93bmxvYWQpXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tRG93bmxvYWQuZG93bmxvYWRUeXBlID09IDFcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBjdXN0b20tYnV0dG9uXCIgKGNsaWNrKT1cIkRvd25sb2FkQ3VzdG9tKGN1c3RvbURvd25sb2FkKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGZpbGVfZG93bmxvYWRcIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImN1c3RvbURvd25sb2FkLmxvYWRpbmdcIj4uLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWN1c3RvbURvd25sb2FkLmxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkRvd25sb2FkUmV2aXQpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tRG93bmxvYWQuZG93bmxvYWRUeXBlID09IDJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBjdXN0b20tYnV0dG9uXCIgKGNsaWNrKT1cIk9wZW5QREYoY3VzdG9tRG93bmxvYWQpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gb3Blbl9pbl9uZXdcIj5vcGVuX2luX25ldzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXN0b21Eb3dubG9hZC5sb2FkaW5nXCI+Li4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjdXN0b21Eb3dubG9hZC5sb2FkaW5nXCI+e3sgY3VzdG9tRG93bmxvYWQubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBkZnRlbXBsYXRlIG9mIEZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QucGRmVGVtcGxhdGVzXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiB0ZW1wbGF0ZS1idXR0b25cIiAoY2xpY2spPVwiRG93bmxvYWRQREZUZW1wbGF0ZShwZGZ0ZW1wbGF0ZSlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBmaWxlX2Rvd25sb2FkXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TcGVjaWZpY2F0aW9uKSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93VGV4dHVyZUJ1dHRvbnMoKVwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cIk9wZW5MaW5rKFRleHR1cmVTZXJ2aWNlLkZhYnJpa2FudGVuVGV4dHVyZVZpZXdNb2RlbC5wYXRyb29uVVJMKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIG9wZW5faW5fbmV3XCI+b3Blbl9pbl9uZXc8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuVGV4dHVyZSkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJPcGVuTGluayhUZXh0dXJlU2VydmljZS5GYWJyaWthbnRlblRleHR1cmVWaWV3TW9kZWwuYnVtcFVSTClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBvcGVuX2luX25ld1wiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkJ1bXBtYXApIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGJjYi1idXR0b25cIiAoY2xpY2spPVwiT3BlbkJDQkxpbmsoKVwiICpuZ0lmPVwiU2hvd0JDQkJ1dHRvbigpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gb3Blbl9pbl9uZXdcIj5vcGVuX2luX25ldzwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5CQ0IpIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWFjdGlvbm1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1hY3Rpb25tZW51L2ZhYi1hY3Rpb25tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItYWN0aW9ubWVudS9mYWItYWN0aW9ubWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdkYsT0FBTyxFQUF1RSx3Q0FBd0MsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pNLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRGLE1BTWEsc0JBQXNCO0lBWWQ7SUFDVjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFuQlQsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRVEsT0FBTyxDQUFTO0lBRXpCLFlBQW1CLGFBQTRCLEVBQ3RDLGtCQUFzQyxFQUN0QyxnQkFBa0MsRUFDbEMsYUFBNEIsRUFDNUIsY0FBOEIsRUFDOUIsVUFBc0IsRUFDdEIsTUFBaUIsRUFDakIsWUFBMEIsRUFDMUIsaUJBQW9DLEVBQ3BDLGlCQUFvQztRQVQxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FB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LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XHJcbmltcG9ydCB7IEJlc3Rla1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iZXN0ZWsuc2VydmljZSc7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTVkdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3ZnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZXh0dXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RleHR1cmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvZWJlaG9yZW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdG9lYmVob3Jlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2ViR0xTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2ViZ2wuc2VydmljZSc7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuQ3VzdG9tRG93bmxvYWRWaWV3TW9kZWwsIEZhYnJpa2FudGVuUERGVGVtcGxhdGVWaWV3TW9kZWwsIEZhYnJpa2FudGVuU2V0dGluZ3NEb3dubG9hZEl0ZW1WaWV3TW9kZWwsIFRyYW5zbGF0aW9uQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5pbXBvcnQgeyBGYWJGb3JtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZmFiLWZvcm0tZGlhbG9nL2ZhYi1mb3JtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZmFiLWFjdGlvbm1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWItYWN0aW9ubWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmFiLWFjdGlvbm1lbnUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGYWJBY3Rpb25tZW51Q29tcG9uZW50IHtcclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvbkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uQ2F0ZWdvcnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25TdWJDYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGRpc3BsYXk6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIE1vYmlsZVNlcnZpY2U6IE1vYmlsZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgRmFicmlrYW50ZW5TZXJ2aWNlOiBGYWJyaWthbnRlblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgVHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHB1YmxpYyBCZXN0ZWtTZXJ2aWNlOiBCZXN0ZWtTZXJ2aWNlLFxyXG4gICAgcHVibGljIFRleHR1cmVTZXJ2aWNlOiBUZXh0dXJlU2VydmljZSxcclxuICAgIHB1YmxpYyBTVkdTZXJ2aWNlOiBTVkdTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHVibGljIFdlYkdMU2VydmljZTogV2ViR0xTZXJ2aWNlLFxyXG4gICAgcHVibGljIFRvZWJlaG9yZW5TZXJ2aWNlOiBUb2ViZWhvcmVuU2VydmljZSxcclxuICAgIHB1YmxpYyBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBPcGVuTGluayh1cmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgd2luZG93Lm9wZW4odXJsLCBcIl9ibGFua1wiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93RG93bmxvYWRDYXRlZ29yeShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gbmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93M0RCdXR0b25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheSA9PSBcIjNEXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvdzJEQnV0dG9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gXCIyRFwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dCZXN0ZWtCdXR0b25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheSA9PSBcIkJlc3Rla1wiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dBdXRvU3BlY2lmaWNhdGlvbkJ1dHRvbnMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ID09IFwiQXV0b1NwZWNpZmljYXRpb25cIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93TGFzdGVuYm9la0J1dHRvbnMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ID09IFwiTGFzdGVuYm9la1wiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dUZXh0dXJlQnV0dG9ucygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRpc3BsYXkgPT0gXCJUZXh0dXJlXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1RvZWJlaG9yZW5CdXR0b25zKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheSA9PSBcIlRvZWJlaG9yZW5cIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93QkNCQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZGlzcGxheSA9PSBcIkF1dG9TcGVjaWZpY2F0aW9uXCIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5zaG93QkNCQnV0dG9uID09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkQmVzdGVrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5UeXBlQmVzdGVrID09IFwiU1RBQlVcIikge1xyXG5cclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwub3NmTmV3ID09IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLm9zZmh0bWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRCZXN0ZWsodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLm9zZmh0bWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGFsZXJ0KFwiRXJyb3I6IHVuYWJsZSB0byBkb3dubG9hZCBzcGVjaWZpY2F0aW9uc1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5zdWYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRCZXN0ZWsodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLnN1Zik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgYWxlcnQoXCJFcnJvcjogdW5hYmxlIHRvIGRvd25sb2FkIHNwZWNpZmljYXRpb25zXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuVHlwZUJlc3RlayA9PSBcIlZyaWpcIiAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEJlc3RlayAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQmVzdGVrKHRoaXMuQmVzdGVrU2VydmljZS5mYWJQcm9kdWN0QmVzdGVrLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBhbGVydChcIkVycm9yOiB1bmFibGUgdG8gZG93bmxvYWQgc3BlY2lmaWNhdGlvbnNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWRBdXRvU3BlY2lmaWNhdGlvbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEF1dG9TcGVjaWZjYXRpb24gIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkJlc3Rla1NlcnZpY2UuVHlwZUJlc3RlayA9IFwiQXV0b1NwZWNpZmljYXRpb25cIjtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRCZXN0ZWsodGhpcy5CZXN0ZWtTZXJ2aWNlLmZhYlByb2R1Y3RBdXRvU3BlY2lmY2F0aW9uLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBhbGVydChcIkVycm9yOiB1bmFibGUgdG8gZG93bmxvYWQgc3BlY2lmaWNhdGlvbnNcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWRMYXN0ZW5ib2VrKCk6IHZvaWQge1xyXG4gICAgdmFyIGRvd25sb2FkaXRlbSA9IG5ldyBGYWJyaWthbnRlblNldHRpbmdzRG93bmxvYWRJdGVtVmlld01vZGVsKCk7XHJcblxyXG4gICAgZG93bmxvYWRpdGVtLmZpbGVUeXBlID0gXCJkb2N4XCI7XHJcblxyXG4gICAgdGhpcy5Eb3dubG9hZChkb3dubG9hZGl0ZW0sIHVuZGVmaW5lZCk7XHJcbiAgICAvL3ZhciB1cmwgPSBcIi9Eb3dubG9hZC9DcmVhdGVQREZMYXN0ZW5ib2VrP3BTZXNzaW9uSWQ9XCIgKyB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICAvL3VybCArPSBcIiZwTGFuZ3VhZ2VJZD1cIiArIHRoaXMuVHJhbnNsYXRlU2VydmljZS5BY3RpdmVMYW5ndWFnZS5pZDtcclxuXHJcbiAgICAvL3dpbmRvdy5vcGVuKHVybCwgXCJfYmxhbmtcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ29weVRvQ2xpcEJvYXJkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5mYWJQcm9kdWN0QmVzdGVrICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5CZXN0ZWtTZXJ2aWNlLkNvcHlUb0NsaXBib2FyZCh0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEJlc3Rlay5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKFwiRXJyb3I6IHVuYWJsZSB0byBjb3B5IHNwZWNpZmljYXRpb25zXCIpO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Db3B5VG9DbGlwQm9hcmQoKTtcclxuICAgICAgfSwgNTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBDb3B5VG9DbGlwQm9hcmRTVUYoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5vc2ZOZXcgPT0gdHJ1ZSkge1xyXG4gICAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLm9zZmh0bWwgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuQmVzdGVrU2VydmljZS5Db3B5VG9DbGlwYm9hcmQodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLm9zZmh0bWwpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcIkVycm9yOiB1bmFibGUgdG8gY29weSBzcGVjaWZpY2F0aW9uc1wiKTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkNvcHlUb0NsaXBCb2FyZFNVRigpO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLnN1ZiAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5CZXN0ZWtTZXJ2aWNlLkNvcHlUb0NsaXBib2FyZCh0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwuc3VmKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oXCJFcnJvcjogdW5hYmxlIHRvIGNvcHkgc3BlY2lmaWNhdGlvbnNcIik7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5Db3B5VG9DbGlwQm9hcmRTVUYoKTtcclxuICAgICAgICB9LCA1MDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ29weVRvQ2xpcEJvYXJkQXV0b1NwZWNpZmljYXRpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLmZhYlByb2R1Y3RBdXRvU3BlY2lmY2F0aW9uICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5CZXN0ZWtTZXJ2aWNlLkNvcHlUb0NsaXBib2FyZCh0aGlzLkJlc3Rla1NlcnZpY2UuZmFiUHJvZHVjdEF1dG9TcGVjaWZjYXRpb24ubmF0aXZlRWxlbWVudC5pbm5lclRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcIkVycm9yOiB1bmFibGUgdG8gY29weSBzcGVjaWZpY2F0aW9uc1wiKTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuQ29weVRvQ2xpcEJvYXJkQXV0b1NwZWNpZmljYXRpb24oKTtcclxuICAgICAgfSwgNTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBDb3B5VG9DbGlwQm9hcmRMYXN0ZW5ib2VrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5mYWJQcm9kdWN0TGFzdGVuYm9layAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuQmVzdGVrU2VydmljZS5Db3B5VG9DbGlwYm9hcmQodGhpcy5CZXN0ZWtTZXJ2aWNlLmZhYlByb2R1Y3RMYXN0ZW5ib2VrLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJFcnJvcjogdW5hYmxlIHRvIGNvcHkgc3BlY2lmaWNhdGlvbnNcIik7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLkNvcHlUb0NsaXBCb2FyZExhc3RlbmJvZWsoKTtcclxuICAgICAgfSwgNTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93QmVzdGVrU2VsZWN0KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuU2hvd1ZyaWooKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NUQUJVKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbD8uc3RhYnUgIT0gJycgJiYgdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsPy5zdGFidSAhPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NVRigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnN1ZiAhPSAnJyAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnN1ZiAhPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd09TRigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/Lm9zZmh0bWwgIT0gJycgJiYgdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsPy5vc2ZodG1sICE9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93VnJpaigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5lbmFibGVWcmlqZUJlc3Rla1Rla3N0ID09IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsPy52cmlqQmVzdGVrSFRNTCAhPSAnJyAmJiB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWw/LnZyaWpCZXN0ZWtIVE1MICE9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEaXNwbGF5Q3VzdG9tRG93bmxvYWQoZG93bmxvYWQ6IEZhYnJpa2FudGVuQ3VzdG9tRG93bmxvYWRWaWV3TW9kZWwpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLlNob3dMYXN0ZW5ib2VrQnV0dG9ucygpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZG93bmxvYWQubGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgaWYgKGRvd25sb2FkLmxhbmd1YWdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKGRvd25sb2FkLmxhbmd1YWdlcy5pbmRleE9mKHRoaXMuVHJhbnNsYXRlU2VydmljZS5BY3RpdmVMYW5ndWFnZT8uaWQpID09IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgT3BlbkJDQkxpbmsoKTogdm9pZCB7XHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5PcGVuQkNCTGluaygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkUERGVGVtcGxhdGUodGVtcGxhdGU6IEZhYnJpa2FudGVuUERGVGVtcGxhdGVWaWV3TW9kZWwpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5kb3dubG9hZEZvcm1FbmFibGVkICYmICF0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5oYXNGaWxsZWRGb3Jtcykge1xyXG4gICAgICB2YXIgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihGYWJGb3JtRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgZm9ybTogdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5kb3dubG9hZEZvcm1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaGFzRmlsbGVkRm9ybXMpIHtcclxuICAgICAgICAgIHRoaXMuRG93bmxvYWRQREZUZW1wbGF0ZSh0ZW1wbGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB2YXIgdXJsID0gXCIvRG93bmxvYWQvQ3JlYXRlUERGP3BMYW5ndWFnZUlkPVwiICsgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkFjdGl2ZUxhbmd1YWdlLmlkO1xyXG4gICAgICB1cmwgKz0gXCImcFBERlRlbXBsYXRlSWQ9XCIgKyB0ZW1wbGF0ZS50ZW1wbGF0ZUlkO1xyXG4gICAgICB1cmwgKz0gXCImcFNlc3Npb25JZD1cIiArIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuXHJcbiAgICAgIHdpbmRvdy5vcGVuKHVybCwgXCJfYmxhbmtcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWRDdXN0b20oY3VzdG9tZG93bmxvYWQ6IEZhYnJpa2FudGVuQ3VzdG9tRG93bmxvYWRWaWV3TW9kZWwpOiB2b2lkIHtcclxuXHJcblxyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwubGlua2VkSW5FbmFibGVkKSB7XHJcbiAgICAgIGlmICghdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwudXNlckhhc0xvZ2dlZEluV2l0aExpbmtlZEluKSB7XHJcbiAgICAgICAgdGhpcy5TdGFydExpbmtlZEluUG9wdXAoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZEN1c3RvbShjdXN0b21kb3dubG9hZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgT3BlblBERihjdXN0b21kb3dubG9hZDogRmFicmlrYW50ZW5DdXN0b21Eb3dubG9hZFZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgd2luZG93Lm9wZW4oY3VzdG9tZG93bmxvYWQuZmlsZU5hbWUsICdfYmxhbmsnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEb3dubG9hZChkb3dubG9hZGl0ZW06IEZhYnJpa2FudGVuU2V0dGluZ3NEb3dubG9hZEl0ZW1WaWV3TW9kZWwsIGN1c3RvbWJjYmVib2lkOiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmxpbmtlZEluRW5hYmxlZCkge1xyXG4gICAgICBpZiAoIXRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnVzZXJIYXNMb2dnZWRJbldpdGhMaW5rZWRJbikge1xyXG4gICAgICAgIHRoaXMuU3RhcnRMaW5rZWRJblBvcHVwKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGRvd25sb2FkcyA9IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuZG93bmxvYWRDYXRlZ29yaWVzO1xyXG5cclxuICAgIGlmIChkb3dubG9hZHMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvd25sb2Fkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBpdGVtcyA9IGRvd25sb2Fkc1tpXS5pdGVtcztcclxuXHJcbiAgICAgICAgaWYgKGl0ZW1zICE9IG51bGwpIHtcclxuICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaXRlbXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW1zW2pdLmxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZChkb3dubG9hZGl0ZW0sIGN1c3RvbWJjYmVib2lkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTdGFydExpbmtlZEluUG9wdXAoKSB7XHJcbiAgICBjb25zdCBwb3B1cCA9IHdpbmRvdy5vcGVuKFxyXG4gICAgICAnL2F1dGgvbGlua2VkaW4/c3RhdGU9MTIzJyxcclxuICAgICAgJ2xpbmtlZGluTG9naW4nLFxyXG4gICAgICAnd2lkdGg9NTIwLGhlaWdodD02NTAnXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IG9uTWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudC5vcmlnaW4gIT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGRhdGEgPSBldmVudC5kYXRhO1xyXG4gICAgICBpZiAoIWRhdGEgfHwgZGF0YS50eXBlICE9PSAnbGlua2VkaW4tYXV0aCcpIHJldHVybjtcclxuXHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgb25NZXNzYWdlKTtcclxuXHJcbiAgICAgIC8vIGhpZXIgaGViIGplIGRlIGVtYWlsXHJcbiAgICAgIGNvbnNvbGUubG9nKCdFbWFpbDonLCBkYXRhLmVtYWlsKTtcclxuXHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLlNldExpbmtlZEluVXNlcihkYXRhLmVtYWlsLCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlZnJlc2hTbmVkZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZT8uRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlc3Npb25JZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuU1ZHU2VydmljZS5Mb2FkRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkLCB0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZWZyZXNoU2NoYWFsKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlPy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2Vzc2lvbklkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5TVkdTZXJ2aWNlLkxvYWRGYWJyaWthbnRlblNWR1ZpZXdNb2RlbCh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQsIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwgIT0gbnVsbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93MkRCdXR0b25zKClcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInNlbGVjdC1tYXQtbGFiZWxcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNuZWRlKSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiU1ZHU2VydmljZS5TbmVkZVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwiUmVmcmVzaFNuZWRlKClcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzbmVkZSBvZiBTVkdTZXJ2aWNlLlNuZWRlc1wiIFt2YWx1ZV09XCJzbmVkZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNuZWRlSXRlbSwgbnVsbCwgc25lZGUpIH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cclxuICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwic2VsZWN0LW1hdC1sYWJlbFwiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuU2NoYWFsKSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiU1ZHU2VydmljZS5TY2hhYWxcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIlJlZnJlc2hTY2hhYWwoKVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicwJ1wiPjE6MTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMSdcIj4xOjI8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzInXCI+MTo1PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIiczJ1wiPjE6MTA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzQnXCI+MToyMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInNSdcIj4xOjUwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic2J1wiPjE6MTAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic3J1wiPjE6MjAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic4J1wiPjE6NTAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIic5J1wiPjE6MTAwMDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInMTAnXCI+MToyMDAwPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIicxMSdcIj4xOjUwMDA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEyJ1wiPjE6MTAwMDA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzEzJ1wiPjE6MjAwMDA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJzE0J1wiPjE6NTAwMDA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dCZXN0ZWtCdXR0b25zKClcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dCZXN0ZWtTZWxlY3QoKVwiPlxyXG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCBbdmFsdWVdPVwiQmVzdGVrU2VydmljZS5UeXBlQmVzdGVrXCIgKGNoYW5nZSk9XCJCZXN0ZWtTZXJ2aWNlLlR5cGVCZXN0ZWsgPSAkZXZlbnQuc291cmNlLnZhbHVlXCIgYXBwZWFyYW5jZT1cImxlZ2FjeVwiPlxyXG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlICpuZ0lmPVwiU2hvd1NUQUJVKClcIiB2YWx1ZT1cIlNUQUJVXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TVEFCVSkgfX08L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlICpuZ0lmPVwiU2hvd09TRigpXCIgdmFsdWU9XCJPU0ZcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk9TRikgfX08L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlICpuZ0lmPVwiU2hvd1ZyaWooKVwiIHZhbHVlPVwiVnJpalwiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuU3BlY2lmaWNhdGlvblRleHQpIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAmbmJzcDtcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGNvcHktYnV0dG9uXCIgKGNsaWNrKT1cIkNvcHlUb0NsaXBCb2FyZCgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gY29udGVudF9jb3B5XCI+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkNsaXBib2FyZCkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBjb3B5LXN1Zi1idXR0b25cIiAoY2xpY2spPVwiQ29weVRvQ2xpcEJvYXJkU1VGKClcIiAqbmdJZj1cIkJlc3Rla1NlcnZpY2UuVHlwZUJlc3RlayA9PSAnU1RBQlUnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gY29udGVudF9jb3B5XCI+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkNsaXBib2FyZFNVRikgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBkb3dubG9hZC1iZXN0ZWstYnV0dG9uXCIgKGNsaWNrKT1cIkRvd25sb2FkQmVzdGVrKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBmaWxlX2Rvd25sb2FkXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5Eb3dubG9hZCkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93QXV0b1NwZWNpZmljYXRpb25CdXR0b25zKClcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBjb3B5LWJ1dHRvblwiIChjbGljayk9XCJDb3B5VG9DbGlwQm9hcmRBdXRvU3BlY2lmaWNhdGlvbigpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gY29udGVudF9jb3B5XCI+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkNsaXBib2FyZCkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBkb3dubG9hZC1iZXN0ZWstYnV0dG9uXCIgKGNsaWNrKT1cIkRvd25sb2FkQXV0b1NwZWNpZmljYXRpb24oKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGZpbGVfZG93bmxvYWRcIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkRvd25sb2FkKSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dMYXN0ZW5ib2VrQnV0dG9ucygpXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gY29weS1idXR0b25cIiAoY2xpY2spPVwiQ29weVRvQ2xpcEJvYXJkTGFzdGVuYm9laygpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gY29udGVudF9jb3B5XCI+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkNsaXBib2FyZCkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBkb3dubG9hZC1iZXN0ZWstYnV0dG9uXCIgKGNsaWNrKT1cIkRvd25sb2FkTGFzdGVuYm9laygpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gZmlsZV9kb3dubG9hZFwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuRG93bmxvYWQpIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvd1RvZWJlaG9yZW5CdXR0b25zKClcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInNlbGVjdC1tYXQtbGFiZWxcIj5Ub2ViZWhvcmVuPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJGYWJyaWthbnRlblNlcnZpY2UuU2VsZWN0ZWRUb2ViZWhvcmVuXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJUb2ViZWhvcmVuU2VydmljZS5PcGVuVG9lYmVob3Jlbih0aGlzLkNoYW5nZURldGVjdG9yUmVmKVwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNbMF0uYmNiUHJvZHVjdFRvZWJlaG9yZW5cIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhaXRlbS5iY2JQcm9kdWN0XCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuVG9lYmVob3JlbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBpdGVtLmlkKSB9fVxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiaXRlbS5iY2JQcm9kdWN0XCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZG93bmxvYWRjYXRlZ29yeSBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5kb3dubG9hZENhdGVnb3JpZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dEb3dubG9hZENhdGVnb3J5KGRvd25sb2FkY2F0ZWdvcnkubmFtZSlcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkb3dubG9hZGl0ZW0gb2YgZG93bmxvYWRjYXRlZ29yeS5pdGVtc1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkY2F0ZWdvcnkubmFtZSA9PSAnVG9lYmVob3JlbidcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cImRvd25sb2FkaXRlbS5maWxlVHlwZSArICctYnV0dG9uJ1wiIChjbGljayk9XCJEb3dubG9hZChkb3dubG9hZGl0ZW0sIEZhYnJpa2FudGVuU2VydmljZS5HZXRTZWxlY3RlZFRvZWJlaG9yZW4oKT8uYmNiZWJvSWQpXCIgKm5nSWY9XCIoIWRvd25sb2FkaXRlbS5pc05hdGl2ZVJldml0IHx8IFdlYkdMU2VydmljZS5IYXNOYXRpdmVSRkEoKSkgJiYgKEZhYnJpa2FudGVuU2VydmljZS5HZXRTZWxlY3RlZFRvZWJlaG9yZW4oKSAhPSBudWxsKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGZpbGVfZG93bmxvYWRcIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRvd25sb2FkaXRlbS5sb2FkaW5nXCI+Li4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFkb3dubG9hZGl0ZW0ubG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIGRvd25sb2FkaXRlbS50cmFuc2xhdGlvblN1YkNhdGVnb3J5KSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkY2F0ZWdvcnkubmFtZSAhPSAnVG9lYmVob3JlbidcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIFtuZ0NsYXNzXT1cImRvd25sb2FkaXRlbS5maWxlVHlwZSArICctYnV0dG9uJ1wiIChjbGljayk9XCJEb3dubG9hZChkb3dubG9hZGl0ZW0sIHVuZGVmaW5lZClcIiAqbmdJZj1cIiFkb3dubG9hZGl0ZW0uaXNOYXRpdmVSZXZpdCB8fCBXZWJHTFNlcnZpY2UuSGFzTmF0aXZlUkZBKClcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBmaWxlX2Rvd25sb2FkXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkb3dubG9hZGl0ZW0ubG9hZGluZ1wiPi4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZG93bmxvYWRpdGVtLmxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBkb3dubG9hZGl0ZW0udHJhbnNsYXRpb25TdWJDYXRlZ29yeSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21Eb3dubG9hZCBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmN1c3RvbURvd25sb2Fkc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJEaXNwbGF5Q3VzdG9tRG93bmxvYWQoY3VzdG9tRG93bmxvYWQpXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tRG93bmxvYWQuZG93bmxvYWRUeXBlID09IDFcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBjdXN0b20tYnV0dG9uXCIgKGNsaWNrKT1cIkRvd25sb2FkQ3VzdG9tKGN1c3RvbURvd25sb2FkKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGZpbGVfZG93bmxvYWRcIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImN1c3RvbURvd25sb2FkLmxvYWRpbmdcIj4uLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWN1c3RvbURvd25sb2FkLmxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkRvd25sb2FkUmV2aXQpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tRG93bmxvYWQuZG93bmxvYWRUeXBlID09IDJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBjdXN0b20tYnV0dG9uXCIgKGNsaWNrKT1cIk9wZW5QREYoY3VzdG9tRG93bmxvYWQpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gb3Blbl9pbl9uZXdcIj5vcGVuX2luX25ldzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXN0b21Eb3dubG9hZC5sb2FkaW5nXCI+Li4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjdXN0b21Eb3dubG9hZC5sb2FkaW5nXCI+e3sgY3VzdG9tRG93bmxvYWQubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBkZnRlbXBsYXRlIG9mIEZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QucGRmVGVtcGxhdGVzXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiB0ZW1wbGF0ZS1idXR0b25cIiAoY2xpY2spPVwiRG93bmxvYWRQREZUZW1wbGF0ZShwZGZ0ZW1wbGF0ZSlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBmaWxlX2Rvd25sb2FkXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5TcGVjaWZpY2F0aW9uKSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTaG93VGV4dHVyZUJ1dHRvbnMoKVwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cIk9wZW5MaW5rKFRleHR1cmVTZXJ2aWNlLkZhYnJpa2FudGVuVGV4dHVyZVZpZXdNb2RlbC5wYXRyb29uVVJMKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIG9wZW5faW5fbmV3XCI+b3Blbl9pbl9uZXc8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuVGV4dHVyZSkgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJPcGVuTGluayhUZXh0dXJlU2VydmljZS5GYWJyaWthbnRlblRleHR1cmVWaWV3TW9kZWwuYnVtcFVSTClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBvcGVuX2luX25ld1wiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkJ1bXBtYXApIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGJjYi1idXR0b25cIiAoY2xpY2spPVwiT3BlbkJDQkxpbmsoKVwiICpuZ0lmPVwiU2hvd0JDQkJ1dHRvbigpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gb3Blbl9pbl9uZXdcIj5vcGVuX2luX25ldzwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxyXG4gICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5CQ0IpIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -23655,7 +23655,7 @@ class FabActionmenuComponent {
23655
23655
  this.FabrikantenService.DownloadBestek(this.BestekService.FabrikantenBestekViewModel.osfhtml);
23656
23656
  }
23657
23657
  else {
23658
- alert("Error: unabled to download specifications");
23658
+ alert("Error: unable to download specifications");
23659
23659
  }
23660
23660
  }
23661
23661
  else {
@@ -23663,7 +23663,7 @@ class FabActionmenuComponent {
23663
23663
  this.FabrikantenService.DownloadBestek(this.BestekService.FabrikantenBestekViewModel.suf);
23664
23664
  }
23665
23665
  else {
23666
- alert("Error: unabled to download specifications");
23666
+ alert("Error: unable to download specifications");
23667
23667
  }
23668
23668
  }
23669
23669
  }
@@ -23671,7 +23671,7 @@ class FabActionmenuComponent {
23671
23671
  this.FabrikantenService.DownloadBestek(this.BestekService.fabProductBestek.nativeElement.innerText);
23672
23672
  }
23673
23673
  else {
23674
- alert("Error: unabled to download specifications");
23674
+ alert("Error: unable to download specifications");
23675
23675
  }
23676
23676
  }
23677
23677
  DownloadAutoSpecification() {
@@ -23680,7 +23680,7 @@ class FabActionmenuComponent {
23680
23680
  this.FabrikantenService.DownloadBestek(this.BestekService.fabProductAutoSpecifcation.nativeElement.innerText);
23681
23681
  }
23682
23682
  else {
23683
- alert("Error: unabled to download specifications");
23683
+ alert("Error: unable to download specifications");
23684
23684
  }
23685
23685
  }
23686
23686
  DownloadLastenboek() {
@@ -23696,7 +23696,7 @@ class FabActionmenuComponent {
23696
23696
  this.BestekService.CopyToClipboard(this.BestekService.fabProductBestek.nativeElement.innerText);
23697
23697
  }
23698
23698
  else {
23699
- console.warn("Error: unabled to copy specifications");
23699
+ console.warn("Error: unable to copy specifications");
23700
23700
  setTimeout(() => {
23701
23701
  this.CopyToClipBoard();
23702
23702
  }, 500);
@@ -23708,7 +23708,10 @@ class FabActionmenuComponent {
23708
23708
  this.BestekService.CopyToClipboard(this.BestekService.FabrikantenBestekViewModel.osfhtml);
23709
23709
  }
23710
23710
  else {
23711
- alert("Error: unabled to copy specifications");
23711
+ console.warn("Error: unable to copy specifications");
23712
+ setTimeout(() => {
23713
+ this.CopyToClipBoardSUF();
23714
+ }, 500);
23712
23715
  }
23713
23716
  }
23714
23717
  else {
@@ -23716,7 +23719,10 @@ class FabActionmenuComponent {
23716
23719
  this.BestekService.CopyToClipboard(this.BestekService.FabrikantenBestekViewModel.suf);
23717
23720
  }
23718
23721
  else {
23719
- alert("Error: unabled to copy specifications");
23722
+ console.warn("Error: unable to copy specifications");
23723
+ setTimeout(() => {
23724
+ this.CopyToClipBoardSUF();
23725
+ }, 500);
23720
23726
  }
23721
23727
  }
23722
23728
  }
@@ -23725,7 +23731,10 @@ class FabActionmenuComponent {
23725
23731
  this.BestekService.CopyToClipboard(this.BestekService.fabProductAutoSpecifcation.nativeElement.innerText);
23726
23732
  }
23727
23733
  else {
23728
- alert("Error: unabled to copy specifications");
23734
+ console.warn("Error: unable to copy specifications");
23735
+ setTimeout(() => {
23736
+ this.CopyToClipBoardAutoSpecification();
23737
+ }, 500);
23729
23738
  }
23730
23739
  }
23731
23740
  CopyToClipBoardLastenboek() {
@@ -23733,7 +23742,10 @@ class FabActionmenuComponent {
23733
23742
  this.BestekService.CopyToClipboard(this.BestekService.fabProductLastenboek.nativeElement.innerText);
23734
23743
  }
23735
23744
  else {
23736
- alert("Error: unabled to copy specifications");
23745
+ console.warn("Error: unable to copy specifications");
23746
+ setTimeout(() => {
23747
+ this.CopyToClipBoardLastenboek();
23748
+ }, 500);
23737
23749
  }
23738
23750
  }
23739
23751
  ShowBestekSelect() {