@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
228 lines • 27.2 kB
JavaScript
import { NgModule } from '@angular/core';
import { CoreModule, hookActionBar, HookProviderTypes, hookRoute, hookTab, ViewContext } from '@c8y/ngx-components';
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
import { PopoverModule } from 'ngx-bootstrap/popover';
import { TooltipModule } from 'ngx-bootstrap/tooltip';
import { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';
import { AddDashboardComponent } from './add-dashboard.component';
import { AddDeviceDashboardFactory, AddGroupDashboardFactory } from './add-dashboard.factory';
import { AppearanceSettingsComponent } from './appearance-settings.component';
import { ContextDashboardComponent } from './context-dashboard.component';
import { CONTEXT_DASHBOARD_CONFIG } from './context-dashboard.model';
import { DeviceDashboardActionBarFactory, GroupDashboardActionBarFactory } from './dashboard-action-bar.factory';
import { DashboardDetailComponent } from './dashboard-detail.component';
import { DeviceDashboardGuard } from './device-dashboard.guard';
import { GroupDashboardGuard } from './group-dashboard.guard';
import { PasteDashboardActionComponent } from './paste-dashboard-action.component';
import { WidgetConfigComponent } from './widget-config.component';
import { WidgetPreviewComponent } from './widget-preview.component';
import { DashboardAvailabilityComponent } from './dashboard-availability.component';
import { IconSelectorModule } from '@c8y/ngx-components/icon-selector';
import { NewDashboardGuard, newDashboardTab } from './new-dashboard.guard';
import { CollapseModule } from 'ngx-bootstrap/collapse';
import { DashboardGeneralSettingsComponent } from './dashboard-settings/dashboard-general-settings.component';
import { DashboardAppearanceSettingsComponent } from './dashboard-settings/dashboard-appearance-settings.component';
import { DashboardVersionHistoryComponent } from './dashboard-settings/dashboard-version-history.component';
import { TypedDashboardSettingsComponent } from './dashboard-settings/typed-dashboard-settings.component';
import { TypeDashboardInfoComponent } from './type-dashboard-info/type-dashboard-info.component';
import * as i0 from "@angular/core";
import * as i1 from "ngx-bootstrap/dropdown";
import * as i2 from "ngx-bootstrap/collapse";
const defaultConfig = {
allowFullscreen: true
};
export class ContextDashboardModule {
static config(config = {}) {
return {
ngModule: ContextDashboardModule,
providers: [
{
provide: CONTEXT_DASHBOARD_CONFIG,
useValue: { ...defaultConfig, ...config }
},
hookRoute(config.routes || [])
]
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ContextDashboardModule, declarations: [AppearanceSettingsComponent,
ContextDashboardComponent,
WidgetConfigComponent,
WidgetPreviewComponent,
DashboardDetailComponent,
AddDashboardComponent,
PasteDashboardActionComponent,
DashboardAvailabilityComponent,
DashboardGeneralSettingsComponent,
DashboardAppearanceSettingsComponent,
DashboardVersionHistoryComponent,
TypedDashboardSettingsComponent,
TypeDashboardInfoComponent], imports: [CoreModule,
TooltipModule,
PopoverModule,
AssetSelectorModule,
IconSelectorModule, i1.BsDropdownModule, i2.CollapseModule], exports: [ContextDashboardComponent,
WidgetConfigComponent,
DashboardDetailComponent,
TypeDashboardInfoComponent] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextDashboardModule, providers: [
{
provide: CONTEXT_DASHBOARD_CONFIG,
useValue: defaultConfig
}
], imports: [CoreModule,
TooltipModule,
PopoverModule,
AssetSelectorModule,
IconSelectorModule,
BsDropdownModule.forRoot(),
CollapseModule.forRoot()] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContextDashboardModule, decorators: [{
type: NgModule,
args: [{
declarations: [
AppearanceSettingsComponent,
ContextDashboardComponent,
WidgetConfigComponent,
WidgetPreviewComponent,
DashboardDetailComponent,
AddDashboardComponent,
PasteDashboardActionComponent,
DashboardAvailabilityComponent,
DashboardGeneralSettingsComponent,
DashboardAppearanceSettingsComponent,
DashboardVersionHistoryComponent,
TypedDashboardSettingsComponent,
TypeDashboardInfoComponent
],
imports: [
CoreModule,
TooltipModule,
PopoverModule,
AssetSelectorModule,
IconSelectorModule,
BsDropdownModule.forRoot(),
CollapseModule.forRoot()
],
exports: [
ContextDashboardComponent,
WidgetConfigComponent,
DashboardDetailComponent,
TypeDashboardInfoComponent
],
providers: [
{
provide: CONTEXT_DASHBOARD_CONFIG,
useValue: defaultConfig
}
]
}]
}] });
export class DeviceContextDashboardModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceContextDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DeviceContextDashboardModule, imports: [ContextDashboardModule] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceContextDashboardModule, providers: [
hookRoute([
{
path: 'dashboard/:dashboardId',
component: ContextDashboardComponent,
canActivate: [DeviceDashboardGuard],
canDeactivate: [(component) => component.canDeactivate()],
context: ViewContext.Device
},
// new dashboard route should be defined last
{
path: newDashboardTab.path,
component: ContextDashboardComponent,
canActivate: [NewDashboardGuard],
canDeactivate: [(component) => component.canDeactivate()],
context: ViewContext.Device
}
]),
hookTab(AddDeviceDashboardFactory, { providerType: HookProviderTypes.ExistingProvider }),
hookActionBar(DeviceDashboardActionBarFactory)
], imports: [ContextDashboardModule] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceContextDashboardModule, decorators: [{
type: NgModule,
args: [{
imports: [ContextDashboardModule],
declarations: [],
providers: [
hookRoute([
{
path: 'dashboard/:dashboardId',
component: ContextDashboardComponent,
canActivate: [DeviceDashboardGuard],
canDeactivate: [(component) => component.canDeactivate()],
context: ViewContext.Device
},
// new dashboard route should be defined last
{
path: newDashboardTab.path,
component: ContextDashboardComponent,
canActivate: [NewDashboardGuard],
canDeactivate: [(component) => component.canDeactivate()],
context: ViewContext.Device
}
]),
hookTab(AddDeviceDashboardFactory, { providerType: HookProviderTypes.ExistingProvider }),
hookActionBar(DeviceDashboardActionBarFactory)
]
}]
}] });
export class GroupContextDashboardModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GroupContextDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GroupContextDashboardModule, imports: [ContextDashboardModule] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GroupContextDashboardModule, providers: [
hookRoute([
{
path: 'dashboard/:dashboardId',
component: ContextDashboardComponent,
canActivate: [GroupDashboardGuard],
canDeactivate: [(component) => component.canDeactivate()],
context: ViewContext.Group
},
// new dashboard route should be defined last
{
path: newDashboardTab.path,
component: ContextDashboardComponent,
canActivate: [NewDashboardGuard],
canDeactivate: [(component) => component.canDeactivate()],
context: ViewContext.Group
}
]),
hookTab(AddGroupDashboardFactory, { providerType: HookProviderTypes.ExistingProvider }),
hookActionBar(GroupDashboardActionBarFactory)
], imports: [ContextDashboardModule] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GroupContextDashboardModule, decorators: [{
type: NgModule,
args: [{
imports: [ContextDashboardModule],
declarations: [],
providers: [
hookRoute([
{
path: 'dashboard/:dashboardId',
component: ContextDashboardComponent,
canActivate: [GroupDashboardGuard],
canDeactivate: [(component) => component.canDeactivate()],
context: ViewContext.Group
},
// new dashboard route should be defined last
{
path: newDashboardTab.path,
component: ContextDashboardComponent,
canActivate: [NewDashboardGuard],
canDeactivate: [(component) => component.canDeactivate()],
context: ViewContext.Group
}
]),
hookTab(AddGroupDashboardFactory, { providerType: HookProviderTypes.ExistingProvider }),
hookActionBar(GroupDashboardActionBarFactory)
]
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsT0FBTyxFQUNQLFdBQVcsRUFDWixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUNMLHdCQUF3QixFQUd6QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsOEJBQThCLEVBQy9CLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENB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LEVBQUUsQ0FBQzt3QkFDdkYsYUFBYSxDQUFDLDhCQUE4QixDQUFDO3FCQUM5QztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb3JlTW9kdWxlLFxuICBob29rQWN0aW9uQmFyLFxuICBIb29rUHJvdmlkZXJUeXBlcyxcbiAgaG9va1JvdXRlLFxuICBob29rVGFiLFxuICBWaWV3Q29udGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJzRHJvcGRvd25Nb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBBc3NldFNlbGVjdG9yTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hc3NldHMtbmF2aWdhdG9yJztcbmltcG9ydCB7IEFkZERhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJy4vYWRkLWRhc2hib2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWRkRGV2aWNlRGFzaGJvYXJkRmFjdG9yeSwgQWRkR3JvdXBEYXNoYm9hcmRGYWN0b3J5IH0gZnJvbSAnLi9hZGQtZGFzaGJvYXJkLmZhY3RvcnknO1xuaW1wb3J0IHsgQXBwZWFyYW5jZVNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9hcHBlYXJhbmNlLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ09OVEVYVF9EQVNIQk9BUkRfQ09ORklHLFxuICBDb250ZXh0RGFzaGJvYXJkQ29uZmlnLFxuICBDYW5EZWFjdGl2YXRlQ29tcG9uZW50XG59IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHtcbiAgRGV2aWNlRGFzaGJvYXJkQWN0aW9uQmFyRmFjdG9yeSxcbiAgR3JvdXBEYXNoYm9hcmRBY3Rpb25CYXJGYWN0b3J5XG59IGZyb20gJy4vZGFzaGJvYXJkLWFjdGlvbi1iYXIuZmFjdG9yeSc7XG5pbXBvcnQgeyBEYXNoYm9hcmREZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50JztcbmltcG9ydCB7IERldmljZURhc2hib2FyZEd1YXJkIH0gZnJvbSAnLi9kZXZpY2UtZGFzaGJvYXJkLmd1YXJkJztcbmltcG9ydCB7IEdyb3VwRGFzaGJvYXJkR3VhcmQgfSBmcm9tICcuL2dyb3VwLWRhc2hib2FyZC5ndWFyZCc7XG5pbXBvcnQgeyBQYXN0ZURhc2hib2FyZEFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vcGFzdGUtZGFzaGJvYXJkLWFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0Q29uZmlnQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtY29uZmlnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQXZhaWxhYmlsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQtYXZhaWxhYmlsaXR5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uU2VsZWN0b3JNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3InO1xuaW1wb3J0IHsgTmV3RGFzaGJvYXJkR3VhcmQsIG5ld0Rhc2hib2FyZFRhYiB9IGZyb20gJy4vbmV3LWRhc2hib2FyZC5ndWFyZCc7XG5pbXBvcnQgeyBDb2xsYXBzZU1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvY29sbGFwc2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkR2VuZXJhbFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQtc2V0dGluZ3MvZGFzaGJvYXJkLWdlbmVyYWwtc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZEFwcGVhcmFuY2VTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLXNldHRpbmdzL2Rhc2hib2FyZC1hcHBlYXJhbmNlLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRWZXJzaW9uSGlzdG9yeUNvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLXNldHRpbmdzL2Rhc2hib2FyZC12ZXJzaW9uLWhpc3RvcnkuY29tcG9uZW50JztcbmltcG9ydCB7IFR5cGVkRGFzaGJvYXJkU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1zZXR0aW5ncy90eXBlZC1kYXNoYm9hcmQtc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IFR5cGVEYXNoYm9hcmRJbmZvQ29tcG9uZW50IH0gZnJvbSAnLi90eXBlLWRhc2hib2FyZC1pbmZvL3R5cGUtZGFzaGJvYXJkLWluZm8uY29tcG9uZW50JztcblxuY29uc3QgZGVmYXVsdENvbmZpZyA9IHtcbiAgYWxsb3dGdWxsc2NyZWVuOiB0cnVlXG59IGFzIGNvbnN0IHNhdGlzZmllcyBDb250ZXh0RGFzaGJvYXJkQ29uZmlnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBBcHBlYXJhbmNlU2V0dGluZ3NDb21wb25lbnQsXG4gICAgQ29udGV4dERhc2hib2FyZENvbXBvbmVudCxcbiAgICBXaWRnZXRDb25maWdDb21wb25lbnQsXG4gICAgV2lkZ2V0UHJldmlld0NvbXBvbmVudCxcbiAgICBEYXNoYm9hcmREZXRhaWxDb21wb25lbnQsXG4gICAgQWRkRGFzaGJvYXJkQ29tcG9uZW50LFxuICAgIFBhc3RlRGFzaGJvYXJkQWN0aW9uQ29tcG9uZW50LFxuICAgIERhc2hib2FyZEF2YWlsYWJpbGl0eUNvbXBvbmVudCxcbiAgICBEYXNoYm9hcmRHZW5lcmFsU2V0dGluZ3NDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQXBwZWFyYW5jZVNldHRpbmdzQ29tcG9uZW50LFxuICAgIERhc2hib2FyZFZlcnNpb25IaXN0b3J5Q29tcG9uZW50LFxuICAgIFR5cGVkRGFzaGJvYXJkU2V0dGluZ3NDb21wb25lbnQsXG4gICAgVHlwZURhc2hib2FyZEluZm9Db21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvcmVNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBQb3BvdmVyTW9kdWxlLFxuICAgIEFzc2V0U2VsZWN0b3JNb2R1bGUsXG4gICAgSWNvblNlbGVjdG9yTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUuZm9yUm9vdCgpLFxuICAgIENvbGxhcHNlTW9kdWxlLmZvclJvb3QoKVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQ29udGV4dERhc2hib2FyZENvbXBvbmVudCxcbiAgICBXaWRnZXRDb25maWdDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50LFxuICAgIFR5cGVEYXNoYm9hcmRJbmZvQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENPTlRFWFRfREFTSEJPQVJEX0NPTkZJRyxcbiAgICAgIHVzZVZhbHVlOiBkZWZhdWx0Q29uZmlnXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHREYXNoYm9hcmRNb2R1bGUge1xuICBzdGF0aWMgY29uZmlnKGNvbmZpZzogQ29udGV4dERhc2hib2FyZENvbmZpZyA9IHt9KTogTW9kdWxlV2l0aFByb3ZpZGVyczxDb250ZXh0RGFzaGJvYXJkTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBDb250ZXh0RGFzaGJvYXJkTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBDT05URVhUX0RBU0hCT0FSRF9DT05GSUcsXG4gICAgICAgICAgdXNlVmFsdWU6IHsgLi4uZGVmYXVsdENvbmZpZywgLi4uY29uZmlnIH1cbiAgICAgICAgfSxcbiAgICAgICAgaG9va1JvdXRlKGNvbmZpZy5yb3V0ZXMgfHwgW10pXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29udGV4dERhc2hib2FyZE1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIHByb3ZpZGVyczogW1xuICAgIGhvb2tSb3V0ZShbXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdkYXNoYm9hcmQvOmRhc2hib2FyZElkJyxcbiAgICAgICAgY29tcG9uZW50OiBDb250ZXh0RGFzaGJvYXJkQ29tcG9uZW50LFxuICAgICAgICBjYW5BY3RpdmF0ZTogW0RldmljZURhc2hib2FyZEd1YXJkXSxcbiAgICAgICAgY2FuRGVhY3RpdmF0ZTogWyhjb21wb25lbnQ6IENhbkRlYWN0aXZhdGVDb21wb25lbnQpID0+IGNvbXBvbmVudC5jYW5EZWFjdGl2YXRlKCldLFxuICAgICAgICBjb250ZXh0OiBWaWV3Q29udGV4dC5EZXZpY2VcbiAgICAgIH0sXG4gICAgICAvLyBuZXcgZGFzaGJvYXJkIHJvdXRlIHNob3VsZCBiZSBkZWZpbmVkIGxhc3RcbiAgICAgIHtcbiAgICAgICAgcGF0aDogbmV3RGFzaGJvYXJkVGFiLnBhdGgsXG4gICAgICAgIGNvbXBvbmVudDogQ29udGV4dERhc2hib2FyZENvbXBvbmVudCxcbiAgICAgICAgY2FuQWN0aXZhdGU6IFtOZXdEYXNoYm9hcmRHdWFyZF0sXG4gICAgICAgIGNhbkRlYWN0aXZhdGU6IFsoY29tcG9uZW50OiBDYW5EZWFjdGl2YXRlQ29tcG9uZW50KSA9PiBjb21wb25lbnQuY2FuRGVhY3RpdmF0ZSgpXSxcbiAgICAgICAgY29udGV4dDogVmlld0NvbnRleHQuRGV2aWNlXG4gICAgICB9XG4gICAgXSksXG4gICAgaG9va1RhYihBZGREZXZpY2VEYXNoYm9hcmRGYWN0b3J5LCB7IHByb3ZpZGVyVHlwZTogSG9va1Byb3ZpZGVyVHlwZXMuRXhpc3RpbmdQcm92aWRlciB9KSxcbiAgICBob29rQWN0aW9uQmFyKERldmljZURhc2hib2FyZEFjdGlvbkJhckZhY3RvcnkpXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlQ29udGV4dERhc2hib2FyZE1vZHVsZSB7fVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29udGV4dERhc2hib2FyZE1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIHByb3ZpZGVyczogW1xuICAgIGhvb2tSb3V0ZShbXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICdkYXNoYm9hcmQvOmRhc2hib2FyZElkJyxcbiAgICAgICAgY29tcG9uZW50OiBDb250ZXh0RGFzaGJvYXJkQ29tcG9uZW50LFxuICAgICAgICBjYW5BY3RpdmF0ZTogW0dyb3VwRGFzaGJvYXJkR3VhcmRdLFxuICAgICAgICBjYW5EZWFjdGl2YXRlOiBbKGNvbXBvbmVudDogQ2FuRGVhY3RpdmF0ZUNvbXBvbmVudCkgPT4gY29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKV0sXG4gICAgICAgIGNvbnRleHQ6IFZpZXdDb250ZXh0Lkdyb3VwXG4gICAgICB9LFxuICAgICAgLy8gbmV3IGRhc2hib2FyZCByb3V0ZSBzaG91bGQgYmUgZGVmaW5lZCBsYXN0XG4gICAgICB7XG4gICAgICAgIHBhdGg6IG5ld0Rhc2hib2FyZFRhYi5wYXRoLFxuICAgICAgICBjb21wb25lbnQ6IENvbnRleHREYXNoYm9hcmRDb21wb25lbnQsXG4gICAgICAgIGNhbkFjdGl2YXRlOiBbTmV3RGFzaGJvYXJkR3VhcmRdLFxuICAgICAgICBjYW5EZWFjdGl2YXRlOiBbKGNvbXBvbmVudDogQ2FuRGVhY3RpdmF0ZUNvbXBvbmVudCkgPT4gY29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKV0sXG4gICAgICAgIGNvbnRleHQ6IFZpZXdDb250ZXh0Lkdyb3VwXG4gICAgICB9XG4gICAgXSksXG4gICAgaG9va1RhYihBZGRHcm91cERhc2hib2FyZEZhY3RvcnksIHsgcHJvdmlkZXJUeXBlOiBIb29rUHJvdmlkZXJUeXBlcy5FeGlzdGluZ1Byb3ZpZGVyIH0pLFxuICAgIGhvb2tBY3Rpb25CYXIoR3JvdXBEYXNoYm9hcmRBY3Rpb25CYXJGYWN0b3J5KVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwQ29udGV4dERhc2hib2FyZE1vZHVsZSB7fVxuIl19