@c8y/ngx-components 1017.0.137 → 1017.0.139

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.
@@ -3,9 +3,11 @@ import { NgModule } from '@angular/core';
3
3
  import { CoreModule, gettext, hookNavigator, hookRoute, NavigatorNode, ViewContext } from '@c8y/ngx-components';
4
4
  import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
5
5
  import { PopoverModule } from 'ngx-bootstrap/popover';
6
+ import { TooltipModule } from 'ngx-bootstrap/tooltip';
6
7
  import { DatapointLibraryDetailsComponent } from './datapoint-library-details/datapoint-library-details.component';
7
8
  import { DatapointLibraryListComponent } from './datapoint-library-list.component';
8
9
  import { DATAPOINT_LIBRARY_CONFIG, pathToDatapointLibrary } from './datapoint-library.model';
10
+ import { DatapointSelectorModule } from '@c8y/ngx-components/datapoint-selector';
9
11
  import * as i0 from "@angular/core";
10
12
  export class DatapointLibraryModule {
11
13
  static forRoot(config = {}) {
@@ -45,14 +47,31 @@ export class DatapointLibraryModule {
45
47
  }
46
48
  }
47
49
  DatapointLibraryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
48
- DatapointLibraryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: DatapointLibraryModule, declarations: [DatapointLibraryListComponent, DatapointLibraryDetailsComponent], imports: [A11yModule, CoreModule, BsDropdownModule, PopoverModule], exports: [DatapointLibraryListComponent, DatapointLibraryDetailsComponent] });
49
- DatapointLibraryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointLibraryModule, imports: [A11yModule, CoreModule, BsDropdownModule, PopoverModule] });
50
+ DatapointLibraryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: DatapointLibraryModule, declarations: [DatapointLibraryListComponent, DatapointLibraryDetailsComponent], imports: [A11yModule,
51
+ CoreModule,
52
+ BsDropdownModule,
53
+ PopoverModule,
54
+ TooltipModule,
55
+ DatapointSelectorModule], exports: [DatapointLibraryListComponent, DatapointLibraryDetailsComponent] });
56
+ DatapointLibraryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointLibraryModule, imports: [A11yModule,
57
+ CoreModule,
58
+ BsDropdownModule,
59
+ PopoverModule,
60
+ TooltipModule,
61
+ DatapointSelectorModule] });
50
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointLibraryModule, decorators: [{
51
63
  type: NgModule,
52
64
  args: [{
53
- imports: [A11yModule, CoreModule, BsDropdownModule, PopoverModule],
65
+ imports: [
66
+ A11yModule,
67
+ CoreModule,
68
+ BsDropdownModule,
69
+ PopoverModule,
70
+ TooltipModule,
71
+ DatapointSelectorModule
72
+ ],
54
73
  declarations: [DatapointLibraryListComponent, DatapointLibraryDetailsComponent],
55
74
  exports: [DatapointLibraryListComponent, DatapointLibraryDetailsComponent]
56
75
  }]
57
76
  }] });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWxpYnJhcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGF0YXBvaW50LWxpYnJhcnkvZGF0YXBvaW50LWxpYnJhcnkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUCxhQUFhLEVBQ2IsU0FBUyxFQUNULGFBQWEsRUFDYixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDbkgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkYsT0FBTyxFQUVMLHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdkIsTUFBTSwyQkFBMkIsQ0FBQzs7QUFPbkMsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxNQUFNLENBQUMsT0FBTyxDQUNaLFNBQWtDLEVBQUU7UUFFcEMsT0FBTztZQUNMLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsU0FBUyxFQUFFO2dCQUNULFNBQVMsQ0FBQztvQkFDUjt3QkFDRSxJQUFJLEVBQUUsc0JBQXNCO3dCQUM1QixTQUFTLEVBQUUsNkJBQTZCO3FCQUN6QztvQkFDRDt3QkFDRSxPQUFPLEVBQUUsV0FBVyxDQUFDLGdCQUFnQjt3QkFDckMsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsU0FBUyxFQUFFLGdDQUFnQzt3QkFDM0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7d0JBQ3pCLElBQUksRUFBRSxTQUFTO3dCQUNmLFFBQVEsRUFBRSxHQUFHO3FCQUNkO2lCQUNGLENBQUM7Z0JBQ0YsYUFBYSxDQUFDO29CQUNaLElBQUksYUFBYSxDQUFDO3dCQUNoQixNQUFNLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQzt3QkFDaEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQzt3QkFDcEMsU0FBUyxFQUFFLGtCQUFrQjt3QkFDN0IsSUFBSSxFQUFFLHNCQUFzQjt3QkFDNUIsSUFBSSxFQUFFLGlCQUFpQjt3QkFDdkIsZUFBZSxFQUFFLEtBQUs7cUJBQ3ZCLENBQUM7aUJBQ0gsQ0FBQztnQkFDRjtvQkFDRSxPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxRQUFRLEVBQUUsTUFBTTtpQkFDakI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOzttSEFyQ1Usc0JBQXNCO29IQUF0QixzQkFBc0IsaUJBSGxCLDZCQUE2QixFQUFFLGdDQUFnQyxhQURwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsYUFFdkQsNkJBQTZCLEVBQUUsZ0NBQWdDO29IQUU5RCxzQkFBc0IsWUFKdkIsVUFBVSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhOzJGQUl0RCxzQkFBc0I7a0JBTGxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUM7b0JBQ2xFLFlBQVksRUFBRSxDQUFDLDZCQUE2QixFQUFFLGdDQUFnQyxDQUFDO29CQUMvRSxPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxnQ0FBZ0MsQ0FBQztpQkFDM0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvcmVNb2R1bGUsXG4gIGdldHRleHQsXG4gIGhvb2tOYXZpZ2F0b3IsXG4gIGhvb2tSb3V0ZSxcbiAgTmF2aWdhdG9yTm9kZSxcbiAgVmlld0NvbnRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IERhdGFwb2ludExpYnJhcnlEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhcG9pbnQtbGlicmFyeS1kZXRhaWxzL2RhdGFwb2ludC1saWJyYXJ5LWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFwb2ludExpYnJhcnlMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9kYXRhcG9pbnQtbGlicmFyeS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBEYXRhcG9pbnRMaWJyYXJ5T3B0aW9ucyxcbiAgREFUQVBPSU5UX0xJQlJBUllfQ09ORklHLFxuICBwYXRoVG9EYXRhcG9pbnRMaWJyYXJ5XG59IGZyb20gJy4vZGF0YXBvaW50LWxpYnJhcnkubW9kZWwnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQ29yZU1vZHVsZSwgQnNEcm9wZG93bk1vZHVsZSwgUG9wb3Zlck1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0RhdGFwb2ludExpYnJhcnlMaXN0Q29tcG9uZW50LCBEYXRhcG9pbnRMaWJyYXJ5RGV0YWlsc0NvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtEYXRhcG9pbnRMaWJyYXJ5TGlzdENvbXBvbmVudCwgRGF0YXBvaW50TGlicmFyeURldGFpbHNDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludExpYnJhcnlNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChcbiAgICBjb25maWc6IERhdGFwb2ludExpYnJhcnlPcHRpb25zID0ge31cbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxEYXRhcG9pbnRMaWJyYXJ5TW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBEYXRhcG9pbnRMaWJyYXJ5TW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIGhvb2tSb3V0ZShbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGF0aDogcGF0aFRvRGF0YXBvaW50TGlicmFyeSxcbiAgICAgICAgICAgIGNvbXBvbmVudDogRGF0YXBvaW50TGlicmFyeUxpc3RDb21wb25lbnRcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnRleHQ6IFZpZXdDb250ZXh0LkRhdGFwb2ludExpYnJhcnksXG4gICAgICAgICAgICBwYXRoOiAnZGV0YWlscycsXG4gICAgICAgICAgICBjb21wb25lbnQ6IERhdGFwb2ludExpYnJhcnlEZXRhaWxzQ29tcG9uZW50LFxuICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RldGFpbHMnKSxcbiAgICAgICAgICAgIGljb246ICdwYWxldHRlJyxcbiAgICAgICAgICAgIHByaW9yaXR5OiA1MDBcbiAgICAgICAgICB9XG4gICAgICAgIF0pLFxuICAgICAgICBob29rTmF2aWdhdG9yKFtcbiAgICAgICAgICBuZXcgTmF2aWdhdG9yTm9kZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IGdldHRleHQoJ0NvbmZpZ3VyYXRpb24nKSxcbiAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEYXRhIHBvaW50IGxpYnJhcnknKSxcbiAgICAgICAgICAgIGZlYXR1cmVJZDogJ2RhdGFQb2ludExpYnJhcnknLFxuICAgICAgICAgICAgcGF0aDogcGF0aFRvRGF0YXBvaW50TGlicmFyeSxcbiAgICAgICAgICAgIGljb246ICdjOHktZGF0YS1wb2ludHMnLFxuICAgICAgICAgICAgcm91dGVyTGlua0V4YWN0OiBmYWxzZVxuICAgICAgICAgIH0pXG4gICAgICAgIF0pLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogREFUQVBPSU5UX0xJQlJBUllfQ09ORklHLFxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWxpYnJhcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGF0YXBvaW50LWxpYnJhcnkvZGF0YXBvaW50LWxpYnJhcnkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUCxhQUFhLEVBQ2IsU0FBUyxFQUNULGFBQWEsRUFDYixXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25GLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsc0JBQXNCLEVBQ3ZCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBY2pGLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLE9BQU8sQ0FDWixTQUFrQyxFQUFFO1FBRXBDLE9BQU87WUFDTCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFNBQVMsRUFBRTtnQkFDVCxTQUFTLENBQUM7b0JBQ1I7d0JBQ0UsSUFBSSxFQUFFLHNCQUFzQjt3QkFDNUIsU0FBUyxFQUFFLDZCQUE2QjtxQkFDekM7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLFdBQVcsQ0FBQyxnQkFBZ0I7d0JBQ3JDLElBQUksRUFBRSxTQUFTO3dCQUNmLFNBQVMsRUFBRSxnQ0FBZ0M7d0JBQzNDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDO3dCQUN6QixJQUFJLEVBQUUsU0FBUzt3QkFDZixRQUFRLEVBQUUsR0FBRztxQkFDZDtpQkFDRixDQUFDO2dCQUNGLGFBQWEsQ0FBQztvQkFDWixJQUFJLGFBQWEsQ0FBQzt3QkFDaEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUM7d0JBQ2hDLEtBQUssRUFBRSxPQUFPLENBQUMsb0JBQW9CLENBQUM7d0JBQ3BDLFNBQVMsRUFBRSxrQkFBa0I7d0JBQzdCLElBQUksRUFBRSxzQkFBc0I7d0JBQzVCLElBQUksRUFBRSxpQkFBaUI7d0JBQ3ZCLGVBQWUsRUFBRSxLQUFLO3FCQUN2QixDQUFDO2lCQUNILENBQUM7Z0JBQ0Y7b0JBQ0UsT0FBTyxFQUFFLHdCQUF3QjtvQkFDakMsUUFBUSxFQUFFLE1BQU07aUJBQ2pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7bUhBckNVLHNCQUFzQjtvSEFBdEIsc0JBQXNCLGlCQUhsQiw2QkFBNkIsRUFBRSxnQ0FBZ0MsYUFQNUUsVUFBVTtRQUNWLFVBQVU7UUFDVixnQkFBZ0I7UUFDaEIsYUFBYTtRQUNiLGFBQWE7UUFDYix1QkFBdUIsYUFHZiw2QkFBNkIsRUFBRSxnQ0FBZ0M7b0hBRTlELHNCQUFzQixZQVYvQixVQUFVO1FBQ1YsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixhQUFhO1FBQ2IsYUFBYTtRQUNiLHVCQUF1QjsyRkFLZCxzQkFBc0I7a0JBWmxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYix1QkFBdUI7cUJBQ3hCO29CQUNELFlBQVksRUFBRSxDQUFDLDZCQUE2QixFQUFFLGdDQUFnQyxDQUFDO29CQUMvRSxPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxnQ0FBZ0MsQ0FBQztpQkFDM0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvcmVNb2R1bGUsXG4gIGdldHRleHQsXG4gIGhvb2tOYXZpZ2F0b3IsXG4gIGhvb2tSb3V0ZSxcbiAgTmF2aWdhdG9yTm9kZSxcbiAgVmlld0NvbnRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgRGF0YXBvaW50TGlicmFyeURldGFpbHNDb21wb25lbnQgfSBmcm9tICcuL2RhdGFwb2ludC1saWJyYXJ5LWRldGFpbHMvZGF0YXBvaW50LWxpYnJhcnktZGV0YWlscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YXBvaW50TGlicmFyeUxpc3RDb21wb25lbnQgfSBmcm9tICcuL2RhdGFwb2ludC1saWJyYXJ5LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIERhdGFwb2ludExpYnJhcnlPcHRpb25zLFxuICBEQVRBUE9JTlRfTElCUkFSWV9DT05GSUcsXG4gIHBhdGhUb0RhdGFwb2ludExpYnJhcnlcbn0gZnJvbSAnLi9kYXRhcG9pbnQtbGlicmFyeS5tb2RlbCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRTZWxlY3Rvck1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50LXNlbGVjdG9yJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEExMXlNb2R1bGUsXG4gICAgQ29yZU1vZHVsZSxcbiAgICBCc0Ryb3Bkb3duTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBEYXRhcG9pbnRTZWxlY3Rvck1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtEYXRhcG9pbnRMaWJyYXJ5TGlzdENvbXBvbmVudCwgRGF0YXBvaW50TGlicmFyeURldGFpbHNDb21wb25lbnRdLFxuICBleHBvcnRzOiBbRGF0YXBvaW50TGlicmFyeUxpc3RDb21wb25lbnQsIERhdGFwb2ludExpYnJhcnlEZXRhaWxzQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRMaWJyYXJ5TW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoXG4gICAgY29uZmlnOiBEYXRhcG9pbnRMaWJyYXJ5T3B0aW9ucyA9IHt9XG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGF0YXBvaW50TGlicmFyeU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRGF0YXBvaW50TGlicmFyeU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBob29rUm91dGUoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBhdGg6IHBhdGhUb0RhdGFwb2ludExpYnJhcnksXG4gICAgICAgICAgICBjb21wb25lbnQ6IERhdGFwb2ludExpYnJhcnlMaXN0Q29tcG9uZW50XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb250ZXh0OiBWaWV3Q29udGV4dC5EYXRhcG9pbnRMaWJyYXJ5LFxuICAgICAgICAgICAgcGF0aDogJ2RldGFpbHMnLFxuICAgICAgICAgICAgY29tcG9uZW50OiBEYXRhcG9pbnRMaWJyYXJ5RGV0YWlsc0NvbXBvbmVudCxcbiAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEZXRhaWxzJyksXG4gICAgICAgICAgICBpY29uOiAncGFsZXR0ZScsXG4gICAgICAgICAgICBwcmlvcml0eTogNTAwXG4gICAgICAgICAgfVxuICAgICAgICBdKSxcbiAgICAgICAgaG9va05hdmlnYXRvcihbXG4gICAgICAgICAgbmV3IE5hdmlnYXRvck5vZGUoe1xuICAgICAgICAgICAgcGFyZW50OiBnZXR0ZXh0KCdDb25maWd1cmF0aW9uJyksXG4gICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRGF0YSBwb2ludCBsaWJyYXJ5JyksXG4gICAgICAgICAgICBmZWF0dXJlSWQ6ICdkYXRhUG9pbnRMaWJyYXJ5JyxcbiAgICAgICAgICAgIHBhdGg6IHBhdGhUb0RhdGFwb2ludExpYnJhcnksXG4gICAgICAgICAgICBpY29uOiAnYzh5LWRhdGEtcG9pbnRzJyxcbiAgICAgICAgICAgIHJvdXRlckxpbmtFeGFjdDogZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICBdKSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IERBVEFQT0lOVF9MSUJSQVJZX0NPTkZJRyxcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -5,8 +5,9 @@ import { BsModalRef } from 'ngx-bootstrap/modal';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "ngx-bootstrap/modal";
7
7
  import * as i2 from "@c8y/ngx-components";
8
- import * as i3 from "@angular/forms";
9
- import * as i4 from "../datapoint-selector.component";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@angular/forms";
10
+ import * as i5 from "../datapoint-selector.component";
10
11
  export class DatapointSelectorModalComponent {
11
12
  constructor(bsModal, elementRef) {
12
13
  this.bsModal = bsModal;
@@ -19,6 +20,8 @@ export class DatapointSelectorModalComponent {
19
20
  this.saveButtonLabel = gettext('Add data points');
20
21
  this.guessDatapointUnit = true;
21
22
  this.defaultActiveState = true;
23
+ this.finishWithFirstSelection = false;
24
+ this.ignoreDatapointTemplates = false;
22
25
  this.assetSelectorConfig = {};
23
26
  this.result = new Promise((resolve, reject) => {
24
27
  this.save = resolve;
@@ -36,6 +39,12 @@ export class DatapointSelectorModalComponent {
36
39
  this.bsModal.hide();
37
40
  this.cancel();
38
41
  }
42
+ selectionChange(selection) {
43
+ this.selectedDatapoints = selection;
44
+ if (this.finishWithFirstSelection) {
45
+ this.saveChanges();
46
+ }
47
+ }
39
48
  /**
40
49
  * changes the z-index of the modal, to make sure this modal is on top.
41
50
  * required as angularJS modals are placing them selves on top via adjusting z-index.
@@ -47,9 +56,9 @@ export class DatapointSelectorModalComponent {
47
56
  }
48
57
  }
49
58
  DatapointSelectorModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointSelectorModalComponent, deps: [{ token: i1.BsModalRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
50
- DatapointSelectorModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatapointSelectorModalComponent, selector: "c8y-datapoint-selector-modal", ngImport: i0, template: "<div class=\"modal-header separator\">\n <h4 id=\"modal-title\" class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\" id=\"modal-body\">\n <c8y-datapoint-selector\n [contextAsset]=\"contextAsset\"\n [guessDatapointUnit]=\"guessDatapointUnit\"\n [allowDatapointsFromMultipleAssets]=\"allowDatapointsFromMultipleAssets\"\n [allowChangingContext]=\"allowChangingContext\"\n [defaultActiveState]=\"defaultActiveState\"\n [allowSearch]=\"allowSearch\"\n [(ngModel)]=\"selectedDatapoints\"\n ></c8y-datapoint-selector>\n</div>\n<div class=\"modal-footer\">\n <button\n type=\"button\"\n [title]=\"'Cancel' | translate\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n <button\n [title]=\"saveButtonLabel | translate\"\n class=\"btn btn-primary\"\n [disabled]=\"!this.selectedDatapoints?.length\"\n (click)=\"saveChanges()\"\n >\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.DatapointSelectorComponent, selector: "c8y-datapoint-selector", inputs: ["contextAsset", "allowChangingContext", "allowDatapointsFromMultipleAssets", "defaultActiveState", "ignoreDatapointTemplates", "guessDatapointUnit", "allowSearch"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
59
+ DatapointSelectorModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatapointSelectorModalComponent, selector: "c8y-datapoint-selector-modal", ngImport: i0, template: "<div class=\"modal-header separator\">\n <h4 id=\"modal-title\" class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\" id=\"modal-body\">\n <c8y-datapoint-selector\n [contextAsset]=\"contextAsset\"\n [guessDatapointUnit]=\"guessDatapointUnit\"\n [allowDatapointsFromMultipleAssets]=\"allowDatapointsFromMultipleAssets\"\n [allowChangingContext]=\"allowChangingContext\"\n [defaultActiveState]=\"defaultActiveState\"\n [allowSearch]=\"allowSearch\"\n [hideSelection]=\"finishWithFirstSelection\"\n [ignoreDatapointTemplates]=\"ignoreDatapointTemplates\"\n [ngModel]=\"selectedDatapoints\"\n (ngModelChange)=\"selectionChange($event)\"\n ></c8y-datapoint-selector>\n</div>\n<div class=\"modal-footer\">\n <button\n type=\"button\"\n [title]=\"'Cancel' | translate\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n <button\n [title]=\"saveButtonLabel | translate\"\n class=\"btn btn-primary\"\n [disabled]=\"!this.selectedDatapoints?.length\"\n (click)=\"saveChanges()\"\n *ngIf=\"!finishWithFirstSelection\"\n >\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.DatapointSelectorComponent, selector: "c8y-datapoint-selector", inputs: ["contextAsset", "allowChangingContext", "allowDatapointsFromMultipleAssets", "defaultActiveState", "ignoreDatapointTemplates", "guessDatapointUnit", "allowSearch", "hideSelection"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
51
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointSelectorModalComponent, decorators: [{
52
61
  type: Component,
53
- args: [{ selector: 'c8y-datapoint-selector-modal', template: "<div class=\"modal-header separator\">\n <h4 id=\"modal-title\" class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\" id=\"modal-body\">\n <c8y-datapoint-selector\n [contextAsset]=\"contextAsset\"\n [guessDatapointUnit]=\"guessDatapointUnit\"\n [allowDatapointsFromMultipleAssets]=\"allowDatapointsFromMultipleAssets\"\n [allowChangingContext]=\"allowChangingContext\"\n [defaultActiveState]=\"defaultActiveState\"\n [allowSearch]=\"allowSearch\"\n [(ngModel)]=\"selectedDatapoints\"\n ></c8y-datapoint-selector>\n</div>\n<div class=\"modal-footer\">\n <button\n type=\"button\"\n [title]=\"'Cancel' | translate\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n <button\n [title]=\"saveButtonLabel | translate\"\n class=\"btn btn-primary\"\n [disabled]=\"!this.selectedDatapoints?.length\"\n (click)=\"saveChanges()\"\n >\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n" }]
62
+ args: [{ selector: 'c8y-datapoint-selector-modal', template: "<div class=\"modal-header separator\">\n <h4 id=\"modal-title\" class=\"text-medium\">{{ title | translate }}</h4>\n</div>\n<div class=\"modal-inner-scroll modal-inner-scroll--fixed\" id=\"modal-body\">\n <c8y-datapoint-selector\n [contextAsset]=\"contextAsset\"\n [guessDatapointUnit]=\"guessDatapointUnit\"\n [allowDatapointsFromMultipleAssets]=\"allowDatapointsFromMultipleAssets\"\n [allowChangingContext]=\"allowChangingContext\"\n [defaultActiveState]=\"defaultActiveState\"\n [allowSearch]=\"allowSearch\"\n [hideSelection]=\"finishWithFirstSelection\"\n [ignoreDatapointTemplates]=\"ignoreDatapointTemplates\"\n [ngModel]=\"selectedDatapoints\"\n (ngModelChange)=\"selectionChange($event)\"\n ></c8y-datapoint-selector>\n</div>\n<div class=\"modal-footer\">\n <button\n type=\"button\"\n [title]=\"'Cancel' | translate\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n <button\n [title]=\"saveButtonLabel | translate\"\n class=\"btn btn-primary\"\n [disabled]=\"!this.selectedDatapoints?.length\"\n (click)=\"saveChanges()\"\n *ngIf=\"!finishWithFirstSelection\"\n >\n {{ saveButtonLabel | translate }}\n </button>\n</div>\n" }]
54
63
  }], ctorParameters: function () { return [{ type: i1.BsModalRef }, { type: i0.ElementRef }]; } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBVWpELE1BQU0sT0FBTywrQkFBK0I7SUFtQjFDLFlBQW9CLE9BQW1CLEVBQVUsVUFBc0I7UUFBbkQsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFqQnZFLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFDekMsdUJBQWtCLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztRQUM3QyxVQUFLLEdBQVcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0Msb0JBQWUsR0FBVyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLHdCQUFtQixHQUF3RCxFQUFFLENBQUM7UUFDckUsV0FBTSxHQUEwQixJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN2RSxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUt1RSxDQUFDO0lBRTNFLFFBQVE7UUFDTixJQUFJLENBQUMsNERBQTRELEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssNERBQTREO1FBQ2xFLE1BQU0sY0FBYyxHQUFnQixHQUFHLENBQ3JDLElBQUksQ0FBQyxVQUFVLEVBQ2YseURBQXlELENBQzFELENBQUM7UUFDRixjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkMsQ0FBQzs7NEhBOUNVLCtCQUErQjtnSEFBL0IsK0JBQStCLG9FQ2Q1QywyaENBaUNBOzJGRG5CYSwrQkFBK0I7a0JBSjNDLFNBQVM7K0JBQ0UsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElJZGVudGlmaWVkIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7XG4gIERhdGFwb2ludFNlbGVjdG9yTW9kYWxBc3NldFNlbGVjdG9yT3B0aW9ucyxcbiAgS1BJRGV0YWlsc1xufSBmcm9tICcuLi9kYXRhcG9pbnQtc2VsZWN0aW9uLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludC1zZWxlY3Rvci1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnQtc2VsZWN0b3ItbW9kYWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludFNlbGVjdG9yTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb250ZXh0QXNzZXQ6IElJZGVudGlmaWVkO1xuICBhbGxvd0NoYW5naW5nQ29udGV4dCA9IHRydWU7XG4gIGFsbG93U2VhcmNoID0gdHJ1ZTtcbiAgYWxsb3dEYXRhcG9pbnRzRnJvbU11bHRpcGxlQXNzZXRzID0gdHJ1ZTtcbiAgc2VsZWN0ZWREYXRhcG9pbnRzID0gbmV3IEFycmF5PEtQSURldGFpbHM+KCk7XG4gIHRpdGxlOiBzdHJpbmcgPSBnZXR0ZXh0KCdEYXRhIHBvaW50IHNlbGVjdG9yJyk7XG4gIHNhdmVCdXR0b25MYWJlbDogc3RyaW5nID0gZ2V0dGV4dCgnQWRkIGRhdGEgcG9pbnRzJyk7XG4gIGd1ZXNzRGF0YXBvaW50VW5pdCA9IHRydWU7XG4gIGRlZmF1bHRBY3RpdmVTdGF0ZSA9IHRydWU7XG4gIGFzc2V0U2VsZWN0b3JDb25maWc6IFBhcnRpYWw8RGF0YXBvaW50U2VsZWN0b3JNb2RhbEFzc2V0U2VsZWN0b3JPcHRpb25zPiA9IHt9O1xuICByZWFkb25seSByZXN1bHQ6IFByb21pc2U8S1BJRGV0YWlsc1tdPiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0aGlzLnNhdmUgPSByZXNvbHZlO1xuICAgIHRoaXMuY2FuY2VsID0gcmVqZWN0O1xuICB9KTtcblxuICBwcml2YXRlIHNhdmU6ICh2YWx1ZTogS1BJRGV0YWlsc1tdKSA9PiB2b2lkO1xuICBwcml2YXRlIGNhbmNlbDogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJzTW9kYWw6IEJzTW9kYWxSZWYsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcGx5V29ya2Fyb3VuZEZvckFuZ3VsYXJKU01vZGFsc1RoYXRNaWdodEJlT3BlbmVkSW5QYXJhbGxlbCgpO1xuICB9XG5cbiAgc2F2ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5ic01vZGFsLmhpZGUoKTtcbiAgICB0aGlzLnNhdmUodGhpcy5zZWxlY3RlZERhdGFwb2ludHMpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5ic01vZGFsLmhpZGUoKTtcbiAgICB0aGlzLmNhbmNlbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNoYW5nZXMgdGhlIHotaW5kZXggb2YgdGhlIG1vZGFsLCB0byBtYWtlIHN1cmUgdGhpcyBtb2RhbCBpcyBvbiB0b3AuXG4gICAqIHJlcXVpcmVkIGFzIGFuZ3VsYXJKUyBtb2RhbHMgYXJlIHBsYWNpbmcgdGhlbSBzZWx2ZXMgb24gdG9wIHZpYSBhZGp1c3Rpbmcgei1pbmRleC5cbiAgICogd2hpbGUgYW5ndWxhciBtb2RhbHMgdXNlIHRoZSBvcmRlciB3aXRoaW4gdGhlIGRvbSBmb3IgdGhpcy4uXG4gICAqL1xuICBwcml2YXRlIGFwcGx5V29ya2Fyb3VuZEZvckFuZ3VsYXJKU01vZGFsc1RoYXRNaWdodEJlT3BlbmVkSW5QYXJhbGxlbCgpIHtcbiAgICBjb25zdCBtb2RhbENvbnRhaW5lcjogSFRNTEVsZW1lbnQgPSBnZXQoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAnbmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudCdcbiAgICApO1xuICAgIG1vZGFsQ29udGFpbmVyLnN0eWxlLnpJbmRleCA9ICcxMDYwJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBzZXBhcmF0b3JcIj5cbiAgPGg0IGlkPVwibW9kYWwtdGl0bGVcIiBjbGFzcz1cInRleHQtbWVkaXVtXCI+e3sgdGl0bGUgfCB0cmFuc2xhdGUgfX08L2g0PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtaW5uZXItc2Nyb2xsIG1vZGFsLWlubmVyLXNjcm9sbC0tZml4ZWRcIiBpZD1cIm1vZGFsLWJvZHlcIj5cbiAgPGM4eS1kYXRhcG9pbnQtc2VsZWN0b3JcbiAgICBbY29udGV4dEFzc2V0XT1cImNvbnRleHRBc3NldFwiXG4gICAgW2d1ZXNzRGF0YXBvaW50VW5pdF09XCJndWVzc0RhdGFwb2ludFVuaXRcIlxuICAgIFthbGxvd0RhdGFwb2ludHNGcm9tTXVsdGlwbGVBc3NldHNdPVwiYWxsb3dEYXRhcG9pbnRzRnJvbU11bHRpcGxlQXNzZXRzXCJcbiAgICBbYWxsb3dDaGFuZ2luZ0NvbnRleHRdPVwiYWxsb3dDaGFuZ2luZ0NvbnRleHRcIlxuICAgIFtkZWZhdWx0QWN0aXZlU3RhdGVdPVwiZGVmYXVsdEFjdGl2ZVN0YXRlXCJcbiAgICBbYWxsb3dTZWFyY2hdPVwiYWxsb3dTZWFyY2hcIlxuICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWREYXRhcG9pbnRzXCJcbiAgPjwvYzh5LWRhdGFwb2ludC1zZWxlY3Rvcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICA8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW3RpdGxlXT1cIidDYW5jZWwnIHwgdHJhbnNsYXRlXCJcbiAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgQ2FuY2VsXG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgW3RpdGxlXT1cInNhdmVCdXR0b25MYWJlbCB8IHRyYW5zbGF0ZVwiXG4gICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgIFtkaXNhYmxlZF09XCIhdGhpcy5zZWxlY3RlZERhdGFwb2ludHM/Lmxlbmd0aFwiXG4gICAgKGNsaWNrKT1cInNhdmVDaGFuZ2VzKClcIlxuICA+XG4gICAge3sgc2F2ZUJ1dHRvbkxhYmVsIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQVVqRCxNQUFNLE9BQU8sK0JBQStCO0lBcUIxQyxZQUFvQixPQUFtQixFQUFVLFVBQXNCO1FBQW5ELFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBbkJ2RSx5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDNUIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsc0NBQWlDLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLHVCQUFrQixHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7UUFDN0MsVUFBSyxHQUFXLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DLG9CQUFlLEdBQVcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDckQsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQiw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDakMsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLHdCQUFtQixHQUF3RCxFQUFFLENBQUM7UUFDckUsV0FBTSxHQUEwQixJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN2RSxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUt1RSxDQUFDO0lBRTNFLFFBQVE7UUFDTixJQUFJLENBQUMsNERBQTRELEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBNEI7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUNwQyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLDREQUE0RDtRQUNsRSxNQUFNLGNBQWMsR0FBZ0IsR0FBRyxDQUNyQyxJQUFJLENBQUMsVUFBVSxFQUNmLHlEQUF5RCxDQUMxRCxDQUFDO1FBQ0YsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZDLENBQUM7OzRIQXZEVSwrQkFBK0I7Z0hBQS9CLCtCQUErQixvRUNkNUMsa3VDQXFDQTsyRkR2QmEsK0JBQStCO2tCQUozQyxTQUFTOytCQUNFLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQge1xuICBEYXRhcG9pbnRTZWxlY3Rvck1vZGFsQXNzZXRTZWxlY3Rvck9wdGlvbnMsXG4gIEtQSURldGFpbHNcbn0gZnJvbSAnLi4vZGF0YXBvaW50LXNlbGVjdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnQtc2VsZWN0b3ItbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50LXNlbGVjdG9yLW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRTZWxlY3Rvck1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29udGV4dEFzc2V0OiBJSWRlbnRpZmllZDtcbiAgYWxsb3dDaGFuZ2luZ0NvbnRleHQgPSB0cnVlO1xuICBhbGxvd1NlYXJjaCA9IHRydWU7XG4gIGFsbG93RGF0YXBvaW50c0Zyb21NdWx0aXBsZUFzc2V0cyA9IHRydWU7XG4gIHNlbGVjdGVkRGF0YXBvaW50cyA9IG5ldyBBcnJheTxLUElEZXRhaWxzPigpO1xuICB0aXRsZTogc3RyaW5nID0gZ2V0dGV4dCgnRGF0YSBwb2ludCBzZWxlY3RvcicpO1xuICBzYXZlQnV0dG9uTGFiZWw6IHN0cmluZyA9IGdldHRleHQoJ0FkZCBkYXRhIHBvaW50cycpO1xuICBndWVzc0RhdGFwb2ludFVuaXQgPSB0cnVlO1xuICBkZWZhdWx0QWN0aXZlU3RhdGUgPSB0cnVlO1xuICBmaW5pc2hXaXRoRmlyc3RTZWxlY3Rpb24gPSBmYWxzZTtcbiAgaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzID0gZmFsc2U7XG4gIGFzc2V0U2VsZWN0b3JDb25maWc6IFBhcnRpYWw8RGF0YXBvaW50U2VsZWN0b3JNb2RhbEFzc2V0U2VsZWN0b3JPcHRpb25zPiA9IHt9O1xuICByZWFkb25seSByZXN1bHQ6IFByb21pc2U8S1BJRGV0YWlsc1tdPiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0aGlzLnNhdmUgPSByZXNvbHZlO1xuICAgIHRoaXMuY2FuY2VsID0gcmVqZWN0O1xuICB9KTtcblxuICBwcml2YXRlIHNhdmU6ICh2YWx1ZTogS1BJRGV0YWlsc1tdKSA9PiB2b2lkO1xuICBwcml2YXRlIGNhbmNlbDogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJzTW9kYWw6IEJzTW9kYWxSZWYsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcGx5V29ya2Fyb3VuZEZvckFuZ3VsYXJKU01vZGFsc1RoYXRNaWdodEJlT3BlbmVkSW5QYXJhbGxlbCgpO1xuICB9XG5cbiAgc2F2ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5ic01vZGFsLmhpZGUoKTtcbiAgICB0aGlzLnNhdmUodGhpcy5zZWxlY3RlZERhdGFwb2ludHMpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5ic01vZGFsLmhpZGUoKTtcbiAgICB0aGlzLmNhbmNlbCgpO1xuICB9XG5cbiAgc2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGlvbjogQXJyYXk8S1BJRGV0YWlscz4pIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YXBvaW50cyA9IHNlbGVjdGlvbjtcbiAgICBpZiAodGhpcy5maW5pc2hXaXRoRmlyc3RTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuc2F2ZUNoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2hhbmdlcyB0aGUgei1pbmRleCBvZiB0aGUgbW9kYWwsIHRvIG1ha2Ugc3VyZSB0aGlzIG1vZGFsIGlzIG9uIHRvcC5cbiAgICogcmVxdWlyZWQgYXMgYW5ndWxhckpTIG1vZGFscyBhcmUgcGxhY2luZyB0aGVtIHNlbHZlcyBvbiB0b3AgdmlhIGFkanVzdGluZyB6LWluZGV4LlxuICAgKiB3aGlsZSBhbmd1bGFyIG1vZGFscyB1c2UgdGhlIG9yZGVyIHdpdGhpbiB0aGUgZG9tIGZvciB0aGlzLi5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlXb3JrYXJvdW5kRm9yQW5ndWxhckpTTW9kYWxzVGhhdE1pZ2h0QmVPcGVuZWRJblBhcmFsbGVsKCkge1xuICAgIGNvbnN0IG1vZGFsQ29udGFpbmVyOiBIVE1MRWxlbWVudCA9IGdldChcbiAgICAgIHRoaXMuZWxlbWVudFJlZixcbiAgICAgICduYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50J1xuICAgICk7XG4gICAgbW9kYWxDb250YWluZXIuc3R5bGUuekluZGV4ID0gJzEwNjAnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHNlcGFyYXRvclwiPlxuICA8aDQgaWQ9XCJtb2RhbC10aXRsZVwiIGNsYXNzPVwidGV4dC1tZWRpdW1cIj57eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGwgbW9kYWwtaW5uZXItc2Nyb2xsLS1maXhlZFwiIGlkPVwibW9kYWwtYm9keVwiPlxuICA8Yzh5LWRhdGFwb2ludC1zZWxlY3RvclxuICAgIFtjb250ZXh0QXNzZXRdPVwiY29udGV4dEFzc2V0XCJcbiAgICBbZ3Vlc3NEYXRhcG9pbnRVbml0XT1cImd1ZXNzRGF0YXBvaW50VW5pdFwiXG4gICAgW2FsbG93RGF0YXBvaW50c0Zyb21NdWx0aXBsZUFzc2V0c109XCJhbGxvd0RhdGFwb2ludHNGcm9tTXVsdGlwbGVBc3NldHNcIlxuICAgIFthbGxvd0NoYW5naW5nQ29udGV4dF09XCJhbGxvd0NoYW5naW5nQ29udGV4dFwiXG4gICAgW2RlZmF1bHRBY3RpdmVTdGF0ZV09XCJkZWZhdWx0QWN0aXZlU3RhdGVcIlxuICAgIFthbGxvd1NlYXJjaF09XCJhbGxvd1NlYXJjaFwiXG4gICAgW2hpZGVTZWxlY3Rpb25dPVwiZmluaXNoV2l0aEZpcnN0U2VsZWN0aW9uXCJcbiAgICBbaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzXT1cImlnbm9yZURhdGFwb2ludFRlbXBsYXRlc1wiXG4gICAgW25nTW9kZWxdPVwic2VsZWN0ZWREYXRhcG9pbnRzXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gID48L2M4eS1kYXRhcG9pbnQtc2VsZWN0b3I+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFt0aXRsZV09XCInQ2FuY2VsJyB8IHRyYW5zbGF0ZVwiXG4gICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICB0cmFuc2xhdGVcbiAgPlxuICAgIENhbmNlbFxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIFt0aXRsZV09XCJzYXZlQnV0dG9uTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiIXRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzPy5sZW5ndGhcIlxuICAgIChjbGljayk9XCJzYXZlQ2hhbmdlcygpXCJcbiAgICAqbmdJZj1cIiFmaW5pc2hXaXRoRmlyc3RTZWxlY3Rpb25cIlxuICA+XG4gICAge3sgc2F2ZUJ1dHRvbkxhYmVsIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -23,6 +23,7 @@ export class DatapointSelectorComponent {
23
23
  this.ignoreDatapointTemplates = false;
24
24
  this.guessDatapointUnit = true;
25
25
  this.allowSearch = true;
26
+ this.hideSelection = false;
26
27
  this.searchString = '';
27
28
  this.maxNumberOfDatapoints = 50;
28
29
  this.loadingDatapoints = false;
@@ -31,9 +32,9 @@ export class DatapointSelectorComponent {
31
32
  this.emptyStateSubtitleWhenNoDataPointsInAsset = gettext('Select an asset with data points from the list.');
32
33
  this.searchString$ = new BehaviorSubject('');
33
34
  this.touched = false;
34
- this.setupObservables();
35
35
  }
36
36
  ngOnInit() {
37
+ this.setupObservables();
37
38
  if (!this.ignoreDatapointTemplates) {
38
39
  this.datapointLibraryEntries = from(this.datapointService.getFirstDatapointLibraryPage());
39
40
  }
@@ -140,13 +141,13 @@ export class DatapointSelectorComponent {
140
141
  }
141
142
  }
142
143
  DatapointSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointSelectorComponent, deps: [{ token: i1.DatapointLibraryService }], target: i0.ɵɵFactoryTarget.Component });
143
- DatapointSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatapointSelectorComponent, selector: "c8y-datapoint-selector", inputs: { contextAsset: "contextAsset", allowChangingContext: "allowChangingContext", allowDatapointsFromMultipleAssets: "allowDatapointsFromMultipleAssets", defaultActiveState: "defaultActiveState", ignoreDatapointTemplates: "ignoreDatapointTemplates", guessDatapointUnit: "guessDatapointUnit", allowSearch: "allowSearch" }, providers: [
144
+ DatapointSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatapointSelectorComponent, selector: "c8y-datapoint-selector", inputs: { contextAsset: "contextAsset", allowChangingContext: "allowChangingContext", allowDatapointsFromMultipleAssets: "allowDatapointsFromMultipleAssets", defaultActiveState: "defaultActiveState", ignoreDatapointTemplates: "ignoreDatapointTemplates", guessDatapointUnit: "guessDatapointUnit", allowSearch: "allowSearch", hideSelection: "hideSelection" }, providers: [
144
145
  {
145
146
  provide: NG_VALUE_ACCESSOR,
146
147
  multi: true,
147
148
  useExisting: forwardRef(() => DatapointSelectorComponent)
148
149
  }
149
- ], ngImport: i0, template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"allowChangingContext ? 'grid__col--3-6-3--md' : 'grid__col--8-4--md'\"\n>\n <div class=\"d-flex d-col p-relative bg-level-1\" *ngIf=\"allowChangingContext\">\n <c8y-asset-selector-miller\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch\n }\"\n class=\"d-contents\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\" class=\"bg-inherit\">\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p class=\"text-medium text-truncate\" [title]=\"'Available data points' | translate\">\n {{ 'Available data points' | translate }}\n </p>\n <div *ngIf=\"!loadingDatapoints\" id=\"search\" class=\"input-group input-group-search m-t-4\">\n <input\n type=\"search\"\n class=\"form-control\"\n placeholder=\"Search\u2026\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!searchString; else clearSearchString\"></i>\n <ng-template #clearSearchString>\n <i c8yIcon=\"times\" class=\"text-muted\" (click)=\"searchStringChanged()\"></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div class=\"p-16\" *ngIf=\"!filteredDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n class=\"sticky-top\"\n style=\"top: 72px\"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n class=\"d-contents\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\">\n <p\n class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"'Selected data points' | translate\"\n translate\n >\n Selected data points\n </p>\n <div class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\">\n <div class=\"c8y-datapoint-pill\" *ngFor=\"let selectedDp of selectedDatapoints\">\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n class=\"c8y-datapoint-pill__btn\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i c8yIcon=\"remove\" class=\"icon-14\"></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i c8yIcon=\"circle\" class=\"m-r-4 icon-14\" [style.color]=\"selectedDp.color\"></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small class=\"text-muted text-10\" *ngIf=\"selectedDp?.__target?.name\">\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div class=\"p-16\" *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points selected.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i6.DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "showAddRemoveButton", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.IncludesDatapointPipe, name: "includesDatapoint" }, { kind: "pipe", type: i8.DatapointLabelPipe, name: "datapointLabel" }] });
150
+ ], ngImport: i0, template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div class=\"d-flex d-col p-relative bg-level-1\" *ngIf=\"allowChangingContext\">\n <c8y-asset-selector-miller\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch\n }\"\n class=\"d-contents\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\" class=\"bg-inherit\">\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p class=\"text-medium text-truncate\" [title]=\"'Available data points' | translate\">\n {{ 'Available data points' | translate }}\n </p>\n <div *ngIf=\"!loadingDatapoints\" id=\"search\" class=\"input-group input-group-search m-t-4\">\n <input\n type=\"search\"\n class=\"form-control\"\n placeholder=\"Search\u2026\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!searchString; else clearSearchString\"></i>\n <ng-template #clearSearchString>\n <i c8yIcon=\"times\" class=\"text-muted\" (click)=\"searchStringChanged()\"></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div class=\"p-16\" *ngIf=\"!filteredDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n class=\"sticky-top\"\n style=\"top: 72px\"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n class=\"d-contents\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\" *ngIf=\"!hideSelection\">\n <p\n class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"'Selected data points' | translate\"\n translate\n >\n Selected data points\n </p>\n <div class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\">\n <div class=\"c8y-datapoint-pill\" *ngFor=\"let selectedDp of selectedDatapoints\">\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n class=\"c8y-datapoint-pill__btn\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i c8yIcon=\"remove\" class=\"icon-14\"></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i c8yIcon=\"circle\" class=\"m-r-4 icon-14\" [style.color]=\"selectedDp.color\"></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small class=\"text-muted text-10\" *ngIf=\"selectedDp?.__target?.name\">\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div class=\"p-16\" *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points selected.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected"] }, { kind: "component", type: i3.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i6.DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "showAddRemoveButton", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.IncludesDatapointPipe, name: "includesDatapoint" }, { kind: "pipe", type: i8.DatapointLabelPipe, name: "datapointLabel" }] });
150
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatapointSelectorComponent, decorators: [{
151
152
  type: Component,
152
153
  args: [{ selector: 'c8y-datapoint-selector', providers: [
@@ -155,7 +156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
155
156
  multi: true,
156
157
  useExisting: forwardRef(() => DatapointSelectorComponent)
157
158
  }
158
- ], template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"allowChangingContext ? 'grid__col--3-6-3--md' : 'grid__col--8-4--md'\"\n>\n <div class=\"d-flex d-col p-relative bg-level-1\" *ngIf=\"allowChangingContext\">\n <c8y-asset-selector-miller\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch\n }\"\n class=\"d-contents\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\" class=\"bg-inherit\">\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p class=\"text-medium text-truncate\" [title]=\"'Available data points' | translate\">\n {{ 'Available data points' | translate }}\n </p>\n <div *ngIf=\"!loadingDatapoints\" id=\"search\" class=\"input-group input-group-search m-t-4\">\n <input\n type=\"search\"\n class=\"form-control\"\n placeholder=\"Search\u2026\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!searchString; else clearSearchString\"></i>\n <ng-template #clearSearchString>\n <i c8yIcon=\"times\" class=\"text-muted\" (click)=\"searchStringChanged()\"></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div class=\"p-16\" *ngIf=\"!filteredDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n class=\"sticky-top\"\n style=\"top: 72px\"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n class=\"d-contents\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\">\n <p\n class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"'Selected data points' | translate\"\n translate\n >\n Selected data points\n </p>\n <div class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\">\n <div class=\"c8y-datapoint-pill\" *ngFor=\"let selectedDp of selectedDatapoints\">\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n class=\"c8y-datapoint-pill__btn\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i c8yIcon=\"remove\" class=\"icon-14\"></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i c8yIcon=\"circle\" class=\"m-r-4 icon-14\" [style.color]=\"selectedDp.color\"></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small class=\"text-muted text-10\" *ngIf=\"selectedDp?.__target?.name\">\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div class=\"p-16\" *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points selected.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n" }]
159
+ ], template: "<div\n class=\"d-grid grid__row--1 fit-h\"\n [ngClass]=\"{\n 'grid__col--3-6-3--md': allowChangingContext && !hideSelection,\n 'grid__col--8-4--md': !allowChangingContext && !hideSelection,\n 'grid__col--4-8--md': allowChangingContext && hideSelection\n }\"\n>\n <div class=\"d-flex d-col p-relative bg-level-1\" *ngIf=\"allowChangingContext\">\n <c8y-asset-selector-miller\n [(ngModel)]=\"contextAsset\"\n [asset]=\"contextAsset\"\n (onSelected)=\"selectionChanged($event)\"\n [container]=\"''\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: true,\n columnHeaders: true,\n showChildDevices: true,\n showUnassignedDevices: true,\n singleColumn: true,\n search: allowSearch\n }\"\n class=\"d-contents\"\n ></c8y-asset-selector-miller>\n </div>\n <!-- center column -->\n <div class=\"inner-scroll bg-component\">\n <ng-template #noDeviceEmptyState>\n <div class=\"p-16\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Select an asset from the list.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </ng-template>\n <ng-template #loadingData>\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-template>\n <div *ngIf=\"assetSelection | async as asset; else noDeviceEmptyState\" class=\"bg-inherit\">\n <div class=\"p-l-16 p-r-16 p-t-8 p-b-8 sticky-top bg-inherit separator-bottom\">\n <p class=\"text-medium text-truncate\" [title]=\"'Available data points' | translate\">\n {{ 'Available data points' | translate }}\n </p>\n <div *ngIf=\"!loadingDatapoints\" id=\"search\" class=\"input-group input-group-search m-t-4\">\n <input\n type=\"search\"\n class=\"form-control\"\n placeholder=\"Search\u2026\"\n [ngModel]=\"searchString\"\n (ngModelChange)=\"searchStringChanged($event)\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!searchString; else clearSearchString\"></i>\n <ng-template #clearSearchString>\n <i c8yIcon=\"times\" class=\"text-muted\" (click)=\"searchStringChanged()\"></i>\n </ng-template>\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"filteredDatapoints$ | async as filteredDatapoints; else loadingData\">\n <ng-container *ngIf=\"!loadingDatapoints; else loadingData\">\n <ng-container *ngIf=\"datapoints$ | async as datapoints\">\n <div class=\"p-16\" *ngIf=\"!filteredDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"\n datapoints.length\n ? (emptyStateSubtitleWhenNoMatchingDataPoints | translate)\n : (emptyStateSubtitleWhenNoDataPointsInAsset | translate)\n \"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-list-group>\n <c8y-list-item\n *ngIf=\"\n datapoints.length > maxNumberOfDatapoints &&\n filteredDatapoints.length >= maxNumberOfDatapoints\n \"\n class=\"sticky-top\"\n style=\"top: 72px\"\n >\n <div class=\"alert alert-warning m-b-0\">\n {{\n 'Due to the large number, only a subset of data points is displayed. Use search to narrow down the number of results.'\n | translate\n }}\n </div>\n </c8y-list-item>\n <c8y-datapoint-selector-list-item\n [ngModel]=\"dp\"\n [isSelected]=\"selectedDatapoints | includesDatapoint: dp\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [disableTypeaheadIfSelected]=\"true\"\n (added)=\"datapointAdded($event)\"\n (removed)=\"datapointRemoved($event)\"\n [highlightText]=\"searchStringChanges$ | async\"\n class=\"d-contents\"\n *ngFor=\"let dp of filteredDatapoints; trackBy: trackByFn\"\n ></c8y-datapoint-selector-list-item>\n </c8y-list-group>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <!-- last column -->\n <div class=\"inner-scroll bg-level-1\" *ngIf=\"!hideSelection\">\n <p\n class=\"text-medium p-l-16 p-r-16 p-t-8 p-b-8 separator-bottom sticky-top text-truncate\"\n [title]=\"'Selected data points' | translate\"\n translate\n >\n Selected data points\n </p>\n <div class=\"d-flex flex-wrap gap-8 p-l-16 p-r-16 p-t-8 p-b-16\">\n <div class=\"c8y-datapoint-pill\" *ngFor=\"let selectedDp of selectedDatapoints\">\n <button\n [title]=\"'Remove' | translate\"\n type=\"button\"\n class=\"c8y-datapoint-pill__btn\"\n (click)=\"datapointRemoved(selectedDp)\"\n >\n <i c8yIcon=\"remove\" class=\"icon-14\"></i>\n </button>\n <div\n class=\"c8y-datapoint-pill__label\"\n [title]=\"selectedDp | datapointLabel: { doNotUseLabel: true, includeDevice: true }\"\n >\n <i c8yIcon=\"circle\" class=\"m-r-4 icon-14\" [style.color]=\"selectedDp.color\"></i>\n <span class=\"text-truncate\">\n <span class=\"text-truncate\">{{ selectedDp | datapointLabel }}</span>\n <small class=\"text-muted text-10\" *ngIf=\"selectedDp?.__target?.name\">\n {{ selectedDp?.__target?.name }}\n </small>\n </span>\n </div>\n </div>\n </div>\n <div class=\"p-16\" *ngIf=\"!selectedDatapoints || !selectedDatapoints.length\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points selected.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n </div>\n</div>\n" }]
159
160
  }], ctorParameters: function () { return [{ type: i1.DatapointLibraryService }]; }, propDecorators: { contextAsset: [{
160
161
  type: Input
161
162
  }], allowChangingContext: [{
@@ -170,5 +171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
170
171
  type: Input
171
172
  }], allowSearch: [{
172
173
  type: Input
174
+ }], hideSelection: [{
175
+ type: Input
173
176
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGF0YXBvaW50LXNlbGVjdG9yL2RhdGFwb2ludC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7QUFjdEUsTUFBTSxPQUFPLDBCQUEwQjtJQTZCckMsWUFBb0IsZ0JBQXlDO1FBQXpDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUEzQnBELHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QixzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFDbEQsdUJBQWtCLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztRQUNwQyx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUM1QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztR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QixhQUV2Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzt5QkFDMUQ7cUJBQ0Y7OEdBR1EsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csaUNBQWlDO3NCQUF6QyxLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElJZGVudGlmaWVkLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YXBcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0YXBvaW50TGlicmFyeVNlcnZpY2UgfSBmcm9tICcuL2RhdGFwb2ludC1saWJyYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS1BJRGV0YWlscywgTWFuYWdlZE9iamVjdEtQSSB9IGZyb20gJy4vZGF0YXBvaW50LXNlbGVjdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnQtc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50LXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGFwb2ludFNlbGVjdG9yQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBjb250ZXh0QXNzZXQ6IElJZGVudGlmaWVkO1xuICBASW5wdXQoKSBhbGxvd0NoYW5naW5nQ29udGV4dCA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93RGF0YXBvaW50c0Zyb21NdWx0aXBsZUFzc2V0cyA9IHRydWU7XG4gIHNlbGVjdGVkRGF0YXBvaW50cyA9IG5ldyBBcnJheTxLUElEZXRhaWxzPigpO1xuICBASW5wdXQoKSBkZWZhdWx0QWN0aXZlU3RhdGUgPSB0cnVlO1xuICBASW5wdXQoKSBpZ25vcmVEYXRhcG9pbnRUZW1wbGF0ZXMgPSBmYWxzZTtcbiAgQElucHV0KCkgZ3Vlc3NEYXRhcG9pbnRVbml0ID0gdHJ1ZTtcbiAgQElucHV0KCkgYWxsb3dTZWFyY2ggPSB0cnVlO1xuICBzZWFyY2hTdHJpbmcgPSAnJztcbiAgbWF4TnVtYmVyT2ZEYXRhcG9pbnRzID0gNTA7XG5cbiAgbG9hZGluZ0RhdGFwb2ludHMgPSBmYWxzZTtcbiAgYXNzZXRTZWxlY3Rpb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElJZGVudGlmaWVkPihudWxsKTtcbiAgZGF0YXBvaW50cyQ6IE9ic2VydmFibGU8S1BJRGV0YWlsc1tdPjtcbiAgZmlsdGVyZWREYXRhcG9pbnRzJDogT2JzZXJ2YWJsZTxLUElEZXRhaWxzW10+O1xuICBzZWFyY2hTdHJpbmdDaGFuZ2VzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBkYXRhcG9pbnRMaWJyYXJ5RW50cmllczogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxNYW5hZ2VkT2JqZWN0S1BJPj47XG5cbiAgZW1wdHlTdGF0ZVN1YnRpdGxlV2hlbk5vTWF0Y2hpbmdEYXRhUG9pbnRzID0gZ2V0dGV4dCgnVHJ5IGFub3RoZXIgc2VhcmNoIHRlcm0uJyk7XG4gIGVtcHR5U3RhdGVTdWJ0aXRsZVdoZW5Ob0RhdGFQb2ludHNJbkFzc2V0ID0gZ2V0dGV4dChcbiAgICAnU2VsZWN0IGFuIGFzc2V0IHdpdGggZGF0YSBwb2ludHMgZnJvbSB0aGUgbGlzdC4nXG4gICk7XG5cbiAgcHJpdmF0ZSBzZWFyY2hTdHJpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIHByaXZhdGUgdG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIG9uQ2hhbmdlOiAocXVhbnRpdHk6IEtQSURldGFpbHNbXSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhcG9pbnRTZXJ2aWNlOiBEYXRhcG9pbnRMaWJyYXJ5U2VydmljZSkge1xuICAgIHRoaXMuc2V0dXBPYnNlcnZhYmxlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlnbm9yZURhdGFwb2ludFRlbXBsYXRlcykge1xuICAgICAgdGhpcy5kYXRhcG9pbnRMaWJyYXJ5RW50cmllcyA9IGZyb20odGhpcy5kYXRhcG9pbnRTZXJ2aWNlLmdldEZpcnN0RGF0YXBvaW50TGlicmFyeVBhZ2UoKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGV4dEFzc2V0KSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQodGhpcy5jb250ZXh0QXNzZXQpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUob2JqOiBLUElEZXRhaWxzW10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YXBvaW50cyA9IG9iajtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgZGF0YXBvaW50QWRkZWQoZHA6IEtQSURldGFpbHMpOiB2b2lkIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICBkcC5fX2FjdGl2ZSA9IHRoaXMuZGVmYXVsdEFjdGl2ZVN0YXRlO1xuICAgIGlmICh0aGlzLmd1ZXNzRGF0YXBvaW50VW5pdCAmJiAhZHAudW5pdCkge1xuICAgICAgdGhpcy5kYXRhcG9pbnRTZXJ2aWNlLmd1ZXNzVW5pdE9mRGF0YXBvaW50KGRwLmZyYWdtZW50LCBkcC5zZXJpZXMsIGRwLl9fdGFyZ2V0KS50aGVuKHVuaXQgPT4ge1xuICAgICAgICBkcC51bml0ID0gdW5pdDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkRGF0YXBvaW50cyA9IFsuLi50aGlzLnNlbGVjdGVkRGF0YXBvaW50cywgZHBdO1xuICAgIHRoaXMuZW1pdEN1cnJlbnRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIGRhdGFwb2ludFJlbW92ZWQoZHA6IEtQSURldGFpbHMpOiB2b2lkIHtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLnNlbGVjdGVkRGF0YXBvaW50cyA9IHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzLmZpbHRlcihcbiAgICAgIHRtcCA9PlxuICAgICAgICB0bXAuZnJhZ21lbnQgIT09IGRwLmZyYWdtZW50IHx8XG4gICAgICAgIHRtcC5zZXJpZXMgIT09IGRwLnNlcmllcyB8fFxuICAgICAgICB0bXAuX190YXJnZXQ/LmlkICE9PSBkcC5fX3RhcmdldD8uaWRcbiAgICApO1xuICAgIHRoaXMuZW1pdEN1cnJlbnRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHNlbGVjdGlvbkNoYW5nZWQoZXZ0OiBJSWRlbnRpZmllZCB8IElJZGVudGlmaWVkW10pOiB2b2lkIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShldnQpICYmIGV2dC5sZW5ndGggIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdEFzc2V0KGV2dFswXSk7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV2dCkgJiYgZXZ0Lml0ZW1zKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25DaGFuZ2VkKGV2dC5pdGVtcyk7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV2dCkgJiYgZXZ0LmlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RBc3NldChldnQpO1xuICAgIH1cblxuICAgIC8vIHJlc2V0IHNlbGVjdGlvblxuICAgIHRoaXMuYXNzZXRTZWxlY3Rpb24ubmV4dChudWxsKTtcbiAgfVxuXG4gIHRyYWNrQnlGbihfaW5kZXg6IG51bWJlciwgaXRlbTogS1BJRGV0YWlscyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2l0ZW0uZnJhZ21lbnR9LSR7aXRlbS5fX3RhcmdldD8uaWR9LSR7aXRlbS5zZXJpZXN9YDtcbiAgfVxuXG4gIHNlYXJjaFN0cmluZ0NoYW5nZWQobmV3VmFsdWU6IHN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hTdHJpbmckLm5leHQobmV3VmFsdWUpO1xuICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gbmV3VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHNldHVwT2JzZXJ2YWJsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhcG9pbnRzJCA9IHRoaXMuYXNzZXRTZWxlY3Rpb24ucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ0RhdGFwb2ludHMgPSB0cnVlO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoYXNzZXQgPT5cbiAgICAgICAgYXNzZXQ/LmlkXG4gICAgICAgICAgPyB0aGlzLmRhdGFwb2ludFNlcnZpY2UuZ2V0RGF0YXBvaW50c09mQXNzZXQoYXNzZXQsIHRoaXMuaWdub3JlRGF0YXBvaW50VGVtcGxhdGVzKVxuICAgICAgICAgIDogW11cbiAgICAgICksXG4gICAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZ0RhdGFwb2ludHMgPSBmYWxzZSkpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5zZWFyY2hTdHJpbmdDaGFuZ2VzJCA9IHRoaXMuc2VhcmNoU3RyaW5nJC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy5maWx0ZXJlZERhdGFwb2ludHMkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWFyY2hTdHJpbmdDaGFuZ2VzJCwgdGhpcy5kYXRhcG9pbnRzJF0pLnBpcGUoXG4gICAgICBtYXAoKFtzZWFyY2hTdHJpbmcsIGRhdGFwb2ludHNdKSA9PiB7XG4gICAgICAgIGlmICghc2VhcmNoU3RyaW5nKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGFwb2ludHM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbG93ZXJDYXNlU2VhcmNoU3RyaW5nID0gc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBkYXRhcG9pbnRzLmZpbHRlcihkYXRhcG9pbnQgPT5cbiAgICAgICAgICB0aGlzLmluY2x1ZGVzU2VhcmNoU3RyaW5nKGRhdGFwb2ludCwgbG93ZXJDYXNlU2VhcmNoU3RyaW5nKVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBtYXAoZmlsdGVyZWQgPT4gZmlsdGVyZWQuc2xpY2UoMCwgdGhpcy5tYXhOdW1iZXJPZkRhdGFwb2ludHMpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEFzc2V0KGFzc2V0OiBJSWRlbnRpZmllZCkge1xuICAgIHRoaXMuYXNzZXRTZWxlY3Rpb24ubmV4dChhc3NldCk7XG4gICAgdGhpcy5zZWFyY2hTdHJpbmdDaGFuZ2VkKCk7XG4gICAgaWYgKCF0aGlzLmFsbG93RGF0YXBvaW50c0Zyb21NdWx0aXBsZUFzc2V0cykge1xuICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGFwb2ludHMgPSBbXTtcbiAgICB0aGlzLmVtaXRDdXJyZW50U2VsZWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDdXJyZW50U2VsZWN0aW9uKCkge1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3RlZERhdGFwb2ludHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrQXNUb3VjaGVkKCkge1xuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluY2x1ZGVzU2VhcmNoU3RyaW5nKGRhdGFwb2ludDogS1BJRGV0YWlscywgbG93ZXJDYXNlU2VhcmNoU3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBsYWJlbCA9IGRhdGFwb2ludC5sYWJlbD8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAobGFiZWwgJiYgbGFiZWwuaW5jbHVkZXMobG93ZXJDYXNlU2VhcmNoU3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZnJhZ21lbnQgPSBkYXRhcG9pbnQuZnJhZ21lbnQ/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGZyYWdtZW50ICYmIGZyYWdtZW50LmluY2x1ZGVzKGxvd2VyQ2FzZVNlYXJjaFN0cmluZykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlcmllcyA9IGRhdGFwb2ludC5zZXJpZXM/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHNlcmllcyAmJiBzZXJpZXMuaW5jbHVkZXMobG93ZXJDYXNlU2VhcmNoU3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZC1ncmlkIGdyaWRfX3Jvdy0tMSBmaXQtaFwiXG4gIFtuZ0NsYXNzXT1cImFsbG93Q2hhbmdpbmdDb250ZXh0ID8gJ2dyaWRfX2NvbC0tMy02LTMtLW1kJyA6ICdncmlkX19jb2wtLTgtNC0tbWQnXCJcbj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBwLXJlbGF0aXZlIGJnLWxldmVsLTFcIiAqbmdJZj1cImFsbG93Q2hhbmdpbmdDb250ZXh0XCI+XG4gICAgPGM4eS1hc3NldC1zZWxlY3Rvci1taWxsZXJcbiAgICAgIFsobmdNb2RlbCldPVwiY29udGV4dEFzc2V0XCJcbiAgICAgIFthc3NldF09XCJjb250ZXh0QXNzZXRcIlxuICAgICAgKG9uU2VsZWN0ZWQpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIFtjb250YWluZXJdPVwiJydcIlxuICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgIHZpZXc6ICdtaWxsZXInLFxuICAgICAgICBncm91cHNTZWxlY3RhYmxlOiB0cnVlLFxuICAgICAgICBjb2x1bW5IZWFkZXJzOiB0cnVlLFxuICAgICAgICBzaG93Q2hpbGREZXZpY2VzOiB0cnVlLFxuICAgICAgICBzaG93VW5hc3NpZ25lZERldmljZXM6IHRydWUsXG4gICAgICAgIHNpbmdsZUNvbHVtbjogdHJ1ZSxcbiAgICAgICAgc2VhcmNoOiBhbGxvd1NlYXJjaFxuICAgICAgfVwiXG4gICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgID48L2M4eS1hc3NldC1zZWxlY3Rvci1taWxsZXI+XG4gIDwvZGl2PlxuICA8IS0tIGNlbnRlciBjb2x1bW4gLS0+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYmctY29tcG9uZW50XCI+XG4gICAgPG5nLXRlbXBsYXRlICNub0RldmljZUVtcHR5U3RhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNlwiPlxuICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgW2ljb25dPVwiJ2M4eS1kYXRhLXBvaW50cydcIlxuICAgICAgICAgIFt0aXRsZV09XCInTm8gZGF0YSBwb2ludHMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1NlbGVjdCBhbiBhc3NldCBmcm9tIHRoZSBsaXN0LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ0RhdGE+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiAqbmdJZj1cImFzc2V0U2VsZWN0aW9uIHwgYXN5bmMgYXMgYXNzZXQ7IGVsc2Ugbm9EZXZpY2VFbXB0eVN0YXRlXCIgY2xhc3M9XCJiZy1pbmhlcml0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC1sLTE2IHAtci0xNiBwLXQtOCBwLWItOCBzdGlja3ktdG9wIGJnLWluaGVyaXQgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQtbWVkaXVtIHRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwiJ0F2YWlsYWJsZSBkYXRhIHBvaW50cycgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICB7eyAnQXZhaWxhYmxlIGRhdGEgcG9pbnRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZ0RhdGFwb2ludHNcIiBpZD1cInNlYXJjaFwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc2VhcmNoIG0tdC00XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNo4oCmXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFN0cmluZ1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hTdHJpbmdDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInNlYXJjaFwiICpuZ0lmPVwiIXNlYXJjaFN0cmluZzsgZWxzZSBjbGVhclNlYXJjaFN0cmluZ1wiPjwvaT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2xlYXJTZWFyY2hTdHJpbmc+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJ0aW1lc1wiIGNsYXNzPVwidGV4dC1tdXRlZFwiIChjbGljayk9XCJzZWFyY2hTdHJpbmdDaGFuZ2VkKClcIj48L2k+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZERhdGFwb2ludHMkIHwgYXN5bmMgYXMgZmlsdGVyZWREYXRhcG9pbnRzOyBlbHNlIGxvYWRpbmdEYXRhXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ0RhdGFwb2ludHM7IGVsc2UgbG9hZGluZ0RhdGFcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YXBvaW50cyQgfCBhc3luYyBhcyBkYXRhcG9pbnRzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xNlwiICpuZ0lmPVwiIWZpbHRlcmVkRGF0YXBvaW50cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgICAgIFtpY29uXT1cIidjOHktZGF0YS1wb2ludHMnXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ05vIGRhdGEgcG9pbnRzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3N1YnRpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgZGF0YXBvaW50cy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyAoZW1wdHlTdGF0ZVN1YnRpdGxlV2hlbk5vTWF0Y2hpbmdEYXRhUG9pbnRzIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICA6IChlbXB0eVN0YXRlU3VidGl0bGVXaGVuTm9EYXRhUG9pbnRzSW5Bc3NldCB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGM4eS1saXN0LWdyb3VwPlxuICAgICAgICAgICAgICA8Yzh5LWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBkYXRhcG9pbnRzLmxlbmd0aCA+IG1heE51bWJlck9mRGF0YXBvaW50cyAmJlxuICAgICAgICAgICAgICAgICAgZmlsdGVyZWREYXRhcG9pbnRzLmxlbmd0aCA+PSBtYXhOdW1iZXJPZkRhdGFwb2ludHNcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RpY2t5LXRvcFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDcycHhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdEdWUgdG8gdGhlIGxhcmdlIG51bWJlciwgb25seSBhIHN1YnNldCBvZiBkYXRhIHBvaW50cyBpcyBkaXNwbGF5ZWQuIFVzZSBzZWFyY2ggdG8gbmFycm93IGRvd24gdGhlIG51bWJlciBvZiByZXN1bHRzLidcbiAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktbGlzdC1pdGVtPlxuICAgICAgICAgICAgICA8Yzh5LWRhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJkcFwiXG4gICAgICAgICAgICAgICAgW2lzU2VsZWN0ZWRdPVwic2VsZWN0ZWREYXRhcG9pbnRzIHwgaW5jbHVkZXNEYXRhcG9pbnQ6IGRwXCJcbiAgICAgICAgICAgICAgICBbZGF0YXBvaW50TGlicmFyeUVudHJpZXNdPVwiZGF0YXBvaW50TGlicmFyeUVudHJpZXNcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlVHlwZWFoZWFkSWZTZWxlY3RlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAoYWRkZWQpPVwiZGF0YXBvaW50QWRkZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHJlbW92ZWQpPVwiZGF0YXBvaW50UmVtb3ZlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaGlnaGxpZ2h0VGV4dF09XCJzZWFyY2hTdHJpbmdDaGFuZ2VzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkcCBvZiBmaWx0ZXJlZERhdGFwb2ludHM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgID48L2M4eS1kYXRhcG9pbnQtc2VsZWN0b3ItbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gbGFzdCBjb2x1bW4gIC0tPlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIj5cbiAgICA8cFxuICAgICAgY2xhc3M9XCJ0ZXh0LW1lZGl1bSBwLWwtMTYgcC1yLTE2IHAtdC04IHAtYi04IHNlcGFyYXRvci1ib3R0b20gc3RpY2t5LXRvcCB0ZXh0LXRydW5jYXRlXCJcbiAgICAgIFt0aXRsZV09XCInU2VsZWN0ZWQgZGF0YSBwb2ludHMnIHwgdHJhbnNsYXRlXCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgID5cbiAgICAgIFNlbGVjdGVkIGRhdGEgcG9pbnRzXG4gICAgPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGdhcC04IHAtbC0xNiBwLXItMTYgcC10LTggcC1iLTE2XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsXCIgKm5nRm9yPVwibGV0IHNlbGVjdGVkRHAgb2Ygc2VsZWN0ZWREYXRhcG9pbnRzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbdGl0bGVdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsX19idG5cIlxuICAgICAgICAgIChjbGljayk9XCJkYXRhcG9pbnRSZW1vdmVkKHNlbGVjdGVkRHApXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGM4eUljb249XCJyZW1vdmVcIiBjbGFzcz1cImljb24tMTRcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjOHktZGF0YXBvaW50LXBpbGxfX2xhYmVsXCJcbiAgICAgICAgICBbdGl0bGVdPVwic2VsZWN0ZWREcCB8IGRhdGFwb2ludExhYmVsOiB7IGRvTm90VXNlTGFiZWw6IHRydWUsIGluY2x1ZGVEZXZpY2U6IHRydWUgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwiY2lyY2xlXCIgY2xhc3M9XCJtLXItNCBpY29uLTE0XCIgW3N0eWxlLmNvbG9yXT1cInNlbGVjdGVkRHAuY29sb3JcIj48L2k+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj57eyBzZWxlY3RlZERwIHwgZGF0YXBvaW50TGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkIHRleHQtMTBcIiAqbmdJZj1cInNlbGVjdGVkRHA/Ll9fdGFyZ2V0Py5uYW1lXCI+XG4gICAgICAgICAgICAgIHt7IHNlbGVjdGVkRHA/Ll9fdGFyZ2V0Py5uYW1lIH19XG4gICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicC0xNlwiICpuZ0lmPVwiIXNlbGVjdGVkRGF0YXBvaW50cyB8fCAhc2VsZWN0ZWREYXRhcG9pbnRzLmxlbmd0aFwiPlxuICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICBbaWNvbl09XCInYzh5LWRhdGEtcG9pbnRzJ1wiXG4gICAgICAgIFt0aXRsZV09XCInTm8gZGF0YSBwb2ludHMgc2VsZWN0ZWQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RhdGFwb2ludC1zZWxlY3Rvci9kYXRhcG9pbnQtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGF0YXBvaW50LXNlbGVjdG9yL2RhdGFwb2ludC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7QUFjdEUsTUFBTSxPQUFPLDBCQUEwQjtJQThCckMsWUFBb0IsZ0JBQXlDO1FBQXpDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUE1QnBELHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QixzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFDbEQsdUJBQWtCLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztRQUNwQyx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixrQkFBYSxHQUFHLEtBQUssQ0FBQztR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QUEwQjtrQkFYdEMsU0FBUzsrQkFDRSx3QkFBd0IsYUFFdkI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7eUJBQzFEO3FCQUNGOzhHQUdRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGlDQUFpQztzQkFBekMsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElJZGVudGlmaWVkLCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YXBcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0YXBvaW50TGlicmFyeVNlcnZpY2UgfSBmcm9tICcuL2RhdGFwb2ludC1saWJyYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS1BJRGV0YWlscywgTWFuYWdlZE9iamVjdEtQSSB9IGZyb20gJy4vZGF0YXBvaW50LXNlbGVjdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnQtc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50LXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGFwb2ludFNlbGVjdG9yQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBjb250ZXh0QXNzZXQ6IElJZGVudGlmaWVkO1xuICBASW5wdXQoKSBhbGxvd0NoYW5naW5nQ29udGV4dCA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93RGF0YXBvaW50c0Zyb21NdWx0aXBsZUFzc2V0cyA9IHRydWU7XG4gIHNlbGVjdGVkRGF0YXBvaW50cyA9IG5ldyBBcnJheTxLUElEZXRhaWxzPigpO1xuICBASW5wdXQoKSBkZWZhdWx0QWN0aXZlU3RhdGUgPSB0cnVlO1xuICBASW5wdXQoKSBpZ25vcmVEYXRhcG9pbnRUZW1wbGF0ZXMgPSBmYWxzZTtcbiAgQElucHV0KCkgZ3Vlc3NEYXRhcG9pbnRVbml0ID0gdHJ1ZTtcbiAgQElucHV0KCkgYWxsb3dTZWFyY2ggPSB0cnVlO1xuICBASW5wdXQoKSBoaWRlU2VsZWN0aW9uID0gZmFsc2U7XG4gIHNlYXJjaFN0cmluZyA9ICcnO1xuICBtYXhOdW1iZXJPZkRhdGFwb2ludHMgPSA1MDtcblxuICBsb2FkaW5nRGF0YXBvaW50cyA9IGZhbHNlO1xuICBhc3NldFNlbGVjdGlvbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUlkZW50aWZpZWQ+KG51bGwpO1xuICBkYXRhcG9pbnRzJDogT2JzZXJ2YWJsZTxLUElEZXRhaWxzW10+O1xuICBmaWx0ZXJlZERhdGFwb2ludHMkOiBPYnNlcnZhYmxlPEtQSURldGFpbHNbXT47XG4gIHNlYXJjaFN0cmluZ0NoYW5nZXMkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGRhdGFwb2ludExpYnJhcnlFbnRyaWVzOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PE1hbmFnZWRPYmplY3RLUEk+PjtcblxuICBlbXB0eVN0YXRlU3VidGl0bGVXaGVuTm9NYXRjaGluZ0RhdGFQb2ludHMgPSBnZXR0ZXh0KCdUcnkgYW5vdGhlciBzZWFyY2ggdGVybS4nKTtcbiAgZW1wdHlTdGF0ZVN1YnRpdGxlV2hlbk5vRGF0YVBvaW50c0luQXNzZXQgPSBnZXR0ZXh0KFxuICAgICdTZWxlY3QgYW4gYXNzZXQgd2l0aCBkYXRhIHBvaW50cyBmcm9tIHRoZSBsaXN0LidcbiAgKTtcblxuICBwcml2YXRlIHNlYXJjaFN0cmluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgcHJpdmF0ZSB0b3VjaGVkID0gZmFsc2U7XG4gIHByaXZhdGUgb25DaGFuZ2U6IChxdWFudGl0eTogS1BJRGV0YWlsc1tdKSA9PiB2b2lkO1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFwb2ludFNlcnZpY2U6IERhdGFwb2ludExpYnJhcnlTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0dXBPYnNlcnZhYmxlcygpO1xuICAgIGlmICghdGhpcy5pZ25vcmVEYXRhcG9pbnRUZW1wbGF0ZXMpIHtcbiAgICAgIHRoaXMuZGF0YXBvaW50TGlicmFyeUVudHJpZXMgPSBmcm9tKHRoaXMuZGF0YXBvaW50U2VydmljZS5nZXRGaXJzdERhdGFwb2ludExpYnJhcnlQYWdlKCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRleHRBc3NldCkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkKHRoaXMuY29udGV4dEFzc2V0KTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKG9iajogS1BJRGV0YWlsc1tdKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGFwb2ludHMgPSBvYmo7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIGRhdGFwb2ludEFkZGVkKGRwOiBLUElEZXRhaWxzKTogdm9pZCB7XG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgZHAuX19hY3RpdmUgPSB0aGlzLmRlZmF1bHRBY3RpdmVTdGF0ZTtcbiAgICBpZiAodGhpcy5ndWVzc0RhdGFwb2ludFVuaXQgJiYgIWRwLnVuaXQpIHtcbiAgICAgIHRoaXMuZGF0YXBvaW50U2VydmljZS5ndWVzc1VuaXRPZkRhdGFwb2ludChkcC5mcmFnbWVudCwgZHAuc2VyaWVzLCBkcC5fX3RhcmdldCkudGhlbih1bml0ID0+IHtcbiAgICAgICAgZHAudW5pdCA9IHVuaXQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZERhdGFwb2ludHMgPSBbLi4udGhpcy5zZWxlY3RlZERhdGFwb2ludHMsIGRwXTtcbiAgICB0aGlzLmVtaXRDdXJyZW50U2VsZWN0aW9uKCk7XG4gIH1cblxuICBkYXRhcG9pbnRSZW1vdmVkKGRwOiBLUElEZXRhaWxzKTogdm9pZCB7XG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5zZWxlY3RlZERhdGFwb2ludHMgPSB0aGlzLnNlbGVjdGVkRGF0YXBvaW50cy5maWx0ZXIoXG4gICAgICB0bXAgPT5cbiAgICAgICAgdG1wLmZyYWdtZW50ICE9PSBkcC5mcmFnbWVudCB8fFxuICAgICAgICB0bXAuc2VyaWVzICE9PSBkcC5zZXJpZXMgfHxcbiAgICAgICAgdG1wLl9fdGFyZ2V0Py5pZCAhPT0gZHAuX190YXJnZXQ/LmlkXG4gICAgKTtcbiAgICB0aGlzLmVtaXRDdXJyZW50U2VsZWN0aW9uKCk7XG4gIH1cblxuICBzZWxlY3Rpb25DaGFuZ2VkKGV2dDogSUlkZW50aWZpZWQgfCBJSWRlbnRpZmllZFtdKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZ0KSAmJiBldnQubGVuZ3RoICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RBc3NldChldnRbMF0pO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShldnQpICYmIGV2dC5pdGVtcykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZChldnQuaXRlbXMpO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShldnQpICYmIGV2dC5pZCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0QXNzZXQoZXZ0KTtcbiAgICB9XG5cbiAgICAvLyByZXNldCBzZWxlY3Rpb25cbiAgICB0aGlzLmFzc2V0U2VsZWN0aW9uLm5leHQobnVsbCk7XG4gIH1cblxuICB0cmFja0J5Rm4oX2luZGV4OiBudW1iZXIsIGl0ZW06IEtQSURldGFpbHMpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtpdGVtLmZyYWdtZW50fS0ke2l0ZW0uX190YXJnZXQ/LmlkfS0ke2l0ZW0uc2VyaWVzfWA7XG4gIH1cblxuICBzZWFyY2hTdHJpbmdDaGFuZ2VkKG5ld1ZhbHVlOiBzdHJpbmcgPSAnJyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoU3RyaW5nJC5uZXh0KG5ld1ZhbHVlKTtcbiAgICB0aGlzLnNlYXJjaFN0cmluZyA9IG5ld1ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE9ic2VydmFibGVzKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YXBvaW50cyQgPSB0aGlzLmFzc2V0U2VsZWN0aW9uLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdEYXRhcG9pbnRzID0gdHJ1ZTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKGFzc2V0ID0+XG4gICAgICAgIGFzc2V0Py5pZFxuICAgICAgICAgID8gdGhpcy5kYXRhcG9pbnRTZXJ2aWNlLmdldERhdGFwb2ludHNPZkFzc2V0KGFzc2V0LCB0aGlzLmlnbm9yZURhdGFwb2ludFRlbXBsYXRlcylcbiAgICAgICAgICA6IFtdXG4gICAgICApLFxuICAgICAgdGFwKCgpID0+ICh0aGlzLmxvYWRpbmdEYXRhcG9pbnRzID0gZmFsc2UpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIHRoaXMuc2VhcmNoU3RyaW5nQ2hhbmdlcyQgPSB0aGlzLnNlYXJjaFN0cmluZyQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIHRoaXMuZmlsdGVyZWREYXRhcG9pbnRzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VhcmNoU3RyaW5nQ2hhbmdlcyQsIHRoaXMuZGF0YXBvaW50cyRdKS5waXBlKFxuICAgICAgbWFwKChbc2VhcmNoU3RyaW5nLCBkYXRhcG9pbnRzXSkgPT4ge1xuICAgICAgICBpZiAoIXNlYXJjaFN0cmluZykge1xuICAgICAgICAgIHJldHVybiBkYXRhcG9pbnRzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxvd2VyQ2FzZVNlYXJjaFN0cmluZyA9IHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gZGF0YXBvaW50cy5maWx0ZXIoZGF0YXBvaW50ID0+XG4gICAgICAgICAgdGhpcy5pbmNsdWRlc1NlYXJjaFN0cmluZyhkYXRhcG9pbnQsIGxvd2VyQ2FzZVNlYXJjaFN0cmluZylcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKGZpbHRlcmVkID0+IGZpbHRlcmVkLnNsaWNlKDAsIHRoaXMubWF4TnVtYmVyT2ZEYXRhcG9pbnRzKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RBc3NldChhc3NldDogSUlkZW50aWZpZWQpIHtcbiAgICB0aGlzLmFzc2V0U2VsZWN0aW9uLm5leHQoYXNzZXQpO1xuICAgIHRoaXMuc2VhcmNoU3RyaW5nQ2hhbmdlZCgpO1xuICAgIGlmICghdGhpcy5hbGxvd0RhdGFwb2ludHNGcm9tTXVsdGlwbGVBc3NldHMpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzID0gW107XG4gICAgdGhpcy5lbWl0Q3VycmVudFNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Q3VycmVudFNlbGVjdGlvbigpIHtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWREYXRhcG9pbnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0FzVG91Y2hlZCgpIHtcbiAgICBpZiAoIXRoaXMudG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbmNsdWRlc1NlYXJjaFN0cmluZyhkYXRhcG9pbnQ6IEtQSURldGFpbHMsIGxvd2VyQ2FzZVNlYXJjaFN0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbGFiZWwgPSBkYXRhcG9pbnQubGFiZWw/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxhYmVsICYmIGxhYmVsLmluY2x1ZGVzKGxvd2VyQ2FzZVNlYXJjaFN0cmluZykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGZyYWdtZW50ID0gZGF0YXBvaW50LmZyYWdtZW50Py50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChmcmFnbWVudCAmJiBmcmFnbWVudC5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2hTdHJpbmcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXJpZXMgPSBkYXRhcG9pbnQuc2VyaWVzPy50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChzZXJpZXMgJiYgc2VyaWVzLmluY2x1ZGVzKGxvd2VyQ2FzZVNlYXJjaFN0cmluZykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImQtZ3JpZCBncmlkX19yb3ctLTEgZml0LWhcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ2dyaWRfX2NvbC0tMy02LTMtLW1kJzogYWxsb3dDaGFuZ2luZ0NvbnRleHQgJiYgIWhpZGVTZWxlY3Rpb24sXG4gICAgJ2dyaWRfX2NvbC0tOC00LS1tZCc6ICFhbGxvd0NoYW5naW5nQ29udGV4dCAmJiAhaGlkZVNlbGVjdGlvbixcbiAgICAnZ3JpZF9fY29sLS00LTgtLW1kJzogYWxsb3dDaGFuZ2luZ0NvbnRleHQgJiYgaGlkZVNlbGVjdGlvblxuICB9XCJcbj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBwLXJlbGF0aXZlIGJnLWxldmVsLTFcIiAqbmdJZj1cImFsbG93Q2hhbmdpbmdDb250ZXh0XCI+XG4gICAgPGM4eS1hc3NldC1zZWxlY3Rvci1taWxsZXJcbiAgICAgIFsobmdNb2RlbCldPVwiY29udGV4dEFzc2V0XCJcbiAgICAgIFthc3NldF09XCJjb250ZXh0QXNzZXRcIlxuICAgICAgKG9uU2VsZWN0ZWQpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgIFtjb250YWluZXJdPVwiJydcIlxuICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgIHZpZXc6ICdtaWxsZXInLFxuICAgICAgICBncm91cHNTZWxlY3RhYmxlOiB0cnVlLFxuICAgICAgICBjb2x1bW5IZWFkZXJzOiB0cnVlLFxuICAgICAgICBzaG93Q2hpbGREZXZpY2VzOiB0cnVlLFxuICAgICAgICBzaG93VW5hc3NpZ25lZERldmljZXM6IHRydWUsXG4gICAgICAgIHNpbmdsZUNvbHVtbjogdHJ1ZSxcbiAgICAgICAgc2VhcmNoOiBhbGxvd1NlYXJjaFxuICAgICAgfVwiXG4gICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgID48L2M4eS1hc3NldC1zZWxlY3Rvci1taWxsZXI+XG4gIDwvZGl2PlxuICA8IS0tIGNlbnRlciBjb2x1bW4gLS0+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYmctY29tcG9uZW50XCI+XG4gICAgPG5nLXRlbXBsYXRlICNub0RldmljZUVtcHR5U3RhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNlwiPlxuICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgW2ljb25dPVwiJ2M4eS1kYXRhLXBvaW50cydcIlxuICAgICAgICAgIFt0aXRsZV09XCInTm8gZGF0YSBwb2ludHMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ1NlbGVjdCBhbiBhc3NldCBmcm9tIHRoZSBsaXN0LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ0RhdGE+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiAqbmdJZj1cImFzc2V0U2VsZWN0aW9uIHwgYXN5bmMgYXMgYXNzZXQ7IGVsc2Ugbm9EZXZpY2VFbXB0eVN0YXRlXCIgY2xhc3M9XCJiZy1pbmhlcml0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC1sLTE2IHAtci0xNiBwLXQtOCBwLWItOCBzdGlja3ktdG9wIGJnLWluaGVyaXQgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQtbWVkaXVtIHRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwiJ0F2YWlsYWJsZSBkYXRhIHBvaW50cycgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICB7eyAnQXZhaWxhYmxlIGRhdGEgcG9pbnRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZ0RhdGFwb2ludHNcIiBpZD1cInNlYXJjaFwiIGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc2VhcmNoIG0tdC00XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNo4oCmXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFN0cmluZ1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hTdHJpbmdDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInNlYXJjaFwiICpuZ0lmPVwiIXNlYXJjaFN0cmluZzsgZWxzZSBjbGVhclNlYXJjaFN0cmluZ1wiPjwvaT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2xlYXJTZWFyY2hTdHJpbmc+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJ0aW1lc1wiIGNsYXNzPVwidGV4dC1tdXRlZFwiIChjbGljayk9XCJzZWFyY2hTdHJpbmdDaGFuZ2VkKClcIj48L2k+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZERhdGFwb2ludHMkIHwgYXN5bmMgYXMgZmlsdGVyZWREYXRhcG9pbnRzOyBlbHNlIGxvYWRpbmdEYXRhXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ0RhdGFwb2ludHM7IGVsc2UgbG9hZGluZ0RhdGFcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YXBvaW50cyQgfCBhc3luYyBhcyBkYXRhcG9pbnRzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0xNlwiICpuZ0lmPVwiIWZpbHRlcmVkRGF0YXBvaW50cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgICAgIFtpY29uXT1cIidjOHktZGF0YS1wb2ludHMnXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ05vIGRhdGEgcG9pbnRzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3N1YnRpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgZGF0YXBvaW50cy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyAoZW1wdHlTdGF0ZVN1YnRpdGxlV2hlbk5vTWF0Y2hpbmdEYXRhUG9pbnRzIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICA6IChlbXB0eVN0YXRlU3VidGl0bGVXaGVuTm9EYXRhUG9pbnRzSW5Bc3NldCB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGM4eS1saXN0LWdyb3VwPlxuICAgICAgICAgICAgICA8Yzh5LWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBkYXRhcG9pbnRzLmxlbmd0aCA+IG1heE51bWJlck9mRGF0YXBvaW50cyAmJlxuICAgICAgICAgICAgICAgICAgZmlsdGVyZWREYXRhcG9pbnRzLmxlbmd0aCA+PSBtYXhOdW1iZXJPZkRhdGFwb2ludHNcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RpY2t5LXRvcFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDcycHhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbS1iLTBcIj5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdEdWUgdG8gdGhlIGxhcmdlIG51bWJlciwgb25seSBhIHN1YnNldCBvZiBkYXRhIHBvaW50cyBpcyBkaXNwbGF5ZWQuIFVzZSBzZWFyY2ggdG8gbmFycm93IGRvd24gdGhlIG51bWJlciBvZiByZXN1bHRzLidcbiAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktbGlzdC1pdGVtPlxuICAgICAgICAgICAgICA8Yzh5LWRhdGFwb2ludC1zZWxlY3Rvci1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJkcFwiXG4gICAgICAgICAgICAgICAgW2lzU2VsZWN0ZWRdPVwic2VsZWN0ZWREYXRhcG9pbnRzIHwgaW5jbHVkZXNEYXRhcG9pbnQ6IGRwXCJcbiAgICAgICAgICAgICAgICBbZGF0YXBvaW50TGlicmFyeUVudHJpZXNdPVwiZGF0YXBvaW50TGlicmFyeUVudHJpZXNcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlVHlwZWFoZWFkSWZTZWxlY3RlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAoYWRkZWQpPVwiZGF0YXBvaW50QWRkZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHJlbW92ZWQpPVwiZGF0YXBvaW50UmVtb3ZlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaGlnaGxpZ2h0VGV4dF09XCJzZWFyY2hTdHJpbmdDaGFuZ2VzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkcCBvZiBmaWx0ZXJlZERhdGFwb2ludHM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgID48L2M4eS1kYXRhcG9pbnQtc2VsZWN0b3ItbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gbGFzdCBjb2x1bW4gIC0tPlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIiAqbmdJZj1cIiFoaWRlU2VsZWN0aW9uXCI+XG4gICAgPHBcbiAgICAgIGNsYXNzPVwidGV4dC1tZWRpdW0gcC1sLTE2IHAtci0xNiBwLXQtOCBwLWItOCBzZXBhcmF0b3ItYm90dG9tIHN0aWNreS10b3AgdGV4dC10cnVuY2F0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ1NlbGVjdGVkIGRhdGEgcG9pbnRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBTZWxlY3RlZCBkYXRhIHBvaW50c1xuICAgIDwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBnYXAtOCBwLWwtMTYgcC1yLTE2IHAtdC04IHAtYi0xNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImM4eS1kYXRhcG9pbnQtcGlsbFwiICpuZ0Zvcj1cImxldCBzZWxlY3RlZERwIG9mIHNlbGVjdGVkRGF0YXBvaW50c1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW3RpdGxlXT1cIidSZW1vdmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImM4eS1kYXRhcG9pbnQtcGlsbF9fYnRuXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGF0YXBvaW50UmVtb3ZlZChzZWxlY3RlZERwKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwicmVtb3ZlXCIgY2xhc3M9XCJpY29uLTE0XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsX19sYWJlbFwiXG4gICAgICAgICAgW3RpdGxlXT1cInNlbGVjdGVkRHAgfCBkYXRhcG9pbnRMYWJlbDogeyBkb05vdFVzZUxhYmVsOiB0cnVlLCBpbmNsdWRlRGV2aWNlOiB0cnVlIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImNpcmNsZVwiIGNsYXNzPVwibS1yLTQgaWNvbi0xNFwiIFtzdHlsZS5jb2xvcl09XCJzZWxlY3RlZERwLmNvbG9yXCI+PC9pPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3sgc2VsZWN0ZWREcCB8IGRhdGFwb2ludExhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LTEwXCIgKm5nSWY9XCJzZWxlY3RlZERwPy5fX3RhcmdldD8ubmFtZVwiPlxuICAgICAgICAgICAgICB7eyBzZWxlY3RlZERwPy5fX3RhcmdldD8ubmFtZSB9fVxuICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInAtMTZcIiAqbmdJZj1cIiFzZWxlY3RlZERhdGFwb2ludHMgfHwgIXNlbGVjdGVkRGF0YXBvaW50cy5sZW5ndGhcIj5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgW2ljb25dPVwiJ2M4eS1kYXRhLXBvaW50cydcIlxuICAgICAgICBbdGl0bGVdPVwiJ05vIGRhdGEgcG9pbnRzIHNlbGVjdGVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==