fabrikantencore 1.4.3 → 2.0.2

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.
Files changed (41) hide show
  1. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.mjs +17 -13
  2. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.mjs +20 -17
  3. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.mjs +6 -5
  4. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.mjs +9 -6
  5. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.mjs +10 -10
  6. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-manyname-dialog/beheer-products-connect-manyname-dialog.component.mjs +3 -3
  7. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.mjs +79 -22
  8. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.mjs +27 -28
  9. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.mjs +31 -19
  10. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.mjs +61 -29
  11. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.mjs +6 -5
  12. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.mjs +7 -7
  13. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.mjs +3 -3
  14. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.mjs +23 -3
  15. package/esm2020/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.mjs +11 -8
  16. package/esm2020/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.mjs +3 -3
  17. package/esm2020/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.mjs +3 -3
  18. package/esm2020/src/app/modules/fabrikantencore/services/importsets.service.mjs +16 -6
  19. package/esm2020/src/app/modules/fabrikantencore/services/products.service.mjs +34 -24
  20. package/esm2020/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +433 -347
  21. package/fesm2015/fabrikantencore.mjs +873 -631
  22. package/fesm2015/fabrikantencore.mjs.map +1 -1
  23. package/fesm2020/fabrikantencore.mjs +860 -623
  24. package/fesm2020/fabrikantencore.mjs.map +1 -1
  25. package/package.json +1 -1
  26. package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.d.ts +5 -3
  27. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.d.ts +5 -3
  28. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.d.ts +3 -2
  29. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.d.ts +1 -0
  30. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.d.ts +3 -2
  31. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.d.ts +16 -4
  32. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.d.ts +4 -5
  33. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.d.ts +3 -3
  34. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.d.ts +13 -3
  35. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.d.ts +3 -2
  36. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.d.ts +1 -1
  37. package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.d.ts +2 -0
  38. package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.d.ts +3 -1
  39. package/src/app/modules/fabrikantencore/services/importsets.service.d.ts +6 -3
  40. package/src/app/modules/fabrikantencore/services/products.service.d.ts +5 -4
  41. package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +144 -164
@@ -78,12 +78,12 @@ export class FabWebglViewerComponent {
78
78
  }
79
79
  }
80
80
  FabWebglViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: FabWebglViewerComponent, deps: [{ token: i1.FabrikantenService }, { token: i2.WebGLService }, { token: i3.TranslateService }, { token: i4.MobileService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
81
- FabWebglViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: FabWebglViewerComponent, selector: "app-fab-webgl-viewer", viewQueries: [{ propertyName: "viewercontainer", first: true, predicate: ["viewercontainer"], descendants: true }], ngImport: i0, template: "<div class=\"loader\" *ngIf=\"WebGLService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n <div *ngIf=\"ShowWebGL()\" class=\"main-window flex-col\">\n <div #viewercontainer class=\"viewer-container\">\n <canvas id=\"viewerCanvas\" class=\"viewer-canvas\" [attr.width]=\"WebGLService.ViewerWidth\" [attr.height]=\"WebGLService.ViewerHeight\"></canvas>\n </div>\n\n <div class=\"webgl-settings\">\n <mat-card>\n <mat-card-content>\n <div class=\"column\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"WebGLService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <!--<button mat-stroked-button class=\"toolbar-button revit-plugin-button\" (click)=\"FabrikantenService.DownloadRevitPlugin()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRevitPluginLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRevitPluginLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit (plugin)\") }}</span>\n </div>\n </div>\n </button>-->\n <button mat-stroked-button class=\"toolbar-button autocad-3d-button\" (click)=\"FabrikantenService.Download3DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-3d-button\" (click)=\"FabrikantenService.Download3DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n</div>\n\n\n", styles: [".row{display:flex;line-height:37px}.flex-col{display:flex;flex-direction:column}.loader{position:absolute;width:100%;height:100%;justify-content:center}.column{display:flex;flex-direction:column}.webgl-settings{position:absolute;top:10px;right:10px;display:flex}.icon{margin-right:3px}.viewer-container{overflow:auto;height:100%}.row-icon{align-items:center;display:flex}.row-title{flex:auto}.viewer-canvas{background-color:#fff;cursor:grab}.main-window{height:100%}.toolbar{display:flex;padding:3px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar-button{margin-top:3px}.button{margin:5px;width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.FabLoaderComponent, selector: "app-fab-loader" }] });
81
+ FabWebglViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: FabWebglViewerComponent, selector: "app-fab-webgl-viewer", viewQueries: [{ propertyName: "viewercontainer", first: true, predicate: ["viewercontainer"], descendants: true }], ngImport: i0, template: "<div class=\"loader\" *ngIf=\"WebGLService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\" class=\"multiplevariants\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n <div *ngIf=\"ShowWebGL()\" class=\"main-window flex-col\">\n <div #viewercontainer class=\"viewer-container\">\n <canvas id=\"viewerCanvas\" class=\"viewer-canvas\" [attr.width]=\"WebGLService.ViewerWidth\" [attr.height]=\"WebGLService.ViewerHeight\"></canvas>\n </div>\n\n <div class=\"webgl-settings\">\n <mat-card>\n <mat-card-content>\n <div class=\"column\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"WebGLService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <!--<button mat-stroked-button class=\"toolbar-button revit-plugin-button\" (click)=\"FabrikantenService.DownloadRevitPlugin()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRevitPluginLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRevitPluginLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit (plugin)\") }}</span>\n </div>\n </div>\n </button>-->\n <button mat-stroked-button class=\"toolbar-button autocad-3d-button\" (click)=\"FabrikantenService.Download3DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-3d-button\" (click)=\"FabrikantenService.Download3DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n</div>\n\n\n", styles: [".row{display:flex;line-height:37px}.flex-col{display:flex;flex-direction:column}.multiplevariants{padding:20px}.loader{position:absolute;width:100%;height:100%;justify-content:center}.column{display:flex;flex-direction:column}.webgl-settings{position:absolute;top:10px;right:10px;display:flex}.icon{margin-right:3px}.viewer-container{overflow:auto;height:100%}.row-icon{align-items:center;display:flex}.row-title{flex:auto}.viewer-canvas{background-color:#fff;cursor:grab}.main-window{height:100%}.toolbar{display:flex;padding:3px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar-button{margin-top:3px}.button{margin:5px;width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.FabLoaderComponent, selector: "app-fab-loader" }] });
82
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: FabWebglViewerComponent, decorators: [{
83
83
  type: Component,
84
- args: [{ selector: 'app-fab-webgl-viewer', template: "<div class=\"loader\" *ngIf=\"WebGLService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n <div *ngIf=\"ShowWebGL()\" class=\"main-window flex-col\">\n <div #viewercontainer class=\"viewer-container\">\n <canvas id=\"viewerCanvas\" class=\"viewer-canvas\" [attr.width]=\"WebGLService.ViewerWidth\" [attr.height]=\"WebGLService.ViewerHeight\"></canvas>\n </div>\n\n <div class=\"webgl-settings\">\n <mat-card>\n <mat-card-content>\n <div class=\"column\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"WebGLService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <!--<button mat-stroked-button class=\"toolbar-button revit-plugin-button\" (click)=\"FabrikantenService.DownloadRevitPlugin()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRevitPluginLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRevitPluginLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit (plugin)\") }}</span>\n </div>\n </div>\n </button>-->\n <button mat-stroked-button class=\"toolbar-button autocad-3d-button\" (click)=\"FabrikantenService.Download3DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-3d-button\" (click)=\"FabrikantenService.Download3DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n</div>\n\n\n", styles: [".row{display:flex;line-height:37px}.flex-col{display:flex;flex-direction:column}.loader{position:absolute;width:100%;height:100%;justify-content:center}.column{display:flex;flex-direction:column}.webgl-settings{position:absolute;top:10px;right:10px;display:flex}.icon{margin-right:3px}.viewer-container{overflow:auto;height:100%}.row-icon{align-items:center;display:flex}.row-title{flex:auto}.viewer-canvas{background-color:#fff;cursor:grab}.main-window{height:100%}.toolbar{display:flex;padding:3px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar-button{margin-top:3px}.button{margin:5px;width:100%}\n"] }]
84
+ args: [{ selector: 'app-fab-webgl-viewer', template: "<div class=\"loader\" *ngIf=\"WebGLService.Loading\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div class=\"main-window\">\n <div *ngIf=\"FabrikantenService.ShowVariants()\" class=\"multiplevariants\">\n {{ TranslateService.GetActiveValue(\"Common\", \"Multiple variants\") }}\n <div>\n <ul>\n <li class=\"button\" mat-stroked-button *ngFor=\"let bcbproduct of FabrikantenService.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels\">\n {{ bcbproduct.name }}\n </li>\n </ul>\n </div>\n </div>\n <div *ngIf=\"ShowWebGL()\" class=\"main-window flex-col\">\n <div #viewercontainer class=\"viewer-container\">\n <canvas id=\"viewerCanvas\" class=\"viewer-canvas\" [attr.width]=\"WebGLService.ViewerWidth\" [attr.height]=\"WebGLService.ViewerHeight\"></canvas>\n </div>\n\n <div class=\"webgl-settings\">\n <mat-card>\n <mat-card-content>\n <div class=\"column\">\n <button mat-stroked-button class=\"toolbar-button rfa-button\" (click)=\"FabrikantenService.DownloadRFA()\" *ngIf=\"WebGLService.HasNativeRFA()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRFALoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRFALoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button arkey-adomi-button\" (click)=\"FabrikantenService.DownloadARKEYAdomi()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadARKEYAdomiLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadARKEYAdomiLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"ARKEY Adomi\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button ifc-button\" (click)=\"FabrikantenService.DownloadIFC()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadIFCLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadIFCLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"IFC\") }}</span>\n </div>\n </div>\n </button>\n <!--<button mat-stroked-button class=\"toolbar-button revit-plugin-button\" (click)=\"FabrikantenService.DownloadRevitPlugin()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.DownloadRevitPluginLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.DownloadRevitPluginLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"Revit (plugin)\") }}</span>\n </div>\n </div>\n </button>-->\n <button mat-stroked-button class=\"toolbar-button autocad-3d-button\" (click)=\"FabrikantenService.Download3DAutoCADDwg()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DAutoCADDwgLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DAutoCADDwgLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D AutoCAD Dwg\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button dxf-3d-button\" (click)=\"FabrikantenService.Download3DDxf()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">file_download</mat-icon>\n </div>\n <div class=\"row-title\">\n <span *ngIf=\"FabrikantenService.Download3DDxfLoading\">...</span>\n <span *ngIf=\"!FabrikantenService.Download3DDxfLoading\">{{ TranslateService.GetActiveValue(\"Common\", \"3D Dxf\") }}</span>\n </div>\n </div>\n </button>\n <button mat-stroked-button class=\"toolbar-button\" (click)=\"OpenBCBLink()\">\n <div class=\"row\">\n <div class=\"row-icon\">\n <mat-icon class=\"icon\">open_in_new</mat-icon>\n </div>\n <div class=\"row-title\">\n {{ TranslateService.GetActiveValue(\"Common\", \"BCB\") }}\n </div>\n </div>\n </button>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n</div>\n\n\n", styles: [".row{display:flex;line-height:37px}.flex-col{display:flex;flex-direction:column}.multiplevariants{padding:20px}.loader{position:absolute;width:100%;height:100%;justify-content:center}.column{display:flex;flex-direction:column}.webgl-settings{position:absolute;top:10px;right:10px;display:flex}.icon{margin-right:3px}.viewer-container{overflow:auto;height:100%}.row-icon{align-items:center;display:flex}.row-title{flex:auto}.viewer-canvas{background-color:#fff;cursor:grab}.main-window{height:100%}.toolbar{display:flex;padding:3px}button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar-button{margin-top:3px}.button{margin:5px;width:100%}\n"] }]
85
85
  }], ctorParameters: function () { return [{ type: i1.FabrikantenService }, { type: i2.WebGLService }, { type: i3.TranslateService }, { type: i4.MobileService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { viewercontainer: [{
86
86
  type: ViewChild,
87
87
  args: ['viewercontainer']
88
88
  }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLXdlYmdsLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLXdlYmdsLXZpZXdlci9mYWItd2ViZ2wtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItd2ViZ2wtdmlld2VyL2ZhYi13ZWJnbC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzRCxTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFjcEosTUFBTSxPQUFPLHVCQUF1QjtJQU1sQyxZQUNTLGtCQUFzQyxFQUN0QyxZQUEwQixFQUMxQixnQkFBa0MsRUFDbEMsYUFBNEIsRUFDM0IsaUJBQW9DO1FBSnJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVHZDLFdBQU0sR0FBVyxrQkFBa0IsQ0FBQztRQVd6QyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztRQUVqRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsSUFBSSxTQUFTLEVBQUU7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLElBQUksSUFBSSxFQUFFO1lBQ2xGLElBQUksTUFBTSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUVyRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7Z0JBRWxCLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQ25DLFVBQVUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUNsQyxVQUFVLENBQUMsc0JBQXNCLEdBQUcsR0FBRyxDQUFDO2dCQUN4QyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO2dCQUNsQyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2dCQUNwQyxVQUFVLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDakMsVUFBVSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztnQkFDdEMsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO2dCQUN2QyxNQUFNLENBQUMsWUFBWSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUVsRixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRTtvQkFDN0QsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUN2QixNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLFNBQVMsRUFBRTtZQUVyQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQy9ELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7WUFFakUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksTUFBTSxFQUFFO2dCQUV0RixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUV2QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDdEI7U0FDRjtJQUNILENBQUM7O29IQXZGVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixnTENkcEMsOHRLQTRHQTsyRkQ5RmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHNCQUFzQjsrTkFRRixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXZWJHTFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93ZWJnbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmFicmlrYW50ZW5BcGlDbGllbnQsIEZhYnJpa2FudGVuRmlsZVJlcXVlc3RNb2RlbCwgRmFicmlrYW50ZW5GaWxlVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuXG5kZWNsYXJlIHZhciBNb2R1bGVWaWV3ZXIzRExpZ2h0OiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mYWItd2ViZ2wtdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhYi13ZWJnbC12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mYWItd2ViZ2wtdmlld2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmFiV2ViZ2xWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIERvQ2hlY2sge1xuXG4gIHB1YmxpYyBIZWlnaHQ6IHN0cmluZyA9IFwiY2FsYygxMDAlIC0gMHB4KVwiO1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdlcmNvbnRhaW5lcicpIHZpZXdlcmNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgRmFicmlrYW50ZW5TZXJ2aWNlOiBGYWJyaWthbnRlblNlcnZpY2UsXG4gICAgcHVibGljIFdlYkdMU2VydmljZTogV2ViR0xTZXJ2aWNlLFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBNb2JpbGVTZXJ2aWNlOiBNb2JpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuV2ViR0xTZXJ2aWNlLkZhYldlYmdsVmlld2VyQ29tcG9uZW50ID0gdGhpcztcblxuICAgIHRoaXMuUmVmcmVzaFZpZXdlclNpemUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuUmVmcmVzaFZpZXdlclNpemUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLlJlZnJlc2hWaWV3ZXJTaXplKCk7XHJcbiAgICB0aGlzLlJlZnJlc2hWaWV3ZXIoKTtcclxuICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgdGhpcy5SZWZyZXNoVmlld2VyU2l6ZSgpO1xyXG4gIH1cblxuICBwdWJsaWMgT3BlbkJDQkxpbmsoKTogdm9pZCB7XHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5PcGVuQkNCTGluayh0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsLnd1aWQgKyBcIlwiKTtcclxuICB9XG5cbiAgcHVibGljIFNob3dXZWJHTCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuU2hvd1ZhcmlhbnRzKCkpIHtcclxuICAgICAgaWYgKHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxuXG4gIHB1YmxpYyBSZWZyZXNoVmlld2VyKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLldlYkdMU2VydmljZS5Mb2FkaW5nICYmIHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgdmlld2VyID0gTW9kdWxlVmlld2VyM0RMaWdodC5nZXQoXCJ2aWV3ZXJDYW52YXNcIik7XHJcblxyXG4gICAgICBpZiAodmlld2VyICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgdmFyIGJlbGljaHRpbmcgPSB2aWV3ZXIuYmVsaWNodGluZztcclxuICAgICAgICBiZWxpY2h0aW5nLnRvb25TbGFnc2NoYWR1dyA9IHRydWU7XHJcbiAgICAgICAgYmVsaWNodGluZy5zbGFnc2NoYWR1d1ZlcnphZGlnaW5nID0gMC41O1xyXG4gICAgICAgIGJlbGljaHRpbmcubGljaHRicm9uU3Rlcmt0ZSA9IDAuODtcclxuICAgICAgICBiZWxpY2h0aW5nLmxpY2h0U2NoaXR0ZXJpbmcgPSAwLjMzMztcclxuICAgICAgICBiZWxpY2h0aW5nLmlzQ2FtZXJhTGljaHQgPSBmYWxzZTtcclxuICAgICAgICBiZWxpY2h0aW5nLm9tZ2V2aW5nbGljaHRTdGVya3RlID0gMC40O1xyXG4gICAgICAgIGJlbGljaHRpbmcubGljaHR2YWwgPSBbLTEuMCwgMC41LCAtMS4yXTtcclxuICAgICAgICB2aWV3ZXIub3J0aG9ncmFmaXNjaGVQcm9qZWN0aWUgPSBmYWxzZTtcclxuICAgICAgICB2aWV3ZXIua2lqa3JpY2h0aW5nID0gWzAuNTAwMjMyNDE5MTAwOTMsIDAuNzQ0MzYwMDUyNjYwNDkzNCwgLTAuNDQyMzc0OTk4MDMxODcyM107XHJcblxyXG4gICAgICAgIHZpZXdlci5jbGVhcigpO1xyXG4gICAgICAgIHZpZXdlci5hZGQodGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC53ZWJHTEpTT04sIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHZpZXdlci56ZXRab29tR2VoZWVsKCk7XHJcbiAgICAgICAgICB2aWV3ZXIudG9vbk1vZGVsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XG5cbiAgcHJpdmF0ZSBSZWZyZXNoVmlld2VyU2l6ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZpZXdlcmNvbnRhaW5lciAhPSB1bmRlZmluZWQpIHtcclxuXHJcbiAgICAgIHZhciB3aWR0aCA9IHRoaXMudmlld2VyY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSA2O1xyXG4gICAgICB2YXIgaGVpZ2h0ID0gdGhpcy52aWV3ZXJjb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSA2O1xyXG5cclxuICAgICAgaWYgKHRoaXMuV2ViR0xTZXJ2aWNlLlZpZXdlcldpZHRoICE9IHdpZHRoIHx8IHRoaXMuV2ViR0xTZXJ2aWNlLlZpZXdlckhlaWdodCAhPSBoZWlnaHQpIHtcclxuXHJcbiAgICAgICAgdGhpcy5XZWJHTFNlcnZpY2UuVmlld2VyV2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLldlYkdMU2VydmljZS5WaWV3ZXJIZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgIHRoaXMuUmVmcmVzaFZpZXdlcigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxvYWRlclwiICpuZ0lmPVwiV2ViR0xTZXJ2aWNlLkxvYWRpbmdcIj5cbiAgPGFwcC1mYWItbG9hZGVyPjwvYXBwLWZhYi1sb2FkZXI+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1haW4td2luZG93XCI+XG4gIDxkaXYgKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuU2hvd1ZhcmlhbnRzKClcIj5cbiAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiTXVsdGlwbGUgdmFyaWFudHNcIikgfX1cbiAgICA8ZGl2PlxuICAgICAgPHVsPlxuICAgICAgICA8bGkgY2xhc3M9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gKm5nRm9yPVwibGV0IGJjYnByb2R1Y3Qgb2YgRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzXCI+XG4gICAgICAgICAge3sgYmNicHJvZHVjdC5uYW1lIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIlNob3dXZWJHTCgpXCIgY2xhc3M9XCJtYWluLXdpbmRvdyBmbGV4LWNvbFwiPlxuICAgIDxkaXYgI3ZpZXdlcmNvbnRhaW5lciBjbGFzcz1cInZpZXdlci1jb250YWluZXJcIj5cbiAgICAgIDxjYW52YXMgaWQ9XCJ2aWV3ZXJDYW52YXNcIiBjbGFzcz1cInZpZXdlci1jYW52YXNcIiBbYXR0ci53aWR0aF09XCJXZWJHTFNlcnZpY2UuVmlld2VyV2lkdGhcIiBbYXR0ci5oZWlnaHRdPVwiV2ViR0xTZXJ2aWNlLlZpZXdlckhlaWdodFwiPjwvY2FudmFzPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIndlYmdsLXNldHRpbmdzXCI+XG4gICAgICA8bWF0LWNhcmQ+XG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gcmZhLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRSRkEoKVwiICpuZ0lmPVwiV2ViR0xTZXJ2aWNlLkhhc05hdGl2ZVJGQSgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQUxvYWRpbmdcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRSRkFMb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIlJldml0XCIpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBhcmtleS1hZG9taS1idXR0b25cIiAoY2xpY2spPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQVJLRVlBZG9taSgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZEFSS0VZQWRvbWlMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQVJLRVlBZG9taUxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiQVJLRVkgQWRvbWlcIikgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGlmYy1idXR0b25cIiAoY2xpY2spPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkSUZDKClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkSUZDTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZElGQ0xvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiSUZDXCIpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPCEtLTxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gcmV2aXQtcGx1Z2luLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRSZXZpdFBsdWdpbigpXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJldml0UGx1Z2luTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkUmV2aXRQbHVnaW5Mb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIlJldml0IChwbHVnaW4pXCIpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPi0tPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBhdXRvY2FkLTNkLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQzREF1dG9DQUREd2coKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQzREF1dG9DQUREd2dMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkM0RBdXRvQ0FERHdnTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCIzRCBBdXRvQ0FEIER3Z1wiKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gZHhmLTNkLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQzRER4ZigpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDNERHhmTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDNERHhmTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCIzRCBEeGZcIikgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cIk9wZW5CQ0JMaW5rKClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiQkNCXCIpIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgIDwvbWF0LWNhcmQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLXdlYmdsLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2NvbXBvbmVudHMvZmFiLXdlYmdsLXZpZXdlci9mYWItd2ViZ2wtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItd2ViZ2wtdmlld2VyL2ZhYi13ZWJnbC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzRCxTQUFTLEVBQTZDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFjcEosTUFBTSxPQUFPLHVCQUF1QjtJQU1sQyxZQUNTLGtCQUFzQyxFQUN0QyxZQUEwQixFQUMxQixnQkFBa0MsRUFDbEMsYUFBNEIsRUFDM0IsaUJBQW9DO1FBSnJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVHZDLFdBQU0sR0FBVyxrQkFBa0IsQ0FBQztRQVd6QyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztRQUVqRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FB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QUFzQjsrTkFRRixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2JpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9iaWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXZWJHTFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93ZWJnbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmFicmlrYW50ZW5BcGlDbGllbnQsIEZhYnJpa2FudGVuRmlsZVJlcXVlc3RNb2RlbCwgRmFicmlrYW50ZW5GaWxlVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuXG5kZWNsYXJlIHZhciBNb2R1bGVWaWV3ZXIzRExpZ2h0OiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mYWItd2ViZ2wtdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhYi13ZWJnbC12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mYWItd2ViZ2wtdmlld2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmFiV2ViZ2xWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIERvQ2hlY2sge1xuXG4gIHB1YmxpYyBIZWlnaHQ6IHN0cmluZyA9IFwiY2FsYygxMDAlIC0gMHB4KVwiO1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdlcmNvbnRhaW5lcicpIHZpZXdlcmNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgRmFicmlrYW50ZW5TZXJ2aWNlOiBGYWJyaWthbnRlblNlcnZpY2UsXG4gICAgcHVibGljIFdlYkdMU2VydmljZTogV2ViR0xTZXJ2aWNlLFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBNb2JpbGVTZXJ2aWNlOiBNb2JpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuV2ViR0xTZXJ2aWNlLkZhYldlYmdsVmlld2VyQ29tcG9uZW50ID0gdGhpcztcblxuICAgIHRoaXMuUmVmcmVzaFZpZXdlclNpemUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuUmVmcmVzaFZpZXdlclNpemUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLlJlZnJlc2hWaWV3ZXJTaXplKCk7XHJcbiAgICB0aGlzLlJlZnJlc2hWaWV3ZXIoKTtcclxuICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgdGhpcy5SZWZyZXNoVmlld2VyU2l6ZSgpO1xyXG4gIH1cblxuICBwdWJsaWMgT3BlbkJDQkxpbmsoKTogdm9pZCB7XHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5PcGVuQkNCTGluayh0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsLnd1aWQgKyBcIlwiKTtcclxuICB9XG5cbiAgcHVibGljIFNob3dXZWJHTCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuU2hvd1ZhcmlhbnRzKCkpIHtcclxuICAgICAgaWYgKHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxuXG4gIHB1YmxpYyBSZWZyZXNoVmlld2VyKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLldlYkdMU2VydmljZS5Mb2FkaW5nICYmIHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgdmlld2VyID0gTW9kdWxlVmlld2VyM0RMaWdodC5nZXQoXCJ2aWV3ZXJDYW52YXNcIik7XHJcblxyXG4gICAgICBpZiAodmlld2VyICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgdmFyIGJlbGljaHRpbmcgPSB2aWV3ZXIuYmVsaWNodGluZztcclxuICAgICAgICBiZWxpY2h0aW5nLnRvb25TbGFnc2NoYWR1dyA9IHRydWU7XHJcbiAgICAgICAgYmVsaWNodGluZy5zbGFnc2NoYWR1d1ZlcnphZGlnaW5nID0gMC41O1xyXG4gICAgICAgIGJlbGljaHRpbmcubGljaHRicm9uU3Rlcmt0ZSA9IDAuODtcclxuICAgICAgICBiZWxpY2h0aW5nLmxpY2h0U2NoaXR0ZXJpbmcgPSAwLjMzMztcclxuICAgICAgICBiZWxpY2h0aW5nLmlzQ2FtZXJhTGljaHQgPSBmYWxzZTtcclxuICAgICAgICBiZWxpY2h0aW5nLm9tZ2V2aW5nbGljaHRTdGVya3RlID0gMC40O1xyXG4gICAgICAgIGJlbGljaHRpbmcubGljaHR2YWwgPSBbLTEuMCwgMC41LCAtMS4yXTtcclxuICAgICAgICB2aWV3ZXIub3J0aG9ncmFmaXNjaGVQcm9qZWN0aWUgPSBmYWxzZTtcclxuICAgICAgICB2aWV3ZXIua2lqa3JpY2h0aW5nID0gWzAuNTAwMjMyNDE5MTAwOTMsIDAuNzQ0MzYwMDUyNjYwNDkzNCwgLTAuNDQyMzc0OTk4MDMxODcyM107XHJcblxyXG4gICAgICAgIHZpZXdlci5jbGVhcigpO1xyXG4gICAgICAgIHZpZXdlci5hZGQodGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC53ZWJHTEpTT04sIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIHZpZXdlci56ZXRab29tR2VoZWVsKCk7XHJcbiAgICAgICAgICB2aWV3ZXIudG9vbk1vZGVsKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XG5cbiAgcHJpdmF0ZSBSZWZyZXNoVmlld2VyU2l6ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZpZXdlcmNvbnRhaW5lciAhPSB1bmRlZmluZWQpIHtcclxuXHJcbiAgICAgIHZhciB3aWR0aCA9IHRoaXMudmlld2VyY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSA2O1xyXG4gICAgICB2YXIgaGVpZ2h0ID0gdGhpcy52aWV3ZXJjb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSA2O1xyXG5cclxuICAgICAgaWYgKHRoaXMuV2ViR0xTZXJ2aWNlLlZpZXdlcldpZHRoICE9IHdpZHRoIHx8IHRoaXMuV2ViR0xTZXJ2aWNlLlZpZXdlckhlaWdodCAhPSBoZWlnaHQpIHtcclxuXHJcbiAgICAgICAgdGhpcy5XZWJHTFNlcnZpY2UuVmlld2VyV2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLldlYkdMU2VydmljZS5WaWV3ZXJIZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgIHRoaXMuUmVmcmVzaFZpZXdlcigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxvYWRlclwiICpuZ0lmPVwiV2ViR0xTZXJ2aWNlLkxvYWRpbmdcIj5cbiAgPGFwcC1mYWItbG9hZGVyPjwvYXBwLWZhYi1sb2FkZXI+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1haW4td2luZG93XCI+XG4gIDxkaXYgKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuU2hvd1ZhcmlhbnRzKClcIiBjbGFzcz1cIm11bHRpcGxldmFyaWFudHNcIj5cbiAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiTXVsdGlwbGUgdmFyaWFudHNcIikgfX1cbiAgICA8ZGl2PlxuICAgICAgPHVsPlxuICAgICAgICA8bGkgY2xhc3M9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gKm5nRm9yPVwibGV0IGJjYnByb2R1Y3Qgb2YgRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzXCI+XG4gICAgICAgICAge3sgYmNicHJvZHVjdC5uYW1lIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIlNob3dXZWJHTCgpXCIgY2xhc3M9XCJtYWluLXdpbmRvdyBmbGV4LWNvbFwiPlxuICAgIDxkaXYgI3ZpZXdlcmNvbnRhaW5lciBjbGFzcz1cInZpZXdlci1jb250YWluZXJcIj5cbiAgICAgIDxjYW52YXMgaWQ9XCJ2aWV3ZXJDYW52YXNcIiBjbGFzcz1cInZpZXdlci1jYW52YXNcIiBbYXR0ci53aWR0aF09XCJXZWJHTFNlcnZpY2UuVmlld2VyV2lkdGhcIiBbYXR0ci5oZWlnaHRdPVwiV2ViR0xTZXJ2aWNlLlZpZXdlckhlaWdodFwiPjwvY2FudmFzPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIndlYmdsLXNldHRpbmdzXCI+XG4gICAgICA8bWF0LWNhcmQ+XG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gcmZhLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRSRkEoKVwiICpuZ0lmPVwiV2ViR0xTZXJ2aWNlLkhhc05hdGl2ZVJGQSgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJGQUxvYWRpbmdcIj4uLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRSRkFMb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIlJldml0XCIpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBhcmtleS1hZG9taS1idXR0b25cIiAoY2xpY2spPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQVJLRVlBZG9taSgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZEFSS0VZQWRvbWlMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkQVJLRVlBZG9taUxvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiQVJLRVkgQWRvbWlcIikgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uIGlmYy1idXR0b25cIiAoY2xpY2spPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkSUZDKClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkSUZDTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZElGQ0xvYWRpbmdcIj57eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiSUZDXCIpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPCEtLTxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gcmV2aXQtcGx1Z2luLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWRSZXZpdFBsdWdpbigpXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZFJldml0UGx1Z2luTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkUmV2aXRQbHVnaW5Mb2FkaW5nXCI+e3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShcIkNvbW1vblwiLCBcIlJldml0IChwbHVnaW4pXCIpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPi0tPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJ0b29sYmFyLWJ1dHRvbiBhdXRvY2FkLTNkLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQzREF1dG9DQUREd2coKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pY29uXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uXCI+ZmlsZV9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQzREF1dG9DQUREd2dMb2FkaW5nXCI+Li4uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhRmFicmlrYW50ZW5TZXJ2aWNlLkRvd25sb2FkM0RBdXRvQ0FERHdnTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCIzRCBBdXRvQ0FEIER3Z1wiKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwidG9vbGJhci1idXR0b24gZHhmLTNkLWJ1dHRvblwiIChjbGljayk9XCJGYWJyaWthbnRlblNlcnZpY2UuRG93bmxvYWQzRER4ZigpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWljb25cIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb25cIj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIkZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDNERHhmTG9hZGluZ1wiPi4uLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5Eb3dubG9hZDNERHhmTG9hZGluZ1wiPnt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoXCJDb21tb25cIiwgXCIzRCBEeGZcIikgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cIk9wZW5CQ0JMaW5rKClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaWNvblwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvblwiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFwiQ29tbW9uXCIsIFwiQkNCXCIpIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgIDwvbWF0LWNhcmQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuIl19
@@ -7,16 +7,17 @@ export class ImportSetsService {
7
7
  this.ImportApiClient = ImportApiClient;
8
8
  this.LoadingImportSets = true;
9
9
  this.LoadingOpen = false;
10
- this.LoadImportSets();
10
+ this.ProductsService = null;
11
11
  }
12
- ChangeImportSetValue(value, enabled) {
12
+ ChangeImportSetValue(value, enabled, ChangeDetectorRef) {
13
13
  this.LoadingImportSets = true;
14
+ ChangeDetectorRef.detectChanges();
14
15
  var model = new ChangeImportSetRequest();
15
16
  model.importSetId = this.BCBImportSetSelected;
16
17
  model.value = value;
17
18
  model.enabled = enabled;
18
19
  this.ImportApiClient.changeImportSet(model).subscribe(() => {
19
- this.LoadImportSets();
20
+ this.LoadImportSets(ChangeDetectorRef);
20
21
  }, (error) => {
21
22
  if (error.status == 400)
22
23
  console.log(error.json());
@@ -25,16 +26,19 @@ export class ImportSetsService {
25
26
  console.log(error);
26
27
  }
27
28
  this.LoadingImportSets = false;
29
+ ChangeDetectorRef.detectChanges();
28
30
  });
29
31
  }
30
- Open(id) {
32
+ Open(id, ChangeDetectorRef) {
31
33
  this.LoadingOpen = true;
34
+ ChangeDetectorRef.detectChanges();
32
35
  var request = new BCBImportOpenRequest();
33
36
  request.bcbeboId = id;
34
37
  this.ImportApiClient.openBCBProduct(request).subscribe((model) => {
35
38
  this.BCBImportOpenResponse = model;
36
39
  this.RefreshBCBImportOpenResponse();
37
40
  this.LoadingOpen = false;
41
+ ChangeDetectorRef.detectChanges();
38
42
  });
39
43
  }
40
44
  GetActiveImportSet() {
@@ -48,8 +52,9 @@ export class ImportSetsService {
48
52
  }
49
53
  return new BCBImportSetViewModel();
50
54
  }
51
- LoadImportSets() {
55
+ LoadImportSets(ChangeDetectorRef) {
52
56
  this.LoadingImportSets = true;
57
+ ChangeDetectorRef.detectChanges();
53
58
  this.ImportApiClient.getBCBImportSetsViewModel().subscribe((model) => {
54
59
  this.BCBImportSetsViewModel = model;
55
60
  if (this.BCBImportSetSelected == null) {
@@ -59,6 +64,10 @@ export class ImportSetsService {
59
64
  }
60
65
  this.RefreshBCBImportOpenResponse();
61
66
  this.LoadingImportSets = false;
67
+ ChangeDetectorRef.detectChanges();
68
+ if (this.ProductsService != null) {
69
+ this.ProductsService.Reload(ChangeDetectorRef);
70
+ }
62
71
  }, (error) => {
63
72
  if (error.status == 400)
64
73
  console.log(error.json());
@@ -67,6 +76,7 @@ export class ImportSetsService {
67
76
  console.log(error);
68
77
  }
69
78
  this.LoadingImportSets = false;
79
+ ChangeDetectorRef.detectChanges();
70
80
  });
71
81
  }
72
82
  RefreshBCBImportOpenResponse() {
@@ -101,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
101
111
  type: Injectable,
102
112
  args: [{ providedIn: 'root' }]
103
113
  }], ctorParameters: function () { return [{ type: i1.ImportApiClient }]; } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0c2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9zZXJ2aWNlcy9pbXBvcnRzZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUF1QixvQkFBb0IsRUFBaUQscUJBQXFCLEVBQUUsc0JBQXNCLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7OztBQUdwTSxNQUFNLE9BQU8saUJBQWlCO0lBUzVCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVI3QyxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFRbEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsT0FBZ0I7UUFDekQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUU5QixJQUFJLEtBQUssR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7UUFFekMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDOUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDcEIsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7WUFDckIsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUc7Z0JBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQkNCSW1wb3J0RWlnZW5zY2hhcCwgQkNCSW1wb3J0T3BlblJlcXVlc3QsIEJDQkltcG9ydE9wZW5SZXNwb25zZSwgQkNCSW1wb3J0U2V0c1ZpZXdNb2RlbCwgQkNCSW1wb3J0U2V0Vmlld01vZGVsLCBDaGFuZ2VJbXBvcnRTZXRSZXF1ZXN0LCBJbXBvcnRBcGlDbGllbnQgfSBmcm9tICcuLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEltcG9ydFNldHNTZXJ2aWNlIHtcclxuICBwdWJsaWMgTG9hZGluZ0ltcG9ydFNldHM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBMb2FkaW5nT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgQkNCSW1wb3J0U2V0c1ZpZXdNb2RlbDogQkNCSW1wb3J0U2V0c1ZpZXdNb2RlbDtcclxuICBwdWJsaWMgQkNCSW1wb3J0T3BlblJlc3BvbnNlOiBCQ0JJbXBvcnRPcGVuUmVzcG9uc2U7XHJcblxyXG4gIHB1YmxpYyBCQ0JJbXBvcnRTZXRTZWxlY3RlZDogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIEltcG9ydEFwaUNsaWVudDogSW1wb3J0QXBpQ2xpZW50KSB7XHJcbiAgICB0aGlzLkxvYWRJbXBvcnRTZXRzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2hhbmdlSW1wb3J0U2V0VmFsdWUodmFsdWU6IHN0cmluZywgZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nSW1wb3J0U2V0cyA9IHRydWU7XHJcblxyXG4gICAgdmFyIG1vZGVsID0gbmV3IENoYW5nZUltcG9ydFNldFJlcXVlc3QoKTtcclxuXHJcbiAgICBtb2RlbC5pbXBvcnRTZXRJZCA9IHRoaXMuQkNCSW1wb3J0U2V0U2VsZWN0ZWQ7XHJcbiAgICBtb2RlbC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgbW9kZWwuZW5hYmxlZCA9IGVuYWJsZWQ7XHJcblxyXG4gICAgdGhpcy5JbXBvcnRBcGlDbGllbnQuY2hhbmdlSW1wb3J0U2V0KG1vZGVsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLkxvYWRJbXBvcnRTZXRzKCk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ0ltcG9ydFNldHMgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIE9wZW4oaWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nT3BlbiA9IHRydWU7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBCQ0JJbXBvcnRPcGVuUmVxdWVzdCgpO1xyXG5cclxuICAgIHJlcXVlc3QuYmNiZWJvSWQgPSBpZDtcclxuXHJcbiAgICB0aGlzLkltcG9ydEFwaUNsaWVudC5vcGVuQkNCUHJvZHVjdChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBCQ0JJbXBvcnRPcGVuUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5CQ0JJbXBvcnRPcGVuUmVzcG9uc2UgPSBtb2RlbDtcclxuICAgICAgdGhpcy5SZWZyZXNoQkNCSW1wb3J0T3BlblJlc3BvbnNlKCk7XHJcbiAgICAgIHRoaXMuTG9hZGluZ09wZW4gPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEFjdGl2ZUltcG9ydFNldCgpOiBCQ0JJbXBvcnRTZXRWaWV3TW9kZWwge1xyXG4gICAgdmFyIGFycmF5ID0gdGhpcy5CQ0JJbXBvcnRTZXRzVmlld01vZGVsPy5iY2JJbXBvcnRTZXRWaWV3TW9kZWxzO1xyXG4gICAgaWYgKGFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChhcnJheVtpXS5pZCA9PSB0aGlzLkJDQkltcG9ydFNldFNlbGVjdGVkKSB7XHJcbiAgICAgICAgICByZXR1cm4gYXJyYXlbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBCQ0JJbXBvcnRTZXRWaWV3TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgTG9hZEltcG9ydFNldHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmdJbXBvcnRTZXRzID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLkltcG9ydEFwaUNsaWVudC5nZXRCQ0JJbXBvcnRTZXRzVmlld01vZGVsKCkuc3Vic2NyaWJlKChtb2RlbDogQkNCSW1wb3J0U2V0c1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLkJDQkltcG9ydFNldHNWaWV3TW9kZWwgPSBtb2RlbDtcclxuXHJcbiAgICAgIGlmICh0aGlzLkJDQkltcG9ydFNldFNlbGVjdGVkID09IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5CQ0JJbXBvcnRTZXRzVmlld01vZGVsPy5iY2JJbXBvcnRTZXRWaWV3TW9kZWxzICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuQkNCSW1wb3J0U2V0U2VsZWN0ZWQgPSB0aGlzLkJDQkltcG9ydFNldHNWaWV3TW9kZWwuYmNiSW1wb3J0U2V0Vmlld01vZGVsc1swXS5pZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5SZWZyZXNoQkNCSW1wb3J0T3BlblJlc3BvbnNlKCk7XHJcbiAgICAgIHRoaXMuTG9hZGluZ0ltcG9ydFNldHMgPSBmYWxzZTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nSW1wb3J0U2V0cyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFJlZnJlc2hCQ0JJbXBvcnRPcGVuUmVzcG9uc2UoKTogdm9pZCB7XHJcbiAgICB2YXIgYXJyYXllaWdlbnNjaGFwcGVuID0gdGhpcy5CQ0JJbXBvcnRPcGVuUmVzcG9uc2U/LmJjYkltcG9ydEVpZ2Vuc2NoYXBwZW47XHJcbiAgICBpZiAoYXJyYXllaWdlbnNjaGFwcGVuICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheWVpZ2Vuc2NoYXBwZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBhcnJheWVpZ2Vuc2NoYXBwZW5baV0uc2VsZWN0ZWQgPSB0aGlzLklzVmFsdWVJblNlbGVjdGVkSW1wb3J0U2V0KGFycmF5ZWlnZW5zY2hhcHBlbltpXS5uYW1lICsgXCJcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgYXJyYXlvcGJvdXcgPSB0aGlzLkJDQkltcG9ydE9wZW5SZXNwb25zZT8uYmNiSW1wb3J0T3Bib3V3ZW47XHJcbiAgICBpZiAoYXJyYXlvcGJvdXcgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5b3Bib3V3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgYXJyYXlvcGJvdXdbaV0uc2VsZWN0ZWQgPSB0aGlzLklzVmFsdWVJblNlbGVjdGVkSW1wb3J0U2V0KGFycmF5b3Bib3V3W2ldLm5hbWUgKyBcIlwiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBJc1ZhbHVlSW5TZWxlY3RlZEltcG9ydFNldCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICB2YXIgaW1wb3J0c2V0ID0gdGhpcy5HZXRBY3RpdmVJbXBvcnRTZXQoKT8uYmNiSW1wb3J0U2V0VmFsdWVWaWV3TW9kZWxzO1xyXG5cclxuICAgIGlmIChpbXBvcnRzZXQgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGltcG9ydHNldC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICgoaW1wb3J0c2V0W2ldLnZhbHVlICsgXCJcIikudG9Mb3dlckNhc2UoKSA9PSB2YWx1ZS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0c2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9zZXJ2aWNlcy9pbXBvcnRzZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUF1QixvQkFBb0IsRUFBaUQscUJBQXFCLEVBQUUsc0JBQXNCLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7OztBQUlwTSxNQUFNLE9BQU8saUJBQWlCO0lBVzVCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVY3QyxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFPN0Isb0JBQWUsR0FBMkIsSUFBSSxDQUFDO0lBR3RELENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsT0FBZ0IsRUFBRSxpQkFBb0M7UUFDL0YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVsQyxJQUFJLEtBQUssR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7UUFFekMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDOUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDcEIsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekMsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7WUFDckIsSUFBSSxL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LFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRTtvQkFDbEUsT0FBTyxJQUFJLENBQUM7aUJBQ2I7YUFDRjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs4R0FoSVUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FESixNQUFNOzJGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJDQkltcG9ydEVpZ2Vuc2NoYXAsIEJDQkltcG9ydE9wZW5SZXF1ZXN0LCBCQ0JJbXBvcnRPcGVuUmVzcG9uc2UsIEJDQkltcG9ydFNldHNWaWV3TW9kZWwsIEJDQkltcG9ydFNldFZpZXdNb2RlbCwgQ2hhbmdlSW1wb3J0U2V0UmVxdWVzdCwgSW1wb3J0QXBpQ2xpZW50IH0gZnJvbSAnLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgUHJvZHVjdHNTZXJ2aWNlIH0gZnJvbSAnLi9wcm9kdWN0cy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBJbXBvcnRTZXRzU2VydmljZSB7XHJcbiAgcHVibGljIExvYWRpbmdJbXBvcnRTZXRzOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgTG9hZGluZ09wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIEJDQkltcG9ydFNldHNWaWV3TW9kZWw6IEJDQkltcG9ydFNldHNWaWV3TW9kZWw7XHJcbiAgcHVibGljIEJDQkltcG9ydE9wZW5SZXNwb25zZTogQkNCSW1wb3J0T3BlblJlc3BvbnNlO1xyXG5cclxuICBwdWJsaWMgQkNCSW1wb3J0U2V0U2VsZWN0ZWQ6IG51bWJlcjtcclxuXHJcbiAgcHVibGljIFByb2R1Y3RzU2VydmljZTogUHJvZHVjdHNTZXJ2aWNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgSW1wb3J0QXBpQ2xpZW50OiBJbXBvcnRBcGlDbGllbnQpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBDaGFuZ2VJbXBvcnRTZXRWYWx1ZSh2YWx1ZTogc3RyaW5nLCBlbmFibGVkOiBib29sZWFuLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZ0ltcG9ydFNldHMgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciBtb2RlbCA9IG5ldyBDaGFuZ2VJbXBvcnRTZXRSZXF1ZXN0KCk7XHJcblxyXG4gICAgbW9kZWwuaW1wb3J0U2V0SWQgPSB0aGlzLkJDQkltcG9ydFNldFNlbGVjdGVkO1xyXG4gICAgbW9kZWwudmFsdWUgPSB2YWx1ZTtcclxuICAgIG1vZGVsLmVuYWJsZWQgPSBlbmFibGVkO1xyXG5cclxuICAgIHRoaXMuSW1wb3J0QXBpQ2xpZW50LmNoYW5nZUltcG9ydFNldChtb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5Mb2FkSW1wb3J0U2V0cyhDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ0ltcG9ydFNldHMgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgT3BlbihpZDogbnVtYmVyLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZ09wZW4gPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEJDQkltcG9ydE9wZW5SZXF1ZXN0KCk7XHJcblxyXG4gICAgcmVxdWVzdC5iY2JlYm9JZCA9IGlkO1xyXG5cclxuICAgIHRoaXMuSW1wb3J0QXBpQ2xpZW50Lm9wZW5CQ0JQcm9kdWN0KHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEJDQkltcG9ydE9wZW5SZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLkJDQkltcG9ydE9wZW5SZXNwb25zZSA9IG1vZGVsO1xyXG4gICAgICB0aGlzLlJlZnJlc2hCQ0JJbXBvcnRPcGVuUmVzcG9uc2UoKTtcclxuICAgICAgdGhpcy5Mb2FkaW5nT3BlbiA9IGZhbHNlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVJbXBvcnRTZXQoKTogQkNCSW1wb3J0U2V0Vmlld01vZGVsIHtcclxuICAgIHZhciBhcnJheSA9IHRoaXMuQkNCSW1wb3J0U2V0c1ZpZXdNb2RlbD8uYmNiSW1wb3J0U2V0Vmlld01vZGVscztcclxuICAgIGlmIChhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoYXJyYXlbaV0uaWQgPT0gdGhpcy5CQ0JJbXBvcnRTZXRTZWxlY3RlZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGFycmF5W2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgQkNCSW1wb3J0U2V0Vmlld01vZGVsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZEltcG9ydFNldHMoQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmdJbXBvcnRTZXRzID0gdHJ1ZTtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLkltcG9ydEFwaUNsaWVudC5nZXRCQ0JJbXBvcnRTZXRzVmlld01vZGVsKCkuc3Vic2NyaWJlKChtb2RlbDogQkNCSW1wb3J0U2V0c1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLkJDQkltcG9ydFNldHNWaWV3TW9kZWwgPSBtb2RlbDtcclxuXHJcbiAgICAgIGlmICh0aGlzLkJDQkltcG9ydFNldFNlbGVjdGVkID09IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5CQ0JJbXBvcnRTZXRzVmlld01vZGVsPy5iY2JJbXBvcnRTZXRWaWV3TW9kZWxzICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuQkNCSW1wb3J0U2V0U2VsZWN0ZWQgPSB0aGlzLkJDQkltcG9ydFNldHNWaWV3TW9kZWwuYmNiSW1wb3J0U2V0Vmlld01vZGVsc1swXS5pZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5SZWZyZXNoQkNCSW1wb3J0T3BlblJlc3BvbnNlKCk7XHJcbiAgICAgIHRoaXMuTG9hZGluZ0ltcG9ydFNldHMgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuUHJvZHVjdHNTZXJ2aWNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlByb2R1Y3RzU2VydmljZS5SZWxvYWQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICB9XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ0ltcG9ydFNldHMgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFJlZnJlc2hCQ0JJbXBvcnRPcGVuUmVzcG9uc2UoKTogdm9pZCB7XHJcbiAgICB2YXIgYXJyYXllaWdlbnNjaGFwcGVuID0gdGhpcy5CQ0JJbXBvcnRPcGVuUmVzcG9uc2U/LmJjYkltcG9ydEVpZ2Vuc2NoYXBwZW47XHJcbiAgICBpZiAoYXJyYXllaWdlbnNjaGFwcGVuICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheWVpZ2Vuc2NoYXBwZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBhcnJheWVpZ2Vuc2NoYXBwZW5baV0uc2VsZWN0ZWQgPSB0aGlzLklzVmFsdWVJblNlbGVjdGVkSW1wb3J0U2V0KGFycmF5ZWlnZW5zY2hhcHBlbltpXS5uYW1lICsgXCJcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgYXJyYXlvcGJvdXcgPSB0aGlzLkJDQkltcG9ydE9wZW5SZXNwb25zZT8uYmNiSW1wb3J0T3Bib3V3ZW47XHJcbiAgICBpZiAoYXJyYXlvcGJvdXcgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5b3Bib3V3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgYXJyYXlvcGJvdXdbaV0uc2VsZWN0ZWQgPSB0aGlzLklzVmFsdWVJblNlbGVjdGVkSW1wb3J0U2V0KGFycmF5b3Bib3V3W2ldLm5hbWUgKyBcIlwiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBJc1ZhbHVlSW5TZWxlY3RlZEltcG9ydFNldCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICB2YXIgaW1wb3J0c2V0ID0gdGhpcy5HZXRBY3RpdmVJbXBvcnRTZXQoKT8uYmNiSW1wb3J0U2V0VmFsdWVWaWV3TW9kZWxzO1xyXG5cclxuICAgIGlmIChpbXBvcnRzZXQgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGltcG9ydHNldC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICgoaW1wb3J0c2V0W2ldLnZhbHVlICsgXCJcIikudG9Mb3dlckNhc2UoKSA9PSB2YWx1ZS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -10,6 +10,7 @@ export class ProductsService {
10
10
  this.LoadingProducts = false;
11
11
  this.BCBProductViewModel = undefined;
12
12
  this.ProductViewModel = undefined;
13
+ this.ImportSetsService.ProductsService = this;
13
14
  }
14
15
  Loading() {
15
16
  return this.LoadingProducts;
@@ -28,18 +29,19 @@ export class ProductsService {
28
29
  }
29
30
  return new Array();
30
31
  }
31
- Reload() {
32
- this.LoadProducts();
32
+ Reload(changeDetectorRef) {
33
+ this.LoadProducts(changeDetectorRef);
33
34
  }
34
- SaveProductViewModel(product) {
35
+ SaveProductViewModel(product, changeDetectorRef) {
35
36
  var model = new SaveProductViewModel();
36
37
  model.id = product.id;
37
38
  model.name = product.name;
38
39
  model.position = product.position;
39
40
  model.importSetId = parseInt(product.importSetId.toString());
40
41
  this.LoadingProducts = true;
42
+ changeDetectorRef.detectChanges();
41
43
  this.ProductsApiClient.saveProduct(model).subscribe(() => {
42
- this.LoadProducts();
44
+ this.LoadProducts(changeDetectorRef);
43
45
  }, (error) => {
44
46
  if (error.status == 400)
45
47
  console.log(error.json());
@@ -48,9 +50,10 @@ export class ProductsService {
48
50
  console.log(error);
49
51
  }
50
52
  this.LoadingProducts = false;
53
+ changeDetectorRef.detectChanges();
51
54
  });
52
55
  }
53
- ResetImport(productid, bcbproductid) {
56
+ ResetImport(productid, bcbproductid, changeDetectorRef) {
54
57
  var model = new ResetImportRequestModel();
55
58
  model.productId = productid;
56
59
  model.bcbProductId = bcbproductid;
@@ -58,8 +61,9 @@ export class ProductsService {
58
61
  model.bcbImportSetId = this.ImportSetsService.BCBImportSetSelected;
59
62
  }
60
63
  this.LoadingProducts = true;
64
+ changeDetectorRef.detectChanges();
61
65
  this.ProductsApiClient.resetImport(model).subscribe(() => {
62
- this.LoadProducts();
66
+ this.LoadProducts(changeDetectorRef);
63
67
  }, (error) => {
64
68
  if (error.status == 400)
65
69
  console.log(error.json());
@@ -68,6 +72,7 @@ export class ProductsService {
68
72
  console.log(error);
69
73
  }
70
74
  this.LoadingProducts = false;
75
+ changeDetectorRef.detectChanges();
71
76
  });
72
77
  }
73
78
  CleanUp() {
@@ -85,13 +90,15 @@ export class ProductsService {
85
90
  this.LoadingProducts = false;
86
91
  });
87
92
  }
88
- LoadProducts() {
93
+ LoadProducts(changeDetectorRef) {
89
94
  if (this.ImportSetsService.BCBImportSetSelected != undefined) {
90
95
  this.LoadingProducts = true;
91
96
  var request = new ProductsViewModelRequest();
92
97
  request.importSetId = this.ImportSetsService.BCBImportSetSelected;
98
+ changeDetectorRef.detectChanges();
93
99
  this.ProductsApiClient.getProductsViewModel(request).subscribe((model) => {
94
100
  this.ProductsViewModel = model;
101
+ changeDetectorRef.detectChanges();
95
102
  var array = this.ProductsViewModel.productViewModels;
96
103
  if (array != null) {
97
104
  if (array.length > 0) {
@@ -122,6 +129,7 @@ export class ProductsService {
122
129
  }
123
130
  }
124
131
  this.LoadingProducts = false;
132
+ changeDetectorRef.detectChanges();
125
133
  }, (error) => {
126
134
  if (error.status == 400)
127
135
  console.log(error.json());
@@ -130,6 +138,7 @@ export class ProductsService {
130
138
  console.log(error);
131
139
  }
132
140
  this.LoadingProducts = false;
141
+ changeDetectorRef.detectChanges();
133
142
  });
134
143
  }
135
144
  }
@@ -169,8 +178,16 @@ export class ProductsService {
169
178
  }
170
179
  }
171
180
  MergeBCBProductViewModel(newproduct, oldproduct) {
172
- this.MergeBCBProductViewModelEigenschap(newproduct?.bcbProductEigenschapViewModels, oldproduct?.bcbProductEigenschapViewModels);
173
- this.MergeBCBProductViewModelOpbouw(newproduct?.bcbProductOpbouwViewModels, oldproduct?.bcbProductOpbouwViewModels);
181
+ //this.MergeBCBProductViewModelEigenschap(newproduct?.bcbProductEigenschapViewModels, oldproduct?.bcbProductEigenschapViewModels);
182
+ //this.MergeBCBProductViewModelOpbouw(newproduct?.bcbProductOpbouwViewModels, oldproduct?.bcbProductOpbouwViewModels);
183
+ if (newproduct?.bcbeboViewModel != null && oldproduct?.bcbeboViewModel != null) {
184
+ newproduct.bcbeboViewModel.open = oldproduct.bcbeboViewModel.open;
185
+ this.MergeBCBEBO(newproduct.bcbeboViewModel, oldproduct.bcbeboViewModel);
186
+ }
187
+ }
188
+ MergeBCBEBO(newproduct, oldproduct) {
189
+ this.MergeBCBProductViewModelEigenschap(newproduct?.bcbEigenschapViewModels, oldproduct?.bcbEigenschapViewModels);
190
+ this.MergeBCBProductViewModelOpbouw(newproduct?.bcbOpbouwViewModels, oldproduct?.bcbOpbouwViewModels);
174
191
  }
175
192
  MergeBCBProductViewModelEigenschap(newproduct, oldproduct) {
176
193
  if (newproduct != null && oldproduct != null) {
@@ -189,20 +206,13 @@ export class ProductsService {
189
206
  for (var p = 0; p < oldproduct.length; p++) {
190
207
  if (newproduct[j].id == oldproduct[p].id) {
191
208
  newproduct[j].open = oldproduct[p].open;
192
- this.MergeBCBProductViewModelOpbouwOpties(newproduct[j].opties, oldproduct[p].opties);
193
- }
194
- }
195
- }
196
- }
197
- }
198
- MergeBCBProductViewModelOpbouwOpties(newproduct, oldproduct) {
199
- if (newproduct != null && oldproduct != null) {
200
- for (var j = 0; j < newproduct.length; j++) {
201
- for (var p = 0; p < oldproduct.length; p++) {
202
- if (newproduct[j].id == oldproduct[p].id) {
203
- newproduct[j].open = oldproduct[p].open;
204
- this.MergeBCBProductViewModelEigenschap(newproduct[j]?.bcbProductEigenschapViewModels, oldproduct[p]?.bcbProductEigenschapViewModels);
205
- this.MergeBCBProductViewModelOpbouw(newproduct[j]?.bcbProductOpbouwViewModels, oldproduct[p]?.bcbProductOpbouwViewModels);
209
+ var ebosnew = newproduct[j].ebos;
210
+ var ebosold = oldproduct[p].ebos;
211
+ if (ebosnew != null && ebosold != null) {
212
+ for (var o = 0; o < ebosnew.length; o++) {
213
+ this.MergeBCBEBO(ebosnew[o], ebosold[o]);
214
+ }
215
+ }
206
216
  }
207
217
  }
208
218
  }
@@ -215,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImpor
215
225
  type: Injectable,
216
226
  args: [{ providedIn: 'root' }]
217
227
  }], ctorParameters: function () { return [{ type: i1.ProductsApiClient }, { type: i2.ImportSetsService }]; } });
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvcHJvZHVjdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQThELHVCQUF1QixFQUF1QixvQkFBb0IsRUFBNkQsaUJBQWlCLEVBQTRGLHdCQUF3QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHNVcsTUFBTSxPQUFPLGVBQWU7SUFZMUIsWUFBb0IsaUJBQW9DLEVBQVUsaUJBQW9DO1FBQWxGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVjlGLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBSWxDLHdCQUFtQixHQUF5QixTQUFTLENBQUM7UUFDdEQscUJBQWdCLEdBQXNCLFNBQVMsQ0FBQztJQU12RCxDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRU0sc0JBQXNCO1FBQzNCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUMzQyxJQUFJLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENB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ZURldGVjdG9yUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEltcG9ydFNldHNTZXJ2aWNlIH0gZnJvbSAnLi9pbXBvcnRzZXRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGVhblVwUmVzcG9uc2VNb2RlbCwgUHJvZHVjdHNBcGlDbGllbnQsIFByb2R1Y3RzVmlld01vZGVsLCBSZXNldEltcG9ydFJlcXVlc3RNb2RlbCwgQkNCUHJvZHVjdFZpZXdNb2RlbCwgU2F2ZVByb2R1Y3RWaWV3TW9kZWwsIEJDQkltcG9ydFNldHNWaWV3TW9kZWwsIEltcG9ydEFwaUNsaWVudCwgUHJvZHVjdFZpZXdNb2RlbCwgR2V0UHJvZHVjdFJlcXVlc3QsIEJDQlByb2R1Y3RFaWdlbnNjaGFwVmlld01vZGVsLCBCQ0JQcm9kdWN0T3Bib3V3Vmlld01vZGVsLCBCQ0JQcm9kdWN0T3Bib3V3T3B0aWVWaWV3TW9kZWwsIFByb2R1Y3RzVmlld01vZGVsUmVxdWVzdCB9IGZyb20gJy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdHNTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBMb2FkaW5nUHJvZHVjdHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIFByb2R1Y3RzVmlld01vZGVsOiBQcm9kdWN0c1ZpZXdNb2RlbDtcclxuXHJcbiAgcHVibGljIEJDQlByb2R1Y3RWaWV3TW9kZWw/OiBCQ0JQcm9kdWN0Vmlld01vZGVsID0gdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBQcm9kdWN0Vmlld01vZGVsPzogUHJvZHVjdFZpZXdNb2RlbCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgcHVibGljIFByb2R1Y3RTZWxlY3RlZDogbnVtYmVyO1xyXG4gIHB1YmxpYyBCQ0JQcm9kdWN0U2VsZWN0ZWQ6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBQcm9kdWN0c0FwaUNsaWVudDogUHJvZHVjdHNBcGlDbGllbnQsIHByaXZhdGUgSW1wb3J0U2V0c1NlcnZpY2U6IEltcG9ydFNldHNTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZGluZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkxvYWRpbmdQcm9kdWN0cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRCQ0JQcm9kdWN0c1NlbGVjdGVkKCk6IEFycmF5PEJDQlByb2R1Y3RWaWV3TW9kZWw+IHtcclxuICAgIHZhciBhcnJheXRlbXAgPSB0aGlzLlByb2R1Y3RzVmlld01vZGVsPy5wcm9kdWN0Vmlld01vZGVscztcclxuXHJcbiAgICBpZiAodGhpcy5Qcm9kdWN0U2VsZWN0ZWQgIT0gbnVsbCAmJiBhcnJheXRlbXAgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5dGVtcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChhcnJheXRlbXBbaV0uaWQgPT0gdGhpcy5Qcm9kdWN0U2VsZWN0ZWQpIHtcclxuICAgICAgICAgIHZhciBhcnJheXRlbXAyID0gYXJyYXl0ZW1wW2ldLmJjYlByb2R1Y3RWaWV3TW9kZWxzO1xyXG4gICAgICAgICAgaWYgKGFycmF5dGVtcDIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXJyYXl0ZW1wMjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IEFycmF5PEJDQlByb2R1Y3RWaWV3TW9kZWw+KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVsb2FkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkUHJvZHVjdHMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTYXZlUHJvZHVjdFZpZXdNb2RlbChwcm9kdWN0OiBQcm9kdWN0Vmlld01vZGVsKSB7XHJcbiAgICB2YXIgbW9kZWwgPSBuZXcgU2F2ZVByb2R1Y3RWaWV3TW9kZWwoKTtcclxuICAgIG1vZGVsLmlkID0gcHJvZHVjdC5pZDtcclxuICAgIG1vZGVsLm5hbWUgPSBwcm9kdWN0Lm5hbWU7XHJcbiAgICBtb2RlbC5wb3NpdGlvbiA9IHByb2R1Y3QucG9zaXRpb247XHJcbiAgICBtb2RlbC5pbXBvcnRTZXRJZCA9IHBhcnNlSW50KHByb2R1Y3QuaW1wb3J0U2V0SWQudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQuc2F2ZVByb2R1Y3QobW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9hZFByb2R1Y3RzKCk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZXNldEltcG9ydChwcm9kdWN0aWQ6IG51bWJlciwgYmNicHJvZHVjdGlkOiBudW1iZXIpIHtcclxuICAgIHZhciBtb2RlbCA9IG5ldyBSZXNldEltcG9ydFJlcXVlc3RNb2RlbCgpO1xyXG4gICAgbW9kZWwucHJvZHVjdElkID0gcHJvZHVjdGlkO1xyXG4gICAgbW9kZWwuYmNiUHJvZHVjdElkID0gYmNicHJvZHVjdGlkO1xyXG5cclxuICAgIGlmIChwcm9kdWN0aWQgPT0gLTEgJiYgYmNicHJvZHVjdGlkID09IC0xKSB7XHJcbiAgICAgIG1vZGVsLmJjYkltcG9ydFNldElkID0gdGhpcy5JbXBvcnRTZXRzU2VydmljZS5CQ0JJbXBvcnRTZXRTZWxlY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5yZXNldEltcG9ydChtb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5Mb2FkUHJvZHVjdHMoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENsZWFuVXAoKSB7XHJcbiAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5jbGVhblVwKCkuc3Vic2NyaWJlKChtb2RlbDogQ2xlYW5VcFJlc3BvbnNlTW9kZWwpID0+IHtcclxuICAgICAgYWxlcnQoXCJCQ0JFQk86IFwiICsgbW9kZWwuZGVsZXRlQkNCRUJPcyArIFwiIEJDQkVpZ2Vuc2NoYXA6IFwiICsgbW9kZWwuZGVsZXRlQkNCRWlnZW5zY2hhcHBlbiArIFwiIEJDQk9wYm91dzogXCIgKyBtb2RlbC5kZWxldGVCQ0JPcGJvdXdlbik7XHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgTG9hZFByb2R1Y3RzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuSW1wb3J0U2V0c1NlcnZpY2UuQkNCSW1wb3J0U2V0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gdHJ1ZTtcclxuXHJcbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFByb2R1Y3RzVmlld01vZGVsUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5pbXBvcnRTZXRJZCA9IHRoaXMuSW1wb3J0U2V0c1NlcnZpY2UuQkNCSW1wb3J0U2V0U2VsZWN0ZWQ7XHJcblxyXG4gICAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LmdldFByb2R1Y3RzVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IFByb2R1Y3RzVmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Qcm9kdWN0c1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgICB2YXIgYXJyYXkgPSB0aGlzLlByb2R1Y3RzVmlld01vZGVsLnByb2R1Y3RWaWV3TW9kZWxzO1xyXG5cclxuICAgICAgICBpZiAoYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKGFycmF5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5Qcm9kdWN0U2VsZWN0ZWQgPSBhcnJheVswXS5pZDtcclxuXHJcbiAgICAgICAgICAgIHZhciBhcnJheTIgPSBhcnJheVswXS5iY2JQcm9kdWN0Vmlld01vZGVscztcclxuXHJcbiAgICAgICAgICAgIGlmIChhcnJheTIgIT0gbnVsbCAmJiBhcnJheTIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuQkNCUHJvZHVjdFNlbGVjdGVkID0gYXJyYXkyWzBdLmlkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQgfHwgdGhpcy5Qcm9kdWN0Vmlld01vZGVsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGFycmF5aW5uZXIgPSBhcnJheVtpXS5iY2JQcm9kdWN0Vmlld01vZGVscztcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcnJheVtpXS5pZCA9PSB0aGlzLlByb2R1Y3RWaWV3TW9kZWwuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5Qcm9kdWN0Vmlld01vZGVsID0gYXJyYXlbaV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAodGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFycmF5aW5uZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFycmF5aW5uZXIubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlpbm5lcltqXS5pZCA9PSB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCA9IGFycmF5aW5uZXJbal07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFByb2R1Y3QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5Qcm9kdWN0Vmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgR2V0UHJvZHVjdFJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5pZCA9IHRoaXMuUHJvZHVjdFZpZXdNb2RlbC5pZDtcclxuXHJcbiAgICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQuZ2V0UHJvZHVjdFZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBQcm9kdWN0Vmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Qcm9kdWN0Vmlld01vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkIHx8IHRoaXMuUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHZhciBvbGQgPSB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWw7XHJcblxyXG4gICAgICAgICAgdmFyIGFycmF5aW5uZXIgPSB0aGlzLlByb2R1Y3RWaWV3TW9kZWwuYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKGFycmF5aW5uZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyYXlpbm5lci5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFycmF5aW5uZXJbal0uaWQgPT0gdGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCA9IGFycmF5aW5uZXJbal07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSBudWxsICYmIG9sZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCwgb2xkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsKG5ld3Byb2R1Y3Q6IEJDQlByb2R1Y3RWaWV3TW9kZWwsIG9sZHByb2R1Y3Q6IEJDQlByb2R1Y3RWaWV3TW9kZWwpIHtcclxuICAgIHRoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsRWlnZW5zY2hhcChuZXdwcm9kdWN0Py5iY2JQcm9kdWN0RWlnZW5zY2hhcFZpZXdNb2RlbHMsIG9sZHByb2R1Y3Q/LmJjYlByb2R1Y3RFaWdlbnNjaGFwVmlld01vZGVscyk7XHJcbiAgICB0aGlzLk1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbE9wYm91dyhuZXdwcm9kdWN0Py5iY2JQcm9kdWN0T3Bib3V3Vmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiUHJvZHVjdE9wYm91d1ZpZXdNb2RlbHMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBNZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxFaWdlbnNjaGFwKG5ld3Byb2R1Y3Q6IEJDQlByb2R1Y3RFaWdlbnNjaGFwVmlld01vZGVsW10gfCB1bmRlZmluZWQsIG9sZHByb2R1Y3Q6IEJDQlByb2R1Y3RFaWdlbnNjaGFwVmlld01vZGVsW10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChuZXdwcm9kdWN0ICE9IG51bGwgJiYgb2xkcHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmV3cHJvZHVjdC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgb2xkcHJvZHVjdC5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgaWYgKG5ld3Byb2R1Y3Rbal0uaWQgPT0gb2xkcHJvZHVjdFtwXS5pZCkge1xyXG4gICAgICAgICAgICBuZXdwcm9kdWN0W2pdLm9wZW4gPSBvbGRwcm9kdWN0W3BdLm9wZW47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIE1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbE9wYm91dyhuZXdwcm9kdWN0OiBCQ0JQcm9kdWN0T3Bib3V3Vmlld01vZGVsW10gfCB1bmRlZmluZWQsIG9sZHByb2R1Y3Q6IEJDQlByb2R1Y3RPcGJvdXdWaWV3TW9kZWxbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKG5ld3Byb2R1Y3QgIT0gbnVsbCAmJiBvbGRwcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuZXdwcm9kdWN0Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBvbGRwcm9kdWN0Lmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgICBpZiAobmV3cHJvZHVjdFtqXS5pZCA9PSBvbGRwcm9kdWN0W3BdLmlkKSB7XHJcbiAgICAgICAgICAgIG5ld3Byb2R1Y3Rbal0ub3BlbiA9IG9sZHByb2R1Y3RbcF0ub3BlbjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsT3Bib3V3T3B0aWVzKG5ld3Byb2R1Y3Rbal0ub3B0aWVzLCBvbGRwcm9kdWN0W3BdLm9wdGllcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIE1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbE9wYm91d09wdGllcyhuZXdwcm9kdWN0OiBCQ0JQcm9kdWN0T3Bib3V3T3B0aWVWaWV3TW9kZWxbXSB8IHVuZGVmaW5lZCwgb2xkcHJvZHVjdDogQkNCUHJvZHVjdE9wYm91d09wdGllVmlld01vZGVsW10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChuZXdwcm9kdWN0ICE9IG51bGwgJiYgb2xkcHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmV3cHJvZHVjdC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgb2xkcHJvZHVjdC5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgaWYgKG5ld3Byb2R1Y3Rbal0uaWQgPT0gb2xkcHJvZHVjdFtwXS5pZCkge1xyXG4gICAgICAgICAgICBuZXdwcm9kdWN0W2pdLm9wZW4gPSBvbGRwcm9kdWN0W3BdLm9wZW47XHJcblxyXG4gICAgICAgICAgICB0aGlzLk1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbEVpZ2Vuc2NoYXAobmV3cHJvZHVjdFtqXT8uYmNiUHJvZHVjdEVpZ2Vuc2NoYXBWaWV3TW9kZWxzLCBvbGRwcm9kdWN0W3BdPy5iY2JQcm9kdWN0RWlnZW5zY2hhcFZpZXdNb2RlbHMpO1xyXG4gICAgICAgICAgICB0aGlzLk1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbE9wYm91dyhuZXdwcm9kdWN0W2pdPy5iY2JQcm9kdWN0T3Bib3V3Vmlld01vZGVscywgb2xkcHJvZHVjdFtwXT8uYmNiUHJvZHVjdE9wYm91d1ZpZXdNb2RlbHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvcHJvZHVjdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQThELHVCQUF1QixFQUF1QixvQkFBb0IsRUFBNkQsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQStELE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHL1UsTUFBTSxPQUFPLGVBQWU7SUFZMUIsWUFBb0IsaUJBQW9DLEVBQVUsaUJBQW9DO1FBQWxGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVjlGLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBSWxDLHdCQUFtQixHQUF5QixTQUFTLENBQUM7UUFDdEQscUJBQWdCLEdBQXNCLFNBQVMsQ0FBQztRQU1yRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRU0sc0JBQXNCO1FBQzNCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUMzQyxJ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QUFDLEVBQUUsRUFBRTtnQ0FDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQzFDO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzRHQTFRVSxlQUFlO2dIQUFmLGVBQWUsY0FERixNQUFNOzJGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEltcG9ydFNldHNTZXJ2aWNlIH0gZnJvbSAnLi9pbXBvcnRzZXRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGVhblVwUmVzcG9uc2VNb2RlbCwgUHJvZHVjdHNBcGlDbGllbnQsIFByb2R1Y3RzVmlld01vZGVsLCBSZXNldEltcG9ydFJlcXVlc3RNb2RlbCwgQkNCUHJvZHVjdFZpZXdNb2RlbCwgU2F2ZVByb2R1Y3RWaWV3TW9kZWwsIEJDQkltcG9ydFNldHNWaWV3TW9kZWwsIEltcG9ydEFwaUNsaWVudCwgUHJvZHVjdFZpZXdNb2RlbCwgR2V0UHJvZHVjdFJlcXVlc3QsIFByb2R1Y3RzVmlld01vZGVsUmVxdWVzdCwgQkNCRUJPVmlld01vZGVsLCBCQ0JFaWdlbnNjaGFwVmlld01vZGVsLCBCQ0JPcGJvdXdWaWV3TW9kZWwgfSBmcm9tICcuLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RzU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgTG9hZGluZ1Byb2R1Y3RzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBQcm9kdWN0c1ZpZXdNb2RlbDogUHJvZHVjdHNWaWV3TW9kZWw7XHJcblxyXG4gIHB1YmxpYyBCQ0JQcm9kdWN0Vmlld01vZGVsPzogQkNCUHJvZHVjdFZpZXdNb2RlbCA9IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgUHJvZHVjdFZpZXdNb2RlbD86IFByb2R1Y3RWaWV3TW9kZWwgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBQcm9kdWN0U2VsZWN0ZWQ6IG51bWJlcjtcclxuICBwdWJsaWMgQkNCUHJvZHVjdFNlbGVjdGVkOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgUHJvZHVjdHNBcGlDbGllbnQ6IFByb2R1Y3RzQXBpQ2xpZW50LCBwcml2YXRlIEltcG9ydFNldHNTZXJ2aWNlOiBJbXBvcnRTZXRzU2VydmljZSkge1xyXG4gICAgdGhpcy5JbXBvcnRTZXRzU2VydmljZS5Qcm9kdWN0c1NlcnZpY2UgPSB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5Mb2FkaW5nUHJvZHVjdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QkNCUHJvZHVjdHNTZWxlY3RlZCgpOiBBcnJheTxCQ0JQcm9kdWN0Vmlld01vZGVsPiB7XHJcbiAgICB2YXIgYXJyYXl0ZW1wID0gdGhpcy5Qcm9kdWN0c1ZpZXdNb2RlbD8ucHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgaWYgKHRoaXMuUHJvZHVjdFNlbGVjdGVkICE9IG51bGwgJiYgYXJyYXl0ZW1wICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheXRlbXAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoYXJyYXl0ZW1wW2ldLmlkID09IHRoaXMuUHJvZHVjdFNlbGVjdGVkKSB7XHJcbiAgICAgICAgICB2YXIgYXJyYXl0ZW1wMiA9IGFycmF5dGVtcFtpXS5iY2JQcm9kdWN0Vmlld01vZGVscztcclxuICAgICAgICAgIGlmIChhcnJheXRlbXAyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGFycmF5dGVtcDI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBBcnJheTxCQ0JQcm9kdWN0Vmlld01vZGVsPigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlbG9hZChjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZFByb2R1Y3RzKGNoYW5nZURldGVjdG9yUmVmKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTYXZlUHJvZHVjdFZpZXdNb2RlbChwcm9kdWN0OiBQcm9kdWN0Vmlld01vZGVsLCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHZhciBtb2RlbCA9IG5ldyBTYXZlUHJvZHVjdFZpZXdNb2RlbCgpO1xyXG4gICAgbW9kZWwuaWQgPSBwcm9kdWN0LmlkO1xyXG4gICAgbW9kZWwubmFtZSA9IHByb2R1Y3QubmFtZTtcclxuICAgIG1vZGVsLnBvc2l0aW9uID0gcHJvZHVjdC5wb3NpdGlvbjtcclxuICAgIG1vZGVsLmltcG9ydFNldElkID0gcGFyc2VJbnQocHJvZHVjdC5pbXBvcnRTZXRJZC50b1N0cmluZygpKTtcclxuXHJcbiAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcbiAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5zYXZlUHJvZHVjdChtb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5Mb2FkUHJvZHVjdHMoY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZXNldEltcG9ydChwcm9kdWN0aWQ6IG51bWJlciwgYmNicHJvZHVjdGlkOiBudW1iZXIsIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdmFyIG1vZGVsID0gbmV3IFJlc2V0SW1wb3J0UmVxdWVzdE1vZGVsKCk7XHJcbiAgICBtb2RlbC5wcm9kdWN0SWQgPSBwcm9kdWN0aWQ7XHJcbiAgICBtb2RlbC5iY2JQcm9kdWN0SWQgPSBiY2Jwcm9kdWN0aWQ7XHJcblxyXG4gICAgaWYgKHByb2R1Y3RpZCA9PSAtMSAmJiBiY2Jwcm9kdWN0aWQgPT0gLTEpIHtcclxuICAgICAgbW9kZWwuYmNiSW1wb3J0U2V0SWQgPSB0aGlzLkltcG9ydFNldHNTZXJ2aWNlLkJDQkltcG9ydFNldFNlbGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gdHJ1ZTtcclxuICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LnJlc2V0SW1wb3J0KG1vZGVsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLkxvYWRQcm9kdWN0cyhjaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENsZWFuVXAoKSB7XHJcbiAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5Qcm9kdWN0c0FwaUNsaWVudC5jbGVhblVwKCkuc3Vic2NyaWJlKChtb2RlbDogQ2xlYW5VcFJlc3BvbnNlTW9kZWwpID0+IHtcclxuICAgICAgYWxlcnQoXCJCQ0JFQk86IFwiICsgbW9kZWwuZGVsZXRlQkNCRUJPcyArIFwiIEJDQkVpZ2Vuc2NoYXA6IFwiICsgbW9kZWwuZGVsZXRlQkNCRWlnZW5zY2hhcHBlbiArIFwiIEJDQk9wYm91dzogXCIgKyBtb2RlbC5kZWxldGVCQ0JPcGJvdXdlbik7XHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgTG9hZFByb2R1Y3RzKGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuSW1wb3J0U2V0c1NlcnZpY2UuQkNCSW1wb3J0U2V0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gdHJ1ZTtcclxuXHJcbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFByb2R1Y3RzVmlld01vZGVsUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5pbXBvcnRTZXRJZCA9IHRoaXMuSW1wb3J0U2V0c1NlcnZpY2UuQkNCSW1wb3J0U2V0U2VsZWN0ZWQ7XHJcblxyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICB0aGlzLlByb2R1Y3RzQXBpQ2xpZW50LmdldFByb2R1Y3RzVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IFByb2R1Y3RzVmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Qcm9kdWN0c1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG4gICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgdmFyIGFycmF5ID0gdGhpcy5Qcm9kdWN0c1ZpZXdNb2RlbC5wcm9kdWN0Vmlld01vZGVscztcclxuXHJcbiAgICAgICAgaWYgKGFycmF5ICE9IG51bGwpIHtcclxuICAgICAgICAgIGlmIChhcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuUHJvZHVjdFNlbGVjdGVkID0gYXJyYXlbMF0uaWQ7XHJcblxyXG4gICAgICAgICAgICB2YXIgYXJyYXkyID0gYXJyYXlbMF0uYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgICAgICBpZiAoYXJyYXkyICE9IG51bGwgJiYgYXJyYXkyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLkJDQlByb2R1Y3RTZWxlY3RlZCA9IGFycmF5MlswXS5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkIHx8IHRoaXMuUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIHZhciBhcnJheWlubmVyID0gYXJyYXlbaV0uYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJyYXlbaV0uaWQgPT0gdGhpcy5Qcm9kdWN0Vmlld01vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuUHJvZHVjdFZpZXdNb2RlbCA9IGFycmF5W2ldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhcnJheWlubmVyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhcnJheWlubmVyLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFycmF5aW5uZXJbal0uaWQgPT0gdGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgPSBhcnJheWlubmVyW2pdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSBmYWxzZTtcclxuICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFByb2R1Y3QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5Qcm9kdWN0Vmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5Mb2FkaW5nUHJvZHVjdHMgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgR2V0UHJvZHVjdFJlcXVlc3QoKTtcclxuICAgICAgcmVxdWVzdC5pZCA9IHRoaXMuUHJvZHVjdFZpZXdNb2RlbC5pZDtcclxuXHJcbiAgICAgIHRoaXMuUHJvZHVjdHNBcGlDbGllbnQuZ2V0UHJvZHVjdFZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBQcm9kdWN0Vmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Qcm9kdWN0Vmlld01vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWwgIT0gdW5kZWZpbmVkIHx8IHRoaXMuUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHZhciBvbGQgPSB0aGlzLkJDQlByb2R1Y3RWaWV3TW9kZWw7XHJcblxyXG4gICAgICAgICAgdmFyIGFycmF5aW5uZXIgPSB0aGlzLlByb2R1Y3RWaWV3TW9kZWwuYmNiUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKGFycmF5aW5uZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyYXlpbm5lci5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFycmF5aW5uZXJbal0uaWQgPT0gdGhpcy5CQ0JQcm9kdWN0Vmlld01vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCA9IGFycmF5aW5uZXJbal07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCAhPSBudWxsICYmIG9sZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsKHRoaXMuQkNCUHJvZHVjdFZpZXdNb2RlbCwgb2xkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ1Byb2R1Y3RzID0gZmFsc2U7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdQcm9kdWN0cyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsKG5ld3Byb2R1Y3Q6IEJDQlByb2R1Y3RWaWV3TW9kZWwsIG9sZHByb2R1Y3Q6IEJDQlByb2R1Y3RWaWV3TW9kZWwpIHtcclxuICAgIC8vdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxFaWdlbnNjaGFwKG5ld3Byb2R1Y3Q/LmJjYlByb2R1Y3RFaWdlbnNjaGFwVmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiUHJvZHVjdEVpZ2Vuc2NoYXBWaWV3TW9kZWxzKTtcclxuICAgIC8vdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxPcGJvdXcobmV3cHJvZHVjdD8uYmNiUHJvZHVjdE9wYm91d1ZpZXdNb2RlbHMsIG9sZHByb2R1Y3Q/LmJjYlByb2R1Y3RPcGJvdXdWaWV3TW9kZWxzKTtcclxuICAgIGlmIChuZXdwcm9kdWN0Py5iY2JlYm9WaWV3TW9kZWwgIT0gbnVsbCAmJiBvbGRwcm9kdWN0Py5iY2JlYm9WaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICBuZXdwcm9kdWN0LmJjYmVib1ZpZXdNb2RlbC5vcGVuID0gb2xkcHJvZHVjdC5iY2JlYm9WaWV3TW9kZWwub3BlbjtcclxuXHJcbiAgICAgIHRoaXMuTWVyZ2VCQ0JFQk8obmV3cHJvZHVjdC5iY2JlYm9WaWV3TW9kZWwsIG9sZHByb2R1Y3QuYmNiZWJvVmlld01vZGVsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTWVyZ2VCQ0JFQk8obmV3cHJvZHVjdDogQkNCRUJPVmlld01vZGVsLCBvbGRwcm9kdWN0OiBCQ0JFQk9WaWV3TW9kZWwpIHtcclxuICAgIHRoaXMuTWVyZ2VCQ0JQcm9kdWN0Vmlld01vZGVsRWlnZW5zY2hhcChuZXdwcm9kdWN0Py5iY2JFaWdlbnNjaGFwVmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiRWlnZW5zY2hhcFZpZXdNb2RlbHMpO1xyXG4gICAgdGhpcy5NZXJnZUJDQlByb2R1Y3RWaWV3TW9kZWxPcGJvdXcobmV3cHJvZHVjdD8uYmNiT3Bib3V3Vmlld01vZGVscywgb2xkcHJvZHVjdD8uYmNiT3Bib3V3Vmlld01vZGVscyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIE1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbEVpZ2Vuc2NoYXAobmV3cHJvZHVjdDogQkNCRWlnZW5zY2hhcFZpZXdNb2RlbFtdIHwgdW5kZWZpbmVkLCBvbGRwcm9kdWN0OiBCQ0JFaWdlbnNjaGFwVmlld01vZGVsW10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChuZXdwcm9kdWN0ICE9IG51bGwgJiYgb2xkcHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmV3cHJvZHVjdC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgb2xkcHJvZHVjdC5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgaWYgKG5ld3Byb2R1Y3Rbal0uaWQgPT0gb2xkcHJvZHVjdFtwXS5pZCkge1xyXG4gICAgICAgICAgICBuZXdwcm9kdWN0W2pdLm9wZW4gPSBvbGRwcm9kdWN0W3BdLm9wZW47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIE1lcmdlQkNCUHJvZHVjdFZpZXdNb2RlbE9wYm91dyhuZXdwcm9kdWN0OiBCQ0JPcGJvdXdWaWV3TW9kZWxbXSB8IHVuZGVmaW5lZCwgb2xkcHJvZHVjdDogQkNCT3Bib3V3Vmlld01vZGVsW10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChuZXdwcm9kdWN0ICE9IG51bGwgJiYgb2xkcHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmV3cHJvZHVjdC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgb2xkcHJvZHVjdC5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgaWYgKG5ld3Byb2R1Y3Rbal0uaWQgPT0gb2xkcHJvZHVjdFtwXS5pZCkge1xyXG4gICAgICAgICAgICBuZXdwcm9kdWN0W2pdLm9wZW4gPSBvbGRwcm9kdWN0W3BdLm9wZW47XHJcblxyXG4gICAgICAgICAgICB2YXIgZWJvc25ldyA9IG5ld3Byb2R1Y3Rbal0uZWJvcztcclxuICAgICAgICAgICAgdmFyIGVib3NvbGQgPSBvbGRwcm9kdWN0W3BdLmVib3M7XHJcbiAgICAgICAgICAgIGlmIChlYm9zbmV3ICE9IG51bGwgJiYgZWJvc29sZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBlYm9zbmV3Lmxlbmd0aDsgbysrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLk1lcmdlQkNCRUJPKGVib3NuZXdbb10sIGVib3NvbGRbb10pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=