@c8y/ngx-components 1021.31.3 → 1021.34.1

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 (75) hide show
  1. package/alarms/alarms-date-filter.component.d.ts +1 -0
  2. package/alarms/alarms-date-filter.component.d.ts.map +1 -1
  3. package/core/common/ui-state.service.d.ts +0 -1
  4. package/core/common/ui-state.service.d.ts.map +1 -1
  5. package/core/dynamic-component/dynamic-component.component.d.ts +5 -0
  6. package/core/dynamic-component/dynamic-component.component.d.ts.map +1 -1
  7. package/core/plugins/plugins.service.d.ts +3 -0
  8. package/core/plugins/plugins.service.d.ts.map +1 -1
  9. package/core/router/router-tabs.resolver.d.ts +2 -2
  10. package/core/router/router-tabs.resolver.d.ts.map +1 -1
  11. package/esm2022/alarms/alarms-date-filter.component.mjs +5 -3
  12. package/esm2022/alarms/alarms-type-filter.component.mjs +3 -3
  13. package/esm2022/core/common/ui-state.service.mjs +1 -19
  14. package/esm2022/core/dynamic-component/dynamic-component.component.mjs +23 -3
  15. package/esm2022/core/plugins/plugins.service.mjs +7 -1
  16. package/esm2022/core/router/router-tabs.resolver.mjs +22 -8
  17. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +2 -2
  18. package/esm2022/protocol-lwm2m/ng1/plugin-checker.service.mjs +5 -1
  19. package/esm2022/services/services-device-tab/service-command.service.mjs +113 -0
  20. package/esm2022/services/services-device-tab/service-device-tab.model.mjs +1 -1
  21. package/esm2022/services/services-device-tab/services-device-tab.component.mjs +13 -7
  22. package/esm2022/widgets/definitions/asset-notes/c8y-ngx-components-widgets-definitions-asset-notes.mjs +5 -0
  23. package/esm2022/widgets/definitions/asset-notes/index.mjs +29 -0
  24. package/esm2022/widgets/definitions/index.mjs +2 -1
  25. package/esm2022/widgets/implementations/asset-notes/asset-notes-widget.component.mjs +67 -0
  26. package/esm2022/widgets/implementations/asset-notes/c8y-ngx-components-widgets-implementations-asset-notes.mjs +5 -0
  27. package/esm2022/widgets/implementations/asset-notes/index.mjs +2 -0
  28. package/fesm2022/c8y-ngx-components-alarms.mjs +5 -4
  29. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  30. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +1 -1
  31. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  32. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1 -1
  33. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  34. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs +4 -0
  35. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs.map +1 -1
  36. package/fesm2022/c8y-ngx-components-services.mjs +116 -5
  37. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  38. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs +36 -0
  39. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -0
  40. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
  41. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  42. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +74 -0
  43. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -0
  44. package/fesm2022/c8y-ngx-components.mjs +49 -26
  45. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  46. package/locales/de.po +20 -11
  47. package/locales/es.po +18 -9
  48. package/locales/fr.po +18 -9
  49. package/locales/ja_JP.po +18 -9
  50. package/locales/ko.po +18 -9
  51. package/locales/locales.pot +19 -7
  52. package/locales/nl.po +18 -9
  53. package/locales/pl.po +21 -12
  54. package/locales/pt_BR.po +18 -9
  55. package/locales/zh_CN.po +18 -9
  56. package/locales/zh_TW.po +18 -9
  57. package/package.json +1 -1
  58. package/protocol-lwm2m/ng1/plugin-checker.service.d.ts +4 -0
  59. package/protocol-lwm2m/ng1/plugin-checker.service.d.ts.map +1 -1
  60. package/services/services-device-tab/service-command.service.d.ts +59 -0
  61. package/services/services-device-tab/service-command.service.d.ts.map +1 -0
  62. package/services/services-device-tab/service-device-tab.model.d.ts +9 -0
  63. package/services/services-device-tab/service-device-tab.model.d.ts.map +1 -1
  64. package/services/services-device-tab/services-device-tab.component.d.ts +5 -2
  65. package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
  66. package/widgets/definitions/asset-notes/c8y-ngx-components-widgets-definitions-asset-notes.d.ts.map +1 -0
  67. package/widgets/definitions/asset-notes/index.d.ts +16 -0
  68. package/widgets/definitions/asset-notes/index.d.ts.map +1 -0
  69. package/widgets/definitions/index.d.ts +1 -0
  70. package/widgets/definitions/index.d.ts.map +1 -1
  71. package/widgets/implementations/asset-notes/asset-notes-widget.component.d.ts +33 -0
  72. package/widgets/implementations/asset-notes/asset-notes-widget.component.d.ts.map +1 -0
  73. package/widgets/implementations/asset-notes/c8y-ngx-components-widgets-implementations-asset-notes.d.ts.map +1 -0
  74. package/widgets/implementations/asset-notes/index.d.ts +2 -0
  75. package/widgets/implementations/asset-notes/index.d.ts.map +1 -0
@@ -1,4 +1,4 @@
1
- import { Injector, Injectable } from '@angular/core';
1
+ import { Injector, Injectable, runInInjectionContext } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { from, isObservable, of } from 'rxjs';
4
4
  import { every, filter, map, mergeMap, toArray, tap } from 'rxjs/operators';
@@ -15,12 +15,13 @@ export class RouterTabsResolver {
15
15
  resolve(currentRoute) {
16
16
  const routeConfig = currentRoute.routeConfig;
17
17
  const latestChildren = this.getLatestChildRoutes(routeConfig.rootContext);
18
- return from(latestChildren || []).pipe(mergeMap((child) => from(this.getGuards(child)).pipe(map((guard) => guard.canActivate(currentRoute, this.routerStateSnapshot)), mergeMap((result) => {
18
+ return from(latestChildren || []).pipe(mergeMap((child) => from(this.getGuards(child)).pipe(map(canActivate => canActivate(currentRoute, this.routerStateSnapshot)), mergeMap((result) => {
19
19
  if (isObservable(result)) {
20
20
  return result;
21
21
  }
22
- if (result && typeof result.then === 'function') {
23
- return from(result);
22
+ const resultAsPromise = result;
23
+ if (resultAsPromise && typeof resultAsPromise.then === 'function') {
24
+ return from(resultAsPromise);
24
25
  }
25
26
  return of(result);
26
27
  }), tap(result => {
@@ -71,11 +72,24 @@ export class RouterTabsResolver {
71
72
  return null;
72
73
  }
73
74
  getGuards(child) {
74
- const guards = (child.canActivate || []).map(guard => {
75
- return this.injector.get(guard);
75
+ const injector = child._injector || this.injector;
76
+ const canActivates = child.canActivate || [];
77
+ const guards = canActivates.map(guard => {
78
+ return ((route, state) => {
79
+ // for legacy CanActivate guards
80
+ const instance = this.injector.get(guard, null);
81
+ if (instance) {
82
+ return instance.canActivate(route, state);
83
+ }
84
+ // for current CanActivateFn guards
85
+ const canActivate = guard;
86
+ return runInInjectionContext(injector, () => {
87
+ return canActivate(route, state);
88
+ });
89
+ });
76
90
  });
77
91
  if (child.data && child.data.showIf) {
78
- guards.push({ canActivate: child.data.showIf });
92
+ guards.push((route, state) => child.data.showIf(route, state));
79
93
  }
80
94
  return guards;
81
95
  }
@@ -88,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
88
102
  providedIn: 'root'
89
103
  }]
90
104
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXRhYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXItdGFicy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQTBCLE1BQU0sRUFBcUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU81RSxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1UsUUFBa0IsRUFDbEIsTUFBYztRQURkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUosSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxZQUFvQztRQUMxQyxNQUFNLFdBQVcsR0FBeUIsWUFBWSxDQUFDLFdBQW1DLENBQUM7UUFDM0YsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNwQyxRQUFRLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUUsQ0FDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlCLEdBQUcsQ0FBQyxDQUFDLEtBQXFDLEVB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O2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIsIENhbkFjdGl2YXRlRm4sIFJvdXRlcywgVXJsU2VnbWVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmcm9tLCBpc09ic2VydmFibGUsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBldmVyeSwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB0b0FycmF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICcuLi90YWJzL3RhYi5tb2RlbCc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVXaXRoVGFiLCBWaWV3Q29udGV4dCwgVmlld0NvbnRleHRSb290Um91dGUgfSBmcm9tICcuL3JvdXRlci5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlclRhYnNSZXNvbHZlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIGdldCByb3V0ZXJTdGF0ZVNuYXBzaG90KCkge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdDtcbiAgfVxuXG4gIHJlc29sdmUoY3VycmVudFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgY29uc3Qgcm91dGVDb25maWc6IFZpZXdDb250ZXh0Um9vdFJvdXRlID0gY3VycmVudFJvdXRlLnJvdXRlQ29uZmlnIGFzIFZpZXdDb250ZXh0Um9vdFJvdXRlO1xuICAgIGNvbnN0IGxhdGVzdENoaWxkcmVuID0gdGhpcy5nZXRMYXRlc3RDaGlsZFJvdXRlcyhyb3V0ZUNvbmZpZy5yb290Q29udGV4dCk7XG4gICAgcmV0dXJuIGZyb20obGF0ZXN0Q2hpbGRyZW4gfHwgW10pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoY2hpbGQ6IFJvdXRlV2l0aFRhYikgPT5cbiAgICAgICAgZnJvbSh0aGlzLmdldEd1YXJkcyhjaGlsZCkpLnBpcGUoXG4gICAgICAgICAgbWFwKChndWFyZDogeyBjYW5BY3RpdmF0ZTogQ2FuQWN0aXZhdGVGbiB9KSA9PlxuICAgICAgICAgICAgZ3VhcmQuY2FuQWN0aXZhdGUoY3VycmVudFJvdXRlLCB0aGlzLnJvdXRlclN0YXRlU25hcHNob3QpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZyb20ocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvZihyZXN1bHQpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRhcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICAgICAgICBjaGlsZC50YWJzID0gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGV2ZXJ5KHJlc3VsdCA9PiAhIXJlc3VsdCksXG4gICAgICAgICAgZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQpLFxuICAgICAgICAgIG1lcmdlTWFwKCgpID0+IChBcnJheS5pc0FycmF5KGNoaWxkLnRhYnMpID8gZnJvbShjaGlsZC50YWJzKSA6IG9mKGNoaWxkKSkpLFxuICAgICAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRCYXNlbFVybChjdXJyZW50Um91dGUpLmpvaW4oJy8nKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQubGFiZWwgfHwgcmVzdWx0LnBhdGhcbiAgICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IHJlc3VsdC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgIGljb246IHJlc3VsdC5pY29uLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYC8ke2RlY29kZVVSSUNvbXBvbmVudCh1cmwpfS8ke3Jlc3VsdC5wYXRofWAsXG4gICAgICAgICAgICAgICAgICBwcmlvcml0eTogcmVzdWx0LnByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgaGlkZTogcmVzdWx0LmhpZGUsXG4gICAgICAgICAgICAgICAgICBiYWRnZTogcmVzdWx0LmJhZGdlLFxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ6IHJlc3VsdC50b29sdGlwVGV4dCxcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVJZDogcmVzdWx0LmZlYXR1cmVJZCxcbiAgICAgICAgICAgICAgICAgIHRhYnNPdXRsZXQ6IHJlc3VsdC50YWJzT3V0bGV0LFxuICAgICAgICAgICAgICAgICAgc2hvd0Fsd2F5czogcmVzdWx0LnNob3dBbHdheXNcbiAgICAgICAgICAgICAgICB9IGFzIFRhYilcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcih0YWJzID0+ICEhdGFicyksXG4gICAgICB0b0FycmF5KClcbiAgICApIGFzIE9ic2VydmFibGU8VGFiW10+O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCYXNlbFVybChjdXJyZW50Um91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICBsZXQgcHJlZml4OiBVcmxTZWdtZW50W10gPSBbXTtcbiAgICBpZiAoY3VycmVudFJvdXRlLnBhcmVudD8udXJsLmxlbmd0aCA+IDApIHtcbiAgICAgIHByZWZpeCA9IHRoaXMuZ2V0QmFzZWxVcmwoY3VycmVudFJvdXRlLnBhcmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5wcmVmaXgsIC4uLmN1cnJlbnRSb3V0ZS51cmxdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXRlc3RDaGlsZFJvdXRlcyhjb250ZXh0OiBWaWV3Q29udGV4dCkge1xuICAgIGNvbnN0IHRoaXNDb250ZXh0Um91dGUgPSB0aGlzLmZpbmRSb290Q29udGV4dFJvdXRlcyh0aGlzLnJvdXRlci5jb25maWcsIGNvbnRleHQpO1xuICAgIHJldHVybiB0aGlzQ29udGV4dFJvdXRlPy5jaGlsZHJlbiB8fCBbXTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFJvb3RDb250ZXh0Um91dGVzKHJvdXRlczogUm91dGVzLCBjb250ZXh0OiBWaWV3Q29udGV4dCkge1xuICAgIGZvciAoY29uc3Qgcm91dGUgb2Ygcm91dGVzKSB7XG4gICAgICBpZiAoKHJvdXRlIGFzIFZpZXdDb250ZXh0Um9vdFJvdXRlKS5yb290Q29udGV4dCA9PT0gY29udGV4dCkge1xuICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICB9XG4gICAgICBpZiAocm91dGUuY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgY2hpbGRSZXN1bHQgPSB0aGlzLmZpbmRSb290Q29udGV4dFJvdXRlcyhyb3V0ZS5jaGlsZHJlbiwgY29udGV4dCk7XG4gICAgICAgIGlmIChjaGlsZFJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiBjaGlsZFJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3VhcmRzKGNoaWxkOiBSb3V0ZSkge1xuICAgIGNvbnN0IGd1YXJkcyA9IChjaGlsZC5jYW5BY3RpdmF0ZSB8fCBbXSkubWFwKGd1YXJkID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChndWFyZCk7XG4gICAgfSk7XG4gICAgaWYgKGNoaWxkLmRhdGEgJiYgY2hpbGQuZGF0YS5zaG93SWYpIHtcbiAgICAgIGd1YXJkcy5wdXNoKHsgY2FuQWN0aXZhdGU6IGNoaWxkLmRhdGEuc2hvd0lmIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ3VhcmRzO1xuICB9XG59XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXRhYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXItdGFicy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBaUIscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUVMLE1BQU0sRUFRUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTzVFLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxRQUFrQixFQUNsQixNQUFjO1FBRGQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3JCLENBQUM7SUFFSixJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsT0FBTyxDQUFDLFlBQW9DO1FBQzFDLE1BQU0sV0FBVyxHQUF5QixZQUFZLENBQUMsV0FBbUMsQ0FBQztRQUMzRixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BDLFFBQVEsQ0FBQyxDQUFDLEtBQW1CLEVBQUUsRUFBRSxDQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUIsR0FBRyxDQUFDLFdB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QW1DO2dCQUNuQyxNQUFNLFdBQVcsR0FBRyxLQUFzQixDQUFDO2dCQUMzQyxPQUFPLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7b0JBQzFDLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbkMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQWtCLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBNkIsRUFBRSxLQUEwQixFQUFFLEVBQUUsQ0FDeEUsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUNoQyxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBakhVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgSW5qZWN0YWJsZSwgUHJvdmlkZXJUb2tlbiwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXIsXG4gIENhbkFjdGl2YXRlRm4sXG4gIFJvdXRlcyxcbiAgVXJsU2VnbWVudCxcbiAgQ2FuQWN0aXZhdGUsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG4gIE1heWJlQXN5bmMsXG4gIEd1YXJkUmVzdWx0XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmcm9tLCBpc09ic2VydmFibGUsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBldmVyeSwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB0b0FycmF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICcuLi90YWJzL3RhYi5tb2RlbCc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVXaXRoVGFiLCBWaWV3Q29udGV4dCwgVmlld0NvbnRleHRSb290Um91dGUgfSBmcm9tICcuL3JvdXRlci5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlclRhYnNSZXNvbHZlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIGdldCByb3V0ZXJTdGF0ZVNuYXBzaG90KCkge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdDtcbiAgfVxuXG4gIHJlc29sdmUoY3VycmVudFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgY29uc3Qgcm91dGVDb25maWc6IFZpZXdDb250ZXh0Um9vdFJvdXRlID0gY3VycmVudFJvdXRlLnJvdXRlQ29uZmlnIGFzIFZpZXdDb250ZXh0Um9vdFJvdXRlO1xuICAgIGNvbnN0IGxhdGVzdENoaWxkcmVuID0gdGhpcy5nZXRMYXRlc3RDaGlsZFJvdXRlcyhyb3V0ZUNvbmZpZy5yb290Q29udGV4dCk7XG4gICAgcmV0dXJuIGZyb20obGF0ZXN0Q2hpbGRyZW4gfHwgW10pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoY2hpbGQ6IFJvdXRlV2l0aFRhYikgPT5cbiAgICAgICAgZnJvbSh0aGlzLmdldEd1YXJkcyhjaGlsZCkpLnBpcGUoXG4gICAgICAgICAgbWFwKGNhbkFjdGl2YXRlID0+IGNhbkFjdGl2YXRlKGN1cnJlbnRSb3V0ZSwgdGhpcy5yb3V0ZXJTdGF0ZVNuYXBzaG90KSksXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdDogTWF5YmVBc3luYzxHdWFyZFJlc3VsdD4pID0+IHtcbiAgICAgICAgICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHRBc1Byb21pc2UgPSByZXN1bHQgYXMgUHJvbWlzZTxHdWFyZFJlc3VsdD47XG4gICAgICAgICAgICBpZiAocmVzdWx0QXNQcm9taXNlICYmIHR5cGVvZiByZXN1bHRBc1Byb21pc2UudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICByZXR1cm4gZnJvbShyZXN1bHRBc1Byb21pc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mKHJlc3VsdCBhcyBHdWFyZFJlc3VsdCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgICAgIGNoaWxkLnRhYnMgPSByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgZXZlcnkocmVzdWx0ID0+ICEhcmVzdWx0KSxcbiAgICAgICAgICBmaWx0ZXIocmVzdWx0ID0+IHJlc3VsdCksXG4gICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gKEFycmF5LmlzQXJyYXkoY2hpbGQudGFicykgPyBmcm9tKGNoaWxkLnRhYnMpIDogb2YoY2hpbGQpKSksXG4gICAgICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldEJhc2VsVXJsKGN1cnJlbnRSb3V0ZSkuam9pbignLycpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5sYWJlbCB8fCByZXN1bHQucGF0aFxuICAgICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogcmVzdWx0LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgaWNvbjogcmVzdWx0Lmljb24sXG4gICAgICAgICAgICAgICAgICBwYXRoOiBgLyR7ZGVjb2RlVVJJQ29tcG9uZW50KHVybCl9LyR7cmVzdWx0LnBhdGh9YCxcbiAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiByZXN1bHQucHJpb3JpdHksXG4gICAgICAgICAgICAgICAgICBoaWRlOiByZXN1bHQuaGlkZSxcbiAgICAgICAgICAgICAgICAgIGJhZGdlOiByZXN1bHQuYmFkZ2UsXG4gICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dDogcmVzdWx0LnRvb2x0aXBUZXh0LFxuICAgICAgICAgICAgICAgICAgZmVhdHVyZUlkOiByZXN1bHQuZmVhdHVyZUlkLFxuICAgICAgICAgICAgICAgICAgdGFic091dGxldDogcmVzdWx0LnRhYnNPdXRsZXQsXG4gICAgICAgICAgICAgICAgICBzaG93QWx3YXlzOiByZXN1bHQuc2hvd0Fsd2F5c1xuICAgICAgICAgICAgICAgIH0gYXMgVGFiKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgZmlsdGVyKHRhYnMgPT4gISF0YWJzKSxcbiAgICAgIHRvQXJyYXkoKVxuICAgICkgYXMgT2JzZXJ2YWJsZTxUYWJbXT47XG4gIH1cblxuICBwcml2YXRlIGdldEJhc2VsVXJsKGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICAgIGxldCBwcmVmaXg6IFVybFNlZ21lbnRbXSA9IFtdO1xuICAgIGlmIChjdXJyZW50Um91dGUucGFyZW50Py51cmwubGVuZ3RoID4gMCkge1xuICAgICAgcHJlZml4ID0gdGhpcy5nZXRCYXNlbFVybChjdXJyZW50Um91dGUucGFyZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gWy4uLnByZWZpeCwgLi4uY3VycmVudFJvdXRlLnVybF07XG4gIH1cblxuICBwcml2YXRlIGdldExhdGVzdENoaWxkUm91dGVzKGNvbnRleHQ6IFZpZXdDb250ZXh0KSB7XG4gICAgY29uc3QgdGhpc0NvbnRleHRSb3V0ZSA9IHRoaXMuZmluZFJvb3RDb250ZXh0Um91dGVzKHRoaXMucm91dGVyLmNvbmZpZywgY29udGV4dCk7XG4gICAgcmV0dXJuIHRoaXNDb250ZXh0Um91dGU/LmNoaWxkcmVuIHx8IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUm9vdENvbnRleHRSb3V0ZXMocm91dGVzOiBSb3V0ZXMsIGNvbnRleHQ6IFZpZXdDb250ZXh0KSB7XG4gICAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICAgIGlmICgocm91dGUgYXMgVmlld0NvbnRleHRSb290Um91dGUpLnJvb3RDb250ZXh0ID09PSBjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiByb3V0ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyb3V0ZS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBjaGlsZFJlc3VsdCA9IHRoaXMuZmluZFJvb3RDb250ZXh0Um91dGVzKHJvdXRlLmNoaWxkcmVuLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKGNoaWxkUmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIGNoaWxkUmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWFyZHMoY2hpbGQ6IFJvdXRlKTogQ2FuQWN0aXZhdGVGbltdIHtcbiAgICBjb25zdCBpbmplY3RvcjogSW5qZWN0b3IgPSAoKDxhbnk+Y2hpbGQpLl9pbmplY3RvciBhcyBhbnkpIHx8IHRoaXMuaW5qZWN0b3I7XG4gICAgY29uc3QgY2FuQWN0aXZhdGVzOiBBcnJheTxDYW5BY3RpdmF0ZUZuIHwgUHJvdmlkZXJUb2tlbjxDYW5BY3RpdmF0ZT4+ID0gY2hpbGQuY2FuQWN0aXZhdGUgfHwgW107XG4gICAgY29uc3QgZ3VhcmRzID0gY2FuQWN0aXZhdGVzLm1hcChndWFyZCA9PiB7XG4gICAgICByZXR1cm4gKChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpID0+IHtcbiAgICAgICAgLy8gZm9yIGxlZ2FjeSBDYW5BY3RpdmF0ZSBndWFyZHNcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmluamVjdG9yLmdldChndWFyZCwgbnVsbCk7XG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZm9yIGN1cnJlbnQgQ2FuQWN0aXZhdGVGbiBndWFyZHNcbiAgICAgICAgY29uc3QgY2FuQWN0aXZhdGUgPSBndWFyZCBhcyBDYW5BY3RpdmF0ZUZuO1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSkgYXMgQ2FuQWN0aXZhdGVGbjtcbiAgICB9KTtcbiAgICBpZiAoY2hpbGQuZGF0YSAmJiBjaGlsZC5kYXRhLnNob3dJZikge1xuICAgICAgZ3VhcmRzLnB1c2goKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkgPT5cbiAgICAgICAgY2hpbGQuZGF0YS5zaG93SWYocm91dGUsIHN0YXRlKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGd1YXJkcztcbiAgfVxufVxuIl19
@@ -140,7 +140,7 @@ export class ApplicationPluginsComponent {
140
140
  }
141
141
  async resetToDefault() {
142
142
  this.isLoading = true;
143
- await this.pluginsService.setInitialRemotes(this.app);
143
+ await this.pluginsService.resetRemotes(this.app);
144
144
  await this.loadData();
145
145
  this.alertService.success(gettext('The application was reset to its default plugins.'));
146
146
  }
@@ -481,4 +481,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
481
481
  type: ViewChild,
482
482
  args: [DataGridComponent, { static: false }]
483
483
  }] } });
484
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tcGx1Z2lucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vYXBwbGljYXRpb24tcGx1Z2lucy9hcHBsaWNhdGlvbi1wbHVnaW5zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi1wbHVnaW5zL2FwcGxpY2F0aW9uLXBsdWdpbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUVMLFlBQVksRUFFWix1QkFBdUIsRUFHdkIsaUJBQWlCLEVBRWpCLGdCQUFnQixFQUNoQixPQUFPLEVBSVAsY0FBYyxFQUNkLG1CQUFtQixFQUNwQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsNEJBQTRCLEVBQzdCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRixPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSww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aUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25SZW1vdGVQbHVnaW5zLCBJQXBwbGljYXRpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBY3Rpb25Db250cm9sLFxuICBBbGVydFNlcnZpY2UsXG4gIEFwcGxpY2F0aW9uUGx1Z2luLFxuICBBcHBsaWNhdGlvblBsdWdpblN0YXR1cyxcbiAgQnVsa0FjdGlvbkNvbnRyb2wsXG4gIENvbHVtbixcbiAgRGF0YUdyaWRDb21wb25lbnQsXG4gIERpc3BsYXlPcHRpb25zLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBIZWFkZXJBY3Rpb25Db250cm9sLFxuICBQYWdpbmF0aW9uLFxuICBQbHVnaW5zQ29uZmlnLFxuICBQbHVnaW5zU2VydmljZSxcbiAgUGx1Z2luc0V4cG9ydFNjb3Blc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEVjb3N5c3RlbVNlcnZpY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU1cbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9lY29zeXN0ZW0vc2hhcmVkJztcbmltcG9ydCB7IHBpY2sgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbnN0YWxsUGx1Z2luQ29tcG9uZW50IH0gZnJvbSAnLi9pbnN0YWxsLXBsdWdpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGFiZWxDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL2xhYmVsLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE9ycGhhbmVkU3RhdHVzQ2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9vcnBoYW5lZC1zdGF0dXMtY2VsbC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBkYXRlUGx1Z2luT2ZBcHBDb21wb25lbnQgfSBmcm9tICcuL3VwZGF0ZS1wbHVnaW4tb2YtYXBwL3VwZGF0ZS1wbHVnaW4tb2YtYXBwLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hcHAtcGx1Z2lucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHBsaWNhdGlvbi1wbHVnaW5zLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvblBsdWdpbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIFBST0RVQ1RfRVhQRVJJRU5DRSA9IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU07XG4gIENVUlJFTlRfTE9DQVRJT04gPSBsb2NhdGlvbi5ocmVmO1xuXG4gIEBJbnB1dCgpIGFwcElkOiBzdHJpbmcgfCBudW1iZXI7XG4gIEBWaWV3Q2hpbGQoRGF0YUdyaWRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBkYXRhR3JpZDogRGF0YUdyaWRDb21wb25lbnQ7XG5cbiAgcmVtb3RlUGx1Z2lucyQ6IEJlaGF2aW9yU3ViamVjdDxBcHBsaWNhdGlvblJlbW90ZVBsdWdpbnM+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIGFsbEF2YWlsYWJsZVBsdWdpbnMkOiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25QbHVnaW5bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgc2VsZlBsdWdpbnMkOiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25QbHVnaW5bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcblxuICBpbnN0YWxsZWRQbHVnaW5zJDogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvblBsdWdpbltdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMucmVtb3RlUGx1Z2lucyQucGlwZShtYXAocmVtb3RlcyA9PiBQbHVnaW5zU2VydmljZS5jb252ZXJ0SW5zdGFsbGVkUmVtb3Rlc1RvSWRzKHJlbW90ZXMpKSksXG4gICAgdGhpcy5hbGxBdmFpbGFibGVQbHVnaW5zJFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3JlbW90ZVBsdWdpbnMsIGFsbFBsdWdpbnNdKSA9PiB0aGlzLmdldEluc3RhbGxlZFBsdWdpbnMoYWxsUGx1Z2lucywgcmVtb3RlUGx1Z2lucykpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG4gIG9ycGhhbmVkUGx1Z2lucyQgPSB0aGlzLmluc3RhbGxlZFBsdWdpbnMkLnBpcGUoXG4gICAgbWFwKHBsdWdpbnMgPT4gcGx1Z2lucy5maWx0ZXIocCA9PiBwLnN0YXR1cyA9PT0gQXBwbGljYXRpb25QbHVnaW5TdGF0dXMuT1JQSEFORUQpKVxuICApO1xuICBpc1N0YW5kYXJkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuaW5zdGFsbGVkUGx1Z2lucyQsIHRoaXMuc2VsZlBsdWdpbnMkXSkucGlwZShcbiAgICBtYXAoKFtpbnN0YWxsZWRQbHVnaW5zLCBzZWxmUGx1Z2luc10pID0+IHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0UmVtb3RlcyA9IHRoaXMuYXBwPy5tYW5pZmVzdD8ucmVtb3RlcyB8fCB7fTtcbiAgICAgIC8vIGVuc3VyZSB0aGF0IGV2ZXJ5IGluc3RhbGxlZCBwbHVnaW4gaXMgYSBzZWxmIHBsdWdpbiBvciBhIHBsdWdpbiBmcm9tIHRoZSBtYW5pZmVzdFxuICAgICAgY29uc3QgYWxsSW5zdGFsbGVkUGx1Z2luc0FyZVNlbGYgPSBpbnN0YWxsZWRQbHVnaW5zLmV2ZXJ5KFxuICAgICAgICBwID0+XG4gICAgICAgICAgc2VsZlBsdWdpbnMuc29tZShzZWxmUGx1Z2luID0+IHNlbGZQbHVnaW4uaWQgPT09IHAuaWQpIHx8XG4gICAgICAgICAgKEFycmF5LmlzQXJyYXkobWFuaWZlc3RSZW1vdGVzW3AuY29udGV4dFBhdGhdKSAmJlxuICAgICAgICAgICAgbWFuaWZlc3RSZW1vdGVzW3AuY29udGV4dFBhdGhdLmluY2x1ZGVzKHAubW9kdWxlKSlcbiAgICAgICk7XG5cbiAgICAgIC8vIGVuc3VyZSB0aGF0IGV2ZXJ5IHNlbGYgcGx1Z2luIGlzIGluc3RhbGxlZFxuICAgICAgY29uc3QgYWxsU2VsZlBsdWdpbnNBcmVJbnN0YWxsZWQgPSBzZWxmUGx1Z2lucy5ldmVyeShzZWxmUGx1Z2luID0+XG4gICAgICAgIGluc3RhbGxlZFBsdWdpbnMuc29tZShwID0+IHAuaWQgPT09IHNlbGZQbHVnaW4uaWQpXG4gICAgICApO1xuICAgICAgY29uc3QgY29uZmlnUmVtb3RlcyA9IHRoaXMuYXBwPy5jb25maWc/LnJlbW90ZXMgfHwge307XG5cbiAgICAgIC8vIGVuc3VyZSB0aGF0IGV2ZXJ5IHJlbW90ZSBmcm9tIHRoZSBtYW5pZmVzdCBpcyBpbiB0aGUgY29uZmlnXG4gICAgICAvLyBpZiBubyBjb25maWcgZXhpc3RzIHdlIGFyZSBhbHNvIGFsbCBnb29kXG4gICAgICBjb25zdCBldmVyeVJlbW90ZUZyb21NYW5pZmVzdElzSW5Db25maWcgPVxuICAgICAgICAhdGhpcy5hcHA/LmNvbmZpZz8ucmVtb3RlcyB8fFxuICAgICAgICBPYmplY3Qua2V5cyhtYW5pZmVzdFJlbW90ZXMpLmV2ZXJ5KFxuICAgICAgICAgIGNvbnRleHRQYXRoID0+XG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGNvbmZpZ1JlbW90ZXNbY29udGV4dFBhdGhdKSAmJlxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShtYW5pZmVzdFJlbW90ZXNbY29udGV4dFBhdGhdKSAmJlxuICAgICAgICAgICAgbWFuaWZlc3RSZW1vdGVzW2NvbnRleHRQYXRoXS5ldmVyeShtb2R1bGUgPT5cbiAgICAgICAgICAgICAgY29uZmlnUmVtb3Rlc1tjb250ZXh0UGF0aF0uaW5jbHVkZXMobW9kdWxlKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICBhbGxJbnN0YWxsZWRQbHVnaW5zQXJlU2VsZiAmJlxuICAgICAgICBhbGxTZWxmUGx1Z2luc0FyZUluc3RhbGxlZCAmJlxuICAgICAgICBldmVyeVJlbW90ZUZyb21NYW5pZmVzdElzSW5Db25maWdcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcbiAgYXBwOiBJQXBwbGljYXRpb247XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgdGl0bGU6IHN0cmluZyA9IGdldHRleHQoJ0luc3RhbGxlZCBwbHVnaW5zJyk7XG4gIGxvYWRNb3JlSXRlbXNMYWJlbDogc3RyaW5nID0gZ2V0dGV4dCgnTG9hZCBtb3JlIHBhY2thZ2VzJyk7XG4gIGxvYWRpbmdJdGVtc0xhYmVsOiBzdHJpbmcgPSBnZXR0ZXh0KCdMb2FkaW5nIHBhY2thZ2Vz4oCmJyk7XG4gIGFjdGlvbkNvbnRyb2xzOiBBY3Rpb25Db250cm9sW10gPSB0aGlzLmdldEFjdGlvbkNvbnRyb2xzKCk7XG4gIGJ1bGtBY3Rpb25Db250cm9sczogQnVsa0FjdGlvbkNvbnRyb2xbXSA9IHRoaXMuZ2V0QnVsa0FjdGlvbkNvbnRyb2xzKCk7XG4gIGhlYWRlckFjdGlvbkNvbnRyb2xzOiBIZWFkZXJBY3Rpb25Db250cm9sW10gPSBbXTtcbiAgbm9SZXN1bHRzTWVzc2FnZSA9IGdldHRleHQoJ05vIHBsdWdpbnMgdG8gZGlzcGxheS4nKTtcbiAgbm9EYXRhTWVzc2FnZSA9IGdldHRleHQoJ05vIHBsdWdpbnMgaW5zdGFsbGVkLicpO1xuICBub1Jlc3VsdHNTdWJ0aXRsZSA9IGdldHRleHQoJ1JlZmluZSB5b3VyIHNlYXJjaCB0ZXJtcyBvciBjaGVjayB5b3VyIHNwZWxsaW5nLicpO1xuICBub0RhdGFTdWJ0aXRsZSA9IGdldHRleHQoXCJUaGlzIGFwcGxpY2F0aW9uIGRvZXNuJ3QgaGF2ZSBhbnkgcGx1Z2luLiBDbGljayBiZWxvdyB0byBpbnN0YWxsLlwiKTtcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHtcbiAgICBwYWdlU2l6ZTogMTAsXG4gICAgY3VycmVudFBhZ2U6IDFcbiAgfTtcbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zID0ge1xuICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICBzdHJpcGVkOiB0cnVlLFxuICAgIGZpbHRlcjogdHJ1ZSxcbiAgICBncmlkSGVhZGVyOiB0cnVlLFxuICAgIGhvdmVyOiB0cnVlXG4gIH07XG4gIGNvbHVtbnM6IENvbHVtbltdID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnUGx1Z2luIG5hbWUnKSxcbiAgICAgIHBhdGg6ICduYW1lJyxcbiAgICAgIGZpbHRlcmFibGU6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdWZXJzaW9uJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnVmVyc2lvbicpLFxuICAgICAgcGF0aDogJ3ZlcnNpb24nLFxuICAgICAgZmlsdGVyYWJsZTogZmFsc2VcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdUYWcnLFxuICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdUYWdgbm91bmAnKSxcbiAgICAgIHBhdGg6ICdpbnN0YWxsZWRWaWFUYWcnLFxuICAgICAgZmlsdGVyYWJsZTogZmFsc2UsXG4gICAgICBjZWxsUmVuZGVyZXJDb21wb25lbnQ6IExhYmVsQ2VsbFJlbmRlcmVyQ29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZGVzY3JpcHRpb24nLFxuICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdEZXNjcmlwdGlvbicpLFxuICAgICAgcGF0aDogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIGZpbHRlcmFibGU6IGZhbHNlLFxuICAgICAgY2VsbENTU0NsYXNzTmFtZTogJ3NtYWxsJ1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2NvbnRleHRQYXRoJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnU291cmNlJyksXG4gICAgICBwYXRoOiAnY29udGV4dFBhdGgnLFxuICAgICAgZmlsdGVyYWJsZTogZmFsc2UsXG4gICAgICBjZWxsUmVuZGVyZXJDb21wb25lbnQ6IExhYmVsQ2VsbFJlbmRlcmVyQ29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc2NvcGUnLFxuICAgICAgaGVhZGVyOiBnZXR0ZXh0KCdTY29wZScpLFxuICAgICAgcGF0aDogJ3Njb3BlJyxcbiAgICAgIGZpbHRlcmFibGU6IGZhbHNlLFxuICAgICAgdmlzaWJsZTogZmFsc2UsXG4gICAgICBjZWxsUmVuZGVyZXJDb21wb25lbnQ6IExhYmVsQ2VsbFJlbmRlcmVyQ29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc3RhdHVzJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnU3RhdHVzJyksXG4gICAgICBwYXRoOiAnc3RhdHVzJyxcbiAgICAgIGZpbHRlcmFibGU6IGZhbHNlLFxuICAgICAgY2VsbFJlbmRlcmVyQ29tcG9uZW50OiBPcnBoYW5lZFN0YXR1c0NlbGxSZW5kZXJlckNvbXBvbmVudFxuICAgIH1cbiAgXTtcbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luc1NlcnZpY2U6IFBsdWdpbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFkZEluc3RhbGxCdXR0b25Ub0hlYWRlckFjdGlvbkNvbnRyb2xzKCk7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgYXN5bmMgbG9hZERhdGEoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIGF3YWl0IHRoaXMuZ2V0QXBwbGljYXRpb25NTygpO1xuICAgIGF3YWl0IHRoaXMuZ2V0QXBwbGljYXRpb25NRlJlbW90ZXModGhpcy5hcHApO1xuICAgIGF3YWl0IHRoaXMuZ2V0QWxsQXBwbGljYXRpb25zTUZFeHBvcnRzKHRoaXMuYXBwKTtcbiAgICBhd2FpdCB0aGlzLmdldEFsbFNlbGZNRkV4cG9ydHModGhpcy5hcHApO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBhc3luYyByZXNldFRvRGVmYXVsdCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgYXdhaXQgdGhpcy5wbHVnaW5zU2VydmljZS5zZXRJbml0aWFsUmVtb3Rlcyh0aGlzLmFwcCk7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YSgpO1xuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnVGhlIGFwcGxpY2F0aW9uIHdhcyByZXNldCB0byBpdHMgZGVmYXVsdCBwbHVnaW5zLicpKTtcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGxQbHVnaW5zKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwbHVnaW5zVG9BZGQ6IEFwcGxpY2F0aW9uUGx1Z2luW10gPVxuICAgICAgICBhd2FpdCB0aGlzLmJzTW9kYWxTZXJ2aWNlLnNob3c8SW5zdGFsbFBsdWdpbkNvbXBvbmVudD4oSW5zdGFsbFBsdWdpbkNvbXBvbmVudCwge1xuICAgICAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgICAgIGluaXRpYWxTdGF0ZTogdGhpcy5nZXRJbnN0YWxsTW9kYWxJbml0U3RhdGUoKSxcbiAgICAgICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgICAgIH0pLmNvbnRlbnQucmVzdWx0O1xuXG4gICAgICBjb25zdCBsaWNlbnNlc1ZlcmlmaWVkQnlVc2VyID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLnZlcmlmeUxpY2Vuc2VzKHBsdWdpbnNUb0FkZCk7XG4gICAgICBpZiAoIWxpY2Vuc2VzVmVyaWZpZWRCeVVzZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgdmVyaWZ5VmVyc2lvbkNvbXBhdGliaWxpdHkgPVxuICAgICAgICBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UudmVyaWZ5UGx1Z2luVmVyc2lvbnNDb21wYXRpYmlsaXR5KHBsdWdpbnNUb0FkZCwgdGhpcy5hcHApO1xuXG4gICAgICBpZiAoIXZlcmlmeVZlcnNpb25Db21wYXRpYmlsaXR5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVSZW1vdGVzSW5zdGFsbGF0aW9uKHBsdWdpbnNUb0FkZCk7XG5cbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnUGx1Z2lucyBpbnN0YWxsZWQuJykpO1xuICAgICAgcGx1Z2luc1RvQWRkLmZvckVhY2gocGx1Z2luID0+IHtcbiAgICAgICAgY29uc3QgcGx1Z2luQ3VzdG9tRXZlbnRJbmZvID0gcGljayhwbHVnaW4sIFtcbiAgICAgICAgICAnbmFtZScsXG4gICAgICAgICAgJ2NvbnRleHRQYXRoJyxcbiAgICAgICAgICAnbW9kdWxlJyxcbiAgICAgICAgICAndmVyc2lvbicsXG4gICAgICAgICAgJ3R5cGUnLFxuICAgICAgICAgICdpZCdcbiAgICAgICAgXSBzYXRpc2ZpZXMgKGtleW9mIEFwcGxpY2F0aW9uUGx1Z2luKVtdKTtcblxuICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkVWRU5UUy5JTlNUQUxMRURfUExVR0lOUyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuQVBQTElDQVRJT05fUExVR0lOUyxcbiAgICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuUkVTVUxUUy5QTFVHSU5fSU5TVEFMTEVELFxuICAgICAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT04sXG4gICAgICAgICAgICAuLi5wbHVnaW5DdXN0b21FdmVudEluZm8sXG4gICAgICAgICAgICB0YXJnZXRBcHBsaWNhdGlvbk5hbWU6IHRoaXMuYXBwLm5hbWUsXG4gICAgICAgICAgICB0YXJnZXRBcHBsaWNhdGlvbkNvbnRleHRQYXRoOiB0aGlzLmFwcC5jb250ZXh0UGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuRVZFTlRTLklOU1RBTExFRF9QTFVHSU5TLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5BUFBMSUNBVElPTl9QTFVHSU5TLFxuICAgICAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlNFUlZFUl9GQUlMVVJFLFxuICAgICAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT04sXG4gICAgICAgICAgICBlcnJvcjogZXhcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVtb3ZlUGx1Z2lucyhwbHVnaW5zOiBzdHJpbmdbXSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICBjb25zdCBpbnN0YWxsZWRQbHVnaW5zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5pbnN0YWxsZWRQbHVnaW5zJCk7XG4gICAgICBjb25zdCB1cGRhdGVkUmVtb3RlcyA9IGF3YWl0IHRoaXMucGx1Z2luc1NlcnZpY2UucmVtb3ZlUmVtb3RlcyhcbiAgICAgICAgdGhpcy5hcHAsXG4gICAgICAgIHBsdWdpbnMubWFwKGlkID0+IGluc3RhbGxlZFBsdWdpbnMuZmluZChwID0+IHAuaWQgPT09IGlkKSlcbiAgICAgICk7XG4gICAgICB0aGlzLmVtaXRSZW1vdGVzKHVwZGF0ZWRSZW1vdGVzKTtcblxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGF0YUdyaWQuY2FuY2VsKCk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ1BsdWdpbnMgcmVtb3ZlZC4nKSk7XG4gICAgICBwbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHtcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChcbiAgICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5FVkVOVFMuSU5TVEFMTEVEX1BMVUdJTlMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLkFQUExJQ0FUSU9OX1BMVUdJTlMsXG4gICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLlJFU1VMVFMuUExVR0lOX1JFTU9WRUQsXG4gICAgICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTixcbiAgICAgICAgICAgIGlkOiBwbHVnaW4sXG4gICAgICAgICAgICB0YXJnZXRBcHBsaWNhdGlvbk5hbWU6IHRoaXMuYXBwLm5hbWUsXG4gICAgICAgICAgICB0YXJnZXRBcHBsaWNhdGlvbkNvbnRleHRQYXRoOiB0aGlzLmFwcC5jb250ZXh0UGF0aFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuRVZFTlRTLklOU1RBTExFRF9QTFVHSU5TLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5BUFBMSUNBVElPTl9QTFVHSU5TLFxuICAgICAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlNFUlZFUl9GQUlMVVJFLFxuICAgICAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT04sXG4gICAgICAgICAgICBlcnJvcjogZXhcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2xlYW51cE9ycGhhbmVkUGx1Z2lucyhwbHVnaW5zOiBBcHBsaWNhdGlvblBsdWdpbltdKSB7XG4gICAgY29uc3QgcGx1Z2luSWRzID0gcGx1Z2lucy5tYXAocCA9PiBwLmlkKTtcbiAgICBhd2FpdCB0aGlzLnJlbW92ZVBsdWdpbnMocGx1Z2luSWRzKTtcbiAgfVxuXG4gIGdldEFjdGlvbkNvbnRyb2xzKCk6IEFjdGlvbkNvbnRyb2xbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2N1c3RvbVVwZGF0ZScsXG4gICAgICAgIHRleHQ6IGdldHRleHQoJ1VwZGF0ZScpLFxuICAgICAgICBpY29uOiAnY2FyZXQtc3F1YXJlLW8tdXAnLFxuICAgICAgICBzaG93SWY6IHBsdWdpbiA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHBsdWdpbi5zdGF0dXMgPT09IEFwcGxpY2F0aW9uUGx1Z2luU3RhdHVzLk9VVERBVEVEIHx8XG4gICAgICAgICAgICBwbHVnaW4uc3RhdHVzID09PSBBcHBsaWNhdGlvblBsdWdpblN0YXR1cy5SRVZPS0VEXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2FsbGJhY2s6IHBsdWdpbiA9PiB0aGlzLnVwZGF0ZVBsdWdpbih0aGlzLmFwcCwgcGx1Z2luIGFzIEFwcGxpY2F0aW9uUGx1Z2luKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2N1c3RvbURvd25ncmFkZScsXG4gICAgICAgIHRleHQ6IGdldHRleHQoJ0Rvd25ncmFkZScpLFxuICAgICAgICBpY29uOiAnY2FyZXQtc3F1YXJlLW8tZG93bicsXG4gICAgICAgIHNob3dJZjogKHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4pID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBwbHVnaW4uc2NvcGUgPT09IFBsdWdpbnNFeHBvcnRTY29wZXMuU0VMRiB8fFxuICAgICAgICAgICAgcGx1Z2luLnNjb3BlID09PSBQbHVnaW5zRXhwb3J0U2NvcGVzLlNFTEZfT1BUSU9OQUxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBsdWdpbi5zdGF0dXMgPT09IEFwcGxpY2F0aW9uUGx1Z2luU3RhdHVzLkxBVEVTVDtcbiAgICAgICAgfSxcbiAgICAgICAgY2FsbGJhY2s6IHBsdWdpbiA9PiB0aGlzLnVwZGF0ZVBsdWdpbih0aGlzLmFwcCwgcGx1Z2luIGFzIEFwcGxpY2F0aW9uUGx1Z2luLCB0cnVlKVxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBnZXRCdWxrQWN0aW9uQ29udHJvbHMoKTogQnVsa0FjdGlvbkNvbnRyb2xbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2N1c3RvbURlbGV0ZScsXG4gICAgICAgIHRleHQ6IGdldHRleHQoJ1JlbW92ZScpLFxuICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICBjYWxsYmFjazogcGx1Z2lucyA9PiB0aGlzLnJlbW92ZVBsdWdpbnMocGx1Z2lucylcbiAgICAgIH1cbiAgICBdO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUGx1Z2luKGFwcDogSUFwcGxpY2F0aW9uLCBwbHVnaW46IEFwcGxpY2F0aW9uUGx1Z2luLCBkb3duZ3JhZGUgPSBmYWxzZSkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCAoXG4gICAgICAgIHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhVcGRhdGVQbHVnaW5PZkFwcENvbXBvbmVudCwge1xuICAgICAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgYXBwLFxuICAgICAgICAgICAgcGx1Z2luLFxuICAgICAgICAgICAgZG93bmdyYWRlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgICAgIH0pLmNvbnRlbnQgYXMgVXBkYXRlUGx1Z2luT2ZBcHBDb21wb25lbnRcbiAgICAgICkucmVzdWx0O1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW5zdGFsbEJ1dHRvblRvSGVhZGVyQWN0aW9uQ29udHJvbHMoKSB7XG4gICAgaWYgKHRoaXMuYXBwSWQpIHtcbiAgICAgIHRoaXMuaGVhZGVyQWN0aW9uQ29udHJvbHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdJbnN0YWxsIHBsdWdpbnMnKSxcbiAgICAgICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnN0YWxsUGx1Z2lucygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaWNvbjogJ3BsdXMtY2lyY2xlJyxcbiAgICAgICAgICB0eXBlOiAnY3VzdG9tJ1xuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlUmVtb3Rlc0luc3RhbGxhdGlvbihwbHVnaW5zOiBBcHBsaWNhdGlvblBsdWdpbltdKSB7XG4gICAgY29uc3QgdXBkYXRlZFJlbW90ZXMgPSBhd2FpdCB0aGlzLnBsdWdpbnNTZXJ2aWNlLmFkZFJlbW90ZXModGhpcy5hcHAsIHBsdWdpbnMpO1xuICAgIHJldHVybiB0aGlzLmVtaXRSZW1vdGVzKHVwZGF0ZWRSZW1vdGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFJlbW90ZXMocGx1Z2luc0NvbmZpZzogUGx1Z2luc0NvbmZpZykge1xuICAgIGNvbnN0IHsgcmVtb3RlcywgZXhjbHVkZWRSZW1vdGVzIH0gPSBwbHVnaW5zQ29uZmlnO1xuXG4gICAgLy8gbmVlZGVkIGZvciBmaXJzdCB0aW1lIGFkZGluZy9yZW1vdmluZyBhIHBsdWdpblxuICAgIGlmICghdGhpcy5hcHAuY29uZmlnKSB7XG4gICAgICB0aGlzLmFwcC5jb25maWcgPSB7fTtcbiAgICB9XG5cbiAgICB0aGlzLmFwcC5jb25maWcucmVtb3RlcyA9IHJlbW90ZXM7XG4gICAgdGhpcy5hcHAuY29uZmlnLmV4Y2x1ZGVkUmVtb3RlcyA9IGV4Y2x1ZGVkUmVtb3RlcztcbiAgICBjb25zdCBhY3R1YWxSZW1vdGVzID0gdGhpcy5wbHVnaW5zU2VydmljZS5nZXRNRlJlbW90ZXModGhpcy5hcHApO1xuICAgIHRoaXMucmVtb3RlUGx1Z2lucyQubmV4dChhY3R1YWxSZW1vdGVzKTtcbiAgICByZXR1cm4geyAuLi50aGlzLnJlbW90ZVBsdWdpbnMkLnZhbHVlIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFwcGxpY2F0aW9uTU8oKTogUHJvbWlzZTxJQXBwbGljYXRpb24+IHtcbiAgICBsZXQgaWQgPSB0aGlzLmFwcElkO1xuICAgIGlmICghaWQpIHtcbiAgICAgIGNvbnN0IHsgaWQ6IHJvdXRlSWQgfSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyZW50LmRhdGEuY29udGV4dERhdGE7XG4gICAgICBpZCA9IHJvdXRlSWQ7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuYXBwID0gYXdhaXQgdGhpcy5lY29zeXN0ZW1TZXJ2aWNlLmdldEFwcGxpY2F0aW9uKGlkKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgaWYgKGVyKSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcHA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFwcGxpY2F0aW9uTUZFeHBvcnRzKGFwcDogSUFwcGxpY2F0aW9uKSB7XG4gICAgY29uc3QgZXhwb3J0cyA9IHRoaXMucGx1Z2luc1NlcnZpY2UuZ2V0TUZFeHBvcnRzKGFwcCwgW10sIHRydWUpO1xuICAgIHJldHVybiBleHBvcnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRBcHBsaWNhdGlvbk1GUmVtb3RlcyhhcHA6IElBcHBsaWNhdGlvbikge1xuICAgIGNvbnN0IGFwcENvbmZpZ1JlbW90ZXMgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmdldE1GUmVtb3RlcyhhcHApO1xuICAgIHRoaXMucmVtb3RlUGx1Z2lucyQubmV4dChhcHBDb25maWdSZW1vdGVzIHx8IHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QWxsQXBwbGljYXRpb25zTUZFeHBvcnRzKGFwcDogSUFwcGxpY2F0aW9uKSB7XG4gICAgY29uc3QgZXhwb3J0ZWRCeUN1cnJlbnRBcHAgPSBhd2FpdCB0aGlzLmdldEFwcGxpY2F0aW9uTUZFeHBvcnRzKGFwcCk7XG4gICAgY29uc3QgYWxsQXBwc01GRXhwb3J0cyA9IGF3YWl0IHRoaXMucGx1Z2luc1NlcnZpY2UuZ2V0QWxsTUZFeHBvcnRzKHRydWUpO1xuICAgIHRoaXMuYWxsQXZhaWxhYmxlUGx1Z2lucyQubmV4dChbLi4uYWxsQXBwc01GRXhwb3J0cywgLi4uZXhwb3J0ZWRCeUN1cnJlbnRBcHBdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QWxsU2VsZk1GRXhwb3J0cyhhcHA6IElBcHBsaWNhdGlvbikge1xuICAgIGNvbnN0IGV4cG9ydGVkQnlDdXJyZW50QXBwID0gYXdhaXQgdGhpcy5nZXRBcHBsaWNhdGlvbk1GRXhwb3J0cyhhcHApO1xuICAgIHRoaXMuc2VsZlBsdWdpbnMkLm5leHQoZXhwb3J0ZWRCeUN1cnJlbnRBcHAuZmlsdGVyKCh7IHNjb3BlIH0pID0+IHNjb3BlID09PSAnc2VsZicpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5zdGFsbE1vZGFsSW5pdFN0YXRlKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBsdWdpbnMkOiBjb21iaW5lTGF0ZXN0KFt0aGlzLmFsbEF2YWlsYWJsZVBsdWdpbnMkLCB0aGlzLmluc3RhbGxlZFBsdWdpbnMkXSkucGlwZShcbiAgICAgICAgbWFwKChbYWxsUGx1Z2lucywgaW5zdGFsbGVkUGx1Z2luc10pID0+IHtcbiAgICAgICAgICAvLyB0byBub3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBhcnJheSBhbmQgb2JqZWN0cyBjb250YWluZWQgaW4gaXRcbiAgICAgICAgICBjb25zdCBhbGxQbHVnaW5zQXNOZXdPYmplY3RzID0gYWxsUGx1Z2lucy5tYXAocCA9PiAoeyAuLi5wIH0pKTtcblxuICAgICAgICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIGluc3RhbGxlZFBsdWdpbnMpIHtcbiAgICAgICAgICAgIGxldCBpbnN0YWxsZWRQbHVnaW4gPSBhbGxQbHVnaW5zQXNOZXdPYmplY3RzLmZpbmQocCA9PiBwLmlkID09PSBwbHVnaW4uaWQpO1xuXG4gICAgICAgICAgICBpZiAoIWluc3RhbGxlZFBsdWdpbiAmJiBwbHVnaW4uaW5zdGFsbGVkVmlhVGFnKSB7XG4gICAgICAgICAgICAgIGluc3RhbGxlZFBsdWdpbiA9IGFsbFBsdWdpbnNBc05ld09iamVjdHMuZmluZChcbiAgICAgICAgICAgICAgICBwID0+XG4gICAgICAgICAgICAgICAgICBwLmNvbnRleHRQYXRoID09PSBwbHVnaW4uY29udGV4dFBhdGggJiZcbiAgICAgICAgICAgICAgICAgIHAubW9kdWxlID09PSBwbHVnaW4ubW9kdWxlICYmXG4gICAgICAgICAgICAgICAgICBwLnRhZ3M/LmluY2x1ZGVzKHBsdWdpbi5pbnN0YWxsZWRWaWFUYWcgYXMgc3RyaW5nKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaW5zdGFsbGVkUGx1Z2luKSB7XG4gICAgICAgICAgICAgIGluc3RhbGxlZFBsdWdpbi5pbnN0YWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWxsUGx1Z2luc0FzTmV3T2JqZWN0cy5tYXAocCA9PiAoeyAuLi5wLCBpbnN0YWxsZWQ6ICEhcC5pbnN0YWxsZWQgfSkpO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgIClcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcnBoYW5lZFBsdWdpbnMoXG4gICAgb3JwaGFuZWRQbHVnaW5JZHM6IHN0cmluZ1tdLFxuICAgIGFsbFBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW11cbiAgKTogQXBwbGljYXRpb25QbHVnaW5bXSB7XG4gICAgY29uc3Qgb3JwaGFuZWRQbHVnaW5zOiBBcHBsaWNhdGlvblBsdWdpbltdID0gb3JwaGFuZWRQbHVnaW5JZHMubWFwKHAgPT4gdGhpcy5leHRyYWN0RGV0YWlscyhwKSk7XG4gICAgY29uc3Qgb3JwaGFuZWRQbHVnaW5zVXBkYXRlZCA9IG9ycGhhbmVkUGx1Z2lucy5tYXAocCA9PiB7XG4gICAgICBjb25zdCBwbHVnaW5XaXRoTWF0Y2hpbmdUYWcgPSBhbGxQbHVnaW5zLmZpbmQoXG4gICAgICAgIHRtcCA9PlxuICAgICAgICAgIHRtcC5jb250ZXh0UGF0aCA9PT0gcC5jb250ZXh0UGF0aCAmJlxuICAgICAgICAgIHRtcC5tb2R1bGUgPT09IHAubW9kdWxlICYmXG4gICAgICAgICAgdG1wLnRhZ3M/LmluY2x1ZGVzKHAudmVyc2lvbiB8fCAnbGF0ZXN0JylcbiAgICAgICk7XG4gICAgICBpZiAocGx1Z2luV2l0aE1hdGNoaW5nVGFnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucGx1Z2luV2l0aE1hdGNoaW5nVGFnLFxuICAgICAgICAgIGlkOiBwLmlkLFxuICAgICAgICAgIHN0YXR1czogQXBwbGljYXRpb25QbHVnaW5TdGF0dXMuQVVUTyxcbiAgICAgICAgICBpbnN0YWxsZWRWaWFUYWc6IHAudmVyc2lvbiB8fCAnbGF0ZXN0J1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGx1Z2luSW5EaWZmZXJlbnRWZXJzaW9uID0gYWxsUGx1Z2lucy5maW5kKFxuICAgICAgICB0bXAgPT4gdG1wLmNvbnRleHRQYXRoID09PSBwLmNvbnRleHRQYXRoICYmIHRtcC5tb2R1bGUgPT09IHAubW9kdWxlXG4gICAgICApO1xuICAgICAgaWYgKHBsdWdpbkluRGlmZmVyZW50VmVyc2lvbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnBsdWdpbkluRGlmZmVyZW50VmVyc2lvbixcbiAgICAgICAgICB2ZXJzaW9uOiBwLnZlcnNpb24sXG4gICAgICAgICAgaWQ6IHAuaWQsXG4gICAgICAgICAgc3RhdHVzOiBBcHBsaWNhdGlvblBsdWdpblN0YXR1cy5PVVREQVRFRFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHA7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb3JwaGFuZWRQbHVnaW5zVXBkYXRlZDtcbiAgfVxuXG4gIHByaXZhdGUgc3BsaXRPcnBoYW5lZFBsdWdpbnNJbnRvT3JwaGFuZWRBbmRSZXZva2VkUGx1Z2lucyhcbiAgICBhbGxQbHVnaW5zOiBBcHBsaWNhdGlvblBsdWdpbltdLFxuICAgIG9ycGhhbmVkUGx1Z2luczogQXBwbGljYXRpb25QbHVnaW5bXVxuICApIHtcbiAgICBjb25zdCByZXZva2VkUGx1Z2lucyA9IG5ldyBBcnJheTxBcHBsaWNhdGlvblBsdWdpbj4oKTtcbiAgICBjb25zdCBhY3R1YWxseU9ycGhhbmVkUGx1Z2lucyA9IG5ldyBBcnJheTxBcHBsaWNhdGlvblBsdWdpbj4oKTtcblxuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIG9ycGhhbmVkUGx1Z2lucykge1xuICAgICAgY29uc3QgZm91bmRGYW1pbGlhclBsdWdpbiA9IGFsbFBsdWdpbnMuZmluZChcbiAgICAgICAgcGx1Z2luMSA9PiBwbHVnaW4uY29udGV4dFBhdGggPT09IHBsdWdpbjEuY29udGV4dFBhdGggJiYgcGx1Z2luLm1vZHVsZSA9PT0gcGx1Z2luMS5tb2R1bGVcbiAgICAgICk7XG4gICAgICBpZiAoZm91bmRGYW1pbGlhclBsdWdpbikge1xuICAgICAgICByZXZva2VkUGx1Z2lucy5wdXNoKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sIGZvdW5kRmFtaWxpYXJQbHVnaW4sIHBsdWdpbiwge1xuICAgICAgICAgICAgc3RhdHVzOiBBcHBsaWNhdGlvblBsdWdpblN0YXR1cy5SRVZPS0VEXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdHVhbGx5T3JwaGFuZWRQbHVnaW5zLnB1c2gocGx1Z2luKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyByZXZva2VkUGx1Z2lucywgYWN0dWFsbHlPcnBoYW5lZFBsdWdpbnMgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5zdGFsbGVkUGx1Z2lucyhcbiAgICBhbGxQbHVnaW5zOiBBcHBsaWNhdGlvblBsdWdpbltdLFxuICAgIHJlbW90ZVBsdWdpbnM6IHN0cmluZ1tdXG4gICk6IEFwcGxpY2F0aW9uUGx1Z2luW10ge1xuICAgIGNvbnN0IGF2YWlsYWJsZVBsdWdpbnMgPSBhbGxQbHVnaW5zXG4gICAgICAuZmlsdGVyKHBsdWdpbiA9PiByZW1vdGVQbHVnaW5zLmluY2x1ZGVzKHBsdWdpbi5pZCkpXG4gICAgICAubWFwKHBsdWdpbiA9PlxuICAgICAgICBPYmplY3QuYXNzaWduKHBsdWdpbiwge1xuICAgICAgICAgIHN0YXR1czogcGx1Z2luLnRhZ3M/LmluY2x1ZGVzKCdsYXRlc3QnKVxuICAgICAgICAgICAgPyBBcHBsaWNhdGlvblBsdWdpblN0YXR1cy5MQVRFU1RcbiAgICAgICAgICAgIDogQXBwbGljYXRpb25QbHVnaW5TdGF0dXMuT1VUREFURURcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgY29uc3Qgb3JwaGFuZWRQbHVnaW5JZHMgPSByZW1vdGVQbHVnaW5zLmZpbHRlcihcbiAgICAgIHIgPT4gIWF2YWlsYWJsZVBsdWdpbnMuZmluZChwbHVnaW4gPT4gcGx1Z2luLmlkID09PSByKVxuICAgICk7XG4gICAgY29uc3Qgb3JwaGFuZWRQbHVnaW5zOiBBcHBsaWNhdGlvblBsdWdpbltdID0gdGhpcy5nZXRPcnBoYW5lZFBsdWdpbnMoXG4gICAgICBvcnBoYW5lZFBsdWdpbklkcyxcbiAgICAgIGFsbFBsdWdpbnNcbiAgICApO1xuXG4gICAgY29uc3Qgbm90QWN0dWFsbHlPcnBoYW5lZFBsdWdpbnMgPSBvcnBoYW5lZFBsdWdpbnMuZmlsdGVyKFxuICAgICAgcCA9PiBwLnN0YXR1cyA9PT0gQXBwbGljYXRpb25QbHVnaW5TdGF0dXMuQVVUT1xuICAgICk7XG5cbiAgICBjb25zdCBvcnBoYW5lZE9yUmV2b2tlZFBsdWdpbnMgPSBvcnBoYW5lZFBsdWdpbnMuZmlsdGVyKFxuICAgICAgcCA9PiBwLnN0YXR1cyAhPT0gQXBwbGljYXRpb25QbHVnaW5TdGF0dXMuQVVUT1xuICAgICk7XG5cbiAgICBjb25zdCB7IGFjdHVhbGx5T3JwaGFuZWRQbHVnaW5zLCByZXZva2VkUGx1Z2lucyB9ID1cbiAgICAgIHRoaXMuc3BsaXRPcnBoYW5lZFBsdWdpbnNJbnRvT3JwaGFuZWRBbmRSZXZva2VkUGx1Z2lucyhhbGxQbHVnaW5zLCBvcnBoYW5lZE9yUmV2b2tlZFBsdWdpbnMpO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmF2YWlsYWJsZVBsdWdpbnMsXG4gICAgICAuLi5ub3RBY3R1YWxseU9ycGhhbmVkUGx1Z2lucyxcbiAgICAgIC4uLnJldm9rZWRQbHVnaW5zLFxuICAgICAgLi4uYWN0dWFsbHlPcnBoYW5lZFBsdWdpbnNcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0RGV0YWlscyhwbHVnaW5JZDogc3RyaW5nKTogQXBwbGljYXRpb25QbHVnaW4ge1xuICAgIGNvbnN0IGNvbnRleHRQYXRoID0gdGhpcy5nZXRTdHJpbmdNYXRjaGluZ1JlZ2V4KHBsdWdpbklkLCAvXlteQF0qKEB8XFwvKS8pO1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFN0cmluZ01hdGNoaW5nUmVnZXgocGx1Z2luSWQsIC9ALipcXC8vKTtcbiAgICBjb25zdCBtb2R1bGUgPSB0aGlzLmdldFN0cmluZ01hdGNoaW5nUmVnZXgocGx1Z2luSWQsIC9cXC8uKiQvKTtcbiAgICBjb25zdCB1bmF2YWlsYWJsZSA9IGdldHRleHQoJ3VuYXZhaWxhYmxlYHBsdWdpbmAnKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHBsdWdpbklkLFxuICAgICAgaWRMYXRlc3Q6IGAke2NvbnRleHRQYXRofS8ke21vZHVsZX1gLFxuICAgICAgcGF0aDogJycsXG4gICAgICBtb2R1bGUsXG4gICAgICBuYW1lOiBtb2R1bGUsXG4gICAgICBzdGF0dXM6IEFwcGxpY2F0aW9uUGx1Z2luU3RhdHVzLk9SUEhBTkVELFxuICAgICAgY29udGV4dFBhdGg6IGNvbnRleHRQYXRoLFxuICAgICAgZGVzY3JpcHRpb246IHVuYXZhaWxhYmxlLFxuICAgICAgdmVyc2lvbjogdmVyc2lvblxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFN0cmluZ01hdGNoaW5nUmVnZXgoXG4gICAgc3RyOiBzdHJpbmcsXG4gICAgcmVnZXg6IHsgW1N5bWJvbC5tYXRjaF0oc3RyaW5nOiBzdHJpbmcpOiBSZWdFeHBNYXRjaEFycmF5IHwgbnVsbCB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHN0ci5tYXRjaChyZWdleCk7XG4gICAgY29uc3QgdmFsdWUgPSBtYXRjaGVzID8gbWF0Y2hlc1swXSA6ICcnO1xuXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLyhAfFxcLykvZywgJycpO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7IGFwcCB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWF0b20nXCJcbiAgICBbbGFiZWxdPVwiJ0Vjb3N5c3RlbScgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktbW9kdWxlcydcIlxuICAgIFtsYWJlbF09XCInQXBwbGljYXRpb25zJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi9hcHBsaWNhdGlvbnMnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW0gW2xhYmVsXT1cImFwcCB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwiJ1BsdWdpbnMnIHwgdHJhbnNsYXRlXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgKm5nSWY9XCIhKGlzU3RhbmRhcmQkIHwgYXN5bmMpXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdSZXNldCB0byBkZWZhdWx0IHBsdWdpbnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IGlzTG9hZGluZyB9XCJcbiAgICAoY2xpY2spPVwicmVzZXRUb0RlZmF1bHQoKVwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwidW5kb1wiPjwvaT5cbiAgICB7eyAnUmVzZXQgdG8gZGVmYXVsdCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ0luc3RhbGwgcGx1Z2lucycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIChjbGljayk9XCJpbnN0YWxsUGx1Z2lucygpXCJcbiAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IGlzTG9hZGluZyB9XCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICB7eyAnSW5zdGFsbCBwbHVnaW5zJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9ycGhhbmVkUGx1Z2lucyQgfCBhc3luYyBhcyBvcnBoYW5lZFBsdWdpbnNcIj5cbiAgPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgICAqbmdJZj1cIm9ycGhhbmVkUGx1Z2lucz8ubGVuZ3RoXCJcbiAgICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgICAgdGl0bGU9XCJ7eyAnQ2xlYW4gdXAgb3JwaGFuZWQgcGx1Z2lucycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgKGNsaWNrKT1cImNsZWFudXBPcnBoYW5lZFBsdWdpbnMob3JwaGFuZWRQbHVnaW5zKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IGlzTG9hZGluZyB9XCJcbiAgICA+XG4gICAgICA8aSBjOHlJY29uPVwiZXJhc2VcIj48L2k+XG4gICAgICB7eyAnQ2xlYW4gdXAgb3JwaGFuZWQgcGx1Z2lucycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgY2xhc3M9XCJjb250ZW50LWZ1bGxwYWdlIGQtZmxleCBkLWNvbCBib3JkZXItdG9wXCI+XG4gIDxjOHktZGF0YS1ncmlkXG4gICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgIFtsb2FkTW9yZUl0ZW1zTGFiZWxdPVwibG9hZE1vcmVJdGVtc0xhYmVsXCJcbiAgICBbbG9hZGluZ0l0ZW1zTGFiZWxdPVwibG9hZGluZ0l0ZW1zTGFiZWxcIlxuICAgIFtkaXNwbGF5T3B0aW9uc109XCJkaXNwbGF5T3B0aW9uc1wiXG4gICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgW3Jvd3NdPVwiaW5zdGFsbGVkUGx1Z2lucyQgfCBhc3luY1wiXG4gICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiXG4gICAgW2FjdGlvbkNvbnRyb2xzXT1cImFjdGlvbkNvbnRyb2xzXCJcbiAgICBbYnVsa0FjdGlvbkNvbnRyb2xzXT1cImJ1bGtBY3Rpb25Db250cm9sc1wiXG4gICAgW2hlYWRlckFjdGlvbkNvbnRyb2xzXT1cImhlYWRlckFjdGlvbkNvbnRyb2xzXCJcbiAgICAob25SZWxvYWQpPVwicmVmcmVzaCgpXCJcbiAgPlxuICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgIFtpY29uXT1cInN0YXRzPy5zaXplID4gMCA/ICdzZWFyY2gnIDogJ3BsdWdpbidcIlxuICAgICAgW3RpdGxlXT1cInN0YXRzPy5zaXplID4gMCA/IChub1Jlc3VsdHNNZXNzYWdlIHwgdHJhbnNsYXRlKSA6IChub0RhdGFNZXNzYWdlIHwgdHJhbnNsYXRlKVwiXG4gICAgICBbc3VidGl0bGVdPVwic3RhdHM/LnNpemUgPiAwID8gKG5vUmVzdWx0c1N1YnRpdGxlIHwgdHJhbnNsYXRlKSA6IChub0RhdGFTdWJ0aXRsZSB8IHRyYW5zbGF0ZSlcIlxuICAgICAgKmVtcHR5U3RhdGVDb250ZXh0PVwibGV0IHN0YXRzXCJcbiAgICAgIFtob3Jpem9udGFsXT1cInN0YXRzPy5zaXplID4gMFwiXG4gICAgPlxuICAgICAgPHAgKm5nSWY9XCJzdGF0cz8uc2l6ZSA9PT0gMFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdJbnN0YWxsIHBsdWdpbnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAoY2xpY2spPVwiaW5zdGFsbFBsdWdpbnMoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnYnRuLXBlbmRpbmcnOiBpc0xvYWRpbmcgfVwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgID5cbiAgICAgICAgICBJbnN0YWxsIHBsdWdpbnNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3A+XG4gICAgPC9jOHktdWktZW1wdHktc3RhdGU+XG4gIDwvYzh5LWRhdGEtZ3JpZD5cbjwvZGl2PlxuIl19
484
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tcGx1Z2lucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vYXBwbGljYXRpb24tcGx1Z2lucy9hcHBsaWNhdGlvbi1wbHVnaW5zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi1wbHVnaW5zL2FwcGxpY2F0aW9uLXBsdWdpbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUVMLFlBQVksRUFFWix1QkFBdUIsRUFHdkIsaUJBQWlCLEVBRWpCLGdCQUFnQixFQUNoQixPQUFPLEVBSVAsY0FBYyxFQUNkLG1CQUFtQixFQUNwQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsNEJBQTRCLEVBQzdCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRixPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSww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QUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVtb3RlUGx1Z2lucywgSUFwcGxpY2F0aW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWN0aW9uQ29udHJvbCxcbiAgQWxlcnRTZXJ2aWNlLFxuICBBcHBsaWNhdGlvblBsdWdpbixcbiAgQXBwbGljYXRpb25QbHVnaW5TdGF0dXMsXG4gIEJ1bGtBY3Rpb25Db250cm9sLFxuICBDb2x1bW4sXG4gIERhdGFHcmlkQ29tcG9uZW50LFxuICBEaXNwbGF5T3B0aW9ucyxcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgSGVhZGVyQWN0aW9uQ29udHJvbCxcbiAgUGFnaW5hdGlvbixcbiAgUGx1Z2luc0NvbmZpZyxcbiAgUGx1Z2luc1NlcnZpY2UsXG4gIFBsdWdpbnNFeHBvcnRTY29wZXNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBFY29zeXN0ZW1TZXJ2aWNlLFxuICBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5zdGFsbFBsdWdpbkNvbXBvbmVudCB9IGZyb20gJy4vaW5zdGFsbC1wbHVnaW4uY29tcG9uZW50JztcbmltcG9ydCB7IExhYmVsQ2VsbFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9sYWJlbC1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcnBoYW5lZFN0YXR1c0NlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vb3JwaGFuZWQtc3RhdHVzLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFVwZGF0ZVBsdWdpbk9mQXBwQ29tcG9uZW50IH0gZnJvbSAnLi91cGRhdGUtcGx1Z2luLW9mLWFwcC91cGRhdGUtcGx1Z2luLW9mLWFwcC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYXBwLXBsdWdpbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwbGljYXRpb24tcGx1Z2lucy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25QbHVnaW5zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBQUk9EVUNUX0VYUEVSSUVOQ0UgPSBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNO1xuICBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcblxuICBASW5wdXQoKSBhcHBJZDogc3RyaW5nIHwgbnVtYmVyO1xuICBAVmlld0NoaWxkKERhdGFHcmlkQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZGF0YUdyaWQ6IERhdGFHcmlkQ29tcG9uZW50O1xuXG4gIHJlbW90ZVBsdWdpbnMkOiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25SZW1vdGVQbHVnaW5zPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuICBhbGxBdmFpbGFibGVQbHVnaW5zJDogQmVoYXZpb3JTdWJqZWN0PEFwcGxpY2F0aW9uUGx1Z2luW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG4gIHNlbGZQbHVnaW5zJDogQmVoYXZpb3JTdWJqZWN0PEFwcGxpY2F0aW9uUGx1Z2luW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgaW5zdGFsbGVkUGx1Z2lucyQ6IE9ic2VydmFibGU8QXBwbGljYXRpb25QbHVnaW5bXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnJlbW90ZVBsdWdpbnMkLnBpcGUobWFwKHJlbW90ZXMgPT4gUGx1Z2luc1NlcnZpY2UuY29udmVydEluc3RhbGxlZFJlbW90ZXNUb0lkcyhyZW1vdGVzKSkpLFxuICAgIHRoaXMuYWxsQXZhaWxhYmxlUGx1Z2lucyRcbiAgXSkucGlwZShcbiAgICBtYXAoKFtyZW1vdGVQbHVnaW5zLCBhbGxQbHVnaW5zXSkgPT4gdGhpcy5nZXRJbnN0YWxsZWRQbHVnaW5zKGFsbFBsdWdpbnMsIHJlbW90ZVBsdWdpbnMpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuICBvcnBoYW5lZFBsdWdpbnMkID0gdGhpcy5pbnN0YWxsZWRQbHVnaW5zJC5waXBlKFxuICAgIG1hcChwbHVnaW5zID0+IHBsdWdpbnMuZmlsdGVyKHAgPT4gcC5zdGF0dXMgPT09IEFwcGxpY2F0aW9uUGx1Z2luU3RhdHVzLk9SUEhBTkVEKSlcbiAgKTtcbiAgaXNTdGFuZGFyZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmluc3RhbGxlZFBsdWdpbnMkLCB0aGlzLnNlbGZQbHVnaW5zJF0pLnBpcGUoXG4gICAgbWFwKChbaW5zdGFsbGVkUGx1Z2lucywgc2VsZlBsdWdpbnNdKSA9PiB7XG4gICAgICBjb25zdCBtYW5pZmVzdFJlbW90ZXMgPSB0aGlzLmFwcD8ubWFuaWZlc3Q/LnJlbW90ZXMgfHwge307XG4gICAgICAvLyBlbnN1cmUgdGhhdCBldmVyeSBpbnN0YWxsZWQgcGx1Z2luIGlzIGEgc2VsZiBwbHVnaW4gb3IgYSBwbHVnaW4gZnJvbSB0aGUgbWFuaWZlc3RcbiAgICAgIGNvbnN0IGFsbEluc3RhbGxlZFBsdWdpbnNBcmVTZWxmID0gaW5zdGFsbGVkUGx1Z2lucy5ldmVyeShcbiAgICAgICAgcCA9PlxuICAgICAgICAgIHNlbGZQbHVnaW5zLnNvbWUoc2VsZlBsdWdpbiA9PiBzZWxmUGx1Z2luLmlkID09PSBwLmlkKSB8fFxuICAgICAgICAgIChBcnJheS5pc0FycmF5KG1hbmlmZXN0UmVtb3Rlc1twLmNvbnRleHRQYXRoXSkgJiZcbiAgICAgICAgICAgIG1hbmlmZXN0UmVtb3Rlc1twLmNvbnRleHRQYXRoXS5pbmNsdWRlcyhwLm1vZHVsZSkpXG4gICAgICApO1xuXG4gICAgICAvLyBlbnN1cmUgdGhhdCBldmVyeSBzZWxmIHBsdWdpbiBpcyBpbnN0YWxsZWRcbiAgICAgIGNvbnN0IGFsbFNlbGZQbHVnaW5zQXJlSW5zdGFsbGVkID0gc2VsZlBsdWdpbnMuZXZlcnkoc2VsZlBsdWdpbiA9PlxuICAgICAgICBpbnN0YWxsZWRQbHVnaW5zLnNvbWUocCA9PiBwLmlkID09PSBzZWxmUGx1Z2luLmlkKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNvbmZpZ1JlbW90ZXMgPSB0aGlzLmFwcD8uY29uZmlnPy5yZW1vdGVzIHx8IHt9O1xuXG4gICAgICAvLyBlbnN1cmUgdGhhdCBldmVyeSByZW1vdGUgZnJvbSB0aGUgbWFuaWZlc3QgaXMgaW4gdGhlIGNvbmZpZ1xuICAgICAgLy8gaWYgbm8gY29uZmlnIGV4aXN0cyB3ZSBhcmUgYWxzbyBhbGwgZ29vZFxuICAgICAgY29uc3QgZXZlcnlSZW1vdGVGcm9tTWFuaWZlc3RJc0luQ29uZmlnID1cbiAgICAgICAgIXRoaXMuYXBwPy5jb25maWc/LnJlbW90ZXMgfHxcbiAgICAgICAgT2JqZWN0LmtleXMobWFuaWZlc3RSZW1vdGVzKS5ldmVyeShcbiAgICAgICAgICBjb250ZXh0UGF0aCA9PlxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjb25maWdSZW1vdGVzW2NvbnRleHRQYXRoXSkgJiZcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkobWFuaWZlc3RSZW1vdGVzW2NvbnRleHRQYXRoXSkgJiZcbiAgICAgICAgICAgIG1hbmlmZXN0UmVtb3Rlc1tjb250ZXh0UGF0aF0uZXZlcnkobW9kdWxlID0+XG4gICAgICAgICAgICAgIGNvbmZpZ1JlbW90ZXNbY29udGV4dFBhdGhdLmluY2x1ZGVzKG1vZHVsZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgYWxsSW5zdGFsbGVkUGx1Z2luc0FyZVNlbGYgJiZcbiAgICAgICAgYWxsU2VsZlBsdWdpbnNBcmVJbnN0YWxsZWQgJiZcbiAgICAgICAgZXZlcnlSZW1vdGVGcm9tTWFuaWZlc3RJc0luQ29uZmlnXG4gICAgICApO1xuICAgIH0pXG4gICk7XG4gIGFwcDogSUFwcGxpY2F0aW9uO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIHRpdGxlOiBzdHJpbmcgPSBnZXR0ZXh0KCdJbnN0YWxsZWQgcGx1Z2lucycpO1xuICBsb2FkTW9yZUl0ZW1zTGFiZWw6IHN0cmluZyA9IGdldHRleHQoJ0xvYWQgbW9yZSBwYWNrYWdlcycpO1xuICBsb2FkaW5nSXRlbXNMYWJlbDogc3RyaW5nID0gZ2V0dGV4dCgnTG9hZGluZyBwYWNrYWdlc+KApicpO1xuICBhY3Rpb25Db250cm9sczogQWN0aW9uQ29udHJvbFtdID0gdGhpcy5nZXRBY3Rpb25Db250cm9scygpO1xuICBidWxrQWN0aW9uQ29udHJvbHM6IEJ1bGtBY3Rpb25Db250cm9sW10gPSB0aGlzLmdldEJ1bGtBY3Rpb25Db250cm9scygpO1xuICBoZWFkZXJBY3Rpb25Db250cm9sczogSGVhZGVyQWN0aW9uQ29udHJvbFtdID0gW107XG4gIG5vUmVzdWx0c01lc3NhZ2UgPSBnZXR0ZXh0KCdObyBwbHVnaW5zIHRvIGRpc3BsYXkuJyk7XG4gIG5vRGF0YU1lc3NhZ2UgPSBnZXR0ZXh0KCdObyBwbHVnaW5zIGluc3RhbGxlZC4nKTtcbiAgbm9SZXN1bHRzU3VidGl0bGUgPSBnZXR0ZXh0KCdSZWZpbmUgeW91ciBzZWFyY2ggdGVybXMgb3IgY2hlY2sgeW91ciBzcGVsbGluZy4nKTtcbiAgbm9EYXRhU3VidGl0bGUgPSBnZXR0ZXh0KFwiVGhpcyBhcHBsaWNhdGlvbiBkb2Vzbid0IGhhdmUgYW55IHBsdWdpbi4gQ2xpY2sgYmVsb3cgdG8gaW5zdGFsbC5cIik7XG4gIHBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB7XG4gICAgcGFnZVNpemU6IDEwLFxuICAgIGN1cnJlbnRQYWdlOiAxXG4gIH07XG4gIGRpc3BsYXlPcHRpb25zOiBEaXNwbGF5T3B0aW9ucyA9IHtcbiAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgc3RyaXBlZDogdHJ1ZSxcbiAgICBmaWx0ZXI6IHRydWUsXG4gICAgZ3JpZEhlYWRlcjogdHJ1ZSxcbiAgICBob3ZlcjogdHJ1ZVxuICB9O1xuICBjb2x1bW5zOiBDb2x1bW5bXSA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnbmFtZScsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ1BsdWdpbiBuYW1lJyksXG4gICAgICBwYXRoOiAnbmFtZScsXG4gICAgICBmaWx0ZXJhYmxlOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnVmVyc2lvbicsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ1ZlcnNpb24nKSxcbiAgICAgIHBhdGg6ICd2ZXJzaW9uJyxcbiAgICAgIGZpbHRlcmFibGU6IGZhbHNlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnVGFnJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnVGFnYG5vdW5gJyksXG4gICAgICBwYXRoOiAnaW5zdGFsbGVkVmlhVGFnJyxcbiAgICAgIGZpbHRlcmFibGU6IGZhbHNlLFxuICAgICAgY2VsbFJlbmRlcmVyQ29tcG9uZW50OiBMYWJlbENlbGxSZW5kZXJlckNvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnRGVzY3JpcHRpb24nKSxcbiAgICAgIHBhdGg6ICdkZXNjcmlwdGlvbicsXG4gICAgICBmaWx0ZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNlbGxDU1NDbGFzc05hbWU6ICdzbWFsbCdcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdjb250ZXh0UGF0aCcsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ1NvdXJjZScpLFxuICAgICAgcGF0aDogJ2NvbnRleHRQYXRoJyxcbiAgICAgIGZpbHRlcmFibGU6IGZhbHNlLFxuICAgICAgY2VsbFJlbmRlcmVyQ29tcG9uZW50OiBMYWJlbENlbGxSZW5kZXJlckNvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Njb3BlJyxcbiAgICAgIGhlYWRlcjogZ2V0dGV4dCgnU2NvcGUnKSxcbiAgICAgIHBhdGg6ICdzY29wZScsXG4gICAgICBmaWx0ZXJhYmxlOiBmYWxzZSxcbiAgICAgIHZpc2libGU6IGZhbHNlLFxuICAgICAgY2VsbFJlbmRlcmVyQ29tcG9uZW50OiBMYWJlbENlbGxSZW5kZXJlckNvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3N0YXR1cycsXG4gICAgICBoZWFkZXI6IGdldHRleHQoJ1N0YXR1cycpLFxuICAgICAgcGF0aDogJ3N0YXR1cycsXG4gICAgICBmaWx0ZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNlbGxSZW5kZXJlckNvbXBvbmVudDogT3JwaGFuZWRTdGF0dXNDZWxsUmVuZGVyZXJDb21wb25lbnRcbiAgICB9XG4gIF07XG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZWNvc3lzdGVtU2VydmljZTogRWNvc3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHBsdWdpbnNTZXJ2aWNlOiBQbHVnaW5zU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hZGRJbnN0YWxsQnV0dG9uVG9IZWFkZXJBY3Rpb25Db250cm9scygpO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWREYXRhKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBhd2FpdCB0aGlzLmdldEFwcGxpY2F0aW9uTU8oKTtcbiAgICBhd2FpdCB0aGlzLmdldEFwcGxpY2F0aW9uTUZSZW1vdGVzKHRoaXMuYXBwKTtcbiAgICBhd2FpdCB0aGlzLmdldEFsbEFwcGxpY2F0aW9uc01GRXhwb3J0cyh0aGlzLmFwcCk7XG4gICAgYXdhaXQgdGhpcy5nZXRBbGxTZWxmTUZFeHBvcnRzKHRoaXMuYXBwKTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgcmVzZXRUb0RlZmF1bHQoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIGF3YWl0IHRoaXMucGx1Z2luc1NlcnZpY2UucmVzZXRSZW1vdGVzKHRoaXMuYXBwKTtcbiAgICBhd2FpdCB0aGlzLmxvYWREYXRhKCk7XG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdUaGUgYXBwbGljYXRpb24gd2FzIHJlc2V0IHRvIGl0cyBkZWZhdWx0IHBsdWdpbnMuJykpO1xuICB9XG5cbiAgYXN5bmMgaW5zdGFsbFBsdWdpbnMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBsdWdpbnNUb0FkZDogQXBwbGljYXRpb25QbHVnaW5bXSA9XG4gICAgICAgIGF3YWl0IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdzxJbnN0YWxsUGx1Z2luQ29tcG9uZW50PihJbnN0YWxsUGx1Z2luQ29tcG9uZW50LCB7XG4gICAgICAgICAgY2xhc3M6ICdtb2RhbC1zbScsXG4gICAgICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICAgICAgaW5pdGlhbFN0YXRlOiB0aGlzLmdldEluc3RhbGxNb2RhbEluaXRTdGF0ZSgpLFxuICAgICAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWVcbiAgICAgICAgfSkuY29udGVudC5yZXN1bHQ7XG5cbiAgICAgIGNvbnN0IGxpY2Vuc2VzVmVyaWZpZWRCeVVzZXIgPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UudmVyaWZ5TGljZW5zZXMocGx1Z2luc1RvQWRkKTtcbiAgICAgIGlmICghbGljZW5zZXNWZXJpZmllZEJ5VXNlcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB2ZXJpZnlWZXJzaW9uQ29tcGF0aWJpbGl0eSA9XG4gICAgICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS52ZXJpZnlQbHVnaW5WZXJzaW9uc0NvbXBhdGliaWxpdHkocGx1Z2luc1RvQWRkLCB0aGlzLmFwcCk7XG5cbiAgICAgIGlmICghdmVyaWZ5VmVyc2lvbkNvbXBhdGliaWxpdHkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZVJlbW90ZXNJbnN0YWxsYXRpb24ocGx1Z2luc1RvQWRkKTtcblxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdQbHVnaW5zIGluc3RhbGxlZC4nKSk7XG4gICAgICBwbHVnaW5zVG9BZGQuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgICAgICBjb25zdCBwbHVnaW5DdXN0b21FdmVudEluZm8gPSBwaWNrKHBsdWdpbiwgW1xuICAgICAgICAgICduYW1lJyxcbiAgICAgICAgICAnY29udGV4dFBhdGgnLFxuICAgICAgICAgICdtb2R1bGUnLFxuICAgICAgICAgICd2ZXJzaW9uJyxcbiAgICAgICAgICAndHlwZScsXG4gICAgICAgICAgJ2lkJ1xuICAgICAgICBdIHNhdGlzZmllcyAoa2V5b2YgQXBwbGljYXRpb25QbHVnaW4pW10pO1xuXG4gICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuRVZFTlRTLklOU1RBTExFRF9QTFVHSU5TLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5BUFBMSUNBVElPTl9QTFVHSU5TLFxuICAgICAgICAgICAgcmVzdWx0OiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5SRVNVTFRTLlBMVUdJTl9JTlNUQUxMRUQsXG4gICAgICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTixcbiAgICAgICAgICAgIC4uLnBsdWdpbkN1c3RvbUV2ZW50SW5mbyxcbiAgICAgICAgICAgIHRhcmdldEFwcGxpY2F0aW9uTmFtZTogdGhpcy5hcHAubmFtZSxcbiAgICAgICAgICAgIHRhcmdldEFwcGxpY2F0aW9uQ29udGV4dFBhdGg6IHRoaXMuYXBwLmNvbnRleHRQYXRoXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmIChleCkge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChcbiAgICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5FVkVOVFMuSU5TVEFMTEVEX1BMVUdJTlMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLkFQUExJQ0FUSU9OX1BMVUdJTlMsXG4gICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLlJFU1VMVFMuU0VSVkVSX0ZBSUxVUkUsXG4gICAgICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTixcbiAgICAgICAgICAgIGVycm9yOiBleFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZW1vdmVQbHVnaW5zKHBsdWdpbnM6IHN0cmluZ1tdKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGluc3RhbGxlZFBsdWdpbnMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmluc3RhbGxlZFBsdWdpbnMkKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRSZW1vdGVzID0gYXdhaXQgdGhpcy5wbHVnaW5zU2VydmljZS5yZW1vdmVSZW1vdGVzKFxuICAgICAgICB0aGlzLmFwcCxcbiAgICAgICAgcGx1Z2lucy5tYXAoaWQgPT4gaW5zdGFsbGVkUGx1Z2lucy5maW5kKHAgPT4gcC5pZCA9PT0gaWQpKVxuICAgICAgKTtcbiAgICAgIHRoaXMuZW1pdFJlbW90ZXModXBkYXRlZFJlbW90ZXMpO1xuXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5kYXRhR3JpZC5jYW5jZWwoKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnUGx1Z2lucyByZW1vdmVkLicpKTtcbiAgICAgIHBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkVWRU5UUy5JTlNUQUxMRURfUExVR0lOUyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuQVBQTElDQVRJT05fUExVR0lOUyxcbiAgICAgICAgICAgIHJlc3VsdDogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuUkVTVUxUUy5QTFVHSU5fUkVNT1ZFRCxcbiAgICAgICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OLFxuICAgICAgICAgICAgaWQ6IHBsdWdpbixcbiAgICAgICAgICAgIHRhcmdldEFwcGxpY2F0aW9uTmFtZTogdGhpcy5hcHAubmFtZSxcbiAgICAgICAgICAgIHRhcmdldEFwcGxpY2F0aW9uQ29udGV4dFBhdGg6IHRoaXMuYXBwLmNvbnRleHRQYXRoXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmIChleCkge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChcbiAgICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5FVkVOVFMuSU5TVEFMTEVEX1BMVUdJTlMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLkFQUExJQ0FUSU9OX1BMVUdJTlMsXG4gICAgICAgICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLlJFU1VMVFMuU0VSVkVSX0ZBSUxVUkUsXG4gICAgICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTixcbiAgICAgICAgICAgIGVycm9yOiBleFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjbGVhbnVwT3JwaGFuZWRQbHVnaW5zKHBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10pIHtcbiAgICBjb25zdCBwbHVnaW5JZHMgPSBwbHVnaW5zLm1hcChwID0+IHAuaWQpO1xuICAgIGF3YWl0IHRoaXMucmVtb3ZlUGx1Z2lucyhwbHVnaW5JZHMpO1xuICB9XG5cbiAgZ2V0QWN0aW9uQ29udHJvbHMoKTogQWN0aW9uQ29udHJvbFtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnY3VzdG9tVXBkYXRlJyxcbiAgICAgICAgdGV4dDogZ2V0dGV4dCgnVXBkYXRlJyksXG4gICAgICAgIGljb246ICdjYXJldC1zcXVhcmUtby11cCcsXG4gICAgICAgIHNob3dJZjogcGx1Z2luID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgcGx1Z2luLnN0YXR1cyA9PT0gQXBwbGljYXRpb25QbHVnaW5TdGF0dXMuT1VUREFURUQgfHxcbiAgICAgICAgICAgIHBsdWdpbi5zdGF0dXMgPT09IEFwcGxpY2F0aW9uUGx1Z2luU3RhdHVzLlJFVk9LRURcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBjYWxsYmFjazogcGx1Z2luID0+IHRoaXMudXBkYXRlUGx1Z2luKHRoaXMuYXBwLCBwbHVnaW4gYXMgQXBwbGljYXRpb25QbHVnaW4pXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnY3VzdG9tRG93bmdyYWRlJyxcbiAgICAgICAgdGV4dDogZ2V0dGV4dCgnRG93bmdyYWRlJyksXG4gICAgICAgIGljb246ICdjYXJldC1zcXVhcmUtby1kb3duJyxcbiAgICAgICAgc2hvd0lmOiAocGx1Z2luOiBBcHBsaWNhdGlvblBsdWdpbikgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHBsdWdpbi5zY29wZSA9PT0gUGx1Z2luc0V4cG9ydFNjb3Blcy5TRUxGIHx8XG4gICAgICAgICAgICBwbHVnaW4uc2NvcGUgPT09IFBsdWdpbnNFeHBvcnRTY29wZXMuU0VMRl9PUFRJT05BTFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcGx1Z2luLnN0YXR1cyA9PT0gQXBwbGljYXRpb25QbHVnaW5TdGF0dXMuTEFURVNUO1xuICAgICAgICB9LFxuICAgICAgICBjYWxsYmFjazogcGx1Z2luID0+IHRoaXMudXBkYXRlUGx1Z2luKHRoaXMuYXBwLCBwbHVnaW4gYXMgQXBwbGljYXRpb25QbHVnaW4sIHRydWUpXG4gICAgICB9XG4gICAgXTtcbiAgfVxuXG4gIGdldEJ1bGtBY3Rpb25Db250cm9scygpOiBCdWxrQWN0aW9uQ29udHJvbFtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnY3VzdG9tRGVsZXRlJyxcbiAgICAgICAgdGV4dDogZ2V0dGV4dCgnUmVtb3ZlJyksXG4gICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgIGNhbGxiYWNrOiBwbHVnaW5zID0+IHRoaXMucmVtb3ZlUGx1Z2lucyhwbHVnaW5zKVxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBhc3luYyB1cGRhdGVQbHVnaW4oYXBwOiBJQXBwbGljYXRpb24sIHBsdWdpbjogQXBwbGljYXRpb25QbHVnaW4sIGRvd25ncmFkZSA9IGZhbHNlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IChcbiAgICAgICAgdGhpcy5ic01vZGFsU2VydmljZS5zaG93KFVwZGF0ZVBsdWdpbk9mQXBwQ29tcG9uZW50LCB7XG4gICAgICAgICAgY2xhc3M6ICdtb2RhbC1zbScsXG4gICAgICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICBhcHAsXG4gICAgICAgICAgICBwbHVnaW4sXG4gICAgICAgICAgICBkb3duZ3JhZGVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWVcbiAgICAgICAgfSkuY29udGVudCBhcyBVcGRhdGVQbHVnaW5PZkFwcENvbXBvbmVudFxuICAgICAgKS5yZXN1bHQ7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRJbnN0YWxsQnV0dG9uVG9IZWFkZXJBY3Rpb25Db250cm9scygpIHtcbiAgICBpZiAodGhpcy5hcHBJZCkge1xuICAgICAgdGhpcy5oZWFkZXJBY3Rpb25Db250cm9scyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0luc3RhbGwgcGx1Z2lucycpLFxuICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbGxQbHVnaW5zKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpY29uOiAncGx1cy1jaXJjbGUnLFxuICAgICAgICAgIHR5cGU6ICdjdXN0b20nXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVSZW1vdGVzSW5zdGFsbGF0aW9uKHBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10pIHtcbiAgICBjb25zdCB1cGRhdGVkUmVtb3RlcyA9IGF3YWl0IHRoaXMucGx1Z2luc1NlcnZpY2UuYWRkUmVtb3Rlcyh0aGlzLmFwcCwgcGx1Z2lucyk7XG4gICAgcmV0dXJuIHRoaXMuZW1pdFJlbW90ZXModXBkYXRlZFJlbW90ZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVtb3RlcyhwbHVnaW5zQ29uZmlnOiBQbHVnaW5zQ29uZmlnKSB7XG4gICAgY29uc3QgeyByZW1vdGVzLCBleGNsdWRlZFJlbW90ZXMgfSA9IHBsdWdpbnNDb25maWc7XG5cbiAgICAvLyBuZWVkZWQgZm9yIGZpcnN0IHRpbWUgYWRkaW5nL3JlbW92aW5nIGEgcGx1Z2luXG4gICAgaWYgKCF0aGlzLmFwcC5jb25maWcpIHtcbiAgICAgIHRoaXMuYXBwLmNvbmZpZyA9IHt9O1xuICAgIH1cblxuICAgIHRoaXMuYXBwLmNvbmZpZy5yZW1vdGVzID0gcmVtb3RlcztcbiAgICB0aGlzLmFwcC5jb25maWcuZXhjbHVkZWRSZW1vdGVzID0gZXhjbHVkZWRSZW1vdGVzO1xuICAgIGNvbnN0IGFjdHVhbFJlbW90ZXMgPSB0aGlzLnBsdWdpbnNTZXJ2aWNlLmdldE1GUmVtb3Rlcyh0aGlzLmFwcCk7XG4gICAgdGhpcy5yZW1vdGVQbHVnaW5zJC5uZXh0KGFjdHVhbFJlbW90ZXMpO1xuICAgIHJldHVybiB7IC4uLnRoaXMucmVtb3RlUGx1Z2lucyQudmFsdWUgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QXBwbGljYXRpb25NTygpOiBQcm9taXNlPElBcHBsaWNhdGlvbj4ge1xuICAgIGxldCBpZCA9IHRoaXMuYXBwSWQ7XG4gICAgaWYgKCFpZCkge1xuICAgICAgY29uc3QgeyBpZDogcm91dGVJZCB9ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YTtcbiAgICAgIGlkID0gcm91dGVJZDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5hcHAgPSBhd2FpdCB0aGlzLmVjb3N5c3RlbVNlcnZpY2UuZ2V0QXBwbGljYXRpb24oaWQpO1xuICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFwcDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QXBwbGljYXRpb25NRkV4cG9ydHMoYXBwOiBJQXBwbGljYXRpb24pIHtcbiAgICBjb25zdCBleHBvcnRzID0gdGhpcy5wbHVnaW5zU2VydmljZS5nZXRNRkV4cG9ydHMoYXBwLCBbXSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGV4cG9ydHM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFwcGxpY2F0aW9uTUZSZW1vdGVzKGFwcDogSUFwcGxpY2F0aW9uKSB7XG4gICAgY29uc3QgYXBwQ29uZmlnUmVtb3RlcyA9IHRoaXMucGx1Z2luc1NlcnZpY2UuZ2V0TUZSZW1vdGVzKGFwcCk7XG4gICAgdGhpcy5yZW1vdGVQbHVnaW5zJC5uZXh0KGFwcENvbmZpZ1JlbW90ZXMgfHwge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRBbGxBcHBsaWNhdGlvbnNNRkV4cG9ydHMoYXBwOiBJQXBwbGljYXRpb24pIHtcbiAgICBjb25zdCBleHBvcnRlZEJ5Q3VycmVudEFwcCA9IGF3YWl0IHRoaXMuZ2V0QXBwbGljYXRpb25NRkV4cG9ydHMoYXBwKTtcbiAgICBjb25zdCBhbGxBcHBzTUZFeHBvcnRzID0gYXdhaXQgdGhpcy5wbHVnaW5zU2VydmljZS5nZXRBbGxNRkV4cG9ydHModHJ1ZSk7XG4gICAgdGhpcy5hbGxBdmFpbGFibGVQbHVnaW5zJC5uZXh0KFsuLi5hbGxBcHBzTUZFeHBvcnRzLCAuLi5leHBvcnRlZEJ5Q3VycmVudEFwcF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRBbGxTZWxmTUZFeHBvcnRzKGFwcDogSUFwcGxpY2F0aW9uKSB7XG4gICAgY29uc3QgZXhwb3J0ZWRCeUN1cnJlbnRBcHAgPSBhd2FpdCB0aGlzLmdldEFwcGxpY2F0aW9uTUZFeHBvcnRzKGFwcCk7XG4gICAgdGhpcy5zZWxmUGx1Z2lucyQubmV4dChleHBvcnRlZEJ5Q3VycmVudEFwcC5maWx0ZXIoKHsgc2NvcGUgfSkgPT4gc2NvcGUgPT09ICdzZWxmJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnN0YWxsTW9kYWxJbml0U3RhdGUoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgcGx1Z2lucyQ6IGNvbWJpbmVMYXRlc3QoW3RoaXMuYWxsQXZhaWxhYmxlUGx1Z2lucyQsIHRoaXMuaW5zdGFsbGVkUGx1Z2lucyRdKS5waXBlKFxuICAgICAgICBtYXAoKFthbGxQbHVnaW5zLCBpbnN0YWxsZWRQbHVnaW5zXSkgPT4ge1xuICAgICAgICAgIC8vIHRvIG5vdCBtdXRhdGUgdGhlIG9yaWdpbmFsIGFycmF5IGFuZCBvYmplY3RzIGNvbnRhaW5lZCBpbiBpdFxuICAgICAgICAgIGNvbnN0IGFsbFBsdWdpbnNBc05ld09iamVjdHMgPSBhbGxQbHVnaW5zLm1hcChwID0+ICh7IC4uLnAgfSkpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBwbHVnaW4gb2YgaW5zdGFsbGVkUGx1Z2lucykge1xuICAgICAgICAgICAgbGV0IGluc3RhbGxlZFBsdWdpbiA9IGFsbFBsdWdpbnNBc05ld09iamVjdHMuZmluZChwID0+IHAuaWQgPT09IHBsdWdpbi5pZCk7XG5cbiAgICAgICAgICAgIGlmICghaW5zdGFsbGVkUGx1Z2luICYmIHBsdWdpbi5pbnN0YWxsZWRWaWFUYWcpIHtcbiAgICAgICAgICAgICAgaW5zdGFsbGVkUGx1Z2luID0gYWxsUGx1Z2luc0FzTmV3T2JqZWN0cy5maW5kKFxuICAgICAgICAgICAgICAgIHAgPT5cbiAgICAgICAgICAgICAgICAgIHAuY29udGV4dFBhdGggPT09IHBsdWdpbi5jb250ZXh0UGF0aCAmJlxuICAgICAgICAgICAgICAgICAgcC5tb2R1bGUgPT09IHBsdWdpbi5tb2R1bGUgJiZcbiAgICAgICAgICAgICAgICAgIHAudGFncz8uaW5jbHVkZXMocGx1Z2luLmluc3RhbGxlZFZpYVRhZyBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpbnN0YWxsZWRQbHVnaW4pIHtcbiAgICAgICAgICAgICAgaW5zdGFsbGVkUGx1Z2luLmluc3RhbGxlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhbGxQbHVnaW5zQXNOZXdPYmplY3RzLm1hcChwID0+ICh7IC4uLnAsIGluc3RhbGxlZDogISFwLmluc3RhbGxlZCB9KSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldE9ycGhhbmVkUGx1Z2lucyhcbiAgICBvcnBoYW5lZFBsdWdpbklkczogc3RyaW5nW10sXG4gICAgYWxsUGx1Z2luczogQXBwbGljYXRpb25QbHVnaW5bXVxuICApOiBBcHBsaWNhdGlvblBsdWdpbltdIHtcbiAgICBjb25zdCBvcnBoYW5lZFBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10gPSBvcnBoYW5lZFBsdWdpbklkcy5tYXAocCA9PiB0aGlzLmV4dHJhY3REZXRhaWxzKHApKTtcbiAgICBjb25zdCBvcnBoYW5lZFBsdWdpbnNVcGRhdGVkID0gb3JwaGFuZWRQbHVnaW5zLm1hcChwID0+IHtcbiAgICAgIGNvbnN0IHBsdWdpbldpdGhNYXRjaGluZ1RhZyA9IGFsbFBsdWdpbnMuZmluZChcbiAgICAgICAgdG1wID0+XG4gICAgICAgICAgdG1wLmNvbnRleHRQYXRoID09PSBwLmNvbnRleHRQYXRoICYmXG4gICAgICAgICAgdG1wLm1vZHVsZSA9PT0gcC5tb2R1bGUgJiZcbiAgICAgICAgICB0bXAudGFncz8uaW5jbHVkZXMocC52ZXJzaW9uIHx8ICdsYXRlc3QnKVxuICAgICAgKTtcbiAgICAgIGlmIChwbHVnaW5XaXRoTWF0Y2hpbmdUYWcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wbHVnaW5XaXRoTWF0Y2hpbmdUYWcsXG4gICAgICAgICAgaWQ6IHAuaWQsXG4gICAgICAgICAgc3RhdHVzOiBBcHBsaWNhdGlvblBsdWdpblN0YXR1cy5BVVRPLFxuICAgICAgICAgIGluc3RhbGxlZFZpYVRhZzogcC52ZXJzaW9uIHx8ICdsYXRlc3QnXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbHVnaW5JbkRpZmZlcmVudFZlcnNpb24gPSBhbGxQbHVnaW5zLmZpbmQoXG4gICAgICAgIHRtcCA9PiB0bXAuY29udGV4dFBhdGggPT09IHAuY29udGV4dFBhdGggJiYgdG1wLm1vZHVsZSA9PT0gcC5tb2R1bGVcbiAgICAgICk7XG4gICAgICBpZiAocGx1Z2luSW5EaWZmZXJlbnRWZXJzaW9uKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucGx1Z2luSW5EaWZmZXJlbnRWZXJzaW9uLFxuICAgICAgICAgIHZlcnNpb246IHAudmVyc2lvbixcbiAgICAgICAgICBpZDogcC5pZCxcbiAgICAgICAgICBzdGF0dXM6IEFwcGxpY2F0aW9uUGx1Z2luU3RhdHVzLk9VVERBVEVEXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcDtcbiAgICB9KTtcblxuICAgIHJldHVybiBvcnBoYW5lZFBsdWdpbnNVcGRhdGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzcGxpdE9ycGhhbmVkUGx1Z2luc0ludG9PcnBoYW5lZEFuZFJldm9rZWRQbHVnaW5zKFxuICAgIGFsbFBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10sXG4gICAgb3JwaGFuZWRQbHVnaW5zOiBBcHBsaWNhdGlvblBsdWdpbltdXG4gICkge1xuICAgIGNvbnN0IHJldm9rZWRQbHVnaW5zID0gbmV3IEFycmF5PEFwcGxpY2F0aW9uUGx1Z2luPigpO1xuICAgIGNvbnN0IGFjdHVhbGx5T3JwaGFuZWRQbHVnaW5zID0gbmV3IEFycmF5PEFwcGxpY2F0aW9uUGx1Z2luPigpO1xuXG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2Ygb3JwaGFuZWRQbHVnaW5zKSB7XG4gICAgICBjb25zdCBmb3VuZEZhbWlsaWFyUGx1Z2luID0gYWxsUGx1Z2lucy5maW5kKFxuICAgICAgICBwbHVnaW4xID0+IHBsdWdpbi5jb250ZXh0UGF0aCA9PT0gcGx1Z2luMS5jb250ZXh0UGF0aCAmJiBwbHVnaW4ubW9kdWxlID09PSBwbHVnaW4xLm1vZHVsZVxuICAgICAgKTtcbiAgICAgIGlmIChmb3VuZEZhbWlsaWFyUGx1Z2luKSB7XG4gICAgICAgIHJldm9rZWRQbHVnaW5zLnB1c2goXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgZm91bmRGYW1pbGlhclBsdWdpbiwgcGx1Z2luLCB7XG4gICAgICAgICAgICBzdGF0dXM6IEFwcGxpY2F0aW9uUGx1Z2luU3RhdHVzLlJFVk9LRURcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0dWFsbHlPcnBoYW5lZFBsdWdpbnMucHVzaChwbHVnaW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IHJldm9rZWRQbHVnaW5zLCBhY3R1YWxseU9ycGhhbmVkUGx1Z2lucyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnN0YWxsZWRQbHVnaW5zKFxuICAgIGFsbFBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10sXG4gICAgcmVtb3RlUGx1Z2luczogc3RyaW5nW11cbiAgKTogQXBwbGljYXRpb25QbHVnaW5bXSB7XG4gICAgY29uc3QgYXZhaWxhYmxlUGx1Z2lucyA9IGFsbFBsdWdpbnNcbiAgICAgIC5maWx0ZXIocGx1Z2luID0+IHJlbW90ZVBsdWdpbnMuaW5jbHVkZXMocGx1Z2luLmlkKSlcbiAgICAgIC5tYXAocGx1Z2luID0+XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGx1Z2luLCB7XG4gICAgICAgICAgc3RhdHVzOiBwbHVnaW4udGFncz8uaW5jbHVkZXMoJ2xhdGVzdCcpXG4gICAgICAgICAgICA/IEFwcGxpY2F0aW9uUGx1Z2luU3RhdHVzLkxBVEVTVFxuICAgICAgICAgICAgOiBBcHBsaWNhdGlvblBsdWdpblN0YXR1cy5PVVREQVRFRFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICBjb25zdCBvcnBoYW5lZFBsdWdpbklkcyA9IHJlbW90ZVBsdWdpbnMuZmlsdGVyKFxuICAgICAgciA9PiAhYXZhaWxhYmxlUGx1Z2lucy5maW5kKHBsdWdpbiA9PiBwbHVnaW4uaWQgPT09IHIpXG4gICAgKTtcbiAgICBjb25zdCBvcnBoYW5lZFBsdWdpbnM6IEFwcGxpY2F0aW9uUGx1Z2luW10gPSB0aGlzLmdldE9ycGhhbmVkUGx1Z2lucyhcbiAgICAgIG9ycGhhbmVkUGx1Z2luSWRzLFxuICAgICAgYWxsUGx1Z2luc1xuICAgICk7XG5cbiAgICBjb25zdCBub3RBY3R1YWxseU9ycGhhbmVkUGx1Z2lucyA9IG9ycGhhbmVkUGx1Z2lucy5maWx0ZXIoXG4gICAgICBwID0+IHAuc3RhdHVzID09PSBBcHBsaWNhdGlvblBsdWdpblN0YXR1cy5BVVRPXG4gICAgKTtcblxuICAgIGNvbnN0IG9ycGhhbmVkT3JSZXZva2VkUGx1Z2lucyA9IG9ycGhhbmVkUGx1Z2lucy5maWx0ZXIoXG4gICAgICBwID0+IHAuc3RhdHVzICE9PSBBcHBsaWNhdGlvblBsdWdpblN0YXR1cy5BVVRPXG4gICAgKTtcblxuICAgIGNvbnN0IHsgYWN0dWFsbHlPcnBoYW5lZFBsdWdpbnMsIHJldm9rZWRQbHVnaW5zIH0gPVxuICAgICAgdGhpcy5zcGxpdE9ycGhhbmVkUGx1Z2luc0ludG9PcnBoYW5lZEFuZFJldm9rZWRQbHVnaW5zKGFsbFBsdWdpbnMsIG9ycGhhbmVkT3JSZXZva2VkUGx1Z2lucyk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uYXZhaWxhYmxlUGx1Z2lucyxcbiAgICAgIC4uLm5vdEFjdHVhbGx5T3JwaGFuZWRQbHVnaW5zLFxuICAgICAgLi4ucmV2b2tlZFBsdWdpbnMsXG4gICAgICAuLi5hY3R1YWxseU9ycGhhbmVkUGx1Z2luc1xuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3REZXRhaWxzKHBsdWdpbklkOiBzdHJpbmcpOiBBcHBsaWNhdGlvblBsdWdpbiB7XG4gICAgY29uc3QgY29udGV4dFBhdGggPSB0aGlzLmdldFN0cmluZ01hdGNoaW5nUmVnZXgocGx1Z2luSWQsIC9eW15AXSooQHxcXC8pLyk7XG4gICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0U3RyaW5nTWF0Y2hpbmdSZWdleChwbHVnaW5JZCwgL0AuKlxcLy8pO1xuICAgIGNvbnN0IG1vZHVsZSA9IHRoaXMuZ2V0U3RyaW5nTWF0Y2hpbmdSZWdleChwbHVnaW5JZCwgL1xcLy4qJC8pO1xuICAgIGNvbnN0IHVuYXZhaWxhYmxlID0gZ2V0dGV4dCgndW5hdmFpbGFibGVgcGx1Z2luYCcpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogcGx1Z2luSWQsXG4gICAgICBpZExhdGVzdDogYCR7Y29udGV4dFBhdGh9LyR7bW9kdWxlfWAsXG4gICAgICBwYXRoOiAnJyxcbiAgICAgIG1vZHVsZSxcbiAgICAgIG5hbWU6IG1vZHVsZSxcbiAgICAgIHN0YXR1czogQXBwbGljYXRpb25QbHVnaW5TdGF0dXMuT1JQSEFORUQsXG4gICAgICBjb250ZXh0UGF0aDogY29udGV4dFBhdGgsXG4gICAgICBkZXNjcmlwdGlvbjogdW5hdmFpbGFibGUsXG4gICAgICB2ZXJzaW9uOiB2ZXJzaW9uXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RyaW5nTWF0Y2hpbmdSZWdleChcbiAgICBzdHI6IHN0cmluZyxcbiAgICByZWdleDogeyBbU3ltYm9sLm1hdGNoXShzdHJpbmc6IHN0cmluZyk6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsIH1cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXRjaGVzID0gc3RyLm1hdGNoKHJlZ2V4KTtcbiAgICBjb25zdCB2YWx1ZSA9IG1hdGNoZXMgPyBtYXRjaGVzWzBdIDogJyc7XG5cbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvKEB8XFwvKS9nLCAnJyk7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgYXBwIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmMgfX08L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktYXRvbSdcIlxuICAgIFtsYWJlbF09XCInRWNvc3lzdGVtJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1tb2R1bGVzJ1wiXG4gICAgW2xhYmVsXT1cIidBcHBsaWNhdGlvbnMnIHwgdHJhbnNsYXRlXCJcbiAgICBbcGF0aF09XCInZWNvc3lzdGVtL2FwcGxpY2F0aW9uL2FwcGxpY2F0aW9ucydcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwiYXBwIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmNcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIFtsYWJlbF09XCInUGx1Z2lucycgfCB0cmFuc2xhdGVcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICAqbmdJZj1cIiEoaXNTdGFuZGFyZCQgfCBhc3luYylcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ1Jlc2V0IHRvIGRlZmF1bHQgcGx1Z2lucycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1wZW5kaW5nJzogaXNMb2FkaW5nIH1cIlxuICAgIChjbGljayk9XCJyZXNldFRvRGVmYXVsdCgpXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJ1bmRvXCI+PC9pPlxuICAgIHt7ICdSZXNldCB0byBkZWZhdWx0JyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnSW5zdGFsbCBwbHVnaW5zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKGNsaWNrKT1cImluc3RhbGxQbHVnaW5zKClcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1wZW5kaW5nJzogaXNMb2FkaW5nIH1cIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCI+PC9pPlxuICAgIHt7ICdJbnN0YWxsIHBsdWdpbnMnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwib3JwaGFuZWRQbHVnaW5zJCB8IGFzeW5jIGFzIG9ycGhhbmVkUGx1Z2luc1wiPlxuICA8Yzh5LWFjdGlvbi1iYXItaXRlbVxuICAgICpuZ0lmPVwib3JwaGFuZWRQbHVnaW5zPy5sZW5ndGhcIlxuICAgIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgICB0aXRsZT1cInt7ICdDbGVhbiB1cCBvcnBoYW5lZCBwbHVnaW5zJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoY2xpY2spPVwiY2xlYW51cE9ycGhhbmVkUGx1Z2lucyhvcnBoYW5lZFBsdWdpbnMpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1wZW5kaW5nJzogaXNMb2FkaW5nIH1cIlxuICAgID5cbiAgICAgIDxpIGM4eUljb249XCJlcmFzZVwiPjwvaT5cbiAgICAgIHt7ICdDbGVhbiB1cCBvcnBoYW5lZCBwbHVnaW5zJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImNvbnRlbnQtZnVsbHBhZ2UgZC1mbGV4IGQtY29sIGJvcmRlci10b3BcIj5cbiAgPGM4eS1kYXRhLWdyaWRcbiAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgW2xvYWRNb3JlSXRlbXNMYWJlbF09XCJsb2FkTW9yZUl0ZW1zTGFiZWxcIlxuICAgIFtsb2FkaW5nSXRlbXNMYWJlbF09XCJsb2FkaW5nSXRlbXNMYWJlbFwiXG4gICAgW2Rpc3BsYXlPcHRpb25zXT1cImRpc3BsYXlPcHRpb25zXCJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICBbcm93c109XCJpbnN0YWxsZWRQbHVnaW5zJCB8IGFzeW5jXCJcbiAgICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uXCJcbiAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICBbYWN0aW9uQ29udHJvbHNdPVwiYWN0aW9uQ29udHJvbHNcIlxuICAgIFtidWxrQWN0aW9uQ29udHJvbHNdPVwiYnVsa0FjdGlvbkNvbnRyb2xzXCJcbiAgICBbaGVhZGVyQWN0aW9uQ29udHJvbHNdPVwiaGVhZGVyQWN0aW9uQ29udHJvbHNcIlxuICAgIChvblJlbG9hZCk9XCJyZWZyZXNoKClcIlxuICA+XG4gICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgW2ljb25dPVwic3RhdHM/LnNpemUgPiAwID8gJ3NlYXJjaCcgOiAncGx1Z2luJ1wiXG4gICAgICBbdGl0bGVdPVwic3RhdHM/LnNpemUgPiAwID8gKG5vUmVzdWx0c01lc3NhZ2UgfCB0cmFuc2xhdGUpIDogKG5vRGF0YU1lc3NhZ2UgfCB0cmFuc2xhdGUpXCJcbiAgICAgIFtzdWJ0aXRsZV09XCJzdGF0cz8uc2l6ZSA+IDAgPyAobm9SZXN1bHRzU3VidGl0bGUgfCB0cmFuc2xhdGUpIDogKG5vRGF0YVN1YnRpdGxlIHwgdHJhbnNsYXRlKVwiXG4gICAgICAqZW1wdHlTdGF0ZUNvbnRleHQ9XCJsZXQgc3RhdHNcIlxuICAgICAgW2hvcml6b250YWxdPVwic3RhdHM/LnNpemUgPiAwXCJcbiAgICA+XG4gICAgICA8cCAqbmdJZj1cInN0YXRzPy5zaXplID09PSAwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ0luc3RhbGwgcGx1Z2lucycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIChjbGljayk9XCJpbnN0YWxsUGx1Z2lucygpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tcGVuZGluZyc6IGlzTG9hZGluZyB9XCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPlxuICAgICAgICAgIEluc3RhbGwgcGx1Z2luc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvcD5cbiAgICA8L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgPC9jOHktZGF0YS1ncmlkPlxuPC9kaXY+XG4iXX0=
@@ -3,6 +3,10 @@ import { downgradeInjectable } from '@angular/upgrade/static';
3
3
  import { ApplicationService } from '@c8y/client';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@c8y/client";
6
+ /**
7
+ * @deprecated This service is deprecated and will be removed in a future version.
8
+ * Use the PluginsResolveService instead.
9
+ */
6
10
  export class Lwm2mPluginCheckerService {
7
11
  constructor(applicationService) {
8
12
  this.applicationService = applicationService;
@@ -21,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
21
25
  }]
22
26
  }], ctorParameters: () => [{ type: i1.ApplicationService }] });
23
27
  export const lwm2mPluginCheckerServiceDowngradedInjectable = downgradeInjectable(Lwm2mPluginCheckerService);
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNoZWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb3RvY29sLWx3bTJtL25nMS9wbHVnaW4tY2hlY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFLakQsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFOUQsS0FBSyxDQUFDLHNCQUFzQjtRQUMxQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUssb0JBQW9CLENBQUMsQ0FBQztJQUM1RixDQUFDOzhHQU5VLHlCQUF5QjtrSEFBekIseUJBQXlCLGNBRnhCLE1BQU07OzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBVUQsTUFBTSxDQUFDLE1BQU0sNkNBQTZDLEdBQ3hELG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkb3duZ3JhZGVJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvdXBncmFkZS9zdGF0aWMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMd20ybVBsdWdpbkNoZWNrZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSkge31cblxuICBhc3luYyBpc0x3bTJtUGx1Z2luSW5zdGFsbGVkKCkge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UubGlzdEJ5TmFtZSgnbHdtMm0tdWktcGx1Z2luJyk7XG4gICAgcmV0dXJuIGRhdGEuc29tZSgoeyBtYW5pZmVzdCB9KSA9PiBtYW5pZmVzdD8uZXhwb3J0c1swXT8ubW9kdWxlID09PSAnTHdtMm1Nb2R1bGVXcmFwcGVyJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGx3bTJtUGx1Z2luQ2hlY2tlclNlcnZpY2VEb3duZ3JhZGVkSW5qZWN0YWJsZSA9XG4gIGRvd25ncmFkZUluamVjdGFibGUoTHdtMm1QbHVnaW5DaGVja2VyU2VydmljZSk7XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNoZWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb3RvY29sLWx3bTJtL25nMS9wbHVnaW4tY2hlY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFFakQ7OztHQUdHO0FBSUgsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFOUQsS0FBSyxDQUFDLHNCQUFzQjtRQUMxQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUssb0JBQW9CLENBQUMsQ0FBQztJQUM1RixDQUFDOzhHQU5VLHlCQUF5QjtrSEFBekIseUJBQXlCLGNBRnhCLE1BQU07OzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBVUQsTUFBTSxDQUFDLE1BQU0sNkNBQTZDLEdBQ3hELG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkb3duZ3JhZGVJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvdXBncmFkZS9zdGF0aWMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgc2VydmljZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi5cbiAqIFVzZSB0aGUgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlIGluc3RlYWQuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEx3bTJtUGx1Z2luQ2hlY2tlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcGxpY2F0aW9uU2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIGlzTHdtMm1QbHVnaW5JbnN0YWxsZWQoKSB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5saXN0QnlOYW1lKCdsd20ybS11aS1wbHVnaW4nKTtcbiAgICByZXR1cm4gZGF0YS5zb21lKCh7IG1hbmlmZXN0IH0pID0+IG1hbmlmZXN0Py5leHBvcnRzWzBdPy5tb2R1bGUgPT09ICdMd20ybU1vZHVsZVdyYXBwZXInKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbHdtMm1QbHVnaW5DaGVja2VyU2VydmljZURvd25ncmFkZWRJbmplY3RhYmxlID1cbiAgZG93bmdyYWRlSW5qZWN0YWJsZShMd20ybVBsdWdpbkNoZWNrZXJTZXJ2aWNlKTtcbiJdfQ==
@@ -0,0 +1,113 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { from } from 'rxjs';
3
+ import { OperationService } from '@c8y/client';
4
+ import { AlertService, gettext } from '@c8y/ngx-components';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@c8y/client";
7
+ import * as i2 from "@c8y/ngx-components";
8
+ export class ServiceCommandService {
9
+ constructor(operationService, alertService) {
10
+ this.operationService = operationService;
11
+ this.alertService = alertService;
12
+ this.DEFAULT_COMMANDS = ['START', 'STOP', 'RESTART'];
13
+ this.commandIcons = {
14
+ START: 'play-circle',
15
+ STOP: 'stop-circle',
16
+ RESTART: 'refresh'
17
+ };
18
+ }
19
+ /**
20
+ * Check if the service supports service commands.
21
+ * @param service The service object containing supported operations.
22
+ * @returns boolean indicating if the service supports service commands.
23
+ */
24
+ isServiceCommandSupported(service) {
25
+ return service.c8y_SupportedOperations?.includes('c8y_ServiceCommand');
26
+ }
27
+ /**
28
+ * Get the list of supported service commands for the given service object.
29
+ * @param service The service object containing the c8y_SupportedServiceCommands fragment.
30
+ * @returns Array of supported commands.
31
+ */
32
+ getSupportedCommands(service) {
33
+ return service.c8y_SupportedServiceCommands || this.DEFAULT_COMMANDS;
34
+ }
35
+ /**
36
+ * Check if a specific command is supported for the given service.
37
+ * @param service The service object.
38
+ * @param command The command to check (e.g., START, STOP).
39
+ * @returns boolean indicating if the command is supported.
40
+ */
41
+ isCommandSupported(service, command) {
42
+ const supportedCommands = this.getSupportedCommands(service);
43
+ return supportedCommands.includes(command);
44
+ }
45
+ /**
46
+ * Get all supported commands for a list of services.
47
+ * @param services The list of service objects to evaluate.
48
+ * @returns Array of all unique supported commands.
49
+ */
50
+ getAllSupportedCommands(services) {
51
+ const allCommands = services
52
+ .filter(service => this.isServiceCommandSupported(service))
53
+ .flatMap(service => this.getSupportedCommands(service));
54
+ return Array.from(new Set(allCommands));
55
+ }
56
+ /**
57
+ * Create an operation for the selected service command.
58
+ * @param service The service object the operation should target.
59
+ * @param command The command to execute (e.g., START, STOP).
60
+ * @returns Observable of the created operation.
61
+ */
62
+ createOperation({ id, name, serviceType }, command) {
63
+ const operation = {
64
+ deviceId: id,
65
+ c8y_ServiceCommand: {
66
+ command,
67
+ serviceName: name,
68
+ serviceType: serviceType
69
+ }
70
+ };
71
+ return from(this.operationService.create(operation));
72
+ }
73
+ /**
74
+ * Generate a static list of action controls.
75
+ * The specific logic for each service is handled dynamically in showIf and callback.
76
+ * @returns Array of ActionControl objects.
77
+ */
78
+ generateActionControls(commands) {
79
+ return commands.map(command => ({
80
+ type: command.toLowerCase(),
81
+ icon: this.getCommandIcon(command),
82
+ text: command,
83
+ showIf: (service) => this.isServiceCommandSupported(service) && this.isCommandSupported(service, command),
84
+ callback: async (service) => {
85
+ try {
86
+ await this.createOperation(service, command).toPromise();
87
+ this.alertService.success(gettext('Operation created.'));
88
+ }
89
+ catch (error) {
90
+ const alertMessage = gettext('Could not create operaion.');
91
+ this.alertService.danger(alertMessage, error);
92
+ }
93
+ }
94
+ }));
95
+ }
96
+ /**
97
+ * Get the icon for a specific command.
98
+ * @param command The command name.
99
+ * @returns Icon string for the command.
100
+ */
101
+ getCommandIcon(command) {
102
+ return this.commandIcons[command] || 'console';
103
+ }
104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ServiceCommandService, deps: [{ token: i1.OperationService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Injectable }); }
105
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ServiceCommandService, providedIn: 'root' }); }
106
+ }
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ServiceCommandService, decorators: [{
108
+ type: Injectable,
109
+ args: [{
110
+ providedIn: 'root'
111
+ }]
112
+ }], ctorParameters: () => [{ type: i1.OperationService }, { type: i2.AlertService }] });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb21tYW5kLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zZXJ2aWNlcy9zZXJ2aWNlcy1kZXZpY2UtdGFiL3NlcnZpY2UtY29tbWFuZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQXVCLE1BQU0sYUFBYSxDQUFDO0FBQ3BFLE9BQU8sRUFBaUIsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0FBTTNFLE1BQU0sT0FBTyxxQkFBcUI7SUFRaEMsWUFDVSxnQkFBa0MsRUFDbEMsWUFBMEI7UUFEMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVRuQixxQkFBZ0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekQsaUJBQVksR0FBOEI7WUFDaEQsS0FBSyxFQUFFLGFBQWE7WUFDcEIsSUFBSSxFQUFFLGFBQWE7WUFDbkIsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FBQztJQUtDLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gseUJBQXlCLENBQUMsT0FBZ0I7UUFDeEMsT0FBTyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBQyxPQUFnQjtRQUNuQyxPQUFPLE9BQU8sQ0FBQyw0QkFBNEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsT0FBZ0IsRUFBRSxPQUFlO1FBQ2xELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELE9BQU8saUJBQWlCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsdUJBQXVCLENBQUMsUUFBbUI7UUFDekMsTUFBTSxXQUFXLEdBQUcsUUFBUTthQUN6QixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDMUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFMUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUNiLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQVcsRUFDbEMsT0FBZTtRQUVmLE1BQU0sU0FBUyxHQUFlO1lBQzVCLFFBQVEsRUFBRSxFQUFFO1lBQ1osa0JBQWtCLEVBQUU7Z0JBQ2xCLE9BQU87Z0JBQ1AsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFdBQVcsRUFBRSxXQUFXO2FBQ3pCO1NBQ0YsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHNCQUFzQixDQUFDLFFBQWtCO1FBQ3ZDLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDM0IsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBQ2xDLElBQUksRUFBRSxPQUFPO1lBQ2IsTUFBTSxFQUFFLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQzNCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztZQUN0RixRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQWdCLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxDQUFDO29CQUNILE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3pELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzNELENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxjQUFjLENBQUMsT0FBZTtRQUNwQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksU0FBUyxDQUFDO0lBQ2pELENBQUM7OEdBNUdVLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRnBCLE1BQU07OzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPcGVyYXRpb25TZXJ2aWNlLCBJT3BlcmF0aW9uLCBJUmVzdWx0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWN0aW9uQ29udHJvbCwgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlLWRldmljZS10YWIubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ29tbWFuZFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQ09NTUFORFMgPSBbJ1NUQVJUJywgJ1NUT1AnLCAnUkVTVEFSVCddO1xuICBwcml2YXRlIGNvbW1hbmRJY29uczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBTVEFSVDogJ3BsYXktY2lyY2xlJyxcbiAgICBTVE9QOiAnc3RvcC1jaXJjbGUnLFxuICAgIFJFU1RBUlQ6ICdyZWZyZXNoJ1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3BlcmF0aW9uU2VydmljZTogT3BlcmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIHNlcnZpY2Ugc3VwcG9ydHMgc2VydmljZSBjb21tYW5kcy5cbiAgICogQHBhcmFtIHNlcnZpY2UgVGhlIHNlcnZpY2Ugb2JqZWN0IGNvbnRhaW5pbmcgc3VwcG9ydGVkIG9wZXJhdGlvbnMuXG4gICAqIEByZXR1cm5zIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgc2VydmljZSBzdXBwb3J0cyBzZXJ2aWNlIGNvbW1hbmRzLlxuICAgKi9cbiAgaXNTZXJ2aWNlQ29tbWFuZFN1cHBvcnRlZChzZXJ2aWNlOiBTZXJ2aWNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNlcnZpY2UuYzh5X1N1cHBvcnRlZE9wZXJhdGlvbnM/LmluY2x1ZGVzKCdjOHlfU2VydmljZUNvbW1hbmQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIHNlcnZpY2UgY29tbWFuZHMgZm9yIHRoZSBnaXZlbiBzZXJ2aWNlIG9iamVjdC5cbiAgICogQHBhcmFtIHNlcnZpY2UgVGhlIHNlcnZpY2Ugb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGM4eV9TdXBwb3J0ZWRTZXJ2aWNlQ29tbWFuZHMgZnJhZ21lbnQuXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHN1cHBvcnRlZCBjb21tYW5kcy5cbiAgICovXG4gIGdldFN1cHBvcnRlZENvbW1hbmRzKHNlcnZpY2U6IFNlcnZpY2UpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHNlcnZpY2UuYzh5X1N1cHBvcnRlZFNlcnZpY2VDb21tYW5kcyB8fCB0aGlzLkRFRkFVTFRfQ09NTUFORFM7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBzcGVjaWZpYyBjb21tYW5kIGlzIHN1cHBvcnRlZCBmb3IgdGhlIGdpdmVuIHNlcnZpY2UuXG4gICAqIEBwYXJhbSBzZXJ2aWNlIFRoZSBzZXJ2aWNlIG9iamVjdC5cbiAgICogQHBhcmFtIGNvbW1hbmQgVGhlIGNvbW1hbmQgdG8gY2hlY2sgKGUuZy4sIFNUQVJULCBTVE9QKS5cbiAgICogQHJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBjb21tYW5kIGlzIHN1cHBvcnRlZC5cbiAgICovXG4gIGlzQ29tbWFuZFN1cHBvcnRlZChzZXJ2aWNlOiBTZXJ2aWNlLCBjb21tYW5kOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdXBwb3J0ZWRDb21tYW5kcyA9IHRoaXMuZ2V0U3VwcG9ydGVkQ29tbWFuZHMoc2VydmljZSk7XG4gICAgcmV0dXJuIHN1cHBvcnRlZENvbW1hbmRzLmluY2x1ZGVzKGNvbW1hbmQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgc3VwcG9ydGVkIGNvbW1hbmRzIGZvciBhIGxpc3Qgb2Ygc2VydmljZXMuXG4gICAqIEBwYXJhbSBzZXJ2aWNlcyBUaGUgbGlzdCBvZiBzZXJ2aWNlIG9iamVjdHMgdG8gZXZhbHVhdGUuXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIGFsbCB1bmlxdWUgc3VwcG9ydGVkIGNvbW1hbmRzLlxuICAgKi9cbiAgZ2V0QWxsU3VwcG9ydGVkQ29tbWFuZHMoc2VydmljZXM6IFNlcnZpY2VbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBhbGxDb21tYW5kcyA9IHNlcnZpY2VzXG4gICAgICAuZmlsdGVyKHNlcnZpY2UgPT4gdGhpcy5pc1NlcnZpY2VDb21tYW5kU3VwcG9ydGVkKHNlcnZpY2UpKVxuICAgICAgLmZsYXRNYXAoc2VydmljZSA9PiB0aGlzLmdldFN1cHBvcnRlZENvbW1hbmRzKHNlcnZpY2UpKTtcblxuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoYWxsQ29tbWFuZHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gb3BlcmF0aW9uIGZvciB0aGUgc2VsZWN0ZWQgc2VydmljZSBjb21tYW5kLlxuICAgKiBAcGFyYW0gc2VydmljZSBUaGUgc2VydmljZSBvYmplY3QgdGhlIG9wZXJhdGlvbiBzaG91bGQgdGFyZ2V0LlxuICAgKiBAcGFyYW0gY29tbWFuZCBUaGUgY29tbWFuZCB0byBleGVjdXRlIChlLmcuLCBTVEFSVCwgU1RPUCkuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIGNyZWF0ZWQgb3BlcmF0aW9uLlxuICAgKi9cbiAgY3JlYXRlT3BlcmF0aW9uKFxuICAgIHsgaWQsIG5hbWUsIHNlcnZpY2VUeXBlIH06IFNlcnZpY2UsXG4gICAgY29tbWFuZDogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8SVJlc3VsdDxJT3BlcmF0aW9uPj4ge1xuICAgIGNvbnN0IG9wZXJhdGlvbjogSU9wZXJhdGlvbiA9IHtcbiAgICAgIGRldmljZUlkOiBpZCxcbiAgICAgIGM4eV9TZXJ2aWNlQ29tbWFuZDoge1xuICAgICAgICBjb21tYW5kLFxuICAgICAgICBzZXJ2aWNlTmFtZTogbmFtZSxcbiAgICAgICAgc2VydmljZVR5cGU6IHNlcnZpY2VUeXBlXG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBmcm9tKHRoaXMub3BlcmF0aW9uU2VydmljZS5jcmVhdGUob3BlcmF0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBzdGF0aWMgbGlzdCBvZiBhY3Rpb24gY29udHJvbHMuXG4gICAqIFRoZSBzcGVjaWZpYyBsb2dpYyBmb3IgZWFjaCBzZXJ2aWNlIGlzIGhhbmRsZWQgZHluYW1pY2FsbHkgaW4gc2hvd0lmIGFuZCBjYWxsYmFjay5cbiAgICogQHJldHVybnMgQXJyYXkgb2YgQWN0aW9uQ29udHJvbCBvYmplY3RzLlxuICAgKi9cbiAgZ2VuZXJhdGVBY3Rpb25Db250cm9scyhjb21tYW5kczogc3RyaW5nW10pOiBBY3Rpb25Db250cm9sW10ge1xuICAgIHJldHVybiBjb21tYW5kcy5tYXAoY29tbWFuZCA9PiAoe1xuICAgICAgdHlwZTogY29tbWFuZC50b0xvd2VyQ2FzZSgpLFxuICAgICAgaWNvbjogdGhpcy5nZXRDb21tYW5kSWNvbihjb21tYW5kKSxcbiAgICAgIHRleHQ6IGNvbW1hbmQsXG4gICAgICBzaG93SWY6IChzZXJ2aWNlOiBTZXJ2aWNlKSA9PlxuICAgICAgICB0aGlzLmlzU2VydmljZUNvbW1hbmRTdXBwb3J0ZWQoc2VydmljZSkgJiYgdGhpcy5pc0NvbW1hbmRTdXBwb3J0ZWQoc2VydmljZSwgY29tbWFuZCksXG4gICAgICBjYWxsYmFjazogYXN5bmMgKHNlcnZpY2U6IFNlcnZpY2UpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZU9wZXJhdGlvbihzZXJ2aWNlLCBjb21tYW5kKS50b1Byb21pc2UoKTtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ09wZXJhdGlvbiBjcmVhdGVkLicpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zdCBhbGVydE1lc3NhZ2UgPSBnZXR0ZXh0KCdDb3VsZCBub3QgY3JlYXRlIG9wZXJhaW9uLicpO1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmRhbmdlcihhbGVydE1lc3NhZ2UsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGljb24gZm9yIGEgc3BlY2lmaWMgY29tbWFuZC5cbiAgICogQHBhcmFtIGNvbW1hbmQgVGhlIGNvbW1hbmQgbmFtZS5cbiAgICogQHJldHVybnMgSWNvbiBzdHJpbmcgZm9yIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb21tYW5kSWNvbihjb21tYW5kOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbW1hbmRJY29uc1tjb21tYW5kXSB8fCAnY29uc29sZSc7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export const SERVICE_FRAGMENT = 'c8y_Service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1kZXZpY2UtdGFiLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc2VydmljZXMvc2VydmljZXMtZGV2aWNlLXRhYi9zZXJ2aWNlLWRldmljZS10YWIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFNFUlZJQ0VfRlJBR01FTlQgPSAnYzh5X1NlcnZpY2UnO1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1kZXZpY2UtdGFiLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc2VydmljZXMvc2VydmljZXMtZGV2aWNlLXRhYi9zZXJ2aWNlLWRldmljZS10YWIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFNFUlZJQ0VfRlJBR01FTlQgPSAnYzh5X1NlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2Uge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNlcnZpY2VUeXBlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBjOHlfU3VwcG9ydGVkT3BlcmF0aW9ucz86IHN0cmluZ1tdO1xuICBjOHlfU3VwcG9ydGVkU2VydmljZUNvbW1hbmRzPzogc3RyaW5nW107XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbiJdfQ==