@c8y/ngx-components 1018.503.145 → 1018.503.151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/context-dashboard/context-dashboard.model.d.ts +1 -0
  2. package/context-dashboard/report-dashboard/report-dashboard-list.component.d.ts +29 -0
  3. package/core/common/ApplicationOptions.d.ts +1 -1
  4. package/core/docs/docs.service.d.ts +1 -1
  5. package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts +5 -1
  6. package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts +5 -1
  7. package/core/docs/support-outlet/support-outlet.component.d.ts +5 -1
  8. package/core/select/select.component.d.ts +1 -0
  9. package/core/shared/core.model.d.ts +5 -1
  10. package/ecosystem/application-plugins/application-plugins.component.d.ts +5 -0
  11. package/ecosystem/packages/package-details/package-details.component.d.ts +3 -2
  12. package/ecosystem/shared/ecosystem.model.d.ts +4 -0
  13. package/esm2020/context-dashboard/context-dashboard.model.mjs +3 -2
  14. package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +4 -3
  15. package/esm2020/core/common/ApplicationOptions.mjs +1 -1
  16. package/esm2020/core/docs/defaults.items.mjs +4 -4
  17. package/esm2020/core/docs/docs.service.mjs +2 -2
  18. package/esm2020/core/docs/support-outlet/support-outlet.component.mjs +3 -3
  19. package/esm2020/core/i18n/translate.service.mjs +7 -5
  20. package/esm2020/core/select/select.component.mjs +10 -11
  21. package/esm2020/core/shared/core.model.mjs +6 -2
  22. package/esm2020/device-list/add-smart-group.component.mjs +3 -3
  23. package/esm2020/ecosystem/application-plugins/application-plugins.component.mjs +40 -39
  24. package/esm2020/ecosystem/application-plugins/plugin-list.component.mjs +9 -12
  25. package/esm2020/ecosystem/packages/package-details/package-details.component.mjs +11 -6
  26. package/esm2020/ecosystem/shared/ecosystem.model.mjs +7 -3
  27. package/esm2020/widgets/implementations/cockpit-welcome/welcome.component.mjs +2 -2
  28. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +5 -3
  29. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  30. package/fesm2015/c8y-ngx-components-device-list.mjs +2 -2
  31. package/fesm2015/c8y-ngx-components-device-list.mjs.map +1 -1
  32. package/fesm2015/c8y-ngx-components-ecosystem-application-plugins.mjs +36 -39
  33. package/fesm2015/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  34. package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs +6 -2
  35. package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  36. package/fesm2015/c8y-ngx-components-ecosystem.mjs +44 -42
  37. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  38. package/fesm2015/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +1 -1
  39. package/fesm2015/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  40. package/fesm2015/c8y-ngx-components.mjs +26 -21
  41. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  42. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +5 -3
  43. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  44. package/fesm2020/c8y-ngx-components-device-list.mjs +2 -2
  45. package/fesm2020/c8y-ngx-components-device-list.mjs.map +1 -1
  46. package/fesm2020/c8y-ngx-components-ecosystem-application-plugins.mjs +47 -49
  47. package/fesm2020/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  48. package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs +6 -2
  49. package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  50. package/fesm2020/c8y-ngx-components-ecosystem.mjs +55 -52
  51. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  52. package/fesm2020/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +1 -1
  53. package/fesm2020/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  54. package/fesm2020/c8y-ngx-components.mjs +26 -21
  55. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  56. package/locales/de.po +8 -290
  57. package/locales/es.po +0 -282
  58. package/locales/fr.po +16 -298
  59. package/locales/ja_JP.po +18 -296
  60. package/locales/ko.po +18 -294
  61. package/locales/locales.pot +0 -282
  62. package/locales/nl.po +0 -282
  63. package/locales/pl.po +0 -282
  64. package/locales/pt_BR.po +0 -282
  65. package/locales/zh_CN.po +12 -293
  66. package/locales/zh_TW.po +12 -293
  67. package/package.json +1 -1
@@ -201,6 +201,7 @@ export declare const PRODUCT_EXPERIENCE: {
201
201
  DELETE: string;
202
202
  LOAD: string;
203
203
  CREATE: string;
204
+ ADD_REPORT: string;
204
205
  };
205
206
  };
206
207
  };
@@ -17,6 +17,35 @@ export declare class ReportDashboardListComponent implements OnInit {
17
17
  private reportDashboardService;
18
18
  private permissions;
19
19
  private gainsightService;
20
+ PRODUCT_EXPERIENCE: {
21
+ DASHBOARD: {
22
+ EVENTS: {
23
+ DASHBOARDS: string;
24
+ REPORTS: string;
25
+ };
26
+ COMPONENTS: {
27
+ DASHBOARD_VIEW: string;
28
+ DASHBOARD_AVAILABILITY: string;
29
+ REPORTS_LIST: string;
30
+ ADD_REPORT: string;
31
+ ADD_DASHBOARD: string;
32
+ DELETE_DASHBOARD: string;
33
+ };
34
+ CONTEXT: {
35
+ REPORT: string;
36
+ DEVICE: string;
37
+ ASSET: string;
38
+ GROUP: string;
39
+ };
40
+ ACTIONS: {
41
+ APPLY_GLOBAL_ROLES_CHANGES: string;
42
+ DELETE: string;
43
+ LOAD: string;
44
+ CREATE: string;
45
+ ADD_REPORT: string;
46
+ };
47
+ };
48
+ };
20
49
  filter: FilterInputComponent;
21
50
  textFilter$: BehaviorSubject<string>;
22
51
  reload$: BehaviorSubject<void>;
@@ -156,7 +156,7 @@ export declare class ApplicationOptions {
156
156
  /**
157
157
  * Allows to enable or disable context help, or to override the default base URL used to load its contents.
158
158
  * By default, the context help uses the same base URL as defined in the `docsBaseUrl` option
159
- * (if this option is undefined, then the following value will be used: `https://www.cumulocity.com`).
159
+ * (if this option is undefined, then the following value will be used: `https://cumulocity.com/guides/{{version}}`).
160
160
  * Alternatively, if a string is provided here, it'll be used as the base URL
161
161
  * and any `{{ version }}` placeholder will be replaced with the relevant docs version.
162
162
  */
@@ -14,7 +14,7 @@ export declare class DocsService extends ExtensionPointWithoutStateForPlugins<Do
14
14
  /**
15
15
  * Default documentation URL.
16
16
  */
17
- readonly DEFAULT_DOCS_BASE_URL = "https://www.cumulocity.com";
17
+ readonly DEFAULT_DOCS_BASE_URL = "https://cumulocity.com";
18
18
  constructor(options: OptionsService, app: AppStateService, rootInjector: Injector, router: Router, plugins: PluginsResolveService);
19
19
  getBaseUrl(uiVersion?: string | {
20
20
  ngx: string;
@@ -26,7 +26,11 @@ export declare class HelpAndSupportOutletComponent {
26
26
  COMPONENTS: {
27
27
  RIGHT_DRAWER_COMPONENT: string;
28
28
  };
29
- ACTIONS: {};
29
+ ACTIONS: {
30
+ ACTIVATE_SUPPORT_ACCESS: string;
31
+ DEACTIVATE_SUPPORT_ACCESS: string;
32
+ OPEN_SUPPORT_LINK: string;
33
+ };
30
34
  RESULTS: {};
31
35
  };
32
36
  };
@@ -24,7 +24,11 @@ export declare class LegalNoticesOutletComponent {
24
24
  COMPONENTS: {
25
25
  RIGHT_DRAWER_COMPONENT: string;
26
26
  };
27
- ACTIONS: {};
27
+ ACTIONS: {
28
+ ACTIVATE_SUPPORT_ACCESS: string;
29
+ DEACTIVATE_SUPPORT_ACCESS: string;
30
+ OPEN_SUPPORT_LINK: string;
31
+ };
28
32
  RESULTS: {};
29
33
  };
30
34
  };
@@ -42,7 +42,11 @@ export declare class SupportOutletComponent implements OnInit {
42
42
  COMPONENTS: {
43
43
  RIGHT_DRAWER_COMPONENT: string;
44
44
  };
45
- ACTIONS: {};
45
+ ACTIONS: {
46
+ ACTIVATE_SUPPORT_ACCESS: string;
47
+ DEACTIVATE_SUPPORT_ACCESS: string;
48
+ OPEN_SUPPORT_LINK: string;
49
+ };
46
50
  RESULTS: {};
47
51
  };
48
52
  };
@@ -21,6 +21,7 @@ export declare class SelectComponent implements OnChanges, OnInit {
21
21
  liChildren: any;
22
22
  textFilter: string;
23
23
  labelText: string;
24
+ truncatedLabelText: string;
24
25
  isOpen: boolean;
25
26
  filteredItems: Item[];
26
27
  searchFilter: any;
@@ -16,7 +16,11 @@ export declare const PRODUCT_EXPERIENCE: {
16
16
  COMPONENTS: {
17
17
  RIGHT_DRAWER_COMPONENT: string;
18
18
  };
19
- ACTIONS: {};
19
+ ACTIONS: {
20
+ ACTIVATE_SUPPORT_ACCESS: string;
21
+ DEACTIVATE_SUPPORT_ACCESS: string;
22
+ OPEN_SUPPORT_LINK: string;
23
+ };
20
24
  RESULTS: {};
21
25
  };
22
26
  };
@@ -36,6 +36,7 @@ export declare class ApplicationPluginsComponent implements OnInit, OnDestroy {
36
36
  PACKAGE_VERSIONS: string;
37
37
  UPDATE_PLUGIN_OF_APP: string;
38
38
  LIST_FILTERS: string;
39
+ PACKAGE_DETAILS: string;
39
40
  };
40
41
  ACTIONS: {
41
42
  AVAILABILITY_CHANGE: string;
@@ -48,6 +49,7 @@ export declare class ApplicationPluginsComponent implements OnInit, OnDestroy {
48
49
  EDIT: string;
49
50
  INSTALL_PLUGIN: string;
50
51
  INSTALL_PLUGINS: string;
52
+ UNINSTALL_PLUGIN: string;
51
53
  SELECT_VERSION: string;
52
54
  SET_AS_LATEST: string;
53
55
  UPDATE_AVAILABLE: string;
@@ -55,6 +57,8 @@ export declare class ApplicationPluginsComponent implements OnInit, OnDestroy {
55
57
  SET_FILTER_TERM: string;
56
58
  SET_PREDEFINED_FILTERS: string;
57
59
  RESET_FILTER: string;
60
+ INSTALL_PLUGINS_INITIATED: string;
61
+ DEPLOY_APPLICATION_INITIATED: string;
58
62
  };
59
63
  RESULTS: {
60
64
  DEPLOYED: string;
@@ -113,6 +117,7 @@ export declare class ApplicationPluginsComponent implements OnInit, OnDestroy {
113
117
  private getInstalledPlugins;
114
118
  private extractDetails;
115
119
  private getStringMatchingRegex;
120
+ private triggerPluginEvent;
116
121
  static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationPluginsComponent, never>;
117
122
  static ɵcmp: i0.ɵɵComponentDeclaration<ApplicationPluginsComponent, "c8y-app-plugins", never, { "appId": "appId"; }, {}, never, never, false, never>;
118
123
  }
@@ -1,7 +1,7 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { ActivatedRoute } from '@angular/router';
3
3
  import { ApplicationAvailability, FetchClient, IApplication } from '@c8y/client';
4
- import { ApplicationPlugin, AppStateService, ContextRouteService, PackageType, PluginsService, PropertiesListItem, WizardModalService } from '@c8y/ngx-components';
4
+ import { ApplicationPlugin, AppStateService, ContextRouteService, GainsightService, PackageType, PluginsService, PropertiesListItem, WizardModalService } from '@c8y/ngx-components';
5
5
  import { BehaviorSubject } from 'rxjs';
6
6
  import { ApplicationState, EcosystemService, PackageAvailabilityService } from '@c8y/ngx-components/ecosystem/shared';
7
7
  import * as i0 from "@angular/core";
@@ -15,6 +15,7 @@ export declare class PackageDetailsComponent implements OnInit {
15
15
  private packageAvailabilityService;
16
16
  private ui;
17
17
  private pluginService;
18
+ private gainsightService;
18
19
  markdown: string;
19
20
  baseUrl: string;
20
21
  package: IApplication;
@@ -47,7 +48,7 @@ export declare class PackageDetailsComponent implements OnInit {
47
48
  readonly packageProperties: PropertiesListItem[];
48
49
  private readonly headers;
49
50
  private NOT_FOUND_ERROR_CODE;
50
- constructor(activatedRoute: ActivatedRoute, client: FetchClient, wizardModalService: WizardModalService, ecosystemService: EcosystemService, contextRouteService: ContextRouteService, pluginsService: PluginsService, packageAvailabilityService: PackageAvailabilityService, ui: AppStateService, pluginService: PluginsService);
51
+ constructor(activatedRoute: ActivatedRoute, client: FetchClient, wizardModalService: WizardModalService, ecosystemService: EcosystemService, contextRouteService: ContextRouteService, pluginsService: PluginsService, packageAvailabilityService: PackageAvailabilityService, ui: AppStateService, pluginService: PluginsService, gainsightService: GainsightService);
51
52
  ngOnInit(): Promise<void>;
52
53
  deploy(): void;
53
54
  togglePackageAvailability(pckg: IApplication, newAvailability: ApplicationAvailability): Promise<void>;
@@ -44,6 +44,7 @@ export declare const PRODUCT_EXPERIENCE: {
44
44
  PACKAGE_VERSIONS: string;
45
45
  UPDATE_PLUGIN_OF_APP: string;
46
46
  LIST_FILTERS: string;
47
+ PACKAGE_DETAILS: string;
47
48
  };
48
49
  ACTIONS: {
49
50
  AVAILABILITY_CHANGE: string;
@@ -56,6 +57,7 @@ export declare const PRODUCT_EXPERIENCE: {
56
57
  EDIT: string;
57
58
  INSTALL_PLUGIN: string;
58
59
  INSTALL_PLUGINS: string;
60
+ UNINSTALL_PLUGIN: string;
59
61
  SELECT_VERSION: string;
60
62
  SET_AS_LATEST: string;
61
63
  UPDATE_AVAILABLE: string;
@@ -63,6 +65,8 @@ export declare const PRODUCT_EXPERIENCE: {
63
65
  SET_FILTER_TERM: string;
64
66
  SET_PREDEFINED_FILTERS: string;
65
67
  RESET_FILTER: string;
68
+ INSTALL_PLUGINS_INITIATED: string;
69
+ DEPLOY_APPLICATION_INITIATED: string;
66
70
  };
67
71
  RESULTS: {
68
72
  DEPLOYED: string;
@@ -113,8 +113,9 @@ export const PRODUCT_EXPERIENCE = {
113
113
  APPLY_GLOBAL_ROLES_CHANGES: 'applyGlobalRolesChanges',
114
114
  DELETE: 'delete',
115
115
  LOAD: 'load',
116
- CREATE: 'create'
116
+ CREATE: 'create',
117
+ ADD_REPORT: 'addReport'
117
118
  }
118
119
  }
119
120
  };
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9jb250ZXh0LWRhc2hib2FyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFJTCxPQUFPLEVBR1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBTSx3QkFBd0IsQ0FBQyxDQUFDO0FBd0cxRixNQUFNLENBQU4sSUFBWSxvQkFNWDtBQU5ELFdBQVksb0JBQW9CO0lBQzlCLHlDQUFpQixDQUFBO0lBQ2pCLDJDQUFtQixDQUFBO0lBQ25CLHVDQUFlLENBQUE7SUFDZixzQ0FBYyxDQUFBO0lBQ2QseUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLG9CQUFvQixLQUFwQixvQkFBb0IsUUFNL0I7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQztRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHNEQUFzRCxDQUFDO0tBQzdFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMsc0VBQXNFLENBQUM7S0FDN0Y7SUFDRDtRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHlDQUF5QyxDQUFDO0tBQ2hFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FB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QUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBXaWRnZXQsXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBSb3V0ZSxcbiAgZ2V0dGV4dCxcbiAgVmlld0NvbnRleHQsXG4gIFdpZGdldERpc3BsYXlTZXR0aW5nc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuZXhwb3J0IGNvbnN0IENPTlRFWFRfREFTSEJPQVJEX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdDb250ZXh0RGFzaGJvYXJkQ29uZmlnJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dERhc2hib2FyZENvbmZpZyB7XG4gIHdpZGdldEZpbHRlcj86IChjb21wb25lbnQ6IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKSA9PiBib29sZWFuO1xuICBhbGxvd0Z1bGxzY3JlZW4/OiBib29sZWFuO1xuICByb3V0ZXM/OiBSb3V0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRXaWRnZXRDb25maWcge1xuICAvKipcbiAgICogU2V0dGluZ3MgdGhhdCBkZWZpbmUgaG93IHRoZSBkZWZhdWx0IGNvbmZpZyBjb21wb25lbnQgaXNcbiAgICogZGlzcGxheWVkLiBUaGV5IGFyZSBzdGF0aWMgYW5kIHdpbGwgbm90IGJlIHNhdmVkLlxuICAgKi9cbiAgc2V0dGluZ3M/OiB7XG4gICAgLyoqXG4gICAgICogQXZvaWRzIHRvIHNob3cgdGhlIHdpZGdldCBpbiB0aGUgXCJhZGQgd2lkZ2V0XCIgbW9kYWxcbiAgICAgKi9cbiAgICBub05ld1dpZGdldHM/OiBib29sZWFuO1xuICAgIG5nMT86IHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCB0aGlzIHRvIGZhbHNlLCB0byBoaWRlIHRoZSBkZXZpY2UvZ3JvdXAgc2VsZWN0b3JcbiAgICAgICAgICogQGRlcHJlY2F0ZWQ6IFRoaXMgaXMgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgaW4gYW5ndWxhcmpzIGFuZCB3aWxsIGJlIGV4cG9ydGVkIHRvIGEgc2VwYXJhdGUgY29tcG9uZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgbm9EZXZpY2VUYXJnZXQ/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IHRoaXMgdG8gZmFsc2UgdG8gb25seSBzZWxlY3QgZGV2aWNlc1xuICAgICAgICAgKiBAZGVwcmVjYXRlZDogVGhpcyBpcyBjdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBpbiBhbmd1bGFyanMgYW5kIHdpbGwgYmUgZXhwb3J0ZWQgdG8gYSBzZXBhcmF0ZSBjb21wb25lbnQuXG4gICAgICAgICAqL1xuICAgICAgICBncm91cHNTZWxlY3RhYmxlPzogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBjb250ZXh0IGZyb20gdGhlIGRldmljZSBzZWxlY3Rvci5cbiAgICAgICAqL1xuICAgICAgY29udGV4dD86IHtcbiAgICAgICAgaWQ/OiBzdHJpbmc7XG4gICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQWRkaXRpb25hbCBzZXR0aW5ncyBwYXNzZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gY29tcG9uZW50LlxuICAgICAqL1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcblxuICAvKipcbiAgICogU2V0dGluZ3MgdGhhdCBhcmUgaW5qZWN0ZWQgaW4gYW55IGRpc3BsYXlpbmcgY29tcG9uZW50LlxuICAgKi9cbiAgZGlzcGxheVNldHRpbmdzPzogV2lkZ2V0RGlzcGxheVNldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBXaGF0ZXZlciBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gd2hlbiBhIHdpZGdldCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgY29uZmlnPzoge1xuICAgIC8qKlxuICAgICAqIEFueSBvdGhlciBpbmZvcm1hdGlvbiB0aGF0IHNob3VsZCBiZSBzdG9yZWQgaGVyZS5cbiAgICAgKi9cbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0ZWQgZGV2aWNlIG9yIGdyb3VwIChub3RlOiBuYW1pbmcgaXMgaW5jb25zaXN0ZW50IGFzIGdyb3VwIHdhcyBhZGRlZCBsYXRlclxuICAgKiBidXQgbXVzdCBzdGF5IGZvciBhbHJlYWR5IGltcGxlbWVudGVkIHdpZGdldHMpXG4gICAqL1xuICBkZXZpY2U/OiB7XG4gICAgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIC8qKlxuICAgKiBBbnkgb3RoZXIgaW5mb3JtYXRpb24gdGhhdCBzaG91bGQgYmUgc3RvcmVkIGhlcmUuXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QgZXh0ZW5kcyBJTWFuYWdlZE9iamVjdCB7XG4gIGM4eV9EYXNoYm9hcmQ/OiBDb250ZXh0RGFzaGJvYXJkO1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXNoYm9hcmQge1xuICBpY29uPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBwcmlvcml0eT86IG51bWJlcjtcbiAgZGV2aWNlVHlwZT86IGJvb2xlYW47XG4gIGRldmljZVR5cGVWYWx1ZT86IHN0cmluZztcbiAgaXNGcm96ZW4/OiBib29sZWFuO1xuICBjbGFzc2VzPzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH07XG4gIHdpZGdldENsYXNzZXM/OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgd2lkZ2V0TWFyZ2luPzogbnVtYmVyO1xuICB0cmFuc2xhdGVXaWRnZXRUaXRsZT86IGJvb2xlYW47XG4gIGdsb2JhbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIGNvbHVtbnMgb24gdGhhdCBkYXNoYm9hcmQuXG4gICAqIENhbiBiZSBmcmVlbHkgY2hvc2VuLCBidXQgcHJvZHVjdCB1c2VzIGVpdGhlciAxMiBvciAyNC5cbiAgICovXG4gIGNvbHVtbnM/OiBudW1iZXI7XG4gIGNoaWxkcmVuPzoge1xuICAgIFtpZDogc3RyaW5nXTogV2lkZ2V0O1xuICB9O1xuICBnbG9iYWxSb2xlc0lkcz86IERhc2hib2FyZEdsb2JhbFJvbGVzO1xuICBjOHlfSXNOYXZpZ2F0b3JOb2RlPzogb2JqZWN0O1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gQ29udGV4dERhc2hib2FyZFR5cGUge1xuICBEZXZpY2UgPSAnZGV2aWNlJyxcbiAgRGV2aWNlVHlwZSA9ICd0eXBlJyxcbiAgR3JvdXAgPSAnZ3JvdXAnLFxuICBOYW1lZCA9ICduYW1lJyxcbiAgUmVwb3J0ID0gJ3JlcG9ydCdcbn1cblxuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfQ0xBU1NFUyA9IFtcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdSZWd1bGFyYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtcmVndWxhcicsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIG5vIGJvcmRlciBiZXR3ZWVuIGhlYWRlciBhbmQgY29udGVudC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0JvcmRlcmBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLXRpdGxlLWJvcmRlcicsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIGEgc21hbGwgc2VwYXJhdGlvbiBib3JkZXIgYmV0d2VlbiBoZWFkZXIgYW5kIGNvbnRlbnQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdPdmVybGF5YHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtb3ZlcmxheScsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgY29udGVudCBvdmVybGF5cyB0aGUgaGVhZGVyLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnSGlkZGVuYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtaGlkZGVuJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoZWFkZXIgaXMgbm90IHNob3duLicpXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBXSURHRVRfQ09OVEVOVF9DTEFTU0VTID0gW1xuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ01hdGNoIGRhc2hib2FyZGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtbGlnaHQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGFwcGVhcmFuY2UgbWF0Y2hlcyB0aGUgZGFzaGJvYXJkIGFwcGVhcmFuY2UuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdMaWdodGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtd2hpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBsaWdodCBhcHBlYXJhbmNlLCB0aGF0IGlzLCBkYXJrIHRleHQgb24gbGlnaHQgYmFja2dyb3VuZC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0Rhcmtgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LWRhcmsnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBkYXJrIGFwcGVhcmFuY2UsIHRoYXQgaXMsIGxpZ2h0IHRleHQgb24gZGFyayBiYWNrZ3JvdW5kLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnVHJhbnNwYXJlbnRgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LXRyYW5zcGFyZW50JyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoYXMgbm8gYmFja2dyb3VuZC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0JyYW5kZWRgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LWJyYW5kZWQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGlzIHN0eWxlZCB3aXRoIHRoZSBtYWluIGJyYW5kIGNvbG9yLicpXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBEQVNIQk9BUkRfVEhFTUVfQ0xBU1NFUyA9IFtcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdNYXRjaCBVSWB0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS1saWdodCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSBkYXNoYm9hcmQgYXBwZWFyYW5jZSBtYXRjaGVzIHRoZSBVSSBhcHBlYXJhbmNlLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnTGlnaHRgdGhlbWVgJyksXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtd2hpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgJ1RoZSBkYXNoYm9hcmQgaGFzIGxpZ2h0IGFwcGVhcmFuY2UsIHRoYXQgaXMsIGRhcmsgdGV4dCBvbiBsaWdodCBiYWNrZ3JvdW5kLidcbiAgICApXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnRGFya2B0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS1kYXJrJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICdUaGUgZGFzaGJvYXJkIGhhcyBkYXJrIGFwcGVhcmFuY2UsIHRoYXQgaXMsIGxpZ2h0IHRleHQgb24gZGFyayBiYWNrZ3JvdW5kLidcbiAgICApXG4gIH0sXG4gIC8vIHtcbiAgLy8gICBsYWJlbDogZ2V0dGV4dCgnVHJhbnNwYXJlbnRgdGhlbWVgJyksXG4gIC8vICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtdHJhbnNwYXJlbnQnLFxuICAvLyAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAvLyAgICAgJ1RoZSBkYXNoYm9hcmQgaXMgc3R5bGVkIHdpdGggYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGFuZCB0aGVyZWZvcmUgaXMgYm9yZGVyLWxlc3MuJ1xuICAvLyAgIClcbiAgLy8gfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdCcmFuZGVkYHRoZW1lYCcpLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLWJyYW5kZWQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgZGFzaGJvYXJkIGlzIHN0eWxlZCB1c2luZyB0aGUgYnJhbmQgcGFsZXR0ZS4nKVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgU1RZTElOR19DTEFTU19QUkVGSVhFUyA9IFsnZGFzaGJvYXJkLXRoZW1lLScsICdwYW5lbC10aXRsZS0nLCAncGFuZWwtY29udGVudC0nXTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmRDb3B5Q2xpcGJvYXJkIHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBjb250ZXh0OiBEYXNoYm9hcmRDb250ZXh0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZENvbnRleHQge1xuICBjb250ZXh0OiBWaWV3Q29udGV4dDtcbiAgY29udGV4dERhdGE6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+O1xufVxuXG5leHBvcnQgY29uc3QgQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRCA9ICdhbGwnIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGFzaGJvYXJkR2xvYmFsUm9sZXMgPSBudW1iZXJbXSB8IHR5cGVvZiBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEO1xuXG5leHBvcnQgY29uc3QgUFJPRFVDVF9FWFBFUklFTkNFID0ge1xuICBEQVNIQk9BUkQ6IHtcbiAgICBFVkVOVFM6IHtcbiAgICAgIERBU0hCT0FSRFM6ICdkYXNoYm9hcmRzJyxcbiAgICAgIFJFUE9SVFM6ICdyZXBvcnRzJ1xuICAgIH0sXG4gICAgQ09NUE9ORU5UUzoge1xuICAgICAgREFTSEJPQVJEX1ZJRVc6ICdjb250ZXh0LWRhc2hib2FyZCcsXG4gICAgICBEQVNIQk9BUkRfQVZBSUxBQklMSVRZOiAnZGFzaGJvYXJkLWF2YWlsYWJpbGl0eScsXG4gICAgICBSRVBPUlRTX0xJU1Q6ICdyZXBvcnQtZGFzaGJvYXJkLWxpc3QnLFxuICAgICAgQUREX1JFUE9SVDogJ3JlcG9ydC1kYXNoYm9hcmQtbGlzdCcsXG4gICAgICBBRERfREFTSEJPQVJEOiAnYWRkLWRhc2hib2FyZCcsXG4gICAgICBERUxFVEVfREFTSEJPQVJEOiAnY29udGV4dC1kYXNoYm9hcmQnXG4gICAgfSxcbiAgICBDT05URVhUOiB7XG4gICAgICBSRVBPUlQ6ICdyZXBvcnQnLFxuICAgICAgREVWSUNFOiAnZGV2aWNlJyxcbiAgICAgIEFTU0VUOiAnYXNzZXQnLFxuICAgICAgR1JPVVA6ICdncm91cCdcbiAgICB9LFxuICAgIEFDVElPTlM6IHtcbiAgICAgIEFQUExZX0dMT0JBTF9ST0xFU19DSEFOR0VTOiAnYXBwbHlHbG9iYWxSb2xlc0NoYW5nZXMnLFxuICAgICAgREVMRVRFOiAnZGVsZXRlJyxcbiAgICAgIExPQUQ6ICdsb2FkJyxcbiAgICAgIENSRUFURTogJ2NyZWF0ZSdcbiAgICB9XG4gIH1cbn07XG4iXX0=
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9jb250ZXh0LWRhc2hib2FyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFJTCxPQUFPLEVBR1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBTSx3QkFBd0IsQ0FBQyxDQUFDO0FBd0cxRixNQUFNLENBQU4sSUFBWSxvQkFNWDtBQU5ELFdBQVksb0JBQW9CO0lBQzlCLHlDQUFpQixDQUFBO0lBQ2pCLDJDQUFtQixDQUFBO0lBQ25CLHVDQUFlLENBQUE7SUFDZixzQ0FBYyxDQUFBO0lBQ2QseUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLG9CQUFvQixLQUFwQixvQkFBb0IsUUFNL0I7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQztRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHNEQUFzRCxDQUFDO0tBQzdFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMsc0VBQXNFLENBQUM7S0FDN0Y7SUFDRDtRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHlDQUF5QyxDQUFDO0tBQ2hFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FB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QUFFLFdBQVc7U0FDeEI7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBXaWRnZXQsXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBSb3V0ZSxcbiAgZ2V0dGV4dCxcbiAgVmlld0NvbnRleHQsXG4gIFdpZGdldERpc3BsYXlTZXR0aW5nc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuZXhwb3J0IGNvbnN0IENPTlRFWFRfREFTSEJPQVJEX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdDb250ZXh0RGFzaGJvYXJkQ29uZmlnJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dERhc2hib2FyZENvbmZpZyB7XG4gIHdpZGdldEZpbHRlcj86IChjb21wb25lbnQ6IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKSA9PiBib29sZWFuO1xuICBhbGxvd0Z1bGxzY3JlZW4/OiBib29sZWFuO1xuICByb3V0ZXM/OiBSb3V0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRXaWRnZXRDb25maWcge1xuICAvKipcbiAgICogU2V0dGluZ3MgdGhhdCBkZWZpbmUgaG93IHRoZSBkZWZhdWx0IGNvbmZpZyBjb21wb25lbnQgaXNcbiAgICogZGlzcGxheWVkLiBUaGV5IGFyZSBzdGF0aWMgYW5kIHdpbGwgbm90IGJlIHNhdmVkLlxuICAgKi9cbiAgc2V0dGluZ3M/OiB7XG4gICAgLyoqXG4gICAgICogQXZvaWRzIHRvIHNob3cgdGhlIHdpZGdldCBpbiB0aGUgXCJhZGQgd2lkZ2V0XCIgbW9kYWxcbiAgICAgKi9cbiAgICBub05ld1dpZGdldHM/OiBib29sZWFuO1xuICAgIG5nMT86IHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCB0aGlzIHRvIGZhbHNlLCB0byBoaWRlIHRoZSBkZXZpY2UvZ3JvdXAgc2VsZWN0b3JcbiAgICAgICAgICogQGRlcHJlY2F0ZWQ6IFRoaXMgaXMgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgaW4gYW5ndWxhcmpzIGFuZCB3aWxsIGJlIGV4cG9ydGVkIHRvIGEgc2VwYXJhdGUgY29tcG9uZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgbm9EZXZpY2VUYXJnZXQ/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IHRoaXMgdG8gZmFsc2UgdG8gb25seSBzZWxlY3QgZGV2aWNlc1xuICAgICAgICAgKiBAZGVwcmVjYXRlZDogVGhpcyBpcyBjdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBpbiBhbmd1bGFyanMgYW5kIHdpbGwgYmUgZXhwb3J0ZWQgdG8gYSBzZXBhcmF0ZSBjb21wb25lbnQuXG4gICAgICAgICAqL1xuICAgICAgICBncm91cHNTZWxlY3RhYmxlPzogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBjb250ZXh0IGZyb20gdGhlIGRldmljZSBzZWxlY3Rvci5cbiAgICAgICAqL1xuICAgICAgY29udGV4dD86IHtcbiAgICAgICAgaWQ/OiBzdHJpbmc7XG4gICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQWRkaXRpb25hbCBzZXR0aW5ncyBwYXNzZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gY29tcG9uZW50LlxuICAgICAqL1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcblxuICAvKipcbiAgICogU2V0dGluZ3MgdGhhdCBhcmUgaW5qZWN0ZWQgaW4gYW55IGRpc3BsYXlpbmcgY29tcG9uZW50LlxuICAgKi9cbiAgZGlzcGxheVNldHRpbmdzPzogV2lkZ2V0RGlzcGxheVNldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBXaGF0ZXZlciBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gd2hlbiBhIHdpZGdldCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgY29uZmlnPzoge1xuICAgIC8qKlxuICAgICAqIEFueSBvdGhlciBpbmZvcm1hdGlvbiB0aGF0IHNob3VsZCBiZSBzdG9yZWQgaGVyZS5cbiAgICAgKi9cbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0ZWQgZGV2aWNlIG9yIGdyb3VwIChub3RlOiBuYW1pbmcgaXMgaW5jb25zaXN0ZW50IGFzIGdyb3VwIHdhcyBhZGRlZCBsYXRlclxuICAgKiBidXQgbXVzdCBzdGF5IGZvciBhbHJlYWR5IGltcGxlbWVudGVkIHdpZGdldHMpXG4gICAqL1xuICBkZXZpY2U/OiB7XG4gICAgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIC8qKlxuICAgKiBBbnkgb3RoZXIgaW5mb3JtYXRpb24gdGhhdCBzaG91bGQgYmUgc3RvcmVkIGhlcmUuXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QgZXh0ZW5kcyBJTWFuYWdlZE9iamVjdCB7XG4gIGM4eV9EYXNoYm9hcmQ/OiBDb250ZXh0RGFzaGJvYXJkO1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXNoYm9hcmQge1xuICBpY29uPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBwcmlvcml0eT86IG51bWJlcjtcbiAgZGV2aWNlVHlwZT86IGJvb2xlYW47XG4gIGRldmljZVR5cGVWYWx1ZT86IHN0cmluZztcbiAgaXNGcm96ZW4/OiBib29sZWFuO1xuICBjbGFzc2VzPzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH07XG4gIHdpZGdldENsYXNzZXM/OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgd2lkZ2V0TWFyZ2luPzogbnVtYmVyO1xuICB0cmFuc2xhdGVXaWRnZXRUaXRsZT86IGJvb2xlYW47XG4gIGdsb2JhbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIGNvbHVtbnMgb24gdGhhdCBkYXNoYm9hcmQuXG4gICAqIENhbiBiZSBmcmVlbHkgY2hvc2VuLCBidXQgcHJvZHVjdCB1c2VzIGVpdGhlciAxMiBvciAyNC5cbiAgICovXG4gIGNvbHVtbnM/OiBudW1iZXI7XG4gIGNoaWxkcmVuPzoge1xuICAgIFtpZDogc3RyaW5nXTogV2lkZ2V0O1xuICB9O1xuICBnbG9iYWxSb2xlc0lkcz86IERhc2hib2FyZEdsb2JhbFJvbGVzO1xuICBjOHlfSXNOYXZpZ2F0b3JOb2RlPzogb2JqZWN0O1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gQ29udGV4dERhc2hib2FyZFR5cGUge1xuICBEZXZpY2UgPSAnZGV2aWNlJyxcbiAgRGV2aWNlVHlwZSA9ICd0eXBlJyxcbiAgR3JvdXAgPSAnZ3JvdXAnLFxuICBOYW1lZCA9ICduYW1lJyxcbiAgUmVwb3J0ID0gJ3JlcG9ydCdcbn1cblxuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfQ0xBU1NFUyA9IFtcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdSZWd1bGFyYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtcmVndWxhcicsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIG5vIGJvcmRlciBiZXR3ZWVuIGhlYWRlciBhbmQgY29udGVudC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0JvcmRlcmBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLXRpdGxlLWJvcmRlcicsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIGEgc21hbGwgc2VwYXJhdGlvbiBib3JkZXIgYmV0d2VlbiBoZWFkZXIgYW5kIGNvbnRlbnQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdPdmVybGF5YHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtb3ZlcmxheScsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgY29udGVudCBvdmVybGF5cyB0aGUgaGVhZGVyLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnSGlkZGVuYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtaGlkZGVuJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoZWFkZXIgaXMgbm90IHNob3duLicpXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBXSURHRVRfQ09OVEVOVF9DTEFTU0VTID0gW1xuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ01hdGNoIGRhc2hib2FyZGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtbGlnaHQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGFwcGVhcmFuY2UgbWF0Y2hlcyB0aGUgZGFzaGJvYXJkIGFwcGVhcmFuY2UuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdMaWdodGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtd2hpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBsaWdodCBhcHBlYXJhbmNlLCB0aGF0IGlzLCBkYXJrIHRleHQgb24gbGlnaHQgYmFja2dyb3VuZC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0Rhcmtgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LWRhcmsnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBkYXJrIGFwcGVhcmFuY2UsIHRoYXQgaXMsIGxpZ2h0IHRleHQgb24gZGFyayBiYWNrZ3JvdW5kLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnVHJhbnNwYXJlbnRgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LXRyYW5zcGFyZW50JyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoYXMgbm8gYmFja2dyb3VuZC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0JyYW5kZWRgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LWJyYW5kZWQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGlzIHN0eWxlZCB3aXRoIHRoZSBtYWluIGJyYW5kIGNvbG9yLicpXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBEQVNIQk9BUkRfVEhFTUVfQ0xBU1NFUyA9IFtcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdNYXRjaCBVSWB0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS1saWdodCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSBkYXNoYm9hcmQgYXBwZWFyYW5jZSBtYXRjaGVzIHRoZSBVSSBhcHBlYXJhbmNlLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnTGlnaHRgdGhlbWVgJyksXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtd2hpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgJ1RoZSBkYXNoYm9hcmQgaGFzIGxpZ2h0IGFwcGVhcmFuY2UsIHRoYXQgaXMsIGRhcmsgdGV4dCBvbiBsaWdodCBiYWNrZ3JvdW5kLidcbiAgICApXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnRGFya2B0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS1kYXJrJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICdUaGUgZGFzaGJvYXJkIGhhcyBkYXJrIGFwcGVhcmFuY2UsIHRoYXQgaXMsIGxpZ2h0IHRleHQgb24gZGFyayBiYWNrZ3JvdW5kLidcbiAgICApXG4gIH0sXG4gIC8vIHtcbiAgLy8gICBsYWJlbDogZ2V0dGV4dCgnVHJhbnNwYXJlbnRgdGhlbWVgJyksXG4gIC8vICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtdHJhbnNwYXJlbnQnLFxuICAvLyAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAvLyAgICAgJ1RoZSBkYXNoYm9hcmQgaXMgc3R5bGVkIHdpdGggYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGFuZCB0aGVyZWZvcmUgaXMgYm9yZGVyLWxlc3MuJ1xuICAvLyAgIClcbiAgLy8gfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdCcmFuZGVkYHRoZW1lYCcpLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLWJyYW5kZWQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgZGFzaGJvYXJkIGlzIHN0eWxlZCB1c2luZyB0aGUgYnJhbmQgcGFsZXR0ZS4nKVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgU1RZTElOR19DTEFTU19QUkVGSVhFUyA9IFsnZGFzaGJvYXJkLXRoZW1lLScsICdwYW5lbC10aXRsZS0nLCAncGFuZWwtY29udGVudC0nXTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmRDb3B5Q2xpcGJvYXJkIHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBjb250ZXh0OiBEYXNoYm9hcmRDb250ZXh0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZENvbnRleHQge1xuICBjb250ZXh0OiBWaWV3Q29udGV4dDtcbiAgY29udGV4dERhdGE6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+O1xufVxuXG5leHBvcnQgY29uc3QgQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRCA9ICdhbGwnIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGFzaGJvYXJkR2xvYmFsUm9sZXMgPSBudW1iZXJbXSB8IHR5cGVvZiBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEO1xuXG5leHBvcnQgY29uc3QgUFJPRFVDVF9FWFBFUklFTkNFID0ge1xuICBEQVNIQk9BUkQ6IHtcbiAgICBFVkVOVFM6IHtcbiAgICAgIERBU0hCT0FSRFM6ICdkYXNoYm9hcmRzJyxcbiAgICAgIFJFUE9SVFM6ICdyZXBvcnRzJ1xuICAgIH0sXG4gICAgQ09NUE9ORU5UUzoge1xuICAgICAgREFTSEJPQVJEX1ZJRVc6ICdjb250ZXh0LWRhc2hib2FyZCcsXG4gICAgICBEQVNIQk9BUkRfQVZBSUxBQklMSVRZOiAnZGFzaGJvYXJkLWF2YWlsYWJpbGl0eScsXG4gICAgICBSRVBPUlRTX0xJU1Q6ICdyZXBvcnQtZGFzaGJvYXJkLWxpc3QnLFxuICAgICAgQUREX1JFUE9SVDogJ3JlcG9ydC1kYXNoYm9hcmQtbGlzdCcsXG4gICAgICBBRERfREFTSEJPQVJEOiAnYWRkLWRhc2hib2FyZCcsXG4gICAgICBERUxFVEVfREFTSEJPQVJEOiAnY29udGV4dC1kYXNoYm9hcmQnXG4gICAgfSxcbiAgICBDT05URVhUOiB7XG4gICAgICBSRVBPUlQ6ICdyZXBvcnQnLFxuICAgICAgREVWSUNFOiAnZGV2aWNlJyxcbiAgICAgIEFTU0VUOiAnYXNzZXQnLFxuICAgICAgR1JPVVA6ICdncm91cCdcbiAgICB9LFxuICAgIEFDVElPTlM6IHtcbiAgICAgIEFQUExZX0dMT0JBTF9ST0xFU19DSEFOR0VTOiAnYXBwbHlHbG9iYWxSb2xlc0NoYW5nZXMnLFxuICAgICAgREVMRVRFOiAnZGVsZXRlJyxcbiAgICAgIExPQUQ6ICdsb2FkJyxcbiAgICAgIENSRUFURTogJ2NyZWF0ZScsXG4gICAgICBBRERfUkVQT1JUOiAnYWRkUmVwb3J0J1xuICAgIH1cbiAgfVxufTtcbiJdfQ==
@@ -32,6 +32,7 @@ export class ReportDashboardListComponent {
32
32
  this.reportDashboardService = reportDashboardService;
33
33
  this.permissions = permissions;
34
34
  this.gainsightService = gainsightService;
35
+ this.PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE;
35
36
  this.textFilter$ = new BehaviorSubject('');
36
37
  this.reload$ = new BehaviorSubject(null);
37
38
  this.reloading = false;
@@ -144,12 +145,12 @@ export class ReportDashboardListComponent {
144
145
  }
145
146
  }
146
147
  ReportDashboardListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ReportDashboardListComponent, deps: [{ token: i1.InventoryService }, { token: i2.ContextDashboardService }, { token: i3.BsModalService }, { token: i4.TranslateService }, { token: i5.ModalService }, { token: i5.AlertService }, { token: i6.ReportDashboardService }, { token: i5.Permissions }, { token: i5.GainsightService }], target: i0.ɵɵFactoryTarget.Component });
147
- ReportDashboardListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ReportDashboardListComponent, selector: "c8y-report-dashboard-list", viewQueries: [{ propertyName: "filter", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<c8y-title>\n {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Filter' | translate\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n px-event=\"Clear filtering reports\"\n ></i>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add report' | translate }}\"\n type=\"button\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n class=\"btn btn-dot m-r-16\"\n aria-label=\"{{ 'Info' | translate }}\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"!canAddReport\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"'info-circle'\"\n ></i>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadReports()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/cockpit/working-with-reports/#working-with-reports\"></c8y-help>\n\n<c8y-list-group>\n <c8y-li\n class=\"page-sticky-header hidden-xs hidden-sm\"\n *ngIf=\"(reports$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n {{ 'Report' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Show in navigator' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n <button\n class=\"btn-clean\"\n title=\"{{ report.name }}\"\n type=\"button\"\n routerLink=\"/reports/{{ report.id }}\"\n >\n <span class=\"text-truncate\">\n {{ report.name }}\n </span>\n </button>\n </div>\n <div class=\"col-6\">\n <p class=\"small text-truncate-wrap\">\n <em\n class=\"text-muted\"\n *ngIf=\"!report.description; else showDescription\"\n >\n {{ 'No description available' | translate }}\n </em>\n <ng-template #showDescription>\n {{ report.description }}\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 fit-h-20 m-t-xs-8\">\n <label\n class=\"c8y-switch c8y-switch--inline\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"!!report.c8y_IsNavigatorNode\"\n (change)=\"update(report)\"\n />\n <span></span>\n <span class=\"visible-xs\">\n {{ 'Show in navigator' | translate }}\n </span>\n </label>\n </div>\n <div class=\"col-1 hidden-xs\">\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n [attr.aria-label]=\"'Remove report' | translate\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <div class=\"visible-xs p-t-8 text-right\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Remove report' | translate }}\"\n type=\"button\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove report' | translate }}\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n\n<c8y-ui-empty-state\n [icon]=\"'c8y-reports'\"\n [title]=\"'There are no reports defined.' | translate\"\n [subtitle]=\"'Add a report first.' | translate\"\n *ngIf=\"(reports$ | async)?.data.length === 0\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add report' | translate }}\"\n type=\"button\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n [disabled]=\"!canAddReport\"\n (click)=\"add()\"\n >\n {{ 'Add report' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-reports\">user documentation</a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n", dependencies: [{ kind: "component", type: i5.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i5.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i5.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i8.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: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i5.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i5.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i5.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i5.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i5.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i10.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i11.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] });
148
+ ReportDashboardListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ReportDashboardListComponent, selector: "c8y-report-dashboard-list", viewQueries: [{ propertyName: "filter", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<c8y-title>\n {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Filter' | translate\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n px-event=\"Clear filtering reports\"\n ></i>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add report' | translate }}\"\n type=\"button\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n class=\"btn btn-dot m-r-16\"\n aria-label=\"{{ 'Info' | translate }}\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"!canAddReport\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"'info-circle'\"\n ></i>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadReports()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/cockpit/working-with-reports/#working-with-reports\"></c8y-help>\n\n<c8y-list-group>\n <c8y-li\n class=\"page-sticky-header hidden-xs hidden-sm\"\n *ngIf=\"(reports$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n {{ 'Report' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Show in navigator' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n <button\n class=\"btn-clean\"\n title=\"{{ report.name }}\"\n type=\"button\"\n routerLink=\"/reports/{{ report.id }}\"\n >\n <span class=\"text-truncate\">\n {{ report.name }}\n </span>\n </button>\n </div>\n <div class=\"col-6\">\n <p class=\"small text-truncate-wrap\">\n <em\n class=\"text-muted\"\n *ngIf=\"!report.description; else showDescription\"\n >\n {{ 'No description available' | translate }}\n </em>\n <ng-template #showDescription>\n {{ report.description }}\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 fit-h-20 m-t-xs-8\">\n <label\n class=\"c8y-switch c8y-switch--inline\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"!!report.c8y_IsNavigatorNode\"\n (change)=\"update(report)\"\n />\n <span></span>\n <span class=\"visible-xs\">\n {{ 'Show in navigator' | translate }}\n </span>\n </label>\n </div>\n <div class=\"col-1 hidden-xs\">\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n [attr.aria-label]=\"'Remove report' | translate\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <div class=\"visible-xs p-t-8 text-right\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Remove report' | translate }}\"\n type=\"button\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove report' | translate }}\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n\n<c8y-ui-empty-state\n [icon]=\"'c8y-reports'\"\n [title]=\"'There are no reports defined.' | translate\"\n [subtitle]=\"'Add a report first.' | translate\"\n *ngIf=\"(reports$ | async)?.data.length === 0\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add report' | translate }}\"\n type=\"button\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n [disabled]=\"!canAddReport\"\n (click)=\"add()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS\"\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.ADD_REPORT }\"\n >\n {{ 'Add report' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-reports\">user documentation</a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n", dependencies: [{ kind: "component", type: i5.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i5.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i5.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i8.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: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i5.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i5.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i5.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i5.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i5.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i5.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i9.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i10.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i11.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] });
148
149
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ReportDashboardListComponent, decorators: [{
149
150
  type: Component,
150
- args: [{ selector: 'c8y-report-dashboard-list', template: "<c8y-title>\n {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Filter' | translate\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n px-event=\"Clear filtering reports\"\n ></i>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add report' | translate }}\"\n type=\"button\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n class=\"btn btn-dot m-r-16\"\n aria-label=\"{{ 'Info' | translate }}\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"!canAddReport\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"'info-circle'\"\n ></i>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadReports()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/cockpit/working-with-reports/#working-with-reports\"></c8y-help>\n\n<c8y-list-group>\n <c8y-li\n class=\"page-sticky-header hidden-xs hidden-sm\"\n *ngIf=\"(reports$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n {{ 'Report' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Show in navigator' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n <button\n class=\"btn-clean\"\n title=\"{{ report.name }}\"\n type=\"button\"\n routerLink=\"/reports/{{ report.id }}\"\n >\n <span class=\"text-truncate\">\n {{ report.name }}\n </span>\n </button>\n </div>\n <div class=\"col-6\">\n <p class=\"small text-truncate-wrap\">\n <em\n class=\"text-muted\"\n *ngIf=\"!report.description; else showDescription\"\n >\n {{ 'No description available' | translate }}\n </em>\n <ng-template #showDescription>\n {{ report.description }}\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 fit-h-20 m-t-xs-8\">\n <label\n class=\"c8y-switch c8y-switch--inline\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"!!report.c8y_IsNavigatorNode\"\n (change)=\"update(report)\"\n />\n <span></span>\n <span class=\"visible-xs\">\n {{ 'Show in navigator' | translate }}\n </span>\n </label>\n </div>\n <div class=\"col-1 hidden-xs\">\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n [attr.aria-label]=\"'Remove report' | translate\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <div class=\"visible-xs p-t-8 text-right\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Remove report' | translate }}\"\n type=\"button\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove report' | translate }}\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n\n<c8y-ui-empty-state\n [icon]=\"'c8y-reports'\"\n [title]=\"'There are no reports defined.' | translate\"\n [subtitle]=\"'Add a report first.' | translate\"\n *ngIf=\"(reports$ | async)?.data.length === 0\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add report' | translate }}\"\n type=\"button\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n [disabled]=\"!canAddReport\"\n (click)=\"add()\"\n >\n {{ 'Add report' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-reports\">user documentation</a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n" }]
151
+ args: [{ selector: 'c8y-report-dashboard-list', template: "<c8y-title>\n {{ 'Reports' | translate }}\n</c8y-title>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Filter' | translate\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n px-event=\"Clear filtering reports\"\n ></i>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add report' | translate }}\"\n type=\"button\"\n [attr.data-cy]=\"'reports-add-report-action-bar-button'\"\n (click)=\"add()\"\n [disabled]=\"!canAddReport\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add report' | translate }}\n </button>\n <button\n class=\"btn btn-dot m-r-16\"\n aria-label=\"{{ 'Info' | translate }}\"\n popover=\"{{ 'You don\\'t have permission to add reports' | translate }}\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"!canAddReport\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"'info-circle'\"\n ></i>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadReports()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/cockpit/working-with-reports/#working-with-reports\"></c8y-help>\n\n<c8y-list-group>\n <c8y-li\n class=\"page-sticky-header hidden-xs hidden-sm\"\n *ngIf=\"(reports$ | async)?.data.length > 0\"\n >\n <c8y-li-icon>\n <i class=\"p-l-24\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n {{ 'Report' | translate }}\n </div>\n <div class=\"col-6\">\n {{ 'Description' | translate }}\n </div>\n <div class=\"col-2\">\n {{ 'Show in navigator' | translate }}\n </div>\n </c8y-li-body>\n </c8y-li>\n\n <c8y-li *c8yFor=\"let report of reports$; let i = index; loadMore: 'auto'\">\n <c8y-li-icon [icon]=\"report.icon\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-60\">\n <div class=\"col-3\">\n <button\n class=\"btn-clean\"\n title=\"{{ report.name }}\"\n type=\"button\"\n routerLink=\"/reports/{{ report.id }}\"\n >\n <span class=\"text-truncate\">\n {{ report.name }}\n </span>\n </button>\n </div>\n <div class=\"col-6\">\n <p class=\"small text-truncate-wrap\">\n <em\n class=\"text-muted\"\n *ngIf=\"!report.description; else showDescription\"\n >\n {{ 'No description available' | translate }}\n </em>\n <ng-template #showDescription>\n {{ report.description }}\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 fit-h-20 m-t-xs-8\">\n <label\n class=\"c8y-switch c8y-switch--inline\"\n title=\"{{ 'Show in navigator' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"!!report.c8y_IsNavigatorNode\"\n (change)=\"update(report)\"\n />\n <span></span>\n <span class=\"visible-xs\">\n {{ 'Show in navigator' | translate }}\n </span>\n </label>\n </div>\n <div class=\"col-1 hidden-xs\">\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto d-flex\"\n [attr.aria-label]=\"'Remove report' | translate\"\n tooltip=\"{{ 'Remove report' | translate }}\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <div class=\"visible-xs p-t-8 text-right\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Remove report' | translate }}\"\n type=\"button\"\n (click)=\"delete(report)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Remove report' | translate }}\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n\n<c8y-ui-empty-state\n [icon]=\"'c8y-reports'\"\n [title]=\"'There are no reports defined.' | translate\"\n [subtitle]=\"'Add a report first.' | translate\"\n *ngIf=\"(reports$ | async)?.data.length === 0\"\n>\n <p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add report' | translate }}\"\n type=\"button\"\n [attr.data-cy]=\"'reports-add-report-empty-state-button'\"\n [disabled]=\"!canAddReport\"\n (click)=\"add()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS\"\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.ADD_REPORT }\"\n >\n {{ 'Add report' | translate }}\n </button>\n </p>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-reports\">user documentation</a>\n .\n </small>\n </p>\n</c8y-ui-empty-state>\n" }]
151
152
  }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.ContextDashboardService }, { type: i3.BsModalService }, { type: i4.TranslateService }, { type: i5.ModalService }, { type: i5.AlertService }, { type: i6.ReportDashboardService }, { type: i5.Permissions }, { type: i5.GainsightService }]; }, propDecorators: { filter: [{
152
153
  type: ViewChild,
153
154
  args: [FilterInputComponent, { static: false }]
154
155
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWtCLGdCQUFnQixFQUFlLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7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SUFDOUQsQ0FBQzs7eUhBdEpVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHlHQUM1QixvQkFBb0IsZ0RDekJqQyx5a0xBd01BOzJGRGhMYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsMkJBQTJCOzZWQUllLE1BQU07c0JBQXpELFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRmlsdGVySW5wdXRDb21wb25lbnQsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzLFxuICBBbGVydFNlcnZpY2UsXG4gIFBlcm1pc3Npb25zLFxuICBHYWluc2lnaHRTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi4vZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRUeXBlLCBQUk9EVUNUX0VYUEVSSUVOQ0UgfSBmcm9tICcuLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBSZXBvcnREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9yZXBvcnQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcmVwb3J0LWRhc2hib2FyZC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1kYXNoYm9hcmQtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0RGFzaGJvYXJkTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoRmlsdGVySW5wdXRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBmaWx0ZXI6IEZpbHRlcklucHV0Q29tcG9uZW50O1xuICB0ZXh0RmlsdGVyJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgcmVsb2FkJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcmVsb2FkaW5nID0gZmFsc2U7XG4gIHJlcG9ydHMkOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4gPSBjb21iaW5lTGF0ZXN0KFxuICAgIHRoaXMudGV4dEZpbHRlciQucGlwZShkZWJvdW5jZVRpbWUoNDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgdGhpcy5yZWxvYWQkXG4gICkucGlwZShcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWxvYWRpbmcgPSB0cnVlO1xuICAgIH0pLFxuICAgIHN3aXRjaE1hcCgoW3RleHRdKSA9PiB0aGlzLmxvYWRSZXBvcnRzKHRleHQpKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5yZWxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuICBjYW5BZGRSZXBvcnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUxFVEVEX1NVQ0NFU1NfTVNHID0gZ2V0dGV4dCgnUmVwb3J0IGRlbGV0ZWQuJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dERhc2hib2FyZFNlcnZpY2U6IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVwb3J0RGFzaGJvYXJkU2VydmljZTogUmVwb3J0RGFzaGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FuQWRkUmVwb3J0ID0gdGhpcy5wZXJtaXNzaW9ucy5oYXNBbnlSb2xlKFtcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0NSRUFURSxcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOLFxuICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFXG4gICAgXSk7XG4gIH1cblxuICBhc3luYyBsb2FkUmVwb3J0cyhwYXJ0aWFsTmFtZT86IHN0cmluZykge1xuICAgIHJldHVybiBwYXJ0aWFsTmFtZVxuICAgICAgPyB0aGlzLnJlcG9ydERhc2hib2FyZFNlcnZpY2UubGlzdFJlcG9ydHMoeyBmaWx0ZXI6IHsgbmFtZTogYCoke3BhcnRpYWxOYW1lfSpgIH0gfSlcbiAgICAgIDogdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmxpc3RSZXBvcnRzKCk7XG4gIH1cblxuICBhc3luYyBhZGQoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgaXNSZXBvcnQ6IHRydWUsXG4gICAgICBpc05hbWVkRGFzaGJvYXJkOiB0cnVlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KERhc2hib2FyZERldGFpbENvbXBvbmVudCwge1xuICAgICAgY2xhc3M6ICdtb2RhbC1sZycsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxuICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGluaXRpYWxTdGF0ZVxuICAgIH0pLmNvbnRlbnQgYXMgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjZmcgPSBhd2FpdCBtb2RhbC5yZXN1bHQ7XG4gICAgICBjb25zdCB7IG5hbWUsIGljb24sIGM4eV9Jc05hdmlnYXRvck5vZGUsIHByaW9yaXR5LCBkZXNjcmlwdGlvbiwgLi4uZGFzaGJvYXJkQ2ZnIH0gPSBjZmc7XG4gICAgICBjb25zdCByZXBvcnQgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5jcmVhdGVSZXBvcnQoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgaWNvbixcbiAgICAgICAgICBjOHlfSXNOYXZpZ2F0b3JOb2RlLFxuICAgICAgICAgIHByaW9yaXR5LFxuICAgICAgICAgIGRlc2NyaXB0aW9uXG4gICAgICAgIH0gYXMgUGFydGlhbDxJTWFuYWdlZE9iamVjdD4pXG4gICAgICApLmRhdGE7XG5cbiAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY3JlYXRlKFxuICAgICAgICBkYXNoYm9hcmRDZmcsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgYCR7dGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5SRVBPUlRfUEFSVElBTF9OQU1FfSR7cmVwb3J0LmlkfWBcbiAgICAgICk7XG4gICAgICBpZiAocmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUpIHtcbiAgICAgICAgdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmFkZFJlcG9ydE5hdmlnYXRvck5vZGUocmVwb3J0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gICAgICBtb2RhbC5jbG9zZSgpO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5SRVBPUlRTLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT01QT05FTlRTLkFERF9SRVBPUlQsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5BQ1RJT05TLkNSRUFURSxcbiAgICAgICAgbmFtZTogcmVwb3J0Lm5hbWUsXG4gICAgICAgIGlkOiByZXBvcnQuaWQsXG4gICAgICAgIGNvbnRleHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09OVEVYVC5SRVBPUlRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZzogJHtleH1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGUocmVwb3J0OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXNoYm9hcmQgPSBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlXG4gICAgICAgIC5nZXREYXNoYm9hcmQkKGByZXBvcnRfJHtyZXBvcnQuaWR9YCwgW0NvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkXSlcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgICAgY29uc3QgaXNEYXNoYm9hcmRGcm96ZW4gPSAhIWRhc2hib2FyZD8uYzh5X0Rhc2hib2FyZD8uaXNGcm96ZW47XG5cbiAgICAgIGNvbnN0IG1zZyA9IGlzRGFzaGJvYXJkRnJvemVuXG4gICAgICAgID8gZ2V0dGV4dChcbiAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgcmVwb3J0IFwie3sgcmVwb3J0TmFtZSB9fVwiLiBCZSBhd2FyZSB0aGF0IHRoZSByZXBvcnQgaGFzIGEgbG9ja2VkIGRhc2hib2FyZCBhc3NpZ25lZC4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICAgICAgKVxuICAgICAgICA6IGdldHRleHQoYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSByZXBvcnQgXCJ7eyByZXBvcnROYW1lIH19XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YCk7XG5cbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShcbiAgICAgICAgZ2V0dGV4dCgnRGVsZXRlIHJlcG9ydCcpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtc2csIHtcbiAgICAgICAgICByZXBvcnROYW1lOiByZXBvcnQubmFtZVxuICAgICAgICB9KSxcbiAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAge1xuICAgICAgICAgIG9rOiBnZXR0ZXh0KCdEZWxldGUnKSxcbiAgICAgICAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZGVsZXRlKGRhc2hib2FyZCwgZmFsc2UpO1xuICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRlbGV0ZShyZXBvcnQuaWQpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2Vzcyh0aGlzLkRFTEVURURfU1VDQ0VTU19NU0cpO1xuICAgICAgaWYgKHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlKSB7XG4gICAgICAgIHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5yZW1vdmVOYXZpZ2F0b3JOb2RlKHJlcG9ydCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlbG9hZCQubmV4dCgpO1xuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5SRVBPUlRTLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT01QT05FTlRTLlJFUE9SVFNfTElTVCxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkFDVElPTlMuREVMRVRFLFxuICAgICAgICBuYW1lOiByZXBvcnQubmFtZSxcbiAgICAgICAgaWQ6IHJlcG9ydC5pZCxcbiAgICAgICAgY29udGV4dDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT05URVhULlJFUE9SVFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmIChleCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvbWV0aGluZyB3ZW50IHdyb25nOiAke2V4fWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShyZXBvcnQ6IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUgPSByZXBvcnQuYzh5X0lzTmF2aWdhdG9yTm9kZSA/IHt9IDogbnVsbDtcbiAgICBhd2FpdCB0aGlzLmludmVudG9yeVNlcnZpY2UudXBkYXRlKHJlcG9ydCk7XG4gICAgcmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGVcbiAgICAgID8gdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmFkZFJlcG9ydE5hdmlnYXRvck5vZGUocmVwb3J0KVxuICAgICAgOiB0aGlzLnJlcG9ydERhc2hib2FyZFNlcnZpY2UucmVtb3ZlTmF2aWdhdG9yTm9kZShyZXBvcnQpO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPlxuICB7eyAnUmVwb3J0cycgfCB0cmFuc2xhdGUgfX1cbjwvYzh5LXRpdGxlPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidsZWZ0J1wiXG4gIGl0ZW1DbGFzcz1cIm5hdmJhci1mb3JtXCJcbj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNlYXJjaFwiPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRmlsdGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdGaWx0ZXLigKYnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgW25nTW9kZWxdPVwidGV4dEZpbHRlciQgfCBhc3luY1wiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJ0ZXh0RmlsdGVyJC5uZXh0KCRldmVudClcIlxuICAgIC8+XG4gICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlxuICAgICAgPGlcbiAgICAgICAgYzh5SWNvbj1cInNlYXJjaFwiXG4gICAgICAgICpuZ0lmPVwiKHRleHRGaWx0ZXIkIHwgYXN5bmMpLmxlbmd0aCA9PT0gMFwiXG4gICAgICA+PC9pPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LW11dGVkXCJcbiAgICAgICAgYzh5SWNvbj1cInRpbWVzXCJcbiAgICAgICAgKm5nSWY9XCIodGV4dEZpbHRlciQgfCBhc3luYykubGVuZ3RoID4gMFwiXG4gICAgICAgIChjbGljayk9XCJ0ZXh0RmlsdGVyJC5uZXh0KCcnKVwiXG4gICAgICAgIHB4LWV2ZW50PVwiQ2xlYXIgZmlsdGVyaW5nIHJlcG9ydHNcIlxuICAgICAgPjwvaT5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIuZGF0YS1jeV09XCIncmVwb3J0cy1hZGQtcmVwb3J0LWFjdGlvbi1iYXItYnV0dG9uJ1wiXG4gICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFJlcG9ydFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAge3sgJ0FkZCByZXBvcnQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWRvdCBtLXItMTZcIlxuICAgIGFyaWEtbGFiZWw9XCJ7eyAnSW5mbycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHBvcG92ZXI9XCJ7eyAnWW91IGRvblxcJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFkZCByZXBvcnRzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAqbmdJZj1cIiFjYW5BZGRSZXBvcnRcIlxuICA+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5XCJcbiAgICAgIFtjOHlJY29uXT1cIidpbmZvLWNpcmNsZSdcIlxuICAgID48L2k+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAoY2xpY2spPVwibG9hZFJlcG9ydHMoKVwiXG4gID5cbiAgICA8aVxuICAgICAgYzh5SWNvbj1cInJlZnJlc2hcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogcmVsb2FkaW5nIH1cIlxuICAgID48L2k+XG4gICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscCBzcmM9XCIvZG9jcy9jb2NrcGl0L3dvcmtpbmctd2l0aC1yZXBvcnRzLyN3b3JraW5nLXdpdGgtcmVwb3J0c1wiPjwvYzh5LWhlbHA+XG5cbjxjOHktbGlzdC1ncm91cD5cbiAgPGM4eS1saVxuICAgIGNsYXNzPVwicGFnZS1zdGlja3ktaGVhZGVyIGhpZGRlbi14cyBoaWRkZW4tc21cIlxuICAgICpuZ0lmPVwiKHJlcG9ydHMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA+IDBcIlxuICA+XG4gICAgPGM4eS1saS1pY29uPlxuICAgICAgPGkgY2xhc3M9XCJwLWwtMjRcIj48L2k+XG4gICAgPC9jOHktbGktaWNvbj5cbiAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtNjBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICB7eyAnUmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAge3sgJ0Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAge3sgJ1Nob3cgaW4gbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktbGktYm9keT5cbiAgPC9jOHktbGk+XG5cbiAgPGM4eS1saSAqYzh5Rm9yPVwibGV0IHJlcG9ydCBvZiByZXBvcnRzJDsgbGV0IGkgPSBpbmRleDsgbG9hZE1vcmU6ICdhdXRvJ1wiPlxuICAgIDxjOHktbGktaWNvbiBbaWNvbl09XCJyZXBvcnQuaWNvblwiPjwvYzh5LWxpLWljb24+XG4gICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTYwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuXCJcbiAgICAgICAgICB0aXRsZT1cInt7IHJlcG9ydC5uYW1lIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICByb3V0ZXJMaW5rPVwiL3JlcG9ydHMve3sgcmVwb3J0LmlkIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAge3sgcmVwb3J0Lm5hbWUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJzbWFsbCB0ZXh0LXRydW5jYXRlLXdyYXBcIj5cbiAgICAgICAgICA8ZW1cbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1tdXRlZFwiXG4gICAgICAgICAgICAqbmdJZj1cIiFyZXBvcnQuZGVzY3JpcHRpb247IGVsc2Ugc2hvd0Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnTm8gZGVzY3JpcHRpb24gYXZhaWxhYmxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZW0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93RGVzY3JpcHRpb24+XG4gICAgICAgICAgICB7eyByZXBvcnQuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBmaXQtaC0yMCBtLXQteHMtOFwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCIhIXJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlKHJlcG9ydClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzaWJsZS14c1wiPlxuICAgICAgICAgICAge3sgJ1Nob3cgaW4gbmF2aWdhdG9yJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xIGhpZGRlbi14c1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBidG4tZG90LS1kYW5nZXIgc2hvd09uSG92ZXIgbS1sLWF1dG8gZC1mbGV4XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmUgcmVwb3J0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdG9vbHRpcD1cInt7ICdSZW1vdmUgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShyZXBvcnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidmlzaWJsZS14cyBwLXQtOCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc21cIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZSByZXBvcnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKHJlcG9ydClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICB7eyAnUmVtb3ZlIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1saS1ib2R5PlxuICA8L2M4eS1saT5cbjwvYzh5LWxpc3QtZ3JvdXA+XG5cbjxjOHktdWktZW1wdHktc3RhdGVcbiAgW2ljb25dPVwiJ2M4eS1yZXBvcnRzJ1wiXG4gIFt0aXRsZV09XCInVGhlcmUgYXJlIG5vIHJlcG9ydHMgZGVmaW5lZC4nIHwgdHJhbnNsYXRlXCJcbiAgW3N1YnRpdGxlXT1cIidBZGQgYSByZXBvcnQgZmlyc3QuJyB8IHRyYW5zbGF0ZVwiXG4gICpuZ0lmPVwiKHJlcG9ydHMkIHwgYXN5bmMpPy5kYXRhLmxlbmd0aCA9PT0gMFwiXG4+XG4gIDxwPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHRpdGxlPVwie3sgJ0FkZCByZXBvcnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuZGF0YS1jeV09XCIncmVwb3J0cy1hZGQtcmVwb3J0LWVtcHR5LXN0YXRlLWJ1dHRvbidcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjYW5BZGRSZXBvcnRcIlxuICAgICAgKGNsaWNrKT1cImFkZCgpXCJcbiAgICA+XG4gICAgICB7eyAnQWRkIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9wPlxuICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICA8c21hbGxcbiAgICAgIHRyYW5zbGF0ZVxuICAgICAgbmdOb25CaW5kYWJsZVxuICAgID5cbiAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICA8YSBjOHktZ3VpZGUtaHJlZj1cIi9kb2NzL2NvY2twaXQvd29ya2luZy13aXRoLXJlcG9ydHNcIj51c2VyIGRvY3VtZW50YXRpb248L2E+XG4gICAgICAuXG4gICAgPC9zbWFsbD5cbiAgPC9wPlxuPC9jOHktdWktZW1wdHktc3RhdGU+XG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3JlcG9ydC1kYXNoYm9hcmQvcmVwb3J0LWRhc2hib2FyZC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQWtCLGdCQUFnQixFQUFlLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLE9BQU8sRUFDUCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7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QUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7eUhBeEpVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHlHQUc1QixvQkFBb0IsZ0RDM0JqQyw2dkxBMk1BOzJGRG5MYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsMkJBQTJCOzZWQU1lLE1BQU07c0JBQXpELFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRmlsdGVySW5wdXRDb21wb25lbnQsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzLFxuICBBbGVydFNlcnZpY2UsXG4gIFBlcm1pc3Npb25zLFxuICBHYWluc2lnaHRTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi4vZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRUeXBlLCBQUk9EVUNUX0VYUEVSSUVOQ0UgfSBmcm9tICcuLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBSZXBvcnREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9yZXBvcnQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktcmVwb3J0LWRhc2hib2FyZC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1kYXNoYm9hcmQtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0RGFzaGJvYXJkTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIFBST0RVQ1RfRVhQRVJJRU5DRSA9IFBST0RVQ1RfRVhQRVJJRU5DRTtcblxuICBAVmlld0NoaWxkKEZpbHRlcklucHV0Q29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgZmlsdGVyOiBGaWx0ZXJJbnB1dENvbXBvbmVudDtcbiAgdGV4dEZpbHRlciQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIHJlbG9hZCQ6IEJlaGF2aW9yU3ViamVjdDx2b2lkPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHJlbG9hZGluZyA9IGZhbHNlO1xuICByZXBvcnRzJDogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4+ID0gY29tYmluZUxhdGVzdChcbiAgICB0aGlzLnRleHRGaWx0ZXIkLnBpcGUoZGVib3VuY2VUaW1lKDQwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgIHRoaXMucmVsb2FkJFxuICApLnBpcGUoXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMucmVsb2FkaW5nID0gdHJ1ZTtcbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoKFt0ZXh0XSkgPT4gdGhpcy5sb2FkUmVwb3J0cyh0ZXh0KSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMucmVsb2FkaW5nID0gZmFsc2U7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgY2FuQWRkUmVwb3J0ID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVMRVRFRF9TVUNDRVNTX01TRyA9IGdldHRleHQoJ1JlcG9ydCBkZWxldGVkLicpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlOiBDb250ZXh0RGFzaGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWw6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlcG9ydERhc2hib2FyZFNlcnZpY2U6IFJlcG9ydERhc2hib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhbkFkZFJlcG9ydCA9IHRoaXMucGVybWlzc2lvbnMuaGFzQW55Um9sZShbXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9DUkVBVEUsXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4sXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX0NSRUFURVxuICAgIF0pO1xuICB9XG5cbiAgYXN5bmMgbG9hZFJlcG9ydHMocGFydGlhbE5hbWU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcGFydGlhbE5hbWVcbiAgICAgID8gdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLmxpc3RSZXBvcnRzKHsgZmlsdGVyOiB7IG5hbWU6IGAqJHtwYXJ0aWFsTmFtZX0qYCB9IH0pXG4gICAgICA6IHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5saXN0UmVwb3J0cygpO1xuICB9XG5cbiAgYXN5bmMgYWRkKCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgIGlzUmVwb3J0OiB0cnVlLFxuICAgICAgaXNOYW1lZERhc2hib2FyZDogdHJ1ZVxuICAgIH07XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhEYXNoYm9hcmREZXRhaWxDb21wb25lbnQsIHtcbiAgICAgIGNsYXNzOiAnbW9kYWwtbGcnLFxuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGVcbiAgICB9KS5jb250ZW50IGFzIERhc2hib2FyZERldGFpbENvbXBvbmVudDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2ZnID0gYXdhaXQgbW9kYWwucmVzdWx0O1xuICAgICAgY29uc3QgeyBuYW1lLCBpY29uLCBjOHlfSXNOYXZpZ2F0b3JOb2RlLCBwcmlvcml0eSwgZGVzY3JpcHRpb24sIC4uLmRhc2hib2FyZENmZyB9ID0gY2ZnO1xuICAgICAgY29uc3QgcmVwb3J0ID0gKFxuICAgICAgICBhd2FpdCB0aGlzLnJlcG9ydERhc2hib2FyZFNlcnZpY2UuY3JlYXRlUmVwb3J0KHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGljb24sXG4gICAgICAgICAgYzh5X0lzTmF2aWdhdG9yTm9kZSxcbiAgICAgICAgICBwcmlvcml0eSxcbiAgICAgICAgICBkZXNjcmlwdGlvblxuICAgICAgICB9IGFzIFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+KVxuICAgICAgKS5kYXRhO1xuXG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmNyZWF0ZShcbiAgICAgICAgZGFzaGJvYXJkQ2ZnLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGAke3RoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuUkVQT1JUX1BBUlRJQUxfTkFNRX0ke3JlcG9ydC5pZH1gXG4gICAgICApO1xuICAgICAgaWYgKHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlKSB7XG4gICAgICAgIHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5hZGRSZXBvcnROYXZpZ2F0b3JOb2RlKHJlcG9ydCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlbG9hZCQubmV4dCgpO1xuICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5FVkVOVFMuUkVQT1JUUywge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5BRERfUkVQT1JULFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQUNUSU9OUy5DUkVBVEUsXG4gICAgICAgIG5hbWU6IHJlcG9ydC5uYW1lLFxuICAgICAgICBpZDogcmVwb3J0LmlkLFxuICAgICAgICBjb250ZXh0OiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkNPTlRFWFQuUkVQT1JUXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgaWYgKGV4KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU29tZXRoaW5nIHdlbnQgd3Jvbmc6ICR7ZXh9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlKHJlcG9ydDogSU1hbmFnZWRPYmplY3QpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGFzaGJvYXJkID0gYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZVxuICAgICAgICAuZ2V0RGFzaGJvYXJkJChgcmVwb3J0XyR7cmVwb3J0LmlkfWAsIFtDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZF0pXG4gICAgICAgIC50b1Byb21pc2UoKTtcbiAgICAgIGNvbnN0IGlzRGFzaGJvYXJkRnJvemVuID0gISFkYXNoYm9hcmQ/LmM4eV9EYXNoYm9hcmQ/LmlzRnJvemVuO1xuXG4gICAgICBjb25zdCBtc2cgPSBpc0Rhc2hib2FyZEZyb3plblxuICAgICAgICA/IGdldHRleHQoXG4gICAgICAgICAgICBgWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIHJlcG9ydCBcInt7IHJlcG9ydE5hbWUgfX1cIi4gQmUgYXdhcmUgdGhhdCB0aGUgcmVwb3J0IGhhcyBhIGxvY2tlZCBkYXNoYm9hcmQgYXNzaWduZWQuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YFxuICAgICAgICAgIClcbiAgICAgICAgOiBnZXR0ZXh0KGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgcmVwb3J0IFwie3sgcmVwb3J0TmFtZSB9fVwiLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkP2ApO1xuXG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oXG4gICAgICAgIGdldHRleHQoJ0RlbGV0ZSByZXBvcnQnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobXNnLCB7XG4gICAgICAgICAgcmVwb3J0TmFtZTogcmVwb3J0Lm5hbWVcbiAgICAgICAgfSksXG4gICAgICAgIFN0YXR1cy5EQU5HRVIsXG4gICAgICAgIHtcbiAgICAgICAgICBvazogZ2V0dGV4dCgnRGVsZXRlJyksXG4gICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmRlbGV0ZShkYXNoYm9hcmQsIGZhbHNlKTtcbiAgICAgIGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZWxldGUocmVwb3J0LmlkKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3ModGhpcy5ERUxFVEVEX1NVQ0NFU1NfTVNHKTtcbiAgICAgIGlmIChyZXBvcnQuYzh5X0lzTmF2aWdhdG9yTm9kZSkge1xuICAgICAgICB0aGlzLnJlcG9ydERhc2hib2FyZFNlcnZpY2UucmVtb3ZlTmF2aWdhdG9yTm9kZShyZXBvcnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5yZWxvYWQkLm5leHQoKTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5FVkVOVFMuUkVQT1JUUywge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5SRVBPUlRTX0xJU1QsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5BQ1RJT05TLkRFTEVURSxcbiAgICAgICAgbmFtZTogcmVwb3J0Lm5hbWUsXG4gICAgICAgIGlkOiByZXBvcnQuaWQsXG4gICAgICAgIGNvbnRleHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09OVEVYVC5SRVBPUlRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZzogJHtleH1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGUocmVwb3J0OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlID0gcmVwb3J0LmM4eV9Jc05hdmlnYXRvck5vZGUgPyB7fSA6IG51bGw7XG4gICAgYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLnVwZGF0ZShyZXBvcnQpO1xuICAgIHJlcG9ydC5jOHlfSXNOYXZpZ2F0b3JOb2RlXG4gICAgICA/IHRoaXMucmVwb3J0RGFzaGJvYXJkU2VydmljZS5hZGRSZXBvcnROYXZpZ2F0b3JOb2RlKHJlcG9ydClcbiAgICAgIDogdGhpcy5yZXBvcnREYXNoYm9hcmRTZXJ2aWNlLnJlbW92ZU5hdmlnYXRvck5vZGUocmVwb3J0KTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT5cbiAge3sgJ1JlcG9ydHMnIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCInbGVmdCdcIlxuICBpdGVtQ2xhc3M9XCJuYXZiYXItZm9ybVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1zZWFyY2hcIj5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0ZpbHRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnRmlsdGVy4oCmJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgIFtuZ01vZGVsXT1cInRleHRGaWx0ZXIkIHwgYXN5bmNcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGV4dEZpbHRlciQubmV4dCgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIj5cbiAgICAgIDxpXG4gICAgICAgIGM4eUljb249XCJzZWFyY2hcIlxuICAgICAgICAqbmdJZj1cIih0ZXh0RmlsdGVyJCB8IGFzeW5jKS5sZW5ndGggPT09IDBcIlxuICAgICAgPjwvaT5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwidGV4dC1tdXRlZFwiXG4gICAgICAgIGM4eUljb249XCJ0aW1lc1wiXG4gICAgICAgICpuZ0lmPVwiKHRleHRGaWx0ZXIkIHwgYXN5bmMpLmxlbmd0aCA+IDBcIlxuICAgICAgICAoY2xpY2spPVwidGV4dEZpbHRlciQubmV4dCgnJylcIlxuICAgICAgICBweC1ldmVudD1cIkNsZWFyIGZpbHRlcmluZyByZXBvcnRzXCJcbiAgICAgID48L2k+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnQWRkIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFthdHRyLmRhdGEtY3ldPVwiJ3JlcG9ydHMtYWRkLXJlcG9ydC1hY3Rpb24tYmFyLWJ1dHRvbidcIlxuICAgIChjbGljayk9XCJhZGQoKVwiXG4gICAgW2Rpc2FibGVkXT1cIiFjYW5BZGRSZXBvcnRcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCI+PC9pPlxuICAgIHt7ICdBZGQgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgbS1yLTE2XCJcbiAgICBhcmlhLWxhYmVsPVwie3sgJ0luZm8nIHwgdHJhbnNsYXRlIH19XCJcbiAgICBwb3BvdmVyPVwie3sgJ1lvdSBkb25cXCd0IGhhdmUgcGVybWlzc2lvbiB0byBhZGQgcmVwb3J0cycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKm5nSWY9XCIhY2FuQWRkUmVwb3J0XCJcbiAgPlxuICAgIDxpXG4gICAgICBjbGFzcz1cInRleHQtcHJpbWFyeVwiXG4gICAgICBbYzh5SWNvbl09XCInaW5mby1jaXJjbGUnXCJcbiAgICA+PC9pPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImxvYWRSZXBvcnRzKClcIlxuICA+XG4gICAgPGlcbiAgICAgIGM4eUljb249XCJyZWZyZXNoXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IHJlbG9hZGluZyB9XCJcbiAgICA+PC9pPlxuICAgIHt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWhlbHAgc3JjPVwiL2RvY3MvY29ja3BpdC93b3JraW5nLXdpdGgtcmVwb3J0cy8jd29ya2luZy13aXRoLXJlcG9ydHNcIj48L2M4eS1oZWxwPlxuXG48Yzh5LWxpc3QtZ3JvdXA+XG4gIDxjOHktbGlcbiAgICBjbGFzcz1cInBhZ2Utc3RpY2t5LWhlYWRlciBoaWRkZW4teHMgaGlkZGVuLXNtXCJcbiAgICAqbmdJZj1cIihyZXBvcnRzJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPiAwXCJcbiAgPlxuICAgIDxjOHktbGktaWNvbj5cbiAgICAgIDxpIGNsYXNzPVwicC1sLTI0XCI+PC9pPlxuICAgIDwvYzh5LWxpLWljb24+XG4gICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTYwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAge3sgJ1JlcG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgIHt7ICdEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIHt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvYzh5LWxpLWJvZHk+XG4gIDwvYzh5LWxpPlxuXG4gIDxjOHktbGkgKmM4eUZvcj1cImxldCByZXBvcnQgb2YgcmVwb3J0cyQ7IGxldCBpID0gaW5kZXg7IGxvYWRNb3JlOiAnYXV0bydcIj5cbiAgICA8Yzh5LWxpLWljb24gW2ljb25dPVwicmVwb3J0Lmljb25cIj48L2M4eS1saS1pY29uPlxuICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC02MFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0bi1jbGVhblwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyByZXBvcnQubmFtZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgcm91dGVyTGluaz1cIi9yZXBvcnRzL3t7IHJlcG9ydC5pZCB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgIHt7IHJlcG9ydC5uYW1lIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgIDxwIGNsYXNzPVwic21hbGwgdGV4dC10cnVuY2F0ZS13cmFwXCI+XG4gICAgICAgICAgPGVtXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtbXV0ZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCIhcmVwb3J0LmRlc2NyaXB0aW9uOyBlbHNlIHNob3dEZXNjcmlwdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ05vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2VtPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0Rlc2NyaXB0aW9uPlxuICAgICAgICAgICAge3sgcmVwb3J0LmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTIgZml0LWgtMjAgbS10LXhzLThcIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnU2hvdyBpbiBuYXZpZ2F0b3InIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiISFyZXBvcnQuYzh5X0lzTmF2aWdhdG9yTm9kZVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZShyZXBvcnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc2libGUteHNcIj5cbiAgICAgICAgICAgIHt7ICdTaG93IGluIG5hdmlnYXRvcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMSBoaWRkZW4teHNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyIHNob3dPbkhvdmVyIG0tbC1hdXRvIGQtZmxleFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVtb3ZlIHJlcG9ydCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHRvb2x0aXA9XCJ7eyAnUmVtb3ZlIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgIChjbGljayk9XCJkZWxldGUocmVwb3J0KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZpc2libGUteHMgcC10LTggdGV4dC1yaWdodFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdSZW1vdmUgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZShyZXBvcnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGM4eUljb249XCJkZWxldGVcIj48L2k+XG4gICAgICAgICAge3sgJ1JlbW92ZSByZXBvcnQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktbGktYm9keT5cbiAgPC9jOHktbGk+XG48L2M4eS1saXN0LWdyb3VwPlxuXG48Yzh5LXVpLWVtcHR5LXN0YXRlXG4gIFtpY29uXT1cIidjOHktcmVwb3J0cydcIlxuICBbdGl0bGVdPVwiJ1RoZXJlIGFyZSBubyByZXBvcnRzIGRlZmluZWQuJyB8IHRyYW5zbGF0ZVwiXG4gIFtzdWJ0aXRsZV09XCInQWRkIGEgcmVwb3J0IGZpcnN0LicgfCB0cmFuc2xhdGVcIlxuICAqbmdJZj1cIihyZXBvcnRzJCB8IGFzeW5jKT8uZGF0YS5sZW5ndGggPT09IDBcIlxuPlxuICA8cD5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICB0aXRsZT1cInt7ICdBZGQgcmVwb3J0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ3JlcG9ydHMtYWRkLXJlcG9ydC1lbXB0eS1zdGF0ZS1idXR0b24nXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY2FuQWRkUmVwb3J0XCJcbiAgICAgIChjbGljayk9XCJhZGQoKVwiXG4gICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5FVkVOVFMuUkVQT1JUU1wiXG4gICAgICBbYWN0aW9uRGF0YV09XCJ7IGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5BQ1RJT05TLkFERF9SRVBPUlQgfVwiXG4gICAgPlxuICAgICAge3sgJ0FkZCByZXBvcnQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvcD5cbiAgPHAgYzh5LWd1aWRlLWRvY3M+XG4gICAgPHNtYWxsXG4gICAgICB0cmFuc2xhdGVcbiAgICAgIG5nTm9uQmluZGFibGVcbiAgICA+XG4gICAgICBGaW5kIG91dCBtb3JlIGluIHRoZVxuICAgICAgPGEgYzh5LWd1aWRlLWhyZWY9XCIvZG9jcy9jb2NrcGl0L3dvcmtpbmctd2l0aC1yZXBvcnRzXCI+dXNlciBkb2N1bWVudGF0aW9uPC9hPlxuICAgICAgLlxuICAgIDwvc21hbGw+XG4gIDwvcD5cbjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuIl19
@@ -5,4 +5,4 @@
5
5
  */
6
6
  export class ApplicationOptions {
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBK005QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tV0FSTklORy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhpcyBmaWxlIGhhcyBhbiAqZXhhY3QqIGNvcHkgaW4gcGFja2FnZXMvY2xpL3NyYy93ZWJwYWNrLy5cbiAqIEFueSBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIHJlZmxlY3RlZCB0aGVyZSwgdG9vLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqIEFwcGxpY2F0aW9uIG5hbWUgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBBcHBsaWNhdGlvbiBjb250ZXh0IHBhdGggKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAvKiogQXBwbGljYXRpb24ga2V5IChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24gKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIG9mIHRoZSB1c2VkIFdlYlNESyB2ZXJzaW9uICovXG4gIHdlYlNka1ZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKiBTZXQgdG8gYHRydWVgIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBoeWJyaWQgYW5kIHVzZXMgQW5ndWxhciBhbmQgQW5ndWxhckpTIHNpbXVsdGFuZW91c2x5LiAqL1xuICB1cGdyYWRlPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIGJyYW5kaW5nIGVudHJ5IGZpbGUuIChTZXQgaXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBhbnkgc3R5bGluZy4gWW91IGNhbiBoYW5kbGUgdGhlIHN0eWxpbmcgdGhlbiBvbiB5b3VyIG93biBlLmcuIGluIGFuIGFuZ3VsYXIuanNvbiBmaWxlIHVzaW5nIG5nLWNsaSkgKi9cbiAgYnJhbmRpbmdFbnRyeT86IHN0cmluZyB8IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRzY2NuZmlnLmpzb24gZmlsZSBpZiBUeXBlU2NyaXB0IGlzIHVzZWQgKGRlZmF1bHQ6IC4vdHNjb25maWcuanNvbikuICovXG4gIHRzQ29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqIEVudHJ5IG1vZHVsZSBmb3IgQW5ndWxhciBjb21waWxlciAob25seSB1c2VkIHdpdGggbGF6eSBsb2FkZWQgcm91dGVzKSwgZS5nLiBgJ2FwcC5tb2R1bGUudHMjQXBwTW9kdWxlJ2AuICovXG4gIGVudHJ5TW9kdWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBjdXN0b20gaW5kZXguaHRtbCAob3RoZXJ3aXNlIGRlZmF1bHQgb25lIHdpbGwgYmUgdXNlZCkuICovXG4gIGluZGV4VGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gZHluYW1pY2FsbHkgZmV0Y2hlZCBvcHRpb25zLiAqL1xuICBkeW5hbWljT3B0aW9uc1VybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byBmYXZpY29uLiAqL1xuICBmYXZpY29uVXJsPzogc3RyaW5nO1xuICAvKiogVVJMIHRvICouY3NzIGZpbGUgd2hpY2ggd2lsbCByZXBsYWNlIGRlZmF1bHQgYnJhbmRpbmcuICovXG4gIGJyYW5kaW5nVXJsPzogc3RyaW5nO1xuICAvKiogT2JqZWN0IHdpdGggcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgY29udmVydGVkIHRvIENTUyBjdXN0b20gdmFyaWFibGVzLiAqL1xuICBicmFuZGluZ0Nzc1ZhcnM/OiBCcmFuZGluZ0Nzc1ZhcnM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBvciBvdmVycmlkaW5nIGxhbmd1YWdlcyBhdmFpbGFibGUgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBJdHMga2V5cyBhcmUgbGFuZ3VhZ2UgY29kZXMgYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqIC0gYG5hbWVgOiBFbmdsaXNoIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGBuYXRpdmVOYW1lYDogbmF0aXZlIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGB1cmxgOiBmdWxsIFVSTCB0byBKU09OIGZpbGUgd2l0aCBjb21waWxlZCB0cmFuc2xhdGlvbnM7XG4gICAqICAgIGlmIG5vdCBkZWZpbmVkLCB0cmFuc2xhdGlvbnMgd2lsbCBiZSBsb2FkZWQgZnJvbSBgJHtsb2NhbGVQYXRofS8ke2xhbmdDb2RlfS5qc29uYC5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBganNvblxuICAgKiBcImxhbmd1YWdlc1wiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIm5hbWVcIjogXCJHZXJtYW5cIixcbiAgICogICAgIFwibmF0aXZlTmFtZVwiOiBcIkRldXRzY2hcIixcbiAgICogICAgIFwidXJsXCI6IFwiL2FwcHMvcHVibGljL3VpLWFzc2V0cy9kZS5qc29uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBsYW5ndWFnZXM/OiBMYW5ndWFnZXM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBjdXN0b20gdHJhbnNsYXRpb25zLiBJdCBpcyBhbiBvcHRpb25hbCBwcm9wZXJ0eS5cbiAgICpcbiAgICogSXRzIGtleXMgYXJlIGxhbmd1YWdlIGNvZGVzIChodHRwczovL2N1bXVsb2NpdHkuY29tL2RvY3Mvc2VjdGlvbi9nZXR0aW5nX3N0YXJ0ZWQvI2EtbmFtZS1sYW5ndWFnZXMtYS1hdmFpbGFibGUtbGFuZ3VhZ2VzKVxuICAgKiBhbmQgaXRzIHZhbHVlcyBhcmUgb2JqZWN0cyB3aXRoIGtleS12YWx1ZSBwYWlycywgd2hlcmUgdGhlIGtleSBpcyB0aGUgb3JpZ2luYWwgc3RyaW5nIGluIEVuZ2xpc2ggYW5kIHRoZSB2YWx1ZSAtIGl0cyB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogLSBgSG9tZWA6IFwiU3RhcnRzZWl0ZVwiXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCB0aGUgdHJhbnNsYXRpb24gb2YgeW91ciBjdXN0b20gY29va2llIGJhbm5lciBjb25maWd1cmVkIGluIHRoZSBicmFuZGluZyBzZXR0aW5nczpcbiAgICogYGBganNvblxuICAgKiBcImkxOG5FeHRyYVwiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIkFib3V0IGNvb2tpZXMgb24gQ3VtdWxvY2l0eSBJb1RcIjogXCJJbmZvcm1hdGlvbmVuIHp1IENvb2tpZXMgaW4gQ3VtdWxvY2l0eSBJb1RcIixcbiAgICogICAgIFwiQ2xpY2sgQWdyZWUgYW5kIFByb2NlZWQgdG8gYWNjZXB0IGNvb2tpZXMgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBwbGF0Zm9ybSBvciBjbGljayBvbiBQcml2YWN5IFBvbGljeSB0byBzZWUgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSB1c2VkIGNvb2tpZXMuXCI6IFwiS2xpY2tlbiBTaWUgYXVmIFp1c3RpbW1lbiB1bmQgZm9ydGZhaHJlbiwgdW0gQ29va2llcyB6dSBha3plcHRpZXJlbiB1bmQgZGlyZWt0IHp1ciBQbGF0dGZvcm0genUgZ2VsYW5nZW4sIG9kZXIga2xpY2tlbiBTaWUgYXVmIERhdGVuc2NodXR6cmljaHRsaW5pZSwgdW0gZGV0YWlsbGllcnRlIEJlc2NocmVpYnVuZ2VuIGRlciB2ZXJ3ZW5kZXRlbiBDb29raWVzIGFuenV6ZWlnZW4uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBpMThuRXh0cmE/OiBJMThuRXh0cmE7XG4gIC8qKiBQYXRoIHRvIHRoZSBmb2xkZXIgZnJvbSB3aGljaCAqLnBvIGZpbGVzIHdpbGwgYmUgbG9hZGVkLiAqL1xuICBsb2NhbGVQYXRoPzogc3RyaW5nO1xuICAvKiogQXJyYXkgb2YgVVJMcyB0byBhZGRpdGlvbmFsICouY3NzIGZpbGVzIHRvIGJlIGxvYWRlZCBhdCBydW50aW1lLiAqL1xuICBleHRyYUNzc1VybHM/OiBzdHJpbmdbXTtcbiAgLyoqIERvY3VtZW50YXRpb24gbGlua3Mgc2V0dGluZ3MuICovXG4gIGRvY3M/OiBEb2NzO1xuICAvKiogQXBwbGljYXRpb24gaWNvbiB0byBiZSBkaXNwbGF5ZWQgaW4gYXBwIHN3aXRjaGVyIGFuZCBoZWFkZXIgYmFyLiAqL1xuICBpY29uPzogSWNvbjtcblxuICAvLyBUaGVzZSBhcmUgdGhlIG9sZCBvcHRpb25zXG4gIC8qKiBIaWRlIGFwcGxpY2F0aW9uIGluIGFwcCBzd2l0Y2hlciAoc2F2ZWQgdG8gdGhlIHNlcnZlcikuICovXG4gIG5vQXBwU3dpdGNoZXI/OiBib29sZWFuO1xuICAvKiogSFRNTCBwYWdlIHRpdGxlLiAqL1xuICBnbG9iYWxUaXRsZT86IHN0cmluZztcbiAgLyoqIEhpZGUgXCJwb3dlcmVkIGJ5XCIgYW5kIHZlcnNpb24gaW5mbyBhdCB0aGUgYm90dG9tIG9mIHRoZSBuYXZpZ2F0b3IgYW5kIGluIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIGhpZGVQb3dlcmVkPzogYm9vbGVhbjtcbiAgLyoqIEhpZGVzIHRoZSBcIlBsYXRmb3JtIGluZm9ybWF0aW9uXCIgaW4gdGhlIHJpZ2h0IGRyYXdlciwgd2lsbCBvdmVycnVsZSB0aGUgXCJoaWRlUG93ZXJlZFwiIG9wdGlvbiAqL1xuICBoaWRlUGxhdGZvcm1JbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIC8qKiBTaG93cyB0aGUgbGluayB0byBzdXBwb3J0IHBhZ2UuIEFjY2VwdHMgdmFsdWVzOlxuICAgKiBmYWxzZSwgaGlkZSB0aGUgbGlua1xuICAgKiBzdHJpbmcsIHZhbHVlIG9mIHVybCB0byBiZSBzaG93blxuICAgKi9cbiAgc3VwcG9ydFVybD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXBsYWNlbWVudCBzdHJpbmcgZm9yIGB1c2VyYCBmaWVsZCBpbiBhdWRpdCBsb2dzIGZvciBhY3Rpb25zIHBlcmZvcm1lZCBieSBhIHN1cHBvcnQgdXNlclxuICAgKiAoYXZhaWxhYmxlIHBsYWNlaG9sZGVyczogYHt7c3VwcG9ydF91c2VyfX1gLCBge3tzdXBwb3J0ZWRfdXNlcn19YCkuXG4gICAqL1xuICBzdXBwb3J0VXNlclN0cmluZz86IHN0cmluZztcbiAgLyoqXG4gICAqIERpc2FibGVzIHJlYWx0aW1lIHVwZGF0ZXMgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFJlYWx0aW1lRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGFkanVzdCB0aGUgZGVmYXVsdCBwYWdlc2l6ZSBvZiAxMDAgaXRlbXMgb2YgdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFBhZ2VTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGhpZGUgdGhlIGhpbnQgdGhhdCB0aGVyZSBhcmUgbW9yZSBkZXZpY2VzIHdpdGggZ2VvIGNvb3JkaW5hdGVzIHRoZW4gZGlzcGxheWVkIG9uIHRoZSBtYXAgd2lkZ2V0IGFuZCBtYXBzIGluIGdlbmVyYWwuXG4gICAqL1xuICBtYXBXaWRnZXRIaWRlTWF4RGV2aWNlT25NYXBIaW50PzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIHJpZ2h0RHJhd2VyPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIGJyZWFkY3J1bWJzIGluIHRoZSBoZWFkZXIgZm9yIGdyb3VwcyBhbmQgZGV2aWNlcyAoZGVmYXVsdDogZmFsc2UpLiAqL1xuICBicmVhZGNydW1icz86IGJvb2xlYW47XG4gIC8qKiBDb2xsYXBzZSBuYXZpZ2F0b3Igb24gaW5pdGlhbCBsb2FkLiAqL1xuICBoaWRlTmF2aWdhdG9yPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgdGFicyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4gKi9cbiAgdGFic0hvcml6b250YWw/OiBib29sZWFuO1xuICAvKiogQWRkaXRpb25hbCBsaW5rKHMpIHRvIGRpc3BsYXkgb24gbG9naW4gc2NyZWVuLiAqL1xuICBsb2dpbkV4dHJhTGluaz86IExvZ2luRXh0cmFMaW5rIHwgTG9naW5FeHRyYUxpbmtbXTtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHN0b3JhZ2UgbGltaXRhdGlvbiBmZWF0dXJlLiAqL1xuICBzdG9yYWdlTGltaXRhdGlvbkZlYXR1cmVFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIE5hbWUgb2YgY29tcGFueSBoYW5kbGluZyBzdXBwb3J0IHJlcXVlc3RzIGZyb20gYXBwIHVzZXJzIChkaXNwbGF5ZWQgaW4gbm90aWZpY2F0aW9uIG1lc3NhZ2UpLiAqL1xuICBjb21wYW55TmFtZT86IHN0cmluZztcbiAgLyoqIFVSTCB0ZW1wbGF0ZSBmb3IgZG9jdW1lbnRhdGlvbiBsaW5rcyAoZGVmYXVsdDogYCcke2RvY3NCYXNlVXJsfSR7cGFydGlhbFVybH0nYCkuICovXG4gIGd1aWRlSHJlZlRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogQmFzZSBVUkwgZm9yIGRvY3VtZW50YXRpb24gbGlua3MgKGluY2x1ZGUgYHt7IHZlcnNpb24gfX1gIHBsYWNlaG9sZGVyLCBpZiB5b3Ugd2FudCB2ZXJzaW9uZWQgbGlua3MpLiAqL1xuICBkb2NzQmFzZVVybD86IHN0cmluZztcbiAgLyoqIENTUCBzdHJpbmcgdG8gYmUgYXBwbGllZCB0byBgaW5kZXguaHRtbGAgYnkgcmVwbGFjaW5nIGRlZmF1bHQgdmFsdWVzLiAqL1xuICBjb250ZW50U2VjdXJpdHlQb2xpY3k/OiBzdHJpbmc7XG4gIC8qKiBFbmFibGVzIGNsb3VkIHNlbnNvciB3aXphcmQgKi9cbiAgc2Vuc29yUGhvbmU/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIGEgbmV3c2xldHRlciBzdWJzY3JpcHRpb24gY2hlY2tib3ggaW4gZWRpdCB1c2VyIG1vZGFsLiAqL1xuICBuZXdzbGV0dGVyPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIHJvb3Qgbm9kZV9tb2R1bGVzIGRpciAodXNlZnVsIHdoZW4gd29ya2luZyBpbiBtb25vcmVwbyBzZXR1cCwgZS5nLiB5YXJuIHdvcmtzcGFjZXMpLiAqL1xuICByb290Tm9kZU1vZHVsZXNQYXRoPzogc3RyaW5nO1xuICAvKiogQ29va2llIEJhbm5lciBjb25maWd1cmF0aW9uICovXG4gIGNvb2tpZUJhbm5lcj86IENvb2tpZUJhbm5lckNvbmZpZ3VyYXRpb247XG4gIC8qKiBDb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbi4gSGVyZSB5b3UgY2FuIGVuYWJsZSBvciBkaXNhYmxlIGNvb2tpZSBjYXRlZ29yaWVzICovXG4gIGNvb2tpZVByZWZlcmVuY2VzPzogQ29va2llUHJlZmVyZW5jZXNDb25maWd1cmF0aW9uO1xuICAvKiogQSBrZXkgZm9yIHRoZSBwcm9kdWN0IGV4cGVyaWVuY2Ugc29mdHdhcmUgR2FpbnNpZ2h0LiAqL1xuICBnYWluc2lnaHRLZXk/OiBzdHJpbmc7XG4gIC8qKiBEaXNhYmxlIHVzZXIgdHJhY2tpbmcgKi9cbiAgZGlzYWJsZVRyYWNraW5nPzogYm9vbGVhbjtcbiAgLyoqIE5nTW9kdWxlIGV4cG9ydCBmb3IgcGx1Z2lucy4gKi9cbiAgZXhwb3J0cz86IFBsdWdpbnNFeHBvcnRzW107XG4gIC8qKiBMaXN0IG9mIGltcG9ydGVkIHJlbW90ZSBwbHVnaW5zLiAqL1xuICByZW1vdGVzPzogUmVtb3RlUGx1Z2lucztcbiAgLyoqIFRoZSBwYWNrYWdlIHNvdXJjZSBhIGFwcGxpY2F0aW9uIG9yaWdpbnMgZnJvbSBhcyBJQXBwbGljYXRpb24gb3Igc2ltcGx5IHRoZSBpZCBvZiB0aGUgc291cmNlICovXG4gIHNvdXJjZT86IHN0cmluZyB8IG51bWJlciB8IElBcHBsaWNhdGlvbjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYXNzZXRzIHRvIGNvcHkgdG8gdGhlIGJ1aWxkIG91dHB1dC5cbiAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvY29weS13ZWJwYWNrLXBsdWdpbiBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgKiBhYm91dCB0aGUgcGF0dGVybnMgdG8gYWRkIGhlcmUuXG4gICAqL1xuICBjb3B5PzogW107XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gZW5hYmxlIG9yIGRpc2FibGUgY29udGV4dCBoZWxwLCBvciB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiYXNlIFVSTCB1c2VkIHRvIGxvYWQgaXRzIGNvbnRlbnRzLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29udGV4dCBoZWxwIHVzZXMgdGhlIHNhbWUgYmFzZSBVUkwgYXMgZGVmaW5lZCBpbiB0aGUgYGRvY3NCYXNlVXJsYCBvcHRpb25cbiAgICogKGlmIHRoaXMgb3B0aW9uIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgZm9sbG93aW5nIHZhbHVlIHdpbGwgYmUgdXNlZDogYGh0dHBzOi8vd3d3LmN1bXVsb2NpdHkuY29tYCkuXG4gICAqIEFsdGVybmF0aXZlbHksIGlmIGEgc3RyaW5nIGlzIHByb3ZpZGVkIGhlcmUsIGl0J2xsIGJlIHVzZWQgYXMgdGhlIGJhc2UgVVJMXG4gICAqIGFuZCBhbnkgYHt7IHZlcnNpb24gfX1gIHBsYWNlaG9sZGVyIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgcmVsZXZhbnQgZG9jcyB2ZXJzaW9uLlxuICAgKi9cbiAgY29udGV4dEhlbHA/OiBib29sZWFuIHwgc3RyaW5nO1xuICAvKipcbiAgICogQnkgZGVmYXVsdCwgY29ja3BpdCBhbmQgZGV2aWNlbWFuYWdlbWVudCB1c2UgdGhlIG9ubHlSb290cyBxdWVyeSB0byByZXNvbHZlIHJvb3Qgbm9kZXMuIFRoaXNcbiAgICogY291bGQgbGVhZCB0byBwZXJmb3JtYW5jZSBpc3N1ZXMsIGlmIGEgY3VzdG9tZXIgaGFzIGEgbG90IG9mIHJvb3Qgbm9kZXMuIFRoZXJlZm9yZSB5b3UgY2FuIGRpc2FibGVcbiAgICogdGhlIHVzZSBvZiB0aGlzIHF1ZXJ5IHdpdGggdGhpcyBmbGFnLlxuICAgKi9cbiAgZGlzYWJsZU9ubHlSb290c1F1ZXJ5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBmb3JjZSBzaG93aW5nIHRoZSBzZXR1cCB3aXphcmQuXG4gICAqL1xuICBmb3JjZVNldHVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgYXBwbGljYXRpb24gbmVlZHMgdG8gc2hvdyB0aGUgc2V0dXAgd2l6YXJkLlxuICAgKi9cbiAgaXNTZXR1cD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IGEgV2ViU0RLIGFwcCByZXF1aXJlcyB0aGUgdXNlciB0byBiZSBsb2dnZWQgaW4uXG4gICAqIEluIGNhc2UgeW91IHdvdWxkIGxpa2UgdG8gZGV2ZWxvcCBqdXN0IGEgc3RhdGljIGFwcGxpY2F0aW9uLCB0aGF0IGRvZXMgbm90IHJlcXVpcmUgYW55IGtpbmQgb2YgYWNjZXNzIHRvIHRoZSBiYWNrZW5kLFxuICAgKiB5b3UgY2FuIHVzZSB0aGlzIGZsYWcgdG8gZGlzYWJsZSB0aGUgbG9naW4gc2NyZWVuLlxuICAgKiBOT1RFOiBub3QgYWxsIFdlYlNESyBjb21wb25lbnRzIHN1cHBvcnQgdGhpcywgc29tZSBtaWdodCByZXF1aXJlIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbiBhbmQgd29uJ3Qgd29yay5cbiAgICovXG4gIG5vTG9naW4/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIG9wdCBvdXQgb2Ygc3VwcG9ydGluZy9sb2FkaW5nIHBsdWdpbnMgZm9yIHRoaXMgYXBwbGljYXRpb24uXG4gICAqL1xuICBub1BsdWdpbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIG9wdCBvdXQgb2YgdGhlIHZlcnNpb24gd2FybmluZyB3aGljaCBpcyBzaG93biBpbiB0aGUgZGV2IHRvb2xzLlxuICAgKi9cbiAgbm9WZXJzaW9uV2FybmluZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2V0IHRoZSBtYXAgbGF5ZXJzLiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBvcGVuIHN0cmVldCBtYXAgbGF5ZXIuXG4gICAqL1xuICBtYXBMYXllcnM/OiBNYXBUaWxlTGF5ZXJbXTtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzZXQgZGVmYXVsdCBjb25maWd1cmF0aW9ucyBvbiB0aGUgbWFwcy5cbiAgICovXG4gIG1hcENvbmZpZz86IE1hcERlZmF1bHRDb25maWc7XG4gIC8qKlxuICAgKiBUaGUgVVJMIHVzZWQgdG8gbG9va3VwIGdlbyBjb29yZGluYXRlcyBmb3IgYSB1c2VyIHByb3ZpZGVkIGFkZHJlc3MgdmlhIFtub21pbmF0aW0gQVBJXShodHRwczovL25vbWluYXRpbS5vcmcvcmVsZWFzZS1kb2NzL2RldmVsb3AvYXBpL1NlYXJjaC8pLlxuICAgKiBDYW4gYmUgc2V0IHRvIGVtcHR5IHRvIGRpc2FibGUgdGhlIGZpbmQgYWRkcmVzcyBmZWF0dXJlIG9uIHRoZSBsb2NhdGlvbiB0YWIuXG4gICAqIFVzZXM6IGBodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy9zZWFyY2g/Zm9ybWF0PWpzb24mcT17c2VhcmNoVGVybX1gIGlmIG5vdCBzZXQuXG4gICAqL1xuICBtYXBOb21pbmF0aW1Vcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwRGVmYXVsdENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB6b29tIGxldmVsIHRvIHNldCBvbiBlYWNoIG5ldyBtYXAuXG4gICAqL1xuICB6b29tTGV2ZWw/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBjZW50ZXIgcG9zaXRpb24gb2YgZWFjaCBuZXcgbWFwLlxuICAgKi9cbiAgY2VudGVyPzogW251bWJlciwgbnVtYmVyXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBUaWxlTGF5ZXIge1xuICAvKipcbiAgICogVGhlIGxheWVyIHVybCBpbiB0aGUgc3BlY2lmaWMgbGVhZmxldCBmb3JtYXQuXG4gICAqL1xuICBsYXllclVybDogc3RyaW5nO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBvcHRpb25zLiBOb3RlIHRoaXMgb3B0aW9ucyBhcmUgbm90IHR5cGVkIGFzIGxlYWZsZXQgc2hvdWxkIG5vdCBiZSBieSBkZWZhdWx0IGluY2x1ZGVkLiBUaGUgdHlwZSBmcm9tIGxlYWZsZXQgaXMgTC5UaWxlTGF5ZXJPcHRpb25zLlxuICAgKi9cbiAgb3B0aW9uczogYW55O1xuICAvKipcbiAgICogQSBsYWJlbCB0byBzaG93IHRvIHRoZSBlbmQgdXNlci5cbiAgICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIG9yZGVyIG9mIHRoZSBsYXllcnMgdG8gYmUgc2hvd24gdG8gdGhlIHVzZXIuIEhpZ2hlc3QgcHJpb3JpdHkgZmlyc3QuXG4gICAqL1xuICBwcmlvcml0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdGVQbHVnaW5zIHtcbiAgLyoqXG4gICAqIEEga2V5IHZhbHVlIHBhaXIsIHdoaWxlIHRoZSB2YWx1ZSBpcyBhbiBhcnJheSBvZiBtb2R1bGVzIHRvIGxvYWQgYW5kIHRoZVxuICAgKiBrZXkgaXMgdGhlIGNvbnRleHQgcGF0aC5cbiAgICogQGV4YW1wbGVcbiAgICogYGBganNcbiAgICoge1xuICAgKiAgICAnY29ja3BpdCc6IFsnSG9tZURhc2hib2FyZE1vZHVsZScsICdEYXRhRXhwbG9yZXJEYXNoYm9hcmQnXSxcbiAgICogICAgJ3dpZGdldC1wYWNrYWdlQDEuMC4wJzogWydFeHRlbmRlZE1hcFdpZGdldCddXG4gICAqIH1cbiAgICogYGBcbiAgICovXG4gIFtrZXk6IHN0cmluZ106IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbnNFeHBvcnRzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBbmd1bGFyIG1vZHVsZSBjbGFzcy5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmaWxlIHBhdGggdG8gdGhlIG1vZHVsZSB0eXBlc2NyaXB0IGZpbGUuXG4gICAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbiBzaG9ydCBkZXNjcmlwdGlvbiBhYm91dCB3aGF0IHRoZSBtb2R1bGUgZG9lcy5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQWxsb3dzIHRvIHNjb3BlIHRoZSBwbHVnaW4gdG8gY2VydGFpbiBhcHBsaWNhdGlvbnMuIEUuZy4gaWYgeW91XG4gICAqIGFkZCBoZXJlICdjb2NrcGl0JywgdGhlIHBsdWdpbiBjYW4gb25seSBiZSBpbnN0YWxsZWQgaW50byBhblxuICAgKiBhcHBsaWNhdGlvbiBvbiB0aGUgY29udGV4dFBhdGggYGFwcHMvY29ja3BpdGAuIFlvdSBjYW4gdXNlIGNvbW1hXG4gICAqIHNlcGFyYXRlZCB2YWx1ZXMsIGFzdGVyaXNrIChkZWZhdWx0KSB0byBhbGxvdyBhbGwgYXBwbGljYXRpb25zIG9yXG4gICAqIGBzZWxmYCB0byBsaW1pdCB0aGUgcGx1Z2luIHRvIHRoZSBjdXJyZW50IHNvbHV0aW9uLlxuICAgKi9cbiAgc2NvcGU/OiAnKicgfCAnc2VsZicgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29va2llQmFubmVyQ29uZmlndXJhdGlvbiB7XG4gIC8qKiBIZXJlIHlvdSBjYW4gc2V0IHRoZSB0aXRsZSBvZiBDb29raWUgQmFubmVyICovXG4gIGNvb2tpZUJhbm5lclRpdGxlPzogc3RyaW5nO1xuICAvKiogSGVyZSB5b3UgY2FuIHNldCB0aGUgVGV4dCBvZiBDb29raWUgQmFubmVyICovXG4gIGNvb2tpZUJhbm5lclRleHQ/OiBzdHJpbmc7XG4gIC8qKiBIZXJlIHlvdSBjYW4gc2V0IHRoZSBwb2xpY3lVcmwgb2YgQ29va2llIEJhbm5lciAqL1xuICBwb2xpY3lVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29va2llUHJlZmVyZW5jZXNDb25maWd1cmF0aW9uIHtcbiAgLyoqIFRoaXMgY2F0ZWdvcnkgaW5jbHVkZXMgZS5nLiBjb29raWVzIHJlbGF0ZWQgdG8gbG9nZ2luZyBpbiAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuIHwgc3RyaW5nO1xuICAvKiogVGhpcyBjYXRlZ29yeSBpbmNsdWRlcyBlLmcuIHRyYWNraW5nIGNvb2tpZXMgICovXG4gIGZ1bmN0aW9uYWw/OiBib29sZWFuIHwgc3RyaW5nO1xuICAvKiogVGhpcyBjYXRlZ29yeSBpbmNsdWRlcyBlLmcuIGNvb2tpZXMgcmVsYXRlZCB0byBhZHZlcnRpc2luZyAgKi9cbiAgbWFya2V0aW5nPzogYm9vbGVhbiB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dpbkV4dHJhTGluayB7XG4gIHVybDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEljb24ge1xuICBjbGFzcz86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3Mge1xuICAvKiogSGlkZSBkZWZhdWx0IGxpbmtzIHRvIGRvY3VtZW50YXRpb24uICovXG4gIG5vRGVmYXVsdDogYm9vbGVhbjtcbiAgLyoqIExpc3Qgb2YgcmVnZXggc3RyaW5ncy4gTWF0Y2hpbmcgZGVmYXVsdCBkb2NzIFVSTHMgd2lsbCBiZSBoaWRkZW4uICovXG4gIGV4Y2x1ZGVEZWZhdWx0OiBzdHJpbmdbXTtcbiAgLyoqIEFkZGl0aW9uYWwgbGlua3MgdG8gYmUgZGlzcGxheWVkLiAqL1xuICBsaW5rczogTGlua3NbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5rcyB7XG4gIC8qKiBJY29uIGNsYXNzZXMgd2l0aCBgYzh5LWljb25gLCBlLmcuIGBjOHktaWNvbiBjOHktaWNvbi1hZGQtdXNlcmAgb3IgYGM4eS1pY29uIGM4eS1pY29uLWRldmljZS1jb25uZWN0YC4gKi9cbiAgaWNvbjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgdHlwZTogJ2RvYycgfCAncXVpY2tsaW5rJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJMThuRXh0cmEge1xuICBbbGFuZ0NvZGU6IHN0cmluZ106IEkxOG5FeHRyYUxhbmdDb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5FeHRyYUxhbmdDb2RlIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlcyB7XG4gIFtsYW5nQ29kZTogc3RyaW5nXTogTGFuZ3VhZ2VzTGFuZ0NvZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VzTGFuZ0NvZGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIG5hdGl2ZU5hbWU6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJhbmRpbmdDc3NWYXJzIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBK005QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tV0FSTklORy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhpcyBmaWxlIGhhcyBhbiAqZXhhY3QqIGNvcHkgaW4gcGFja2FnZXMvY2xpL3NyYy93ZWJwYWNrLy5cbiAqIEFueSBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIHJlZmxlY3RlZCB0aGVyZSwgdG9vLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqIEFwcGxpY2F0aW9uIG5hbWUgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBBcHBsaWNhdGlvbiBjb250ZXh0IHBhdGggKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAvKiogQXBwbGljYXRpb24ga2V5IChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24gKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIG9mIHRoZSB1c2VkIFdlYlNESyB2ZXJzaW9uICovXG4gIHdlYlNka1ZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKiBTZXQgdG8gYHRydWVgIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBoeWJyaWQgYW5kIHVzZXMgQW5ndWxhciBhbmQgQW5ndWxhckpTIHNpbXVsdGFuZW91c2x5LiAqL1xuICB1cGdyYWRlPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIGJyYW5kaW5nIGVudHJ5IGZpbGUuIChTZXQgaXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBhbnkgc3R5bGluZy4gWW91IGNhbiBoYW5kbGUgdGhlIHN0eWxpbmcgdGhlbiBvbiB5b3VyIG93biBlLmcuIGluIGFuIGFuZ3VsYXIuanNvbiBmaWxlIHVzaW5nIG5nLWNsaSkgKi9cbiAgYnJhbmRpbmdFbnRyeT86IHN0cmluZyB8IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRzY2NuZmlnLmpzb24gZmlsZSBpZiBUeXBlU2NyaXB0IGlzIHVzZWQgKGRlZmF1bHQ6IC4vdHNjb25maWcuanNvbikuICovXG4gIHRzQ29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqIEVudHJ5IG1vZHVsZSBmb3IgQW5ndWxhciBjb21waWxlciAob25seSB1c2VkIHdpdGggbGF6eSBsb2FkZWQgcm91dGVzKSwgZS5nLiBgJ2FwcC5tb2R1bGUudHMjQXBwTW9kdWxlJ2AuICovXG4gIGVudHJ5TW9kdWxlPzogc3RyaW5nO1xuICAvKiogUGF0aCB0byBjdXN0b20gaW5kZXguaHRtbCAob3RoZXJ3aXNlIGRlZmF1bHQgb25lIHdpbGwgYmUgdXNlZCkuICovXG4gIGluZGV4VGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gZHluYW1pY2FsbHkgZmV0Y2hlZCBvcHRpb25zLiAqL1xuICBkeW5hbWljT3B0aW9uc1VybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byBmYXZpY29uLiAqL1xuICBmYXZpY29uVXJsPzogc3RyaW5nO1xuICAvKiogVVJMIHRvICouY3NzIGZpbGUgd2hpY2ggd2lsbCByZXBsYWNlIGRlZmF1bHQgYnJhbmRpbmcuICovXG4gIGJyYW5kaW5nVXJsPzogc3RyaW5nO1xuICAvKiogT2JqZWN0IHdpdGggcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgY29udmVydGVkIHRvIENTUyBjdXN0b20gdmFyaWFibGVzLiAqL1xuICBicmFuZGluZ0Nzc1ZhcnM/OiBCcmFuZGluZ0Nzc1ZhcnM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBvciBvdmVycmlkaW5nIGxhbmd1YWdlcyBhdmFpbGFibGUgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBJdHMga2V5cyBhcmUgbGFuZ3VhZ2UgY29kZXMgYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqIC0gYG5hbWVgOiBFbmdsaXNoIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGBuYXRpdmVOYW1lYDogbmF0aXZlIG5hbWUgb2YgdGhlIGxhbmd1YWdlLFxuICAgKiAtIGB1cmxgOiBmdWxsIFVSTCB0byBKU09OIGZpbGUgd2l0aCBjb21waWxlZCB0cmFuc2xhdGlvbnM7XG4gICAqICAgIGlmIG5vdCBkZWZpbmVkLCB0cmFuc2xhdGlvbnMgd2lsbCBiZSBsb2FkZWQgZnJvbSBgJHtsb2NhbGVQYXRofS8ke2xhbmdDb2RlfS5qc29uYC5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBganNvblxuICAgKiBcImxhbmd1YWdlc1wiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIm5hbWVcIjogXCJHZXJtYW5cIixcbiAgICogICAgIFwibmF0aXZlTmFtZVwiOiBcIkRldXRzY2hcIixcbiAgICogICAgIFwidXJsXCI6IFwiL2FwcHMvcHVibGljL3VpLWFzc2V0cy9kZS5qc29uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBsYW5ndWFnZXM/OiBMYW5ndWFnZXM7XG4gIC8qKlxuICAgKiBBbGxvd3MgZm9yIGFkZGluZyBjdXN0b20gdHJhbnNsYXRpb25zLiBJdCBpcyBhbiBvcHRpb25hbCBwcm9wZXJ0eS5cbiAgICpcbiAgICogSXRzIGtleXMgYXJlIGxhbmd1YWdlIGNvZGVzIChodHRwczovL2N1bXVsb2NpdHkuY29tL2RvY3Mvc2VjdGlvbi9nZXR0aW5nX3N0YXJ0ZWQvI2EtbmFtZS1sYW5ndWFnZXMtYS1hdmFpbGFibGUtbGFuZ3VhZ2VzKVxuICAgKiBhbmQgaXRzIHZhbHVlcyBhcmUgb2JqZWN0cyB3aXRoIGtleS12YWx1ZSBwYWlycywgd2hlcmUgdGhlIGtleSBpcyB0aGUgb3JpZ2luYWwgc3RyaW5nIGluIEVuZ2xpc2ggYW5kIHRoZSB2YWx1ZSAtIGl0cyB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogLSBgSG9tZWA6IFwiU3RhcnRzZWl0ZVwiXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCB0aGUgdHJhbnNsYXRpb24gb2YgeW91ciBjdXN0b20gY29va2llIGJhbm5lciBjb25maWd1cmVkIGluIHRoZSBicmFuZGluZyBzZXR0aW5nczpcbiAgICogYGBganNvblxuICAgKiBcImkxOG5FeHRyYVwiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIkFib3V0IGNvb2tpZXMgb24gQ3VtdWxvY2l0eSBJb1RcIjogXCJJbmZvcm1hdGlvbmVuIHp1IENvb2tpZXMgaW4gQ3VtdWxvY2l0eSBJb1RcIixcbiAgICogICAgIFwiQ2xpY2sgQWdyZWUgYW5kIFByb2NlZWQgdG8gYWNjZXB0IGNvb2tpZXMgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBwbGF0Zm9ybSBvciBjbGljayBvbiBQcml2YWN5IFBvbGljeSB0byBzZWUgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSB1c2VkIGNvb2tpZXMuXCI6IFwiS2xpY2tlbiBTaWUgYXVmIFp1c3RpbW1lbiB1bmQgZm9ydGZhaHJlbiwgdW0gQ29va2llcyB6dSBha3plcHRpZXJlbiB1bmQgZGlyZWt0IHp1ciBQbGF0dGZvcm0genUgZ2VsYW5nZW4sIG9kZXIga2xpY2tlbiBTaWUgYXVmIERhdGVuc2NodXR6cmljaHRsaW5pZSwgdW0gZGV0YWlsbGllcnRlIEJlc2NocmVpYnVuZ2VuIGRlciB2ZXJ3ZW5kZXRlbiBDb29raWVzIGFuenV6ZWlnZW4uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBpMThuRXh0cmE/OiBJMThuRXh0cmE7XG4gIC8qKiBQYXRoIHRvIHRoZSBmb2xkZXIgZnJvbSB3aGljaCAqLnBvIGZpbGVzIHdpbGwgYmUgbG9hZGVkLiAqL1xuICBsb2NhbGVQYXRoPzogc3RyaW5nO1xuICAvKiogQXJyYXkgb2YgVVJMcyB0byBhZGRpdGlvbmFsICouY3NzIGZpbGVzIHRvIGJlIGxvYWRlZCBhdCBydW50aW1lLiAqL1xuICBleHRyYUNzc1VybHM/OiBzdHJpbmdbXTtcbiAgLyoqIERvY3VtZW50YXRpb24gbGlua3Mgc2V0dGluZ3MuICovXG4gIGRvY3M/OiBEb2NzO1xuICAvKiogQXBwbGljYXRpb24gaWNvbiB0byBiZSBkaXNwbGF5ZWQgaW4gYXBwIHN3aXRjaGVyIGFuZCBoZWFkZXIgYmFyLiAqL1xuICBpY29uPzogSWNvbjtcblxuICAvLyBUaGVzZSBhcmUgdGhlIG9sZCBvcHRpb25zXG4gIC8qKiBIaWRlIGFwcGxpY2F0aW9uIGluIGFwcCBzd2l0Y2hlciAoc2F2ZWQgdG8gdGhlIHNlcnZlcikuICovXG4gIG5vQXBwU3dpdGNoZXI/OiBib29sZWFuO1xuICAvKiogSFRNTCBwYWdlIHRpdGxlLiAqL1xuICBnbG9iYWxUaXRsZT86IHN0cmluZztcbiAgLyoqIEhpZGUgXCJwb3dlcmVkIGJ5XCIgYW5kIHZlcnNpb24gaW5mbyBhdCB0aGUgYm90dG9tIG9mIHRoZSBuYXZpZ2F0b3IgYW5kIGluIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIGhpZGVQb3dlcmVkPzogYm9vbGVhbjtcbiAgLyoqIEhpZGVzIHRoZSBcIlBsYXRmb3JtIGluZm9ybWF0aW9uXCIgaW4gdGhlIHJpZ2h0IGRyYXdlciwgd2lsbCBvdmVycnVsZSB0aGUgXCJoaWRlUG93ZXJlZFwiIG9wdGlvbiAqL1xuICBoaWRlUGxhdGZvcm1JbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIC8qKiBTaG93cyB0aGUgbGluayB0byBzdXBwb3J0IHBhZ2UuIEFjY2VwdHMgdmFsdWVzOlxuICAgKiBmYWxzZSwgaGlkZSB0aGUgbGlua1xuICAgKiBzdHJpbmcsIHZhbHVlIG9mIHVybCB0byBiZSBzaG93blxuICAgKi9cbiAgc3VwcG9ydFVybD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXBsYWNlbWVudCBzdHJpbmcgZm9yIGB1c2VyYCBmaWVsZCBpbiBhdWRpdCBsb2dzIGZvciBhY3Rpb25zIHBlcmZvcm1lZCBieSBhIHN1cHBvcnQgdXNlclxuICAgKiAoYXZhaWxhYmxlIHBsYWNlaG9sZGVyczogYHt7c3VwcG9ydF91c2VyfX1gLCBge3tzdXBwb3J0ZWRfdXNlcn19YCkuXG4gICAqL1xuICBzdXBwb3J0VXNlclN0cmluZz86IHN0cmluZztcbiAgLyoqXG4gICAqIERpc2FibGVzIHJlYWx0aW1lIHVwZGF0ZXMgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFJlYWx0aW1lRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGFkanVzdCB0aGUgZGVmYXVsdCBwYWdlc2l6ZSBvZiAxMDAgaXRlbXMgb2YgdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFBhZ2VTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGhpZGUgdGhlIGhpbnQgdGhhdCB0aGVyZSBhcmUgbW9yZSBkZXZpY2VzIHdpdGggZ2VvIGNvb3JkaW5hdGVzIHRoZW4gZGlzcGxheWVkIG9uIHRoZSBtYXAgd2lkZ2V0IGFuZCBtYXBzIGluIGdlbmVyYWwuXG4gICAqL1xuICBtYXBXaWRnZXRIaWRlTWF4RGV2aWNlT25NYXBIaW50PzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIHJpZ2h0RHJhd2VyPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIGJyZWFkY3J1bWJzIGluIHRoZSBoZWFkZXIgZm9yIGdyb3VwcyBhbmQgZGV2aWNlcyAoZGVmYXVsdDogZmFsc2UpLiAqL1xuICBicmVhZGNydW1icz86IGJvb2xlYW47XG4gIC8qKiBDb2xsYXBzZSBuYXZpZ2F0b3Igb24gaW5pdGlhbCBsb2FkLiAqL1xuICBoaWRlTmF2aWdhdG9yPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgdGFicyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4gKi9cbiAgdGFic0hvcml6b250YWw/OiBib29sZWFuO1xuICAvKiogQWRkaXRpb25hbCBsaW5rKHMpIHRvIGRpc3BsYXkgb24gbG9naW4gc2NyZWVuLiAqL1xuICBsb2dpbkV4dHJhTGluaz86IExvZ2luRXh0cmFMaW5rIHwgTG9naW5FeHRyYUxpbmtbXTtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHN0b3JhZ2UgbGltaXRhdGlvbiBmZWF0dXJlLiAqL1xuICBzdG9yYWdlTGltaXRhdGlvbkZlYXR1cmVFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqIE5hbWUgb2YgY29tcGFueSBoYW5kbGluZyBzdXBwb3J0IHJlcXVlc3RzIGZyb20gYXBwIHVzZXJzIChkaXNwbGF5ZWQgaW4gbm90aWZpY2F0aW9uIG1lc3NhZ2UpLiAqL1xuICBjb21wYW55TmFtZT86IHN0cmluZztcbiAgLyoqIFVSTCB0ZW1wbGF0ZSBmb3IgZG9jdW1lbnRhdGlvbiBsaW5rcyAoZGVmYXVsdDogYCcke2RvY3NCYXNlVXJsfSR7cGFydGlhbFVybH0nYCkuICovXG4gIGd1aWRlSHJlZlRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogQmFzZSBVUkwgZm9yIGRvY3VtZW50YXRpb24gbGlua3MgKGluY2x1ZGUgYHt7IHZlcnNpb24gfX1gIHBsYWNlaG9sZGVyLCBpZiB5b3Ugd2FudCB2ZXJzaW9uZWQgbGlua3MpLiAqL1xuICBkb2NzQmFzZVVybD86IHN0cmluZztcbiAgLyoqIENTUCBzdHJpbmcgdG8gYmUgYXBwbGllZCB0byBgaW5kZXguaHRtbGAgYnkgcmVwbGFjaW5nIGRlZmF1bHQgdmFsdWVzLiAqL1xuICBjb250ZW50U2VjdXJpdHlQb2xpY3k/OiBzdHJpbmc7XG4gIC8qKiBFbmFibGVzIGNsb3VkIHNlbnNvciB3aXphcmQgKi9cbiAgc2Vuc29yUGhvbmU/OiBib29sZWFuO1xuICAvKiogU2hvdyBvciBoaWRlIGEgbmV3c2xldHRlciBzdWJzY3JpcHRpb24gY2hlY2tib3ggaW4gZWRpdCB1c2VyIG1vZGFsLiAqL1xuICBuZXdzbGV0dGVyPzogYm9vbGVhbjtcbiAgLyoqIFBhdGggdG8gdGhlIHJvb3Qgbm9kZV9tb2R1bGVzIGRpciAodXNlZnVsIHdoZW4gd29ya2luZyBpbiBtb25vcmVwbyBzZXR1cCwgZS5nLiB5YXJuIHdvcmtzcGFjZXMpLiAqL1xuICByb290Tm9kZU1vZHVsZXNQYXRoPzogc3RyaW5nO1xuICAvKiogQ29va2llIEJhbm5lciBjb25maWd1cmF0aW9uICovXG4gIGNvb2tpZUJhbm5lcj86IENvb2tpZUJhbm5lckNvbmZpZ3VyYXRpb247XG4gIC8qKiBDb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbi4gSGVyZSB5b3UgY2FuIGVuYWJsZSBvciBkaXNhYmxlIGNvb2tpZSBjYXRlZ29yaWVzICovXG4gIGNvb2tpZVByZWZlcmVuY2VzPzogQ29va2llUHJlZmVyZW5jZXNDb25maWd1cmF0aW9uO1xuICAvKiogQSBrZXkgZm9yIHRoZSBwcm9kdWN0IGV4cGVyaWVuY2Ugc29mdHdhcmUgR2FpbnNpZ2h0LiAqL1xuICBnYWluc2lnaHRLZXk/OiBzdHJpbmc7XG4gIC8qKiBEaXNhYmxlIHVzZXIgdHJhY2tpbmcgKi9cbiAgZGlzYWJsZVRyYWNraW5nPzogYm9vbGVhbjtcbiAgLyoqIE5nTW9kdWxlIGV4cG9ydCBmb3IgcGx1Z2lucy4gKi9cbiAgZXhwb3J0cz86IFBsdWdpbnNFeHBvcnRzW107XG4gIC8qKiBMaXN0IG9mIGltcG9ydGVkIHJlbW90ZSBwbHVnaW5zLiAqL1xuICByZW1vdGVzPzogUmVtb3RlUGx1Z2lucztcbiAgLyoqIFRoZSBwYWNrYWdlIHNvdXJjZSBhIGFwcGxpY2F0aW9uIG9yaWdpbnMgZnJvbSBhcyBJQXBwbGljYXRpb24gb3Igc2ltcGx5IHRoZSBpZCBvZiB0aGUgc291cmNlICovXG4gIHNvdXJjZT86IHN0cmluZyB8IG51bWJlciB8IElBcHBsaWNhdGlvbjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYXNzZXRzIHRvIGNvcHkgdG8gdGhlIGJ1aWxkIG91dHB1dC5cbiAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvY29weS13ZWJwYWNrLXBsdWdpbiBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgKiBhYm91dCB0aGUgcGF0dGVybnMgdG8gYWRkIGhlcmUuXG4gICAqL1xuICBjb3B5PzogW107XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gZW5hYmxlIG9yIGRpc2FibGUgY29udGV4dCBoZWxwLCBvciB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiYXNlIFVSTCB1c2VkIHRvIGxvYWQgaXRzIGNvbnRlbnRzLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29udGV4dCBoZWxwIHVzZXMgdGhlIHNhbWUgYmFzZSBVUkwgYXMgZGVmaW5lZCBpbiB0aGUgYGRvY3NCYXNlVXJsYCBvcHRpb25cbiAgICogKGlmIHRoaXMgb3B0aW9uIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgZm9sbG93aW5nIHZhbHVlIHdpbGwgYmUgdXNlZDogYGh0dHBzOi8vY3VtdWxvY2l0eS5jb20vZ3VpZGVzL3t7dmVyc2lvbn19YCkuXG4gICAqIEFsdGVybmF0aXZlbHksIGlmIGEgc3RyaW5nIGlzIHByb3ZpZGVkIGhlcmUsIGl0J2xsIGJlIHVzZWQgYXMgdGhlIGJhc2UgVVJMXG4gICAqIGFuZCBhbnkgYHt7IHZlcnNpb24gfX1gIHBsYWNlaG9sZGVyIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgcmVsZXZhbnQgZG9jcyB2ZXJzaW9uLlxuICAgKi9cbiAgY29udGV4dEhlbHA/OiBib29sZWFuIHwgc3RyaW5nO1xuICAvKipcbiAgICogQnkgZGVmYXVsdCwgY29ja3BpdCBhbmQgZGV2aWNlbWFuYWdlbWVudCB1c2UgdGhlIG9ubHlSb290cyBxdWVyeSB0byByZXNvbHZlIHJvb3Qgbm9kZXMuIFRoaXNcbiAgICogY291bGQgbGVhZCB0byBwZXJmb3JtYW5jZSBpc3N1ZXMsIGlmIGEgY3VzdG9tZXIgaGFzIGEgbG90IG9mIHJvb3Qgbm9kZXMuIFRoZXJlZm9yZSB5b3UgY2FuIGRpc2FibGVcbiAgICogdGhlIHVzZSBvZiB0aGlzIHF1ZXJ5IHdpdGggdGhpcyBmbGFnLlxuICAgKi9cbiAgZGlzYWJsZU9ubHlSb290c1F1ZXJ5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBmb3JjZSBzaG93aW5nIHRoZSBzZXR1cCB3aXphcmQuXG4gICAqL1xuICBmb3JjZVNldHVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgYXBwbGljYXRpb24gbmVlZHMgdG8gc2hvdyB0aGUgc2V0dXAgd2l6YXJkLlxuICAgKi9cbiAgaXNTZXR1cD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IGEgV2ViU0RLIGFwcCByZXF1aXJlcyB0aGUgdXNlciB0byBiZSBsb2dnZWQgaW4uXG4gICAqIEluIGNhc2UgeW91IHdvdWxkIGxpa2UgdG8gZGV2ZWxvcCBqdXN0IGEgc3RhdGljIGFwcGxpY2F0aW9uLCB0aGF0IGRvZXMgbm90IHJlcXVpcmUgYW55IGtpbmQgb2YgYWNjZXNzIHRvIHRoZSBiYWNrZW5kLFxuICAgKiB5b3UgY2FuIHVzZSB0aGlzIGZsYWcgdG8gZGlzYWJsZSB0aGUgbG9naW4gc2NyZWVuLlxuICAgKiBOT1RFOiBub3QgYWxsIFdlYlNESyBjb21wb25lbnRzIHN1cHBvcnQgdGhpcywgc29tZSBtaWdodCByZXF1aXJlIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbiBhbmQgd29uJ3Qgd29yay5cbiAgICovXG4gIG5vTG9naW4/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIG9wdCBvdXQgb2Ygc3VwcG9ydGluZy9sb2FkaW5nIHBsdWdpbnMgZm9yIHRoaXMgYXBwbGljYXRpb24uXG4gICAqL1xuICBub1BsdWdpbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIG9wdCBvdXQgb2YgdGhlIHZlcnNpb24gd2FybmluZyB3aGljaCBpcyBzaG93biBpbiB0aGUgZGV2IHRvb2xzLlxuICAgKi9cbiAgbm9WZXJzaW9uV2FybmluZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2V0IHRoZSBtYXAgbGF5ZXJzLiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBvcGVuIHN0cmVldCBtYXAgbGF5ZXIuXG4gICAqL1xuICBtYXBMYXllcnM/OiBNYXBUaWxlTGF5ZXJbXTtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzZXQgZGVmYXVsdCBjb25maWd1cmF0aW9ucyBvbiB0aGUgbWFwcy5cbiAgICovXG4gIG1hcENvbmZpZz86IE1hcERlZmF1bHRDb25maWc7XG4gIC8qKlxuICAgKiBUaGUgVVJMIHVzZWQgdG8gbG9va3VwIGdlbyBjb29yZGluYXRlcyBmb3IgYSB1c2VyIHByb3ZpZGVkIGFkZHJlc3MgdmlhIFtub21pbmF0aW0gQVBJXShodHRwczovL25vbWluYXRpbS5vcmcvcmVsZWFzZS1kb2NzL2RldmVsb3AvYXBpL1NlYXJjaC8pLlxuICAgKiBDYW4gYmUgc2V0IHRvIGVtcHR5IHRvIGRpc2FibGUgdGhlIGZpbmQgYWRkcmVzcyBmZWF0dXJlIG9uIHRoZSBsb2NhdGlvbiB0YWIuXG4gICAqIFVzZXM6IGBodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy9zZWFyY2g/Zm9ybWF0PWpzb24mcT17c2VhcmNoVGVybX1gIGlmIG5vdCBzZXQuXG4gICAqL1xuICBtYXBOb21pbmF0aW1Vcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwRGVmYXVsdENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB6b29tIGxldmVsIHRvIHNldCBvbiBlYWNoIG5ldyBtYXAuXG4gICAqL1xuICB6b29tTGV2ZWw/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBjZW50ZXIgcG9zaXRpb24gb2YgZWFjaCBuZXcgbWFwLlxuICAgKi9cbiAgY2VudGVyPzogW251bWJlciwgbnVtYmVyXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBUaWxlTGF5ZXIge1xuICAvKipcbiAgICogVGhlIGxheWVyIHVybCBpbiB0aGUgc3BlY2lmaWMgbGVhZmxldCBmb3JtYXQuXG4gICAqL1xuICBsYXllclVybDogc3RyaW5nO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBvcHRpb25zLiBOb3RlIHRoaXMgb3B0aW9ucyBhcmUgbm90IHR5cGVkIGFzIGxlYWZsZXQgc2hvdWxkIG5vdCBiZSBieSBkZWZhdWx0IGluY2x1ZGVkLiBUaGUgdHlwZSBmcm9tIGxlYWZsZXQgaXMgTC5UaWxlTGF5ZXJPcHRpb25zLlxuICAgKi9cbiAgb3B0aW9uczogYW55O1xuICAvKipcbiAgICogQSBsYWJlbCB0byBzaG93IHRvIHRoZSBlbmQgdXNlci5cbiAgICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIG9yZGVyIG9mIHRoZSBsYXllcnMgdG8gYmUgc2hvd24gdG8gdGhlIHVzZXIuIEhpZ2hlc3QgcHJpb3JpdHkgZmlyc3QuXG4gICAqL1xuICBwcmlvcml0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdGVQbHVnaW5zIHtcbiAgLyoqXG4gICAqIEEga2V5IHZhbHVlIHBhaXIsIHdoaWxlIHRoZSB2YWx1ZSBpcyBhbiBhcnJheSBvZiBtb2R1bGVzIHRvIGxvYWQgYW5kIHRoZVxuICAgKiBrZXkgaXMgdGhlIGNvbnRleHQgcGF0aC5cbiAgICogQGV4YW1wbGVcbiAgICogYGBganNcbiAgICoge1xuICAgKiAgICAnY29ja3BpdCc6IFsnSG9tZURhc2hib2FyZE1vZHVsZScsICdEYXRhRXhwbG9yZXJEYXNoYm9hcmQnXSxcbiAgICogICAgJ3dpZGdldC1wYWNrYWdlQDEuMC4wJzogWydFeHRlbmRlZE1hcFdpZGdldCddXG4gICAqIH1cbiAgICogYGBcbiAgICovXG4gIFtrZXk6IHN0cmluZ106IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbnNFeHBvcnRzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBbmd1bGFyIG1vZHVsZSBjbGFzcy5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmaWxlIHBhdGggdG8gdGhlIG1vZHVsZSB0eXBlc2NyaXB0IGZpbGUuXG4gICAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbiBzaG9ydCBkZXNjcmlwdGlvbiBhYm91dCB3aGF0IHRoZSBtb2R1bGUgZG9lcy5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQWxsb3dzIHRvIHNjb3BlIHRoZSBwbHVnaW4gdG8gY2VydGFpbiBhcHBsaWNhdGlvbnMuIEUuZy4gaWYgeW91XG4gICAqIGFkZCBoZXJlICdjb2NrcGl0JywgdGhlIHBsdWdpbiBjYW4gb25seSBiZSBpbnN0YWxsZWQgaW50byBhblxuICAgKiBhcHBsaWNhdGlvbiBvbiB0aGUgY29udGV4dFBhdGggYGFwcHMvY29ja3BpdGAuIFlvdSBjYW4gdXNlIGNvbW1hXG4gICAqIHNlcGFyYXRlZCB2YWx1ZXMsIGFzdGVyaXNrIChkZWZhdWx0KSB0byBhbGxvdyBhbGwgYXBwbGljYXRpb25zIG9yXG4gICAqIGBzZWxmYCB0byBsaW1pdCB0aGUgcGx1Z2luIHRvIHRoZSBjdXJyZW50IHNvbHV0aW9uLlxuICAgKi9cbiAgc2NvcGU/OiAnKicgfCAnc2VsZicgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29va2llQmFubmVyQ29uZmlndXJhdGlvbiB7XG4gIC8qKiBIZXJlIHlvdSBjYW4gc2V0IHRoZSB0aXRsZSBvZiBDb29raWUgQmFubmVyICovXG4gIGNvb2tpZUJhbm5lclRpdGxlPzogc3RyaW5nO1xuICAvKiogSGVyZSB5b3UgY2FuIHNldCB0aGUgVGV4dCBvZiBDb29raWUgQmFubmVyICovXG4gIGNvb2tpZUJhbm5lclRleHQ/OiBzdHJpbmc7XG4gIC8qKiBIZXJlIHlvdSBjYW4gc2V0IHRoZSBwb2xpY3lVcmwgb2YgQ29va2llIEJhbm5lciAqL1xuICBwb2xpY3lVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29va2llUHJlZmVyZW5jZXNDb25maWd1cmF0aW9uIHtcbiAgLyoqIFRoaXMgY2F0ZWdvcnkgaW5jbHVkZXMgZS5nLiBjb29raWVzIHJlbGF0ZWQgdG8gbG9nZ2luZyBpbiAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuIHwgc3RyaW5nO1xuICAvKiogVGhpcyBjYXRlZ29yeSBpbmNsdWRlcyBlLmcuIHRyYWNraW5nIGNvb2tpZXMgICovXG4gIGZ1bmN0aW9uYWw/OiBib29sZWFuIHwgc3RyaW5nO1xuICAvKiogVGhpcyBjYXRlZ29yeSBpbmNsdWRlcyBlLmcuIGNvb2tpZXMgcmVsYXRlZCB0byBhZHZlcnRpc2luZyAgKi9cbiAgbWFya2V0aW5nPzogYm9vbGVhbiB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2dpbkV4dHJhTGluayB7XG4gIHVybDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEljb24ge1xuICBjbGFzcz86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3Mge1xuICAvKiogSGlkZSBkZWZhdWx0IGxpbmtzIHRvIGRvY3VtZW50YXRpb24uICovXG4gIG5vRGVmYXVsdDogYm9vbGVhbjtcbiAgLyoqIExpc3Qgb2YgcmVnZXggc3RyaW5ncy4gTWF0Y2hpbmcgZGVmYXVsdCBkb2NzIFVSTHMgd2lsbCBiZSBoaWRkZW4uICovXG4gIGV4Y2x1ZGVEZWZhdWx0OiBzdHJpbmdbXTtcbiAgLyoqIEFkZGl0aW9uYWwgbGlua3MgdG8gYmUgZGlzcGxheWVkLiAqL1xuICBsaW5rczogTGlua3NbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5rcyB7XG4gIC8qKiBJY29uIGNsYXNzZXMgd2l0aCBgYzh5LWljb25gLCBlLmcuIGBjOHktaWNvbiBjOHktaWNvbi1hZGQtdXNlcmAgb3IgYGM4eS1pY29uIGM4eS1pY29uLWRldmljZS1jb25uZWN0YC4gKi9cbiAgaWNvbjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgdHlwZTogJ2RvYycgfCAncXVpY2tsaW5rJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJMThuRXh0cmEge1xuICBbbGFuZ0NvZGU6IHN0cmluZ106IEkxOG5FeHRyYUxhbmdDb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5FeHRyYUxhbmdDb2RlIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlcyB7XG4gIFtsYW5nQ29kZTogc3RyaW5nXTogTGFuZ3VhZ2VzTGFuZ0NvZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VzTGFuZ0NvZGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIG5hdGl2ZU5hbWU6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJhbmRpbmdDc3NWYXJzIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xufVxuIl19