@c8y/ngx-components 1021.21.0 → 1021.22.26

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 (185) hide show
  1. package/alarms/alarm-details.component.d.ts +1 -3
  2. package/alarms/alarm-details.component.d.ts.map +1 -1
  3. package/alarms/alarm-info.component.d.ts +9 -14
  4. package/alarms/alarm-info.component.d.ts.map +1 -1
  5. package/alarms/alarms-date-filter.component.d.ts +23 -10
  6. package/alarms/alarms-date-filter.component.d.ts.map +1 -1
  7. package/alarms/alarms-type-filter.component.d.ts +21 -14
  8. package/alarms/alarms-type-filter.component.d.ts.map +1 -1
  9. package/alarms/alarms-view.service.d.ts +7 -0
  10. package/alarms/alarms-view.service.d.ts.map +1 -1
  11. package/alarms/alarms.component.d.ts.map +1 -1
  12. package/alarms/alarms.helper.d.ts +5 -0
  13. package/alarms/alarms.helper.d.ts.map +1 -0
  14. package/alarms/alarms.model.d.ts +1 -6
  15. package/alarms/alarms.model.d.ts.map +1 -1
  16. package/alarms/alarms.module.d.ts +1 -1
  17. package/alarms/alarms.module.d.ts.map +1 -1
  18. package/alarms/cockpit/index.d.ts.map +1 -1
  19. package/alarms/devicemanagement/index.d.ts.map +1 -1
  20. package/alarms/index.d.ts +6 -4
  21. package/alarms/index.d.ts.map +1 -1
  22. package/branding/shared/data/branding-tracking.service.d.ts +20 -0
  23. package/branding/shared/data/branding-tracking.service.d.ts.map +1 -0
  24. package/branding/shared/data/branding-version.service.d.ts.map +1 -1
  25. package/branding/shared/data/index.d.ts +1 -0
  26. package/branding/shared/data/index.d.ts.map +1 -1
  27. package/branding/shared/data/store-branding.service.d.ts +8 -1
  28. package/branding/shared/data/store-branding.service.d.ts.map +1 -1
  29. package/branding/shared/lazy/branding/branding.component.d.ts +3 -2
  30. package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
  31. package/branding/shared/lazy/branding-theme-form/branding-theme-form.component.d.ts.map +1 -1
  32. package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
  33. package/cockpit-config/cockpit-config.module.d.ts +1 -1
  34. package/cockpit-config/cockpit-config.module.d.ts.map +1 -1
  35. package/context-dashboard/context-dashboard.service.d.ts +1 -1
  36. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  37. package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
  38. package/core/common/service-registry.model.d.ts +2 -1
  39. package/core/common/service-registry.model.d.ts.map +1 -1
  40. package/core/common/ui-state.service.d.ts +0 -1
  41. package/core/common/ui-state.service.d.ts.map +1 -1
  42. package/core/i18n/missing-translation-custom.handler.d.ts +1 -0
  43. package/core/i18n/missing-translation-custom.handler.d.ts.map +1 -1
  44. package/core/plugins/index.d.ts +1 -0
  45. package/core/plugins/index.d.ts.map +1 -1
  46. package/core/plugins/plugin-loaded.pipe.d.ts +12 -0
  47. package/core/plugins/plugin-loaded.pipe.d.ts.map +1 -0
  48. package/core/plugins/plugins-resolve.service.d.ts +4 -2
  49. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  50. package/core/plugins/plugins.model.d.ts +3 -1
  51. package/core/plugins/plugins.model.d.ts.map +1 -1
  52. package/core/plugins/plugins.service.d.ts +3 -0
  53. package/core/plugins/plugins.service.d.ts.map +1 -1
  54. package/core/router/context-route.component.d.ts +8 -3
  55. package/core/router/context-route.component.d.ts.map +1 -1
  56. package/core/router/context-route.service.d.ts +29 -3
  57. package/core/router/context-route.service.d.ts.map +1 -1
  58. package/core/router/router-tabs.resolver.d.ts +6 -3
  59. package/core/router/router-tabs.resolver.d.ts.map +1 -1
  60. package/core/router/router.model.d.ts +40 -3
  61. package/core/router/router.model.d.ts.map +1 -1
  62. package/core/router/router.module.d.ts +2 -1
  63. package/core/router/router.module.d.ts.map +1 -1
  64. package/core/router/router.service.d.ts +5 -4
  65. package/core/router/router.service.d.ts.map +1 -1
  66. package/core/router/scoped-context-route.service.d.ts +57 -0
  67. package/core/router/scoped-context-route.service.d.ts.map +1 -0
  68. package/core/router/view-context.service.d.ts +8 -18
  69. package/core/router/view-context.service.d.ts.map +1 -1
  70. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  71. package/ecosystem/application-plugins/application-plugins.guard.d.ts.map +1 -1
  72. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
  73. package/esm2022/alarms/alarm-details.component.mjs +7 -9
  74. package/esm2022/alarms/alarm-info.component.mjs +23 -33
  75. package/esm2022/alarms/alarm-severity-to-label.pipe.mjs +2 -2
  76. package/esm2022/alarms/alarms-date-filter.component.mjs +94 -42
  77. package/esm2022/alarms/alarms-type-filter.component.mjs +102 -72
  78. package/esm2022/alarms/alarms-view.service.mjs +17 -3
  79. package/esm2022/alarms/alarms.component.mjs +12 -5
  80. package/esm2022/alarms/alarms.helper.mjs +32 -0
  81. package/esm2022/alarms/alarms.model.mjs +1 -1
  82. package/esm2022/alarms/alarms.module.mjs +7 -7
  83. package/esm2022/alarms/cockpit/index.mjs +13 -17
  84. package/esm2022/alarms/devicemanagement/index.mjs +15 -18
  85. package/esm2022/alarms/index.mjs +7 -5
  86. package/esm2022/branding/shared/data/branding-tracking.service.mjs +58 -0
  87. package/esm2022/branding/shared/data/branding-version.service.mjs +9 -5
  88. package/esm2022/branding/shared/data/index.mjs +2 -1
  89. package/esm2022/branding/shared/data/store-branding.service.mjs +15 -4
  90. package/esm2022/branding/shared/lazy/branding/branding.component.mjs +16 -12
  91. package/esm2022/branding/shared/lazy/branding-theme-form/branding-theme-form.component.mjs +5 -2
  92. package/esm2022/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.mjs +2 -2
  93. package/esm2022/cockpit-config/cockpit-config.module.mjs +6 -3
  94. package/esm2022/cockpit-config/feature-config.component.mjs +5 -4
  95. package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -13
  96. package/esm2022/core/bootstrap/bootstrap.component.mjs +4 -3
  97. package/esm2022/core/common/service-registry.model.mjs +1 -1
  98. package/esm2022/core/common/ui-state.service.mjs +1 -19
  99. package/esm2022/core/i18n/missing-translation-custom.handler.mjs +5 -1
  100. package/esm2022/core/i18n/translation-loader.service.mjs +2 -2
  101. package/esm2022/core/plugins/index.mjs +2 -1
  102. package/esm2022/core/plugins/plugin-loaded.pipe.mjs +26 -0
  103. package/esm2022/core/plugins/plugins-resolve.service.mjs +5 -1
  104. package/esm2022/core/plugins/plugins.model.mjs +2 -1
  105. package/esm2022/core/plugins/plugins.service.mjs +13 -5
  106. package/esm2022/core/router/context-route.component.mjs +23 -13
  107. package/esm2022/core/router/context-route.service.mjs +37 -5
  108. package/esm2022/core/router/router-tabs.resolver.mjs +66 -21
  109. package/esm2022/core/router/router.model.mjs +6 -1
  110. package/esm2022/core/router/router.module.mjs +20 -13
  111. package/esm2022/core/router/router.service.mjs +24 -10
  112. package/esm2022/core/router/scoped-context-route.service.mjs +157 -0
  113. package/esm2022/core/router/view-context.service.mjs +59 -16
  114. package/esm2022/core/tabs/tabs-outlet.component.mjs +3 -3
  115. package/esm2022/core/version/websdk-plugin-version.factory.mjs +2 -2
  116. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
  117. package/esm2022/ecosystem/activity-log/activity-log.component.mjs +3 -3
  118. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +67 -23
  119. package/esm2022/ecosystem/application-plugins/application-plugins.guard.mjs +8 -2
  120. package/esm2022/ecosystem/application-plugins/orphaned-status-cell-renderer.component.mjs +7 -1
  121. package/esm2022/interval-picker/interval-picker.component.mjs +1 -1
  122. package/esm2022/interval-picker/interval-picker.model.mjs +1 -1
  123. package/esm2022/protocol-lwm2m/ng1/plugin-checker.service.mjs +5 -1
  124. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +2 -1
  125. package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +73 -4
  126. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +29 -5
  127. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +7 -1
  128. package/esm2022/widgets/implementations/alarms/alarm-widget.service.mjs +12 -2
  129. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +12 -16
  130. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  131. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +14 -17
  132. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  133. package/fesm2022/c8y-ngx-components-alarms.mjs +389 -268
  134. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  135. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +76 -9
  136. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  137. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +19 -12
  138. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  139. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +7 -5
  140. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  141. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +46 -12
  142. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  143. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -2
  144. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  145. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +79 -23
  146. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  147. package/fesm2022/c8y-ngx-components-ecosystem.mjs +81 -25
  148. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  149. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  150. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs +4 -0
  151. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs.map +1 -1
  152. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +1 -0
  153. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  154. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +124 -15
  155. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  156. package/fesm2022/c8y-ngx-components.mjs +489 -176
  157. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  158. package/interval-picker/interval-picker.component.d.ts +2 -2
  159. package/interval-picker/interval-picker.component.d.ts.map +1 -1
  160. package/interval-picker/interval-picker.model.d.ts +5 -0
  161. package/interval-picker/interval-picker.model.d.ts.map +1 -1
  162. package/locales/de.po +431 -538
  163. package/locales/en.po +2 -889
  164. package/locales/en_US.po +2 -880
  165. package/locales/es.po +462 -540
  166. package/locales/fr.po +470 -549
  167. package/locales/ja_JP.po +405 -598
  168. package/locales/ko.po +649 -502
  169. package/locales/locales.pot +27 -12
  170. package/locales/nl.po +463 -541
  171. package/locales/pl.po +504 -554
  172. package/locales/pt_BR.po +466 -543
  173. package/locales/zh_CN.po +650 -498
  174. package/locales/zh_TW.po +650 -498
  175. package/package.json +1 -1
  176. package/protocol-lwm2m/ng1/plugin-checker.service.d.ts +4 -0
  177. package/protocol-lwm2m/ng1/plugin-checker.service.d.ts.map +1 -1
  178. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  179. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +12 -1
  180. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  181. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +12 -1
  182. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  183. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +11 -1
  184. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  185. package/widgets/implementations/alarms/alarm-widget.service.d.ts.map +1 -1
@@ -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';
@@ -12,39 +12,84 @@ export class RouterTabsResolver {
12
12
  get routerStateSnapshot() {
13
13
  return this.router.routerState.snapshot;
14
14
  }
15
- resolve(route) {
16
- const latestChildren = this.router.config.find(r => route.routeConfig.path === r.path).children;
17
- return from(latestChildren || []).pipe(mergeMap((child) => from(this.getGuards(child)).pipe(map((guard) => guard.canActivate(route, this.routerStateSnapshot)), mergeMap((result) => {
15
+ resolve(currentRoute) {
16
+ const routeConfig = currentRoute.routeConfig;
17
+ const latestChildren = this.getLatestChildRoutes(routeConfig.rootContext);
18
+ return from(latestChildren || []).pipe(mergeMap((child) => from(this.getGuards(child)).pipe(map(canActivate => canActivate(currentRoute, this.routerStateSnapshot)), mergeMap((result) => {
18
19
  if (isObservable(result)) {
19
20
  return result;
20
21
  }
21
- if (result && typeof result.then === 'function') {
22
- return from(result);
22
+ const resultAsPromise = result;
23
+ if (resultAsPromise && typeof resultAsPromise.then === 'function') {
24
+ return from(resultAsPromise);
23
25
  }
24
26
  return of(result);
25
27
  }), tap(result => {
26
28
  if (Array.isArray(result)) {
27
29
  child.tabs = result;
28
30
  }
29
- }), every(result => !!result), filter(result => result), mergeMap(() => (Array.isArray(child.tabs) ? from(child.tabs) : of(child))), map(result => result.label || result.path
30
- ? {
31
- label: result.label,
32
- icon: result.icon,
33
- path: `${decodeURIComponent(route.url.join('/'))}/${result.path}`,
34
- priority: result.priority,
35
- hide: result.hide,
36
- badge: result.badge,
37
- tooltipText: result.tooltipText,
38
- featureId: result.featureId
31
+ }), every(result => !!result), filter(result => result), mergeMap(() => (Array.isArray(child.tabs) ? from(child.tabs) : of(child))), map(result => {
32
+ const url = this.getBaselUrl(currentRoute).join('/');
33
+ return result.label || result.path
34
+ ? {
35
+ label: result.label,
36
+ icon: result.icon,
37
+ path: `/${decodeURIComponent(url)}/${result.path}`,
38
+ priority: result.priority,
39
+ hide: result.hide,
40
+ badge: result.badge,
41
+ tooltipText: result.tooltipText,
42
+ featureId: result.featureId,
43
+ tabsOutlet: result.tabsOutlet,
44
+ showAlways: result.showAlways
45
+ }
46
+ : undefined;
47
+ }))), filter(tabs => !!tabs), toArray());
48
+ }
49
+ getBaselUrl(currentRoute) {
50
+ let prefix = [];
51
+ if (currentRoute.parent?.url.length > 0) {
52
+ prefix = this.getBaselUrl(currentRoute.parent);
53
+ }
54
+ return [...prefix, ...currentRoute.url];
55
+ }
56
+ getLatestChildRoutes(context) {
57
+ const thisContextRoute = this.findRootContextRoutes(this.router.config, context);
58
+ return thisContextRoute?.children || [];
59
+ }
60
+ findRootContextRoutes(routes, context) {
61
+ for (const route of routes) {
62
+ if (route.rootContext === context) {
63
+ return route;
64
+ }
65
+ if (route.children) {
66
+ const childResult = this.findRootContextRoutes(route.children, context);
67
+ if (childResult) {
68
+ return childResult;
69
+ }
39
70
  }
40
- : undefined))), filter(tabs => !!tabs), toArray());
71
+ }
72
+ return null;
41
73
  }
42
74
  getGuards(child) {
43
- const guards = (child.canActivate || []).map(guard => {
44
- 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
+ });
45
90
  });
46
91
  if (child.data && child.data.showIf) {
47
- guards.push({ canActivate: child.data.showIf });
92
+ guards.push((route, state) => child.data.showIf(route, state));
48
93
  }
49
94
  return guards;
50
95
  }
@@ -57,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
57
102
  providedIn: 'root'
58
103
  }]
59
104
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXRhYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXItdGFicy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQTBCLE1BQU0sRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU81RSxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1UsUUFBa0IsRUFDbEIsTUFBYztRQURkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUosSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUE2QjtRQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ2hHLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BDLFFBQVEsQ0FBQyxDQUFDLEtBQW1CLEVBQUUsRUFBRSxDQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFD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QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIsIENhbkFjdGl2YXRlRm4gfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZnJvbSwgaXNPYnNlcnZhYmxlLCBvZiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZXZlcnksIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgdG9BcnJheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFiIH0gZnJvbSAnLi4vdGFicy90YWIubW9kZWwnO1xuaW1wb3J0IHsgUm91dGUsIFJvdXRlV2l0aFRhYiB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUm91dGVyVGFic1Jlc29sdmVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgZ2V0IHJvdXRlclN0YXRlU25hcHNob3QoKSB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90O1xuICB9XG5cbiAgcmVzb2x2ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICAgIGNvbnN0IGxhdGVzdENoaWxkcmVuID0gdGhpcy5yb3V0ZXIuY29uZmlnLmZpbmQociA9PiByb3V0ZS5yb3V0ZUNvbmZpZy5wYXRoID09PSByLnBhdGgpLmNoaWxkcmVuO1xuICAgIHJldHVybiBmcm9tKGxhdGVzdENoaWxkcmVuIHx8IFtdKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGNoaWxkOiBSb3V0ZVdpdGhUYWIpID0+XG4gICAgICAgIGZyb20odGhpcy5nZXRHdWFyZHMoY2hpbGQpKS5waXBlKFxuICAgICAgICAgIG1hcCgoZ3VhcmQ6IHsgY2FuQWN0aXZhdGU6IENhbkFjdGl2YXRlRm4gfSkgPT5cbiAgICAgICAgICAgIGd1YXJkLmNhbkFjdGl2YXRlKHJvdXRlLCB0aGlzLnJvdXRlclN0YXRlU25hcHNob3QpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0LnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZyb20ocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvZihyZXN1bHQpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRhcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICAgICAgICBjaGlsZC50YWJzID0gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGV2ZXJ5KHJlc3VsdCA9PiAhIXJlc3VsdCksXG4gICAgICAgICAgZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQpLFxuICAgICAgICAgIG1lcmdlTWFwKCgpID0+IChBcnJheS5pc0FycmF5KGNoaWxkLnRhYnMpID8gZnJvbShjaGlsZC50YWJzKSA6IG9mKGNoaWxkKSkpLFxuICAgICAgICAgIG1hcChyZXN1bHQgPT5cbiAgICAgICAgICAgIHJlc3VsdC5sYWJlbCB8fCByZXN1bHQucGF0aFxuICAgICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogcmVzdWx0LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgaWNvbjogcmVzdWx0Lmljb24sXG4gICAgICAgICAgICAgICAgICBwYXRoOiBgJHtkZWNvZGVVUklDb21wb25lbnQocm91dGUudXJsLmpvaW4oJy8nKSl9LyR7cmVzdWx0LnBhdGh9YCxcbiAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiByZXN1bHQucHJpb3JpdHksXG4gICAgICAgICAgICAgICAgICBoaWRlOiByZXN1bHQuaGlkZSxcbiAgICAgICAgICAgICAgICAgIGJhZGdlOiByZXN1bHQuYmFkZ2UsXG4gICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dDogcmVzdWx0LnRvb2x0aXBUZXh0LFxuICAgICAgICAgICAgICAgICAgZmVhdHVyZUlkOiByZXN1bHQuZmVhdHVyZUlkXG4gICAgICAgICAgICAgICAgfSBhcyBUYWIpXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgZmlsdGVyKHRhYnMgPT4gISF0YWJzKSxcbiAgICAgIHRvQXJyYXkoKVxuICAgICkgYXMgT2JzZXJ2YWJsZTxUYWJbXT47XG4gIH1cblxuICBwcml2YXRlIGdldEd1YXJkcyhjaGlsZDogUm91dGUpIHtcbiAgICBjb25zdCBndWFyZHMgPSAoY2hpbGQuY2FuQWN0aXZhdGUgfHwgW10pLm1hcChndWFyZCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoZ3VhcmQpO1xuICAgIH0pO1xuICAgIGlmIChjaGlsZC5kYXRhICYmIGNoaWxkLmRhdGEuc2hvd0lmKSB7XG4gICAgICBndWFyZHMucHVzaCh7IGNhbkFjdGl2YXRlOiBjaGlsZC5kYXRhLnNob3dJZiB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGd1YXJkcztcbiAgfVxufVxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXRhYnMucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXItdGFicy5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBaUIscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUVMLE1BQU0sRUFRUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTzVFLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxRQUFrQixFQUNsQixNQUFjO1FBRGQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3JCLENBQUM7SUFFSixJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsT0FBTyxDQUFDLFlBQW9DO1FBQzFDLE1BQU0sV0FBVyxHQUF5QixZQUFZLENBQUMsV0FBbUMsQ0FBQztRQUMzRixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3BDLFFBQVEsQ0FBQyxDQUFDLEtBQW1CLEVBQUUsRUFBRSxDQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUIsR0FBRyxDQUFDLFdB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QW1DO2dCQUNuQyxNQUFNLFdBQVcsR0FBRyxLQUFzQixDQUFDO2dCQUMzQyxPQUFPLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7b0JBQzFDLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbkMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQWtCLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBNkIsRUFBRSxLQUEwQixFQUFFLEVBQUUsQ0FDeEUsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUNoQyxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBakhVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgSW5qZWN0YWJsZSwgUHJvdmlkZXJUb2tlbiwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXIsXG4gIENhbkFjdGl2YXRlRm4sXG4gIFJvdXRlcyxcbiAgVXJsU2VnbWVudCxcbiAgQ2FuQWN0aXZhdGUsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG4gIE1heWJlQXN5bmMsXG4gIEd1YXJkUmVzdWx0XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmcm9tLCBpc09ic2VydmFibGUsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBldmVyeSwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB0b0FycmF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWIgfSBmcm9tICcuLi90YWJzL3RhYi5tb2RlbCc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVXaXRoVGFiLCBWaWV3Q29udGV4dCwgVmlld0NvbnRleHRSb290Um91dGUgfSBmcm9tICcuL3JvdXRlci5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlclRhYnNSZXNvbHZlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIGdldCByb3V0ZXJTdGF0ZVNuYXBzaG90KCkge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdDtcbiAgfVxuXG4gIHJlc29sdmUoY3VycmVudFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgY29uc3Qgcm91dGVDb25maWc6IFZpZXdDb250ZXh0Um9vdFJvdXRlID0gY3VycmVudFJvdXRlLnJvdXRlQ29uZmlnIGFzIFZpZXdDb250ZXh0Um9vdFJvdXRlO1xuICAgIGNvbnN0IGxhdGVzdENoaWxkcmVuID0gdGhpcy5nZXRMYXRlc3RDaGlsZFJvdXRlcyhyb3V0ZUNvbmZpZy5yb290Q29udGV4dCk7XG4gICAgcmV0dXJuIGZyb20obGF0ZXN0Q2hpbGRyZW4gfHwgW10pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoY2hpbGQ6IFJvdXRlV2l0aFRhYikgPT5cbiAgICAgICAgZnJvbSh0aGlzLmdldEd1YXJkcyhjaGlsZCkpLnBpcGUoXG4gICAgICAgICAgbWFwKGNhbkFjdGl2YXRlID0+IGNhbkFjdGl2YXRlKGN1cnJlbnRSb3V0ZSwgdGhpcy5yb3V0ZXJTdGF0ZVNuYXBzaG90KSksXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdDogTWF5YmVBc3luYzxHdWFyZFJlc3VsdD4pID0+IHtcbiAgICAgICAgICAgIGlmIChpc09ic2VydmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHRBc1Byb21pc2UgPSByZXN1bHQgYXMgUHJvbWlzZTxHdWFyZFJlc3VsdD47XG4gICAgICAgICAgICBpZiAocmVzdWx0QXNQcm9taXNlICYmIHR5cGVvZiByZXN1bHRBc1Byb21pc2UudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICByZXR1cm4gZnJvbShyZXN1bHRBc1Byb21pc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mKHJlc3VsdCBhcyBHdWFyZFJlc3VsdCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgICAgIGNoaWxkLnRhYnMgPSByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgZXZlcnkocmVzdWx0ID0+ICEhcmVzdWx0KSxcbiAgICAgICAgICBmaWx0ZXIocmVzdWx0ID0+IHJlc3VsdCksXG4gICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gKEFycmF5LmlzQXJyYXkoY2hpbGQudGFicykgPyBmcm9tKGNoaWxkLnRhYnMpIDogb2YoY2hpbGQpKSksXG4gICAgICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldEJhc2VsVXJsKGN1cnJlbnRSb3V0ZSkuam9pbignLycpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5sYWJlbCB8fCByZXN1bHQucGF0aFxuICAgICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogcmVzdWx0LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgaWNvbjogcmVzdWx0Lmljb24sXG4gICAgICAgICAgICAgICAgICBwYXRoOiBgLyR7ZGVjb2RlVVJJQ29tcG9uZW50KHVybCl9LyR7cmVzdWx0LnBhdGh9YCxcbiAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiByZXN1bHQucHJpb3JpdHksXG4gICAgICAgICAgICAgICAgICBoaWRlOiByZXN1bHQuaGlkZSxcbiAgICAgICAgICAgICAgICAgIGJhZGdlOiByZXN1bHQuYmFkZ2UsXG4gICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dDogcmVzdWx0LnRvb2x0aXBUZXh0LFxuICAgICAgICAgICAgICAgICAgZmVhdHVyZUlkOiByZXN1bHQuZmVhdHVyZUlkLFxuICAgICAgICAgICAgICAgICAgdGFic091dGxldDogcmVzdWx0LnRhYnNPdXRsZXQsXG4gICAgICAgICAgICAgICAgICBzaG93QWx3YXlzOiByZXN1bHQuc2hvd0Fsd2F5c1xuICAgICAgICAgICAgICAgIH0gYXMgVGFiKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgZmlsdGVyKHRhYnMgPT4gISF0YWJzKSxcbiAgICAgIHRvQXJyYXkoKVxuICAgICkgYXMgT2JzZXJ2YWJsZTxUYWJbXT47XG4gIH1cblxuICBwcml2YXRlIGdldEJhc2VsVXJsKGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICAgIGxldCBwcmVmaXg6IFVybFNlZ21lbnRbXSA9IFtdO1xuICAgIGlmIChjdXJyZW50Um91dGUucGFyZW50Py51cmwubGVuZ3RoID4gMCkge1xuICAgICAgcHJlZml4ID0gdGhpcy5nZXRCYXNlbFVybChjdXJyZW50Um91dGUucGFyZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gWy4uLnByZWZpeCwgLi4uY3VycmVudFJvdXRlLnVybF07XG4gIH1cblxuICBwcml2YXRlIGdldExhdGVzdENoaWxkUm91dGVzKGNvbnRleHQ6IFZpZXdDb250ZXh0KSB7XG4gICAgY29uc3QgdGhpc0NvbnRleHRSb3V0ZSA9IHRoaXMuZmluZFJvb3RDb250ZXh0Um91dGVzKHRoaXMucm91dGVyLmNvbmZpZywgY29udGV4dCk7XG4gICAgcmV0dXJuIHRoaXNDb250ZXh0Um91dGU/LmNoaWxkcmVuIHx8IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUm9vdENvbnRleHRSb3V0ZXMocm91dGVzOiBSb3V0ZXMsIGNvbnRleHQ6IFZpZXdDb250ZXh0KSB7XG4gICAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICAgIGlmICgocm91dGUgYXMgVmlld0NvbnRleHRSb290Um91dGUpLnJvb3RDb250ZXh0ID09PSBjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiByb3V0ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyb3V0ZS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBjaGlsZFJlc3VsdCA9IHRoaXMuZmluZFJvb3RDb250ZXh0Um91dGVzKHJvdXRlLmNoaWxkcmVuLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKGNoaWxkUmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIGNoaWxkUmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHdWFyZHMoY2hpbGQ6IFJvdXRlKTogQ2FuQWN0aXZhdGVGbltdIHtcbiAgICBjb25zdCBpbmplY3RvcjogSW5qZWN0b3IgPSAoKDxhbnk+Y2hpbGQpLl9pbmplY3RvciBhcyBhbnkpIHx8IHRoaXMuaW5qZWN0b3I7XG4gICAgY29uc3QgY2FuQWN0aXZhdGVzOiBBcnJheTxDYW5BY3RpdmF0ZUZuIHwgUHJvdmlkZXJUb2tlbjxDYW5BY3RpdmF0ZT4+ID0gY2hpbGQuY2FuQWN0aXZhdGUgfHwgW107XG4gICAgY29uc3QgZ3VhcmRzID0gY2FuQWN0aXZhdGVzLm1hcChndWFyZCA9PiB7XG4gICAgICByZXR1cm4gKChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpID0+IHtcbiAgICAgICAgLy8gZm9yIGxlZ2FjeSBDYW5BY3RpdmF0ZSBndWFyZHNcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmluamVjdG9yLmdldChndWFyZCwgbnVsbCk7XG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5jYW5BY3RpdmF0ZShyb3V0ZSwgc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZm9yIGN1cnJlbnQgQ2FuQWN0aXZhdGVGbiBndWFyZHNcbiAgICAgICAgY29uc3QgY2FuQWN0aXZhdGUgPSBndWFyZCBhcyBDYW5BY3RpdmF0ZUZuO1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNhbkFjdGl2YXRlKHJvdXRlLCBzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSkgYXMgQ2FuQWN0aXZhdGVGbjtcbiAgICB9KTtcbiAgICBpZiAoY2hpbGQuZGF0YSAmJiBjaGlsZC5kYXRhLnNob3dJZikge1xuICAgICAgZ3VhcmRzLnB1c2goKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkgPT5cbiAgICAgICAgY2hpbGQuZGF0YS5zaG93SWYocm91dGUsIHN0YXRlKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGd1YXJkcztcbiAgfVxufVxuIl19
@@ -16,5 +16,10 @@ export var ViewContext;
16
16
  ViewContext["Service"] = "service/:id";
17
17
  ViewContext["DatapointLibrary"] = "datapointlibrary/:id";
18
18
  ViewContext["Simulators"] = "simulators/:id";
19
+ ViewContext["Alarms"] = "alarms/:id";
20
+ ViewContext["GroupAlarms"] = "group/:id/alarms/:id";
21
+ ViewContext["DeviceAlarms"] = "device/:id/alarms/:id";
22
+ ViewContext["ServiceAlarms"] = "service/:id/alarms/:id";
23
+ ViewContext["SimulatorsAlarms"] = "simulators/:id/alarms/:id";
19
24
  })(ViewContext || (ViewContext = {}));
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9yb3V0ZXIvcm91dGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFdBY1g7QUFkRCxXQUFZLFdBQVc7SUFDckIsb0NBQXFCLENBQUE7SUFDckIsa0NBQW1CLENBQUE7SUFDbkIsaUNBQWtCLENBQUE7SUFDbEIscUVBQXNELENBQUE7SUFDdEQsK0RBQWdELENBQUE7SUFDaEQsNkRBQThDLENBQUE7SUFDOUMsd0VBQXlELENBQUE7SUFDekQsb0VBQXFELENBQUE7SUFDckQscUNBQXNCLENBQUE7SUFDdEIscUNBQXNCLENBQUE7SUFDdEIsc0NBQXVCLENBQUE7SUFDdkIsd0RBQXlDLENBQUE7SUFDekMsNENBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQWRXLFdBQVcsS0FBWCxXQUFXLFFBY3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGUgYXMgbmdSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEV4dGVuc2lvbkZhY3RvcnkgfSBmcm9tICcuLi9jb21tb24vZXh0ZW5zaW9uLWhvb2tzJztcbmltcG9ydCB7IFRhYiwgVGFiV2l0aFRlbXBsYXRlIH0gZnJvbSAnLi4vdGFicy90YWIubW9kZWwnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0RGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgZGF0YSBvZiB0aGlzIHJvdXRlLiBFLmcuIG9uIFZpZXdDb250ZXh0LkRldmljZSBhbiBtYW5hZ2VkIG9iamVjdFxuICAgKiBvZiB0aGUgZGV2aWNlLlxuICAgKi9cbiAgY29udGV4dERhdGE6IElJZGVudGlmaWVkO1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgVmlld0NvbnRleHQgdXNlZC5cbiAgICovXG4gIGNvbnRleHQ6IFZpZXdDb250ZXh0O1xufVxuXG4vKipcbiAqIFRoZSBjb250ZXh0IHJvdXRlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgZW51bSBWaWV3Q29udGV4dCB7XG4gIERldmljZSA9ICdkZXZpY2UvOmlkJyxcbiAgR3JvdXAgPSAnZ3JvdXAvOmlkJyxcbiAgVXNlciA9ICd1c2Vycy86aWQnLFxuICBBcHBsaWNhdGlvbiA9ICdlY29zeXN0ZW0vYXBwbGljYXRpb24vYXBwbGljYXRpb25zLzppZCcsXG4gIEV4dGVuc2lvbiA9ICdlY29zeXN0ZW0vZXh0ZW5zaW9uL2V4dGVuc2lvbnMvOmlkJyxcbiAgRmVhdHVyZSA9ICdlY29zeXN0ZW0vYXBwbGljYXRpb24vZmVhdHVyZXMvOmlkJyxcbiAgTWljcm9zZXJ2aWNlID0gJ2Vjb3N5c3RlbS9taWNyb3NlcnZpY2UvbWljcm9zZXJ2aWNlcy86aWQnLFxuICBTdWJzY3JpYmVkQXBwbGljYXRpb25zID0gJ3N1YnNjcmliZWRBcHBsaWNhdGlvbnMvOmlkJyxcbiAgVGVuYW50ID0gJ3RlbmFudHMvOmlkJyxcbiAgUmVwb3J0ID0gJ3JlcG9ydHMvOmlkJyxcbiAgU2VydmljZSA9ICdzZXJ2aWNlLzppZCcsXG4gIERhdGFwb2ludExpYnJhcnkgPSAnZGF0YXBvaW50bGlicmFyeS86aWQnLFxuICBTaW11bGF0b3JzID0gJ3NpbXVsYXRvcnMvOmlkJ1xufVxuXG4vKipcbiAqIEEgcm91dGUgdGhhdCBjYW4gYmUgYWRkZWQgdmlhIHRoZSBIT09LX1JPVVRFLlxuICovXG5leHBvcnQgdHlwZSBSb3V0ZSA9IFJvdXRlRGVmYXVsdCB8IFJvdXRlV2l0aFRhYiB8IFJvdXRlV2l0aENvbXBvbmVudDtcblxuLyoqXG4gKiBBIHVzdWFsIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVEZWZhdWx0IGV4dGVuZHMgbmdSb3V0ZSB7XG4gIGNvbnRleHQ/OiBuZXZlcjtcbiAgbGFiZWw/OiBuZXZlcjtcbiAgdGFicz86IG5ldmVyO1xufVxuXG5pbnRlcmZhY2UgUm91dGVCYXNlIHtcbiAgLyoqXG4gICAqIFdoaWNoIG9yZGVyIHNob3VsZCBiZSB1c2VkLlxuICAgKi9cbiAgcHJpb3JpdHk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElkIHRvIGlkZW50aWZ5IHNwZWNpZmljIGZlYXR1cmUuXG4gICAqL1xuICBmZWF0dXJlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmplY3RvciB0byB1c2UuIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHJvb3QgaW5qZWN0b3Igd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgX2luamVjdG9yPzogSW5qZWN0b3I7XG59XG5cbi8qKlxuICogQSBjb21wb25lbnQgYmFzZWQgY29udGV4dCByb3V0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVdpdGhDb21wb25lbnQgZXh0ZW5kcyBuZ1JvdXRlLCBSb3V0ZUJhc2Uge1xuICAvKipcbiAgICogVGhlIHZpZXcgY29udGV4dCB0byBhZGQgdGhpcyByb3V0ZSB0by5cbiAgICovXG4gIGNvbnRleHQ6IFZpZXdDb250ZXh0O1xuICBsYWJlbD86IG5ldmVyO1xufVxuXG4vKipcbiAqIEEgdGFiIHRoYXQgaXMgYWRkZWQgdG8gYSBjb250ZXh0IHJvdXRlIGFuZCBvcGVucyB0aGUgYXNzb2NpYXRlZFxuICogY29tcG9uZW50IG9uIHRoaXMgY29udGV4dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVdpdGhUYWJcbiAgZXh0ZW5kcyBPbWl0PFRhYldpdGhUZW1wbGF0ZSwgJ2luamVjdG9yJyB8ICdwYXRoJyB8ICdjb21wb25lbnQnPixcbiAgICBuZ1JvdXRlLFxuICAgIFJvdXRlQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgdmlldyBjb250ZXh0IHRvIGFkZCB0aGlzIHJvdXRlIHRvLlxuICAgKi9cbiAgY29udGV4dDogVmlld0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEFsbG93IHRvIGVtaXQgbXVsdGlwbGUgdGFicyBvbiBvbmUgY29udGV4dCByb3V0ZS5cbiAgICovXG4gIHRhYnM/OiBUYWJbXTtcbn1cblxuZXhwb3J0IHR5cGUgUm91dGVGYWN0b3J5ID0gUm91dGUgfCBSb3V0ZVtdIHwgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT47XG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9yb3V0ZXIvcm91dGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFdBbUJYO0FBbkJELFdBQVksV0FBVztJQUNyQixvQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixpQ0FBa0IsQ0FBQTtJQUNsQixxRUFBc0QsQ0FBQTtJQUN0RCwrREFBZ0QsQ0FBQTtJQUNoRCw2REFBOEMsQ0FBQTtJQUM5Qyx3RUFBeUQsQ0FBQTtJQUN6RCxvRUFBcUQsQ0FBQTtJQUNyRCxxQ0FBc0IsQ0FBQTtJQUN0QixxQ0FBc0IsQ0FBQTtJQUN0QixzQ0FBdUIsQ0FBQTtJQUN2Qix3REFBeUMsQ0FBQTtJQUN6Qyw0Q0FBNkIsQ0FBQTtJQUM3QixvQ0FBcUIsQ0FBQTtJQUNyQixtREFBb0MsQ0FBQTtJQUNwQyxxREFBc0MsQ0FBQTtJQUN0Qyx1REFBd0MsQ0FBQTtJQUN4Qyw2REFBOEMsQ0FBQTtBQUNoRCxDQUFDLEVBbkJXLFdBQVcsS0FBWCxXQUFXLFFBbUJ0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlIGFzIG5nUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElSZXN1bHQsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uRmFjdG9yeSB9IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgVGFiLCBUYWJXaXRoVGVtcGxhdGUgfSBmcm9tICcuLi90YWJzL3RhYi5tb2RlbCc7XG5pbXBvcnQgeyBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXRhIHtcbiAgLyoqXG4gICAqIFRoZSBkYXRhIG9mIHRoaXMgcm91dGUuIEUuZy4gb24gVmlld0NvbnRleHQuRGV2aWNlIGFuIG1hbmFnZWQgb2JqZWN0XG4gICAqIG9mIHRoZSBkZXZpY2UuXG4gICAqL1xuICBjb250ZXh0RGF0YTogSUlkZW50aWZpZWQ7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBWaWV3Q29udGV4dCB1c2VkLlxuICAgKi9cbiAgY29udGV4dDogVmlld0NvbnRleHQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgcm91dGVzIHRoYXQgYXJlIHN1cHBvcnRlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFZpZXdDb250ZXh0IHtcbiAgRGV2aWNlID0gJ2RldmljZS86aWQnLFxuICBHcm91cCA9ICdncm91cC86aWQnLFxuICBVc2VyID0gJ3VzZXJzLzppZCcsXG4gIEFwcGxpY2F0aW9uID0gJ2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi9hcHBsaWNhdGlvbnMvOmlkJyxcbiAgRXh0ZW5zaW9uID0gJ2Vjb3N5c3RlbS9leHRlbnNpb24vZXh0ZW5zaW9ucy86aWQnLFxuICBGZWF0dXJlID0gJ2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi9mZWF0dXJlcy86aWQnLFxuICBNaWNyb3NlcnZpY2UgPSAnZWNvc3lzdGVtL21pY3Jvc2VydmljZS9taWNyb3NlcnZpY2VzLzppZCcsXG4gIFN1YnNjcmliZWRBcHBsaWNhdGlvbnMgPSAnc3Vic2NyaWJlZEFwcGxpY2F0aW9ucy86aWQnLFxuICBUZW5hbnQgPSAndGVuYW50cy86aWQnLFxuICBSZXBvcnQgPSAncmVwb3J0cy86aWQnLFxuICBTZXJ2aWNlID0gJ3NlcnZpY2UvOmlkJyxcbiAgRGF0YXBvaW50TGlicmFyeSA9ICdkYXRhcG9pbnRsaWJyYXJ5LzppZCcsXG4gIFNpbXVsYXRvcnMgPSAnc2ltdWxhdG9ycy86aWQnLFxuICBBbGFybXMgPSAnYWxhcm1zLzppZCcsXG4gIEdyb3VwQWxhcm1zID0gJ2dyb3VwLzppZC9hbGFybXMvOmlkJyxcbiAgRGV2aWNlQWxhcm1zID0gJ2RldmljZS86aWQvYWxhcm1zLzppZCcsXG4gIFNlcnZpY2VBbGFybXMgPSAnc2VydmljZS86aWQvYWxhcm1zLzppZCcsXG4gIFNpbXVsYXRvcnNBbGFybXMgPSAnc2ltdWxhdG9ycy86aWQvYWxhcm1zLzppZCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3Q29udGV4U2VydmljZUNvbmZpZyB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIHRoZSByb3V0ZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSB0aGUgcm91dGVyIHNlcnZpY2Ugb3JcbiAgICAgKiBpZiB0aGUgcm91dGUgaXMgc29tZXdoZXJlIGRlZmluZWQgYnkgdGhlIGRldmVsb3Blci5cbiAgICAgKi9cbiAgICBhdXRvUm91dGU6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggdXNlZCB0byByb3V0ZS5cbiAgICAgKi9cbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIEBjOHkvY2xpZW50IHNlcnZpY2UgdG8gdXNlIGZvciB0aGlzIGNvbnRleHQuXG4gICAgICovXG4gICAgc2VydmljZTogVHlwZTx7XG4gICAgICBkZXRhaWwoXG4gICAgICAgIGVudGl0eU9ySWQ6IHN0cmluZyB8IG51bWJlciB8IElJZGVudGlmaWVkLFxuICAgICAgICBmaWx0ZXI/OiBvYmplY3RcbiAgICAgICk6IFByb21pc2U8SVJlc3VsdDxJSWRlbnRpZmllZD4+O1xuICAgICAgbGlzdChmaWx0ZXI/OiBvYmplY3QpOiBQcm9taXNlPElSZXN1bHRMaXN0PElJZGVudGlmaWVkPj47XG4gICAgfT47XG4gIH07XG59XG5cbi8qKlxuICogQSBWaWV3Q29udGV4dCBiYXNlIHJvdXRlLlxuICovXG5leHBvcnQgdHlwZSBWaWV3Q29udGV4dFJvb3RSb3V0ZSA9IFJvdXRlICYgeyByb290Q29udGV4dDogVmlld0NvbnRleHQgfTtcblxuLyoqXG4gKiBBIHJvdXRlIHRoYXQgaXMgYWRkZWQgdG8gYSBjZXJ0YWluIHZpZXcgY29udGV4dC5cbiAqL1xuZXhwb3J0IHR5cGUgVmlld0NvbnRleHRSb3V0ZSA9IFJvdXRlICYgeyBjb250ZXh0OiBWaWV3Q29udGV4dCB9O1xuXG4vKipcbiAqIEEgcm91dGUgdGhhdCBjYW4gYmUgYWRkZWQgdmlhIHRoZSBIT09LX1JPVVRFLlxuICovXG5leHBvcnQgdHlwZSBSb3V0ZSA9IFJvdXRlRGVmYXVsdCB8IFJvdXRlV2l0aFRhYiB8IFJvdXRlV2l0aENvbXBvbmVudDtcblxuLyoqXG4gKiBBIHVzdWFsIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVEZWZhdWx0IGV4dGVuZHMgbmdSb3V0ZSB7XG4gIGNvbnRleHQ/OiBuZXZlcjtcbiAgbGFiZWw/OiBuZXZlcjtcbiAgdGFicz86IG5ldmVyO1xufVxuXG5pbnRlcmZhY2UgUm91dGVCYXNlIHtcbiAgLyoqXG4gICAqIFdoaWNoIG9yZGVyIHNob3VsZCBiZSB1c2VkLlxuICAgKi9cbiAgcHJpb3JpdHk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElkIHRvIGlkZW50aWZ5IHNwZWNpZmljIGZlYXR1cmUuXG4gICAqL1xuICBmZWF0dXJlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmplY3RvciB0byB1c2UuIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHJvb3QgaW5qZWN0b3Igd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgX2luamVjdG9yPzogSW5qZWN0b3I7XG59XG5cbi8qKlxuICogQSBjb21wb25lbnQgYmFzZWQgY29udGV4dCByb3V0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVdpdGhDb21wb25lbnQgZXh0ZW5kcyBuZ1JvdXRlLCBSb3V0ZUJhc2Uge1xuICAvKipcbiAgICogVGhlIHZpZXcgY29udGV4dCB0byBhZGQgdGhpcyByb3V0ZSB0by5cbiAgICovXG4gIGNvbnRleHQ6IFZpZXdDb250ZXh0O1xuICBsYWJlbD86IG5ldmVyO1xufVxuXG4vKipcbiAqIEEgdGFiIHRoYXQgaXMgYWRkZWQgdG8gYSBjb250ZXh0IHJvdXRlIGFuZCBvcGVucyB0aGUgYXNzb2NpYXRlZFxuICogY29tcG9uZW50IG9uIHRoaXMgY29udGV4dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVdpdGhUYWJcbiAgZXh0ZW5kcyBPbWl0PFRhYldpdGhUZW1wbGF0ZSwgJ2luamVjdG9yJyB8ICdwYXRoJyB8ICdjb21wb25lbnQnPixcbiAgICBuZ1JvdXRlLFxuICAgIFJvdXRlQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgdmlldyBjb250ZXh0IHRvIGFkZCB0aGlzIHJvdXRlIHRvLlxuICAgKi9cbiAgY29udGV4dDogVmlld0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEFsbG93IHRvIGVtaXQgbXVsdGlwbGUgdGFicyBvbiBvbmUgY29udGV4dCByb3V0ZS5cbiAgICovXG4gIHRhYnM/OiBUYWJbXTtcbn1cblxuZXhwb3J0IHR5cGUgUm91dGVGYWN0b3J5ID0gUm91dGUgfCBSb3V0ZVtdIHwgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT47XG4iXX0=
@@ -1,13 +1,15 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { RouterModule as NgRouterModule } from '@angular/router';
3
- import { RouterService } from './router.service';
4
- import { ContextRouteComponent } from './context-route.component';
5
- import { HeaderModule } from '../header/header.module';
6
3
  import { CommonModule } from '../common/common.module';
4
+ import { HeaderModule } from '../header/header.module';
5
+ import { ContextRouteComponent } from './context-route.component';
7
6
  import { ContextRouteGuard } from './context-route.guard';
8
- import { ViewContext } from './router.model';
9
- import { RouterTabsResolver } from './router-tabs.resolver';
10
7
  import { EmptyComponent } from './empty.component';
8
+ import { RouterTabsResolver } from './router-tabs.resolver';
9
+ import { ViewContext } from './router.model';
10
+ import { RouterService } from './router.service';
11
+ import { ScopedContextRouteService } from './scoped-context-route.service';
12
+ import { ViewContextServices } from './view-context.service';
11
13
  import * as i0 from "@angular/core";
12
14
  import * as i1 from "./router.service";
13
15
  export const extraRoutes = [
@@ -20,17 +22,21 @@ export const extraRoutes = [
20
22
  component: EmptyComponent
21
23
  }
22
24
  ];
25
+ export const viewContextRoutes = [];
23
26
  // tslint:disable-next-line: forin
24
27
  for (const key in ViewContext) {
25
28
  const context = ViewContext[key];
26
- extraRoutes.push({
27
- path: context,
29
+ if (!ViewContextServices.isAutoRoute(context)) {
30
+ continue;
31
+ }
32
+ viewContextRoutes.push({
33
+ path: ViewContextServices.getPath(context),
34
+ rootContext: context,
28
35
  component: ContextRouteComponent,
29
36
  canActivate: [ContextRouteGuard],
30
37
  data: { context, contextData: {} },
31
38
  resolve: {
32
39
  tabs: RouterTabsResolver
33
- // contextData: ContextRouteGuard
34
40
  }
35
41
  });
36
42
  }
@@ -59,10 +65,10 @@ export class RouterModule {
59
65
  // initialNavigation disabled by default because of MTM-44047 (routes triggered before the actual login)
60
66
  config.initialNavigation = config.initialNavigation ?? 'disabled';
61
67
  config.useHash = config.useHash ?? true;
62
- const ngRouterModule = NgRouterModule.forRoot([...routes, ...extraRoutes], config);
68
+ const ngRouterModule = NgRouterModule.forRoot([...routes, ...extraRoutes, ...viewContextRoutes], config);
63
69
  return {
64
70
  ngModule: RouterModule,
65
- providers: [...ngRouterModule.providers]
71
+ providers: [...ngRouterModule.providers, ScopedContextRouteService]
66
72
  };
67
73
  }
68
74
  constructor(
@@ -72,13 +78,14 @@ export class RouterModule {
72
78
  }
73
79
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, deps: [{ token: i1.RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
74
80
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, declarations: [ContextRouteComponent, EmptyComponent], imports: [NgRouterModule, HeaderModule, CommonModule] }); }
75
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, imports: [NgRouterModule, HeaderModule, CommonModule] }); }
81
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, providers: [ScopedContextRouteService], imports: [NgRouterModule, HeaderModule, CommonModule] }); }
76
82
  }
77
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, decorators: [{
78
84
  type: NgModule,
79
85
  args: [{
80
86
  declarations: [ContextRouteComponent, EmptyComponent],
81
- imports: [NgRouterModule, HeaderModule, CommonModule]
87
+ imports: [NgRouterModule, HeaderModule, CommonModule],
88
+ providers: [ScopedContextRouteService]
82
89
  }]
83
90
  }], ctorParameters: () => [{ type: i1.RouterService }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL3JvdXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFnQixZQUFZLElBQUksY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBUyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRW5ELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBWTtJQUNsQztRQUNFLElBQUksRUFBRSxXQUFXO1FBQ2pCLFNBQVMsRUFBRSxjQUFjO0tBQzFCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsYUFBYTtRQUNuQixTQUFTLEVBQUUsY0FBYztLQUMxQjtDQUNGLENBQUM7QUFDRixrQ0FBa0M7QUFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM5QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNmLElBQUksRUFBRSxPQUFPO1FBQ2IsU0FBUyxFQUFFLHFCQUFxQjtRQUNoQyxXQUFXLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztRQUNoQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRTtRQUNsQyxPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLGlDQUFpQztTQUNsQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFLSCxNQUFNLE9BQU8sWUFBWTtJQUN2Qjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxNQUFxQjtRQUN2RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELHdHQUF3RztRQUN4RyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixJQUFJLFVBQVUsQ0FBQztRQUNsRSxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBRXhDLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRW5GLE9BQU87WUFDTCxRQUFRLEVBQUUsWUFBWTtZQUN0QixTQUFTLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUM7U0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRDtJQUNFLG1GQUFtRjtJQUMzRSxhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUNuQyxDQUFDOzhHQTNCTyxZQUFZOytHQUFaLFlBQVksaUJBSFIscUJBQXFCLEVBQUUsY0FBYyxhQUMxQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVk7K0dBRXpDLFlBQVksWUFGYixjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVk7OzJGQUV6QyxZQUFZO2tCQUp4QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQztvQkFDckQsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUM7aUJBQ3REIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV4dHJhT3B0aW9ucywgUm91dGVyTW9kdWxlIGFzIE5nUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUm91dGVyU2VydmljZSB9IGZyb20gJy4vcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXJvdXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICcuLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBDb250ZXh0Um91dGVHdWFyZCB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5ndWFyZCc7XG5pbXBvcnQgeyBWaWV3Q29udGV4dCwgUm91dGUgfSBmcm9tICcuL3JvdXRlci5tb2RlbCc7XG5pbXBvcnQgeyBSb3V0ZXJUYWJzUmVzb2x2ZXIgfSBmcm9tICcuL3JvdXRlci10YWJzLnJlc29sdmVyJztcbmltcG9ydCB7IEVtcHR5Q29tcG9uZW50IH0gZnJvbSAnLi9lbXB0eS5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgZXh0cmFSb3V0ZXM6IFJvdXRlW10gPSBbXG4gIHtcbiAgICBwYXRoOiAndXNlcnMvbmV3JyxcbiAgICBjb21wb25lbnQ6IEVtcHR5Q29tcG9uZW50XG4gIH0sXG4gIHtcbiAgICBwYXRoOiAndGVuYW50cy9uZXcnLFxuICAgIGNvbXBvbmVudDogRW1wdHlDb21wb25lbnRcbiAgfVxuXTtcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZm9yaW5cbmZvciAoY29uc3Qga2V5IGluIFZpZXdDb250ZXh0KSB7XG4gIGNvbnN0IGNvbnRleHQgPSBWaWV3Q29udGV4dFtrZXldO1xuICBleHRyYVJvdXRlcy5wdXNoKHtcbiAgICBwYXRoOiBjb250ZXh0LFxuICAgIGNvbXBvbmVudDogQ29udGV4dFJvdXRlQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQ29udGV4dFJvdXRlR3VhcmRdLFxuICAgIGRhdGE6IHsgY29udGV4dCwgY29udGV4dERhdGE6IHt9IH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgdGFiczogUm91dGVyVGFic1Jlc29sdmVyXG4gICAgICAvLyBjb250ZXh0RGF0YTogQ29udGV4dFJvdXRlR3VhcmRcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEEgQzhZIHJvdXRlciBpbXBsZW1lbnRhdGlvbi4gSXQgaW1wbGVtZW50cyBzb21lIGRlZmF1bHQgcm91dGVzIG5lZWRlZFxuICogYXMgd2VsbCBhcyBjb250ZXh0IHJvdXRlcy4gQ29udGV4dCByb3V0ZXMgYXJlIHVzZWZ1bCwgaWYgeW91IHdhbnQgdG9cbiAqIHVzZSBjb250ZXh0IGRhdGEgb24gYSBjZXJ0YWluIHZpZXcgKGUuZy4gYSBkZXZpY2UpLCB0aGVuIHRoaXMgcm91dGVzXG4gKiBhdXRvbWF0aWNhbGx5IHJlc29sdmUgdGhlIGFzc29jaWF0ZWQgbWFuYWdlZCBvYmplY3QuXG4gKlxuICogWW91IGNhbiB1c2UgdGhpcyBpbiBjb21iaW5hdGlvbiBvZiB0aGUgQW5ndWxhciBkZWZhdWx0IFJvdXRlck1vZHVsZVxuICogb3IgdXNlIG9ubHkgdGhpcyBtb2R1bGUuIENvbnRleHQgcm91dGVzIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGVcbiAqIEhPT0tfUk9VVEVTIGhvb2suXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NvbnRleHRSb3V0ZUNvbXBvbmVudCwgRW1wdHlDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbTmdSb3V0ZXJNb2R1bGUsIEhlYWRlck1vZHVsZSwgQ29tbW9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJNb2R1bGUge1xuICAvKipcbiAgICogU2FtZSBpbnRlcmZhY2UgYXMgQGFuZ3VsYXIvcm91dGVyIG1vZHVsZS5cbiAgICogU2V0cyBgaW5pdGlhbE5hdmlnYXRpb25gIGFsd2F5cyB0byBgZGlzYWJsZWRgIGFuZCBgdXNlSGFzaGAgYWx3YXlzIHRvIGB0cnVlYC5cbiAgICogQHBhcmFtIHJvdXRlcyBUaGUgY29uZmlndXJlZCByb3V0ZXMuXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIHJvdXRlciBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uXG4gICAqIEByZXR1cm5zIFRoZSBtb2R1bGUgYW5kIHByb3ZpZGVycy5cbiAgICovXG4gIHN0YXRpYyBmb3JSb290KHJvdXRlczogUm91dGVzID0gW10sIGNvbmZpZz86IEV4dHJhT3B0aW9ucyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Um91dGVyTW9kdWxlPiB7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIGNvbmZpZyA9IHt9O1xuICAgIH1cbiAgICAvLyBpbml0aWFsTmF2aWdhdGlvbiBkaXNhYmxlZCBieSBkZWZhdWx0IGJlY2F1c2Ugb2YgTVRNLTQ0MDQ3IChyb3V0ZXMgdHJpZ2dlcmVkIGJlZm9yZSB0aGUgYWN0dWFsIGxvZ2luKVxuICAgIGNvbmZpZy5pbml0aWFsTmF2aWdhdGlvbiA9IGNvbmZpZy5pbml0aWFsTmF2aWdhdGlvbiA/PyAnZGlzYWJsZWQnO1xuICAgIGNvbmZpZy51c2VIYXNoID0gY29uZmlnLnVzZUhhc2ggPz8gdHJ1ZTtcblxuICAgIGNvbnN0IG5nUm91dGVyTW9kdWxlID0gTmdSb3V0ZXJNb2R1bGUuZm9yUm9vdChbLi4ucm91dGVzLCAuLi5leHRyYVJvdXRlc10sIGNvbmZpZyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJvdXRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogWy4uLm5nUm91dGVyTW9kdWxlLnByb3ZpZGVyc11cbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gRGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQgaXMgaW50ZW5kZWQ6IHRvIGFsd2F5cyBoYXZlIGEgaW5zdGFuY2Ugb2YgUm91dGVyU2VydmljZS5cbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IFJvdXRlclNlcnZpY2VcbiAgKSB7fVxufVxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL3JvdXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFnQixZQUFZLElBQUksY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFTLFdBQVcsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUU3RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQVk7SUFDbEM7UUFDRSxJQUFJLEVBQUUsV0FBVztRQUNqQixTQUFTLEVBQUUsY0FBYztLQUMxQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLGNBQWM7S0FDMUI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQTJCLEVBQUUsQ0FBQztBQUM1RCxrQ0FBa0M7QUFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM5QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzlDLFNBQVM7SUFDWCxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBQ3JCLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzFDLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLFNBQVMsRUFBRSxxQkFBcUI7UUFDaEMsV0FBVyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDaEMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7UUFDbEMsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLGtCQUFrQjtTQUN6QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFNSCxNQUFNLE9BQU8sWUFBWTtJQUN2Qjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxNQUFxQjtRQUN2RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELHdHQUF3RztRQUN4RyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixJQUFJLFVBQVUsQ0FBQztRQUNsRSxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBRXhDLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQzNDLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxFQUNqRCxNQUFNLENBQ1AsQ0FBQztRQUVGLE9BQU87WUFDTCxRQUFRLEVBQUUsWUFBWTtZQUN0QixTQUFTLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUseUJBQXlCLENBQUM7U0FDcEUsQ0FBQztJQUNKLENBQUM7SUFFRDtJQUNFLG1GQUFtRjtJQUMzRSxhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUNuQyxDQUFDOzhHQTlCTyxZQUFZOytHQUFaLFlBQVksaUJBSlIscUJBQXFCLEVBQUUsY0FBYyxhQUMxQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVk7K0dBR3pDLFlBQVksYUFGWixDQUFDLHlCQUF5QixDQUFDLFlBRDVCLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWTs7MkZBR3pDLFlBQVk7a0JBTHhCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLEVBQUUsY0FBYyxDQUFDO29CQUNyRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDckQsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV4dHJhT3B0aW9ucywgUm91dGVyTW9kdWxlIGFzIE5nUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xuaW1wb3J0IHsgSGVhZGVyTW9kdWxlIH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5tb2R1bGUnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXJvdXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZXh0Um91dGVHdWFyZCB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5ndWFyZCc7XG5pbXBvcnQgeyBFbXB0eUNvbXBvbmVudCB9IGZyb20gJy4vZW1wdHkuY29tcG9uZW50JztcbmltcG9ydCB7IFJvdXRlclRhYnNSZXNvbHZlciB9IGZyb20gJy4vcm91dGVyLXRhYnMucmVzb2x2ZXInO1xuaW1wb3J0IHsgUm91dGUsIFZpZXdDb250ZXh0LCBWaWV3Q29udGV4dFJvb3RSb3V0ZSB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcbmltcG9ydCB7IFJvdXRlclNlcnZpY2UgfSBmcm9tICcuL3JvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNjb3BlZENvbnRleHRSb3V0ZVNlcnZpY2UgfSBmcm9tICcuL3Njb3BlZC1jb250ZXh0LXJvdXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld0NvbnRleHRTZXJ2aWNlcyB9IGZyb20gJy4vdmlldy1jb250ZXh0LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgZXh0cmFSb3V0ZXM6IFJvdXRlW10gPSBbXG4gIHtcbiAgICBwYXRoOiAndXNlcnMvbmV3JyxcbiAgICBjb21wb25lbnQ6IEVtcHR5Q29tcG9uZW50XG4gIH0sXG4gIHtcbiAgICBwYXRoOiAndGVuYW50cy9uZXcnLFxuICAgIGNvbXBvbmVudDogRW1wdHlDb21wb25lbnRcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IHZpZXdDb250ZXh0Um91dGVzOiBWaWV3Q29udGV4dFJvb3RSb3V0ZVtdID0gW107XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGZvcmluXG5mb3IgKGNvbnN0IGtleSBpbiBWaWV3Q29udGV4dCkge1xuICBjb25zdCBjb250ZXh0ID0gVmlld0NvbnRleHRba2V5XTtcbiAgaWYgKCFWaWV3Q29udGV4dFNlcnZpY2VzLmlzQXV0b1JvdXRlKGNvbnRleHQpKSB7XG4gICAgY29udGludWU7XG4gIH1cbiAgdmlld0NvbnRleHRSb3V0ZXMucHVzaCh7XG4gICAgcGF0aDogVmlld0NvbnRleHRTZXJ2aWNlcy5nZXRQYXRoKGNvbnRleHQpLFxuICAgIHJvb3RDb250ZXh0OiBjb250ZXh0LFxuICAgIGNvbXBvbmVudDogQ29udGV4dFJvdXRlQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQ29udGV4dFJvdXRlR3VhcmRdLFxuICAgIGRhdGE6IHsgY29udGV4dCwgY29udGV4dERhdGE6IHt9IH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgdGFiczogUm91dGVyVGFic1Jlc29sdmVyXG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBBIEM4WSByb3V0ZXIgaW1wbGVtZW50YXRpb24uIEl0IGltcGxlbWVudHMgc29tZSBkZWZhdWx0IHJvdXRlcyBuZWVkZWRcbiAqIGFzIHdlbGwgYXMgY29udGV4dCByb3V0ZXMuIENvbnRleHQgcm91dGVzIGFyZSB1c2VmdWwsIGlmIHlvdSB3YW50IHRvXG4gKiB1c2UgY29udGV4dCBkYXRhIG9uIGEgY2VydGFpbiB2aWV3IChlLmcuIGEgZGV2aWNlKSwgdGhlbiB0aGlzIHJvdXRlc1xuICogYXV0b21hdGljYWxseSByZXNvbHZlIHRoZSBhc3NvY2lhdGVkIG1hbmFnZWQgb2JqZWN0LlxuICpcbiAqIFlvdSBjYW4gdXNlIHRoaXMgaW4gY29tYmluYXRpb24gb2YgdGhlIEFuZ3VsYXIgZGVmYXVsdCBSb3V0ZXJNb2R1bGVcbiAqIG9yIHVzZSBvbmx5IHRoaXMgbW9kdWxlLiBDb250ZXh0IHJvdXRlcyBjYW4gb25seSBiZSBhZGRlZCB2aWEgdGhlXG4gKiBIT09LX1JPVVRFUyBob29rLlxuICovXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDb250ZXh0Um91dGVDb21wb25lbnQsIEVtcHR5Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW05nUm91dGVyTW9kdWxlLCBIZWFkZXJNb2R1bGUsIENvbW1vbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1Njb3BlZENvbnRleHRSb3V0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlck1vZHVsZSB7XG4gIC8qKlxuICAgKiBTYW1lIGludGVyZmFjZSBhcyBAYW5ndWxhci9yb3V0ZXIgbW9kdWxlLlxuICAgKiBTZXRzIGBpbml0aWFsTmF2aWdhdGlvbmAgYWx3YXlzIHRvIGBkaXNhYmxlZGAgYW5kIGB1c2VIYXNoYCBhbHdheXMgdG8gYHRydWVgLlxuICAgKiBAcGFyYW0gcm91dGVzIFRoZSBjb25maWd1cmVkIHJvdXRlcy5cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgcm91dGVyIGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMgVGhlIG1vZHVsZSBhbmQgcHJvdmlkZXJzLlxuICAgKi9cbiAgc3RhdGljIGZvclJvb3Qocm91dGVzOiBSb3V0ZXMgPSBbXSwgY29uZmlnPzogRXh0cmFPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVyczxSb3V0ZXJNb2R1bGU+IHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgY29uZmlnID0ge307XG4gICAgfVxuICAgIC8vIGluaXRpYWxOYXZpZ2F0aW9uIGRpc2FibGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBvZiBNVE0tNDQwNDcgKHJvdXRlcyB0cmlnZ2VyZWQgYmVmb3JlIHRoZSBhY3R1YWwgbG9naW4pXG4gICAgY29uZmlnLmluaXRpYWxOYXZpZ2F0aW9uID0gY29uZmlnLmluaXRpYWxOYXZpZ2F0aW9uID8/ICdkaXNhYmxlZCc7XG4gICAgY29uZmlnLnVzZUhhc2ggPSBjb25maWcudXNlSGFzaCA/PyB0cnVlO1xuXG4gICAgY29uc3QgbmdSb3V0ZXJNb2R1bGUgPSBOZ1JvdXRlck1vZHVsZS5mb3JSb290KFxuICAgICAgWy4uLnJvdXRlcywgLi4uZXh0cmFSb3V0ZXMsIC4uLnZpZXdDb250ZXh0Um91dGVzXSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJvdXRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogWy4uLm5nUm91dGVyTW9kdWxlLnByb3ZpZGVycywgU2NvcGVkQ29udGV4dFJvdXRlU2VydmljZV1cbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gRGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQgaXMgaW50ZW5kZWQ6IHRvIGFsd2F5cyBoYXZlIGEgaW5zdGFuY2Ugb2YgUm91dGVyU2VydmljZS5cbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IFJvdXRlclNlcnZpY2VcbiAgKSB7fVxufVxuIl19
@@ -1,12 +1,12 @@
1
1
  import { importProvidersFrom, Injectable, InjectionToken, Injector } from '@angular/core';
2
2
  import { Router, ROUTES } from '@angular/router';
3
- import { ViewContext } from './router.model';
4
- import { ContextRouteService } from './context-route.service';
5
- import { distinctUntilChanged, filter, shareReplay, take } from 'rxjs/operators';
6
- import { fromTriggerOnce, hookGeneric, getInjectedHooks, InjectionType, ExtensionPointWithoutStateForPlugins } from '../common/extension-hooks';
7
- import { PluginsResolveService } from '../plugins';
8
3
  import { flatten } from 'lodash';
4
+ import { distinctUntilChanged, filter, shareReplay, take } from 'rxjs/operators';
5
+ import { ExtensionPointWithoutStateForPlugins, fromTriggerOnce, getInjectedHooks, hookGeneric, InjectionType } from '../common/extension-hooks';
9
6
  import { OptionsService } from '../common/options.service';
7
+ import { PluginsResolveService } from '../plugins';
8
+ import { ContextRouteService } from './context-route.service';
9
+ import { ViewContext } from './router.model';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@angular/router";
12
12
  import * as i2 from "./context-route.service";
@@ -114,16 +114,17 @@ export class RouterService extends ExtensionPointWithoutStateForPlugins {
114
114
  // Empty route needs to be last as of navigation to angularjs routes
115
115
  // if ** route hit, the angularjs routes are loaded.
116
116
  const emptyRoute = this.router.config.find(r => r.path === '**');
117
+ const rootContextRoutes = this.findAllRootContextRoutes([...this.router.config, ...routes]);
117
118
  this.router.resetConfig([
118
119
  ...this.router.config.filter(r => r.path !== '**'),
119
- ...routes.map((r) => this.convertRoute(this.router.config, r)),
120
+ ...routes.map((r) => this.convertRoute(rootContextRoutes, r)),
120
121
  emptyRoute
121
122
  ].filter(Boolean));
122
123
  }
123
- convertRoute(initialConfig, route) {
124
+ convertRoute(rootContextRoutes, route) {
124
125
  if (route.context) {
125
- initialConfig.forEach((r) => {
126
- if (r.data && r.data.context === route.context) {
126
+ rootContextRoutes.forEach((r) => {
127
+ if (r.rootContext === route.context) {
127
128
  r.children = [route, ...(r.children || [])];
128
129
  }
129
130
  });
@@ -131,6 +132,19 @@ export class RouterService extends ExtensionPointWithoutStateForPlugins {
131
132
  }
132
133
  return route;
133
134
  }
135
+ findAllRootContextRoutes(routes) {
136
+ const result = [];
137
+ routes.forEach(route => {
138
+ if (route.rootContext) {
139
+ result.push(route);
140
+ }
141
+ if (route.children) {
142
+ const childRoutes = this.findAllRootContextRoutes(route.children);
143
+ result.push(...childRoutes);
144
+ }
145
+ });
146
+ return result;
147
+ }
134
148
  resolveRouterForChildRoutes(moduleRef, remoteNgModule) {
135
149
  // NOTE: stolen from lazy loaded routes from Angular itself.
136
150
  // https://github.com/angular/angular/blob/da58801f95c66c201e332189af25702bdd722f3f/packages/router/src/router_config_loader.ts#L103-L108
@@ -152,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
152
166
  providedIn: 'root'
153
167
  }]
154
168
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }, { type: i2.ContextRouteService }, { type: i3.PluginsResolveService }, { type: i4.OptionsService }] });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUF1QixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBRUwsZUFBZSxFQUVmLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLG9DQUFvQyxFQUVyQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBc0IzRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQWUsWUFBWSxDQUFDLENBQUM7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUE2QixFQUFFLE9BQXFDO0lBQzVGLE9BQU8sV0FBVyxDQUFRLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxhQUFjLFNBQVEsb0NBQTJDO0lBRzVFLFlBQ0UsWUFBc0IsRUFDZixNQUFjLEVBQ2IsbUJBQXdDLEVBQ2hELE9BQThCLEVBQzlCLE9BQXVCO1FBRXZCLEtBQUssQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFMdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNiLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFMekMsVUFBSyxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO1FBVXhDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFMUMseURBQXlEO1FBQ3pELCtCQUErQjtRQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRTtnQkFDakQsTUFBTSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ25ELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztnQkFDRCxPQUFPLENBQUMsY0FBYyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRTtZQUNqRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO1FBRUgsa0RBQWtEO1FBQ2xELHNDQUFzQztRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxpQkFBaUI7aUJBQ3RCLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQ3BCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUjtpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLEtBQXNCO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLGFBQTZCLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDbEQsSUFBSSxhQUFhLENBQUMsaUJBQWlCLElBQUksYUFBYSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEUsT0FBTyxHQUFHLE1BQU0sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDMUUsQ0FBQztRQUNELE9BQU8sR0FBRyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFUyxvQkFBb0I7UUFDNUIsT0FBTyxlQUFlLENBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3hELGdCQUFnQixDQUFRLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDeEUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVM7U0FDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxTQUFTLENBQUMsTUFBTTtRQUN0QixvRUFBb0U7UUFDcEUsb0RBQW9EO1FBQ3BELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQ3JCO1lBQ0UsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQztZQUNsRCxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsVUFBVTtTQUNYLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBQyxhQUFhLEVBQUUsS0FBWTtRQUM5QyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQy9DLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxTQUEyQixFQUFFLGNBQW1CO1FBQ2xGLDREQUE0RDtRQUM1RCx5SUFBeUk7UUFDekksTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFOUYsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDOUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7OEdBdEhVLGFBQWE7a0hBQWIsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaW1wb3J0UHJvdmlkZXJzRnJvbSxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBOZ01vZHVsZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgUk9VVEVTIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJvdXRlRmFjdG9yeSwgUm91dGUsIFZpZXdDb250ZXh0IH0gZnJvbSAnLi9yb3V0ZXIubW9kZWwnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc2hhcmVSZXBsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBFeHRlbnNpb25GYWN0b3J5LFxuICBmcm9tVHJpZ2dlck9uY2UsXG4gIEdlbmVyaWNIb29rVHlwZSxcbiAgaG9va0dlbmVyaWMsXG4gIGdldEluamVjdGVkSG9va3MsXG4gIEluamVjdGlvblR5cGUsXG4gIEV4dGVuc2lvblBvaW50V2l0aG91dFN0YXRlRm9yUGx1Z2lucyxcbiAgR2VuZXJpY0hvb2tPcHRpb25zXG59IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcGx1Z2lucyc7XG5pbXBvcnQgeyBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5cbi8qKlxuICogQW4gZXh0ZW5zaW9uIEhPT0sgY2FuIHVzZSBlaXRoZXIgYSBwdXJlIHZhbHVlOlxuICogYGBgdHlwZXNjcmlwdFxuICogIHsgcHJvdmlkZTogSE9PS19YLCB1c2VWYWx1ZTogeyAuLi5ob29rVmFsdWUgfSwgbXVsdGk6IHRydWUgfVxuICogYGBgXG4gKlxuICogT3IgYW4gYXJyYXkgdG8gZGlyZWN0bHkgcmVnaXN0ZXIgbXVsdGlwbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgeyBwcm92aWRlOiBIT09LX1gsIHVzZVZhbHVlOiBbeyAuLi5ob29rVmFsdWVzIH1dLCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqXG4gKiBPciBhbiBFeHRlbnNpb25GYWN0b3J5IHdoaWNoIGFsbG93cyB0byBkZWZpbmUgYSBnZXQoKSBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvblxuICogZ2V0cyBjYWxsZWQgb24gZWFjaCBuYXZpZ2F0aW9uIHdpdGggdGhlIGN1cnJlbnQgcm91dGUgYW5kIGNhbiByZXR1cm4gdmFsdWVzXG4gKiBhc3luYyAob2JzZXJ2YWJsZSBvciBwcm9taXNlKS5cbiAqIGBgYHR5cGVzY3JpcHRcbiAqICB7IHByb3ZpZGU6IEhPT0tfWCwgdXNlRmFjdG9yeTogeyBnZXQ6IChyb3V0ZSkgPT4gZG9Tb21ldGhpbmdBc3luYyhyb3V0ZSkgfSwgbXVsdGk6IHRydWUgfVxuICogYGBgXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlRXh0ZW5zaW9uID0gUm91dGUgfCBSb3V0ZVtdIHwgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT47XG5cbi8qKlxuICogQSBob29rIHRvIHVzZSBmb3IgTXVsdGkgUHJvdmlkZXIgZXh0ZW5zaW9uLlxuICogQGRlcHJlY2F0ZWQgQ29uc2lkZXIgdXNpbmcgdGhlIGBob29rUm91dGVgIGZ1bmN0aW9uIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBIT09LX1JPVVRFID0gbmV3IEluamVjdGlvblRva2VuPFJvdXRlRmFjdG9yeT4oJ0hPT0tfUk9VVEUnKTtcblxuLyoqXG4gKiBZb3UgY2FuIGVpdGhlciBwcm92aWRlIGEgc2luZ2xlIGBSb3V0ZWAgYXMgcGFyYW1ldGVyOlxuICogYGBgdHlwZXNjcmlwdFxuICogIGhvb2tSb3V0ZSguLi4pXG4gKiBgYGBcbiAqXG4gKiBPciBhbiBhcnJheSB0byBkaXJlY3RseSByZWdpc3RlciBtdWx0aXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBob29rUm91dGUoWy4uLl0pXG4gKiBgYGBcbiAqXG4gKiBPciB5b3UgcHJvdmlkZSBhbiBTZXJ2aWNlIHRoYXQgaW1wbGVtZW50cyBgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT5gXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgZXhwb3J0IGNsYXNzIE15Um91dGVGYWN0b3J5IGltcGxlbWVudHMgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT4gey4uLn1cbiAqICAuLi5cbiAqICBob29rUm91dGUoTXlSb3V0ZUZhY3RvcnkpXG4gKiBgYGBcbiAqIEEgdHlwZWQgYWx0ZXJuYXRpdmUgdG8gYEhPT0tfUk9VVEVgLlxuICogQHBhcmFtIHJvdXRlIFRoZSBgUm91dGVgJ3Mgb3IgYEV4dGVuc2lvbkZhY3RvcnlgIHRvIGJlIHByb3ZpZGVkLlxuICogQHJldHVybnMgQW4gYFByb3ZpZGVyYCB0byBiZSBwcm92aWRlZCBpbiB5b3VyIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhvb2tSb3V0ZShyb3V0ZTogR2VuZXJpY0hvb2tUeXBlPFJvdXRlPiwgb3B0aW9ucz86IFBhcnRpYWw8R2VuZXJpY0hvb2tPcHRpb25zPikge1xuICByZXR1cm4gaG9va0dlbmVyaWM8Um91dGU+KHJvdXRlLCBIT09LX1JPVVRFLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBIHNlcnZpY2Ugd2hpY2ggZGVmaW5lcyByb3V0ZXMgZm9yIHRoZSBhcHBsaWNhdGlvbi4gWW91IGNhbiB1c2VcbiAqIEhPT0tfUk9VVEVTIG9yIHBhc3NcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUm91dGVyU2VydmljZSBleHRlbmRzIEV4dGVuc2lvblBvaW50V2l0aG91dFN0YXRlRm9yUGx1Z2luczxSb3V0ZT4ge1xuICByZWFkb25seSBzdGF0ZSA9IG5ldyBNYXA8c3RyaW5nLCBSb3V0ZT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByb290SW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgcGx1Z2luczogUGx1Z2luc1Jlc29sdmVTZXJ2aWNlLFxuICAgIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHJvb3RJbmplY3RvciwgcGx1Z2lucyk7XG4gICAgdGhpcy5pdGVtcyQgPSB0aGlzLnNldHVwSXRlbXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvLyBXZSBhcmUgZG9pbmcgYSBzZWxmIHN1YnNjcmlwdGlvbiB0byBhZGQgdGhlIG5ldyByb3V0ZXNcbiAgICAvLyB0byB0aGUgcm91dGVyIGNvbmZpZ3VyYXRpb24uXG4gICAgdGhpcy5pdGVtcyQuc3Vic2NyaWJlKChyb3V0ZXM6IFJvdXRlW10pID0+IHtcbiAgICAgIGNvbnN0IHRvQWRkUm91dGVzID0gcm91dGVzLmZpbHRlcigocm91dGU6IFJvdXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBgJHtyb3V0ZS5jb250ZXh0IHx8ICcnfSR7cm91dGUucGF0aH1gO1xuICAgICAgICBjb25zdCBpc0FscmVhZHlBZGRlZCA9IHRoaXMuc3RhdGUuaGFzKHBhdGgpO1xuICAgICAgICBpZiAoIWlzQWxyZWFkeUFkZGVkKSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZS5zZXQocGF0aCwgcm91dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXNBbHJlYWR5QWRkZWQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkUm91dGUodG9BZGRSb3V0ZXMpO1xuICAgIH0pO1xuXG4gICAgcGx1Z2lucy5wbHVnaW5EZXRhaWxzJC5zdWJzY3JpYmUoKHsgbW9kdWxlUmVmLCByZW1vdGVOZ01vZHVsZSB9KSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVSb3V0ZXJGb3JDaGlsZFJvdXRlcyhtb2R1bGVSZWYsIHJlbW90ZU5nTW9kdWxlKTtcbiAgICB9KTtcblxuICAgIC8vIG9ubHkgbmVlZGVkIGluIGNhc2Ugb2YgcHVyZSBhbmd1bGFyIGFwcGxpY2F0aW9uXG4gICAgLy8gb3RoZXJ3aXNlIGhhbmRsZWQgYnkgYnJpZGdlIHNlcnZpY2VcbiAgICBpZiAoIW9wdGlvbnMudXBncmFkZSkge1xuICAgICAgcGx1Z2lucy5hbGxQbHVnaW5zTG9hZGVkJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIodG1wID0+ICEhdG1wKSxcbiAgICAgICAgICB0YWtlKDEpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIuaW5pdGlhbE5hdmlnYXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdGhlIGN1cnJlbnQgY29udGV4dFxuICAgKi9cbiAgcmVmcmVzaCgpIHtcbiAgICBzdXBlci5yZWZyZXNoKCk7XG4gICAgdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLnJlZnJlc2hDb250ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IHJvdXRlIHRvIHRoZSByb3V0ZXIgY29uZmlndXJhdGlvbiBvciBhIGNvbnRleHQuXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgcm91dGUgdG8gYWRkXG4gICAqL1xuICBhZGRSb3V0ZShyb3V0ZTogUm91dGUgfCBSb3V0ZVtdKSB7XG4gICAgdGhpcy5hZGRSb3V0ZXMoQXJyYXkuaXNBcnJheShyb3V0ZSkgPyByb3V0ZSA6IFtyb3V0ZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIE1PIGlzIGFuIGdyb3VwIG9yIGFuIGRldmljZSBhbmQgcmV0dXJuc1xuICAgKiB0aGUgY29ycmVjdCBocmVmIHRvIGxpbmsgY29ycmVjdGx5IHRvIHRoYXQgTU8uXG4gICAqIEBwYXJhbSBncm91cE9yRGV2aWNlIFRoZSBNTyBvZiBhIGdyb3VwIG9yIHRoZSBkZXZpY2UuXG4gICAqIEBwYXJhbSBwcmVmaXggSG93IHNob3VsZCB0aGUgbGluayBiZSBwcmVmaXhlZC5cbiAgICovXG4gIGdldEhyZWYoZ3JvdXBPckRldmljZTogSU1hbmFnZWRPYmplY3QsIHByZWZpeCA9ICcjLycpOiBzdHJpbmcge1xuICAgIGlmIChncm91cE9yRGV2aWNlLmM4eV9Jc0RldmljZUdyb3VwIHx8IGdyb3VwT3JEZXZpY2UuYzh5X0lzRHluYW1pY0dyb3VwKSB7XG4gICAgICByZXR1cm4gYCR7cHJlZml4fSR7Vmlld0NvbnRleHQuR3JvdXAucmVwbGFjZSgnOmlkJywgZ3JvdXBPckRldmljZS5pZCl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke1ZpZXdDb250ZXh0LkRldmljZS5yZXBsYWNlKCc6aWQnLCBncm91cE9yRGV2aWNlLmlkKX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwSXRlbXNPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8Um91dGVbXT4ge1xuICAgIHJldHVybiBmcm9tVHJpZ2dlck9uY2U8Um91dGU+KHRoaXMucm91dGVyLCB0aGlzLnJlZnJlc2gkLCBbXG4gICAgICBnZXRJbmplY3RlZEhvb2tzPFJvdXRlPihIT09LX1JPVVRFLCB0aGlzLmluamVjdG9ycywgSW5qZWN0aW9uVHlwZS5ST1VURSksXG4gICAgICAoKSA9PiB0aGlzLmZhY3Rvcmllc1xuICAgIF0pLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSb3V0ZXMocm91dGVzKSB7XG4gICAgLy8gRW1wdHkgcm91dGUgbmVlZHMgdG8gYmUgbGFzdCBhcyBvZiBuYXZpZ2F0aW9uIHRvIGFuZ3VsYXJqcyByb3V0ZXNcbiAgICAvLyBpZiAqKiByb3V0ZSBoaXQsIHRoZSBhbmd1bGFyanMgcm91dGVzIGFyZSBsb2FkZWQuXG4gICAgY29uc3QgZW1wdHlSb3V0ZSA9IHRoaXMucm91dGVyLmNvbmZpZy5maW5kKHIgPT4gci5wYXRoID09PSAnKionKTtcbiAgICB0aGlzLnJvdXRlci5yZXNldENvbmZpZyhcbiAgICAgIFtcbiAgICAgICAgLi4udGhpcy5yb3V0ZXIuY29uZmlnLmZpbHRlcihyID0+IHIucGF0aCAhPT0gJyoqJyksXG4gICAgICAgIC4uLnJvdXRlcy5tYXAoKHI6IFJvdXRlKSA9PiB0aGlzLmNvbnZlcnRSb3V0ZSh0aGlzLnJvdXRlci5jb25maWcsIHIpKSxcbiAgICAgICAgZW1wdHlSb3V0ZVxuICAgICAgXS5maWx0ZXIoQm9vbGVhbilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Um91dGUoaW5pdGlhbENvbmZpZywgcm91dGU6IFJvdXRlKSB7XG4gICAgaWYgKHJvdXRlLmNvbnRleHQpIHtcbiAgICAgIGluaXRpYWxDb25maWcuZm9yRWFjaCgocjogUm91dGUpID0+IHtcbiAgICAgICAgaWYgKHIuZGF0YSAmJiByLmRhdGEuY29udGV4dCA9PT0gcm91dGUuY29udGV4dCkge1xuICAgICAgICAgIHIuY2hpbGRyZW4gPSBbcm91dGUsIC4uLihyLmNoaWxkcmVuIHx8IFtdKV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVSb3V0ZXJGb3JDaGlsZFJvdXRlcyhtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4sIHJlbW90ZU5nTW9kdWxlOiBhbnkpIHtcbiAgICAvLyBOT1RFOiBzdG9sZW4gZnJvbSBsYXp5IGxvYWRlZCByb3V0ZXMgZnJvbSBBbmd1bGFyIGl0c2VsZi5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvZGE1ODgwMWY5NWM2NmMyMDFlMzMyMTg5YWYyNTcwMmJkZDcyMmYzZi9wYWNrYWdlcy9yb3V0ZXIvc3JjL3JvdXRlcl9jb25maWdfbG9hZGVyLnRzI0wxMDMtTDEwOFxuICAgIGNvbnN0IHJhd1JvdXRlcyA9IGZsYXR0ZW4obW9kdWxlUmVmLmluamVjdG9yLmdldChST1VURVMsIFtdLCB7IHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pKTtcblxuICAgIGlmIChyYXdSb3V0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgcm91dGVXaXRoSW5qZWN0b3IgPSByYXdSb3V0ZXMubWFwKHJvdXRlID0+IHtcbiAgICAgICAgcm91dGUucHJvdmlkZXJzID0gW2ltcG9ydFByb3ZpZGVyc0Zyb20ocmVtb3RlTmdNb2R1bGUpXTtcbiAgICAgICAgcmV0dXJuIHJvdXRlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmFkZFJvdXRlKHJvdXRlV2l0aEluamVjdG9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBRUwsb0NBQW9DLEVBQ3BDLGVBQWUsRUFHZixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLGFBQWEsRUFDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUF1QixXQUFXLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQXNCeEY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFlLFlBQVksQ0FBQyxDQUFDO0FBRXpFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBNkIsRUFBRSxPQUFxQztJQUM1RixPQUFPLFdBQVcsQ0FBUSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sYUFBYyxTQUFRLG9D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Q0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM5QyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQzs4R0FySVUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpbXBvcnRQcm92aWRlcnNGcm9tLFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIE5nTW9kdWxlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXMsIFJPVVRFUyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc2hhcmVSZXBsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBFeHRlbnNpb25GYWN0b3J5LFxuICBFeHRlbnNpb25Qb2ludFdpdGhvdXRTdGF0ZUZvclBsdWdpbnMsXG4gIGZyb21UcmlnZ2VyT25jZSxcbiAgR2VuZXJpY0hvb2tPcHRpb25zLFxuICBHZW5lcmljSG9va1R5cGUsXG4gIGdldEluamVjdGVkSG9va3MsXG4gIGhvb2tHZW5lcmljLFxuICBJbmplY3Rpb25UeXBlXG59IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBsdWdpbnNSZXNvbHZlU2VydmljZSB9IGZyb20gJy4uL3BsdWdpbnMnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlLCBSb3V0ZUZhY3RvcnksIFZpZXdDb250ZXh0LCBWaWV3Q29udGV4dFJvb3RSb3V0ZSB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcblxuLyoqXG4gKiBBbiBleHRlbnNpb24gSE9PSyBjYW4gdXNlIGVpdGhlciBhIHB1cmUgdmFsdWU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgeyBwcm92aWRlOiBIT09LX1gsIHVzZVZhbHVlOiB7IC4uLmhvb2tWYWx1ZSB9LCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqXG4gKiBPciBhbiBhcnJheSB0byBkaXJlY3RseSByZWdpc3RlciBtdWx0aXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICB7IHByb3ZpZGU6IEhPT0tfWCwgdXNlVmFsdWU6IFt7IC4uLmhvb2tWYWx1ZXMgfV0sIG11bHRpOiB0cnVlIH1cbiAqIGBgYFxuICpcbiAqIE9yIGFuIEV4dGVuc2lvbkZhY3Rvcnkgd2hpY2ggYWxsb3dzIHRvIGRlZmluZSBhIGdldCgpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uXG4gKiBnZXRzIGNhbGxlZCBvbiBlYWNoIG5hdmlnYXRpb24gd2l0aCB0aGUgY3VycmVudCByb3V0ZSBhbmQgY2FuIHJldHVybiB2YWx1ZXNcbiAqIGFzeW5jIChvYnNlcnZhYmxlIG9yIHByb21pc2UpLlxuICogYGBgdHlwZXNjcmlwdFxuICogIHsgcHJvdmlkZTogSE9PS19YLCB1c2VGYWN0b3J5OiB7IGdldDogKHJvdXRlKSA9PiBkb1NvbWV0aGluZ0FzeW5jKHJvdXRlKSB9LCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVFeHRlbnNpb24gPSBSb3V0ZSB8IFJvdXRlW10gfCBFeHRlbnNpb25GYWN0b3J5PFJvdXRlPjtcblxuLyoqXG4gKiBBIGhvb2sgdG8gdXNlIGZvciBNdWx0aSBQcm92aWRlciBleHRlbnNpb24uXG4gKiBAZGVwcmVjYXRlZCBDb25zaWRlciB1c2luZyB0aGUgYGhvb2tSb3V0ZWAgZnVuY3Rpb24gaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEhPT0tfUk9VVEUgPSBuZXcgSW5qZWN0aW9uVG9rZW48Um91dGVGYWN0b3J5PignSE9PS19ST1VURScpO1xuXG4vKipcbiAqIFlvdSBjYW4gZWl0aGVyIHByb3ZpZGUgYSBzaW5nbGUgYFJvdXRlYCBhcyBwYXJhbWV0ZXI6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaG9va1JvdXRlKC4uLilcbiAqIGBgYFxuICpcbiAqIE9yIGFuIGFycmF5IHRvIGRpcmVjdGx5IHJlZ2lzdGVyIG11bHRpcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogIGhvb2tSb3V0ZShbLi4uXSlcbiAqIGBgYFxuICpcbiAqIE9yIHlvdSBwcm92aWRlIGFuIFNlcnZpY2UgdGhhdCBpbXBsZW1lbnRzIGBFeHRlbnNpb25GYWN0b3J5PFJvdXRlPmBcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBleHBvcnQgY2xhc3MgTXlSb3V0ZUZhY3RvcnkgaW1wbGVtZW50cyBFeHRlbnNpb25GYWN0b3J5PFJvdXRlPiB7Li4ufVxuICogIC4uLlxuICogIGhvb2tSb3V0ZShNeVJvdXRlRmFjdG9yeSlcbiAqIGBgYFxuICogQSB0eXBlZCBhbHRlcm5hdGl2ZSB0byBgSE9PS19ST1VURWAuXG4gKiBAcGFyYW0gcm91dGUgVGhlIGBSb3V0ZWAncyBvciBgRXh0ZW5zaW9uRmFjdG9yeWAgdG8gYmUgcHJvdmlkZWQuXG4gKiBAcmV0dXJucyBBbiBgUHJvdmlkZXJgIHRvIGJlIHByb3ZpZGVkIGluIHlvdXIgbW9kdWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaG9va1JvdXRlKHJvdXRlOiBHZW5lcmljSG9va1R5cGU8Um91dGU+LCBvcHRpb25zPzogUGFydGlhbDxHZW5lcmljSG9va09wdGlvbnM+KSB7XG4gIHJldHVybiBob29rR2VuZXJpYzxSb3V0ZT4ocm91dGUsIEhPT0tfUk9VVEUsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEEgc2VydmljZSB3aGljaCBkZWZpbmVzIHJvdXRlcyBmb3IgdGhlIGFwcGxpY2F0aW9uLiBZb3UgY2FuIHVzZVxuICogSE9PS19ST1VURVMgb3IgcGFzc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJTZXJ2aWNlIGV4dGVuZHMgRXh0ZW5zaW9uUG9pbnRXaXRob3V0U3RhdGVGb3JQbHVnaW5zPFJvdXRlPiB7XG4gIHJlYWRvbmx5IHN0YXRlID0gbmV3IE1hcDxzdHJpbmcsIFJvdXRlPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvb3RJbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwbHVnaW5zOiBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UsXG4gICAgb3B0aW9uczogT3B0aW9uc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocm9vdEluamVjdG9yLCBwbHVnaW5zKTtcbiAgICB0aGlzLml0ZW1zJCA9IHRoaXMuc2V0dXBJdGVtc09ic2VydmFibGUoKTtcblxuICAgIC8vIFdlIGFyZSBkb2luZyBhIHNlbGYgc3Vic2NyaXB0aW9uIHRvIGFkZCB0aGUgbmV3IHJvdXRlc1xuICAgIC8vIHRvIHRoZSByb3V0ZXIgY29uZmlndXJhdGlvbi5cbiAgICB0aGlzLml0ZW1zJC5zdWJzY3JpYmUoKHJvdXRlczogUm91dGVbXSkgPT4ge1xuICAgICAgY29uc3QgdG9BZGRSb3V0ZXMgPSByb3V0ZXMuZmlsdGVyKChyb3V0ZTogUm91dGUpID0+IHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGAke3JvdXRlLmNvbnRleHQgfHwgJyd9JHtyb3V0ZS5wYXRofWA7XG4gICAgICAgIGNvbnN0IGlzQWxyZWFkeUFkZGVkID0gdGhpcy5zdGF0ZS5oYXMocGF0aCk7XG4gICAgICAgIGlmICghaXNBbHJlYWR5QWRkZWQpIHtcbiAgICAgICAgICB0aGlzLnN0YXRlLnNldChwYXRoLCByb3V0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc0FscmVhZHlBZGRlZDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hZGRSb3V0ZSh0b0FkZFJvdXRlcyk7XG4gICAgfSk7XG5cbiAgICBwbHVnaW5zLnBsdWdpbkRldGFpbHMkLnN1YnNjcmliZSgoeyBtb2R1bGVSZWYsIHJlbW90ZU5nTW9kdWxlIH0pID0+IHtcbiAgICAgIHRoaXMucmVzb2x2ZVJvdXRlckZvckNoaWxkUm91dGVzKG1vZHVsZVJlZiwgcmVtb3RlTmdNb2R1bGUpO1xuICAgIH0pO1xuXG4gICAgLy8gb25seSBuZWVkZWQgaW4gY2FzZSBvZiBwdXJlIGFuZ3VsYXIgYXBwbGljYXRpb25cbiAgICAvLyBvdGhlcndpc2UgaGFuZGxlZCBieSBicmlkZ2Ugc2VydmljZVxuICAgIGlmICghb3B0aW9ucy51cGdyYWRlKSB7XG4gICAgICBwbHVnaW5zLmFsbFBsdWdpbnNMb2FkZWQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcih0bXAgPT4gISF0bXApLFxuICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5pbml0aWFsTmF2aWdhdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCB0aGUgY3VycmVudCBjb250ZXh0XG4gICAqL1xuICByZWZyZXNoKCkge1xuICAgIHN1cGVyLnJlZnJlc2goKTtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgcm91dGUgdG8gdGhlIHJvdXRlciBjb25maWd1cmF0aW9uIG9yIGEgY29udGV4dC5cbiAgICogQHBhcmFtIHJvdXRlIFRoZSByb3V0ZSB0byBhZGRcbiAgICovXG4gIGFkZFJvdXRlKHJvdXRlOiBSb3V0ZSB8IFJvdXRlW10pIHtcbiAgICB0aGlzLmFkZFJvdXRlcyhBcnJheS5pc0FycmF5KHJvdXRlKSA/IHJvdXRlIDogW3JvdXRlXSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gTU8gaXMgYW4gZ3JvdXAgb3IgYW4gZGV2aWNlIGFuZCByZXR1cm5zXG4gICAqIHRoZSBjb3JyZWN0IGhyZWYgdG8gbGluayBjb3JyZWN0bHkgdG8gdGhhdCBNTy5cbiAgICogQHBhcmFtIGdyb3VwT3JEZXZpY2UgVGhlIE1PIG9mIGEgZ3JvdXAgb3IgdGhlIGRldmljZS5cbiAgICogQHBhcmFtIHByZWZpeCBIb3cgc2hvdWxkIHRoZSBsaW5rIGJlIHByZWZpeGVkLlxuICAgKi9cbiAgZ2V0SHJlZihncm91cE9yRGV2aWNlOiBJTWFuYWdlZE9iamVjdCwgcHJlZml4ID0gJyMvJyk6IHN0cmluZyB7XG4gICAgaWYgKGdyb3VwT3JEZXZpY2UuYzh5X0lzRGV2aWNlR3JvdXAgfHwgZ3JvdXBPckRldmljZS5jOHlfSXNEeW5hbWljR3JvdXApIHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtWaWV3Q29udGV4dC5Hcm91cC5yZXBsYWNlKCc6aWQnLCBncm91cE9yRGV2aWNlLmlkKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7cHJlZml4fSR7Vmlld0NvbnRleHQuRGV2aWNlLnJlcGxhY2UoJzppZCcsIGdyb3VwT3JEZXZpY2UuaWQpfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBJdGVtc09ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxSb3V0ZVtdPiB7XG4gICAgcmV0dXJuIGZyb21UcmlnZ2VyT25jZTxSb3V0ZT4odGhpcy5yb3V0ZXIsIHRoaXMucmVmcmVzaCQsIFtcbiAgICAgIGdldEluamVjdGVkSG9va3M8Um91dGU+KEhPT0tfUk9VVEUsIHRoaXMuaW5qZWN0b3JzLCBJbmplY3Rpb25UeXBlLlJPVVRFKSxcbiAgICAgICgpID0+IHRoaXMuZmFjdG9yaWVzXG4gICAgXSkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJvdXRlcyhyb3V0ZXMpIHtcbiAgICAvLyBFbXB0eSByb3V0ZSBuZWVkcyB0byBiZSBsYXN0IGFzIG9mIG5hdmlnYXRpb24gdG8gYW5ndWxhcmpzIHJvdXRlc1xuICAgIC8vIGlmICoqIHJvdXRlIGhpdCwgdGhlIGFuZ3VsYXJqcyByb3V0ZXMgYXJlIGxvYWRlZC5cbiAgICBjb25zdCBlbXB0eVJvdXRlID0gdGhpcy5yb3V0ZXIuY29uZmlnLmZpbmQociA9PiByLnBhdGggPT09ICcqKicpO1xuICAgIGNvbnN0IHJvb3RDb250ZXh0Um91dGVzID0gdGhpcy5maW5kQWxsUm9vdENvbnRleHRSb3V0ZXMoWy4uLnRoaXMucm91dGVyLmNvbmZpZywgLi4ucm91dGVzXSk7XG4gICAgdGhpcy5yb3V0ZXIucmVzZXRDb25maWcoXG4gICAgICBbXG4gICAgICAgIC4uLnRoaXMucm91dGVyLmNvbmZpZy5maWx0ZXIociA9PiByLnBhdGggIT09ICcqKicpLFxuICAgICAgICAuLi5yb3V0ZXMubWFwKChyOiBSb3V0ZSkgPT4gdGhpcy5jb252ZXJ0Um91dGUocm9vdENvbnRleHRSb3V0ZXMsIHIpKSxcbiAgICAgICAgZW1wdHlSb3V0ZVxuICAgICAgXS5maWx0ZXIoQm9vbGVhbilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Um91dGUocm9vdENvbnRleHRSb3V0ZXM6IFJvdXRlcywgcm91dGU6IFJvdXRlKSB7XG4gICAgaWYgKHJvdXRlLmNvbnRleHQpIHtcbiAgICAgIHJvb3RDb250ZXh0Um91dGVzLmZvckVhY2goKHI6IFZpZXdDb250ZXh0Um9vdFJvdXRlKSA9PiB7XG4gICAgICAgIGlmIChyLnJvb3RDb250ZXh0ID09PSByb3V0ZS5jb250ZXh0KSB7XG4gICAgICAgICAgci5jaGlsZHJlbiA9IFtyb3V0ZSwgLi4uKHIuY2hpbGRyZW4gfHwgW10pXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEFsbFJvb3RDb250ZXh0Um91dGVzKHJvdXRlczogUm91dGVzKTogVmlld0NvbnRleHRSb290Um91dGVbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBWaWV3Q29udGV4dFJvb3RSb3V0ZVtdID0gW107XG4gICAgcm91dGVzLmZvckVhY2gocm91dGUgPT4ge1xuICAgICAgaWYgKChyb3V0ZSBhcyBWaWV3Q29udGV4dFJvb3RSb3V0ZSkucm9vdENvbnRleHQpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gocm91dGUgYXMgVmlld0NvbnRleHRSb290Um91dGUpO1xuICAgICAgfVxuICAgICAgaWYgKHJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkUm91dGVzID0gdGhpcy5maW5kQWxsUm9vdENvbnRleHRSb3V0ZXMocm91dGUuY2hpbGRyZW4pO1xuICAgICAgICByZXN1bHQucHVzaCguLi5jaGlsZFJvdXRlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVJvdXRlckZvckNoaWxkUm91dGVzKG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8YW55PiwgcmVtb3RlTmdNb2R1bGU6IGFueSkge1xuICAgIC8vIE5PVEU6IHN0b2xlbiBmcm9tIGxhenkgbG9hZGVkIHJvdXRlcyBmcm9tIEFuZ3VsYXIgaXRzZWxmLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9kYTU4ODAxZjk1YzY2YzIwMWUzMzIxODlhZjI1NzAyYmRkNzIyZjNmL3BhY2thZ2VzL3JvdXRlci9zcmMvcm91dGVyX2NvbmZpZ19sb2FkZXIudHMjTDEwMy1MMTA4XG4gICAgY29uc3QgcmF3Um91dGVzID0gZmxhdHRlbihtb2R1bGVSZWYuaW5qZWN0b3IuZ2V0KFJPVVRFUywgW10sIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSkpO1xuXG4gICAgaWYgKHJhd1JvdXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCByb3V0ZVdpdGhJbmplY3RvciA9IHJhd1JvdXRlcy5tYXAocm91dGUgPT4ge1xuICAgICAgICByb3V0ZS5wcm92aWRlcnMgPSBbaW1wb3J0UHJvdmlkZXJzRnJvbShyZW1vdGVOZ01vZHVsZSldO1xuICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkUm91dGUocm91dGVXaXRoSW5qZWN0b3IpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,157 @@
1
+ import { DestroyRef, Injectable, Injector } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { ActivationEnd, ActivationStart, ChildActivationEnd, PRIMARY_OUTLET, Router } from '@angular/router';
4
+ import { ApiService } from '@c8y/ngx-components/api';
5
+ import { NEVER, Subject } from 'rxjs';
6
+ import { filter, map, merge, switchMap } from 'rxjs/operators';
7
+ import { TabsService } from '../tabs/tabs.service';
8
+ import { RouterTabsResolver } from './router-tabs.resolver';
9
+ import { ViewContext } from './router.model';
10
+ import { ViewContextServices } from './view-context.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "./router-tabs.resolver";
13
+ import * as i2 from "../tabs/tabs.service";
14
+ import * as i3 from "@angular/router";
15
+ import * as i4 from "@c8y/ngx-components/api";
16
+ /**
17
+ * A service which is injected into the context route component to handle the context data.
18
+ */
19
+ export class ScopedContextRouteService {
20
+ constructor(tabsResolver, tabsService, router, apiService, injector, destroyRef) {
21
+ this.tabsResolver = tabsResolver;
22
+ this.tabsService = tabsService;
23
+ this.router = router;
24
+ this.apiService = apiService;
25
+ this.injector = injector;
26
+ this.destroyRef = destroyRef;
27
+ this.lastAddedTabs = [];
28
+ this.refreshTrigger$ = new Subject();
29
+ this.ID_REGEX = /([0-9]+)/;
30
+ }
31
+ /**
32
+ * Indicates that the data is loading
33
+ * @returns An boolean observable which indicates if the data is loading.
34
+ */
35
+ isLoading$() {
36
+ return this.router.events.pipe(filter(e => (e instanceof ActivationStart || e instanceof ChildActivationEnd) &&
37
+ e.snapshot.routeConfig?.rootContext === this.currentContext), map(e => e instanceof ActivationStart), takeUntilDestroyed(this.destroyRef));
38
+ }
39
+ /**
40
+ * Initializes the context route.
41
+ * @param route The current activated route.
42
+ */
43
+ init(route) {
44
+ this.currentContext = route.routeConfig.rootContext;
45
+ if (!this.currentContext) {
46
+ throw new Error(`${ScopedContextRouteService.name} should not be used on a route without a rootContext`);
47
+ }
48
+ this.router.events
49
+ .pipe(filter(e => e instanceof ActivationEnd), takeUntilDestroyed(this.destroyRef))
50
+ .subscribe((e) => this.redirectToFirstTab(e));
51
+ route.data
52
+ .pipe(merge(this.updatedContext(route), this.refreshTrigger$), switchMap(() => this.tabsResolver.resolve(route.snapshot)), takeUntilDestroyed(this.destroyRef))
53
+ .subscribe(tabs => this.updateTabs(tabs));
54
+ }
55
+ /**
56
+ * Destroys the service.
57
+ */
58
+ ngOnDestroy() {
59
+ this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
60
+ }
61
+ /**
62
+ * Refreshes the context.
63
+ */
64
+ refreshContext() {
65
+ this.refreshTrigger$.next();
66
+ }
67
+ /**
68
+ * Sets an API hook to refresh the contextData on changes.
69
+ * @param activatedRoute The current activated route.
70
+ */
71
+ updatedContext(route) {
72
+ const { data } = route.snapshot;
73
+ const serviceInstance = ViewContextServices.contextToService(data.context);
74
+ if (serviceInstance) {
75
+ const service = this.injector.get(serviceInstance);
76
+ const detailsUrlRegex = service
77
+ .getDetailUrl(data.contextData)
78
+ .replace(/\d+/g, '?\\d*');
79
+ const contextRegex = new RegExp(detailsUrlRegex, 'i');
80
+ const childrenRegex = new RegExp(`${detailsUrlRegex}/child`, 'i');
81
+ const filterResponse = ({ url, method }) => {
82
+ const contextChanged = contextRegex.test(url) && ['POST', 'PUT'].includes(method);
83
+ const childrenAffected = childrenRegex.test(url) && ['POST', 'DELETE'].includes(method);
84
+ return contextChanged || childrenAffected;
85
+ };
86
+ return this.apiService.hookResponse(filterResponse);
87
+ }
88
+ return NEVER;
89
+ }
90
+ updateTabs(tabs = []) {
91
+ this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
92
+ this.lastAddedTabs = tabs;
93
+ tabs.forEach(t => this.tabsService.add(t));
94
+ this.redirectToFirstTab();
95
+ }
96
+ redirectToFirstTab(event) {
97
+ const currentQueryParams = this.router.routerState.snapshot.root.queryParams;
98
+ const queryParamsString = new URLSearchParams(currentQueryParams).toString();
99
+ const queryParamsSuffix = queryParamsString ? `?${queryParamsString}` : '';
100
+ if (event) {
101
+ if (this.needsRedirect(event)) {
102
+ const tab = this.tabsService.sortTabs(event.snapshot.data.tabs)?.[0];
103
+ if (!tab) {
104
+ return;
105
+ }
106
+ const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
107
+ const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
108
+ if (currentContextId === tabPathId) {
109
+ this.router.navigateByUrl(`${tab.path}${queryParamsSuffix}`, {
110
+ replaceUrl: true
111
+ });
112
+ }
113
+ }
114
+ }
115
+ else {
116
+ const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
117
+ if (this.needsRedirectLegacy()) {
118
+ this.tabsService.firstTab$.pipe(filter((tab) => !!tab?.path)).subscribe((tab) => {
119
+ const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
120
+ if (currentContextId === tabPathId) {
121
+ this.router.navigateByUrl(`${tab.path}${queryParamsSuffix}`, { replaceUrl: true });
122
+ }
123
+ });
124
+ }
125
+ }
126
+ }
127
+ needsRedirectLegacy() {
128
+ const tree = this.router.parseUrl(this.router.url);
129
+ const groups = tree.root.children[PRIMARY_OUTLET];
130
+ const context = this.getMatchingContextRoute(this.router.url);
131
+ if (!context) {
132
+ return groups.segments.length === 2;
133
+ }
134
+ return context.split('/').length === groups.segments.length;
135
+ }
136
+ needsRedirect(event) {
137
+ const contextRoute = event.snapshot.routeConfig;
138
+ if (!contextRoute.rootContext) {
139
+ return false;
140
+ }
141
+ const contextRouteFromUrl = this.getMatchingContextRoute(this.router.url);
142
+ return contextRoute.rootContext === contextRouteFromUrl;
143
+ }
144
+ getMatchingContextRoute(url) {
145
+ const viewContexts = Object.values(ViewContext);
146
+ // replace all :id placeholders with a regex matcher for a number
147
+ const regexMatchers = viewContexts.map(context => `^/${context.replace(/:id/g, '([0-9]+)')}(\\?.*)?$`);
148
+ const matchingRegexContext = regexMatchers.find(context => new RegExp(context).test(url));
149
+ return matchingRegexContext ? viewContexts[regexMatchers.indexOf(matchingRegexContext)] : null;
150
+ }
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService, deps: [{ token: i1.RouterTabsResolver }, { token: i2.TabsService }, { token: i3.Router }, { token: i4.ApiService }, { token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
152
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService }); }
153
+ }
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService, decorators: [{
155
+ type: Injectable
156
+ }], ctorParameters: () => [{ type: i1.RouterTabsResolver }, { type: i2.TabsService }, { type: i3.Router }, { type: i4.ApiService }, { type: i0.Injector }, { type: i0.DestroyRef }] });
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVkLWNvbnRleHQtcm91dGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL3Njb3BlZC1jb250ZXh0LXJvdXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsYUFBYSxFQUNiLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLE1BQU0sRUFHUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUU3RDs7R0FFRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFVcEMsWUFDVSxZQUFnQyxFQUNoQyxXQUF3QixFQUN4QixNQUFjLEVBQ2QsVUFBc0IsRUFDdEIsUUFBa0IsRUFDbEIsVUFBc0I7UUFMdEIsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxl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QUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRyxDQUFDOzhHQTFLVSx5QkFBeUI7a0hBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlLFxuICBBY3RpdmF0aW9uRW5kLFxuICBBY3RpdmF0aW9uU3RhcnQsXG4gIENoaWxkQWN0aXZhdGlvbkVuZCxcbiAgUFJJTUFSWV9PVVRMRVQsXG4gIFJvdXRlcixcbiAgVXJsU2VnbWVudEdyb3VwLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcGlDYWxsLCBBcGlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hcGknO1xuaW1wb3J0IHsgTkVWRVIsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtZXJnZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFiIH0gZnJvbSAnLi4vdGFicy90YWIubW9kZWwnO1xuaW1wb3J0IHsgVGFic1NlcnZpY2UgfSBmcm9tICcuLi90YWJzL3RhYnMuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXJUYWJzUmVzb2x2ZXIgfSBmcm9tICcuL3JvdXRlci10YWJzLnJlc29sdmVyJztcbmltcG9ydCB7IFZpZXdDb250ZXh0LCBWaWV3Q29udGV4dFJvb3RSb3V0ZSB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcbmltcG9ydCB7IFZpZXdDb250ZXh0U2VydmljZXMgfSBmcm9tICcuL3ZpZXctY29udGV4dC5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIHNlcnZpY2Ugd2hpY2ggaXMgaW5qZWN0ZWQgaW50byB0aGUgY29udGV4dCByb3V0ZSBjb21wb25lbnQgdG8gaGFuZGxlIHRoZSBjb250ZXh0IGRhdGEuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY29wZWRDb250ZXh0Um91dGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBsYXN0QWRkZWRUYWJzID0gW107XG4gIHByaXZhdGUgcmVmcmVzaFRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBJRF9SRUdFWCA9IC8oWzAtOV0rKS87XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0IHVzZWQgYnkgdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcHJpdmF0ZSBjdXJyZW50Q29udGV4dDogVmlld0NvbnRleHQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0YWJzUmVzb2x2ZXI6IFJvdXRlclRhYnNSZXNvbHZlcixcbiAgICBwcml2YXRlIHRhYnNTZXJ2aWNlOiBUYWJzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZGF0YSBpcyBsb2FkaW5nXG4gICAqIEByZXR1cm5zIEFuIGJvb2xlYW4gb2JzZXJ2YWJsZSB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIGRhdGEgaXMgbG9hZGluZy5cbiAgICovXG4gIGlzTG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICBlID0+XG4gICAgICAgICAgKGUgaW5zdGFuY2VvZiBBY3RpdmF0aW9uU3RhcnQgfHwgZSBpbnN0YW5jZW9mIENoaWxkQWN0aXZhdGlvbkVuZCkgJiZcbiAgICAgICAgICAoZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZyBhcyBWaWV3Q29udGV4dFJvb3RSb3V0ZSk/LnJvb3RDb250ZXh0ID09PSB0aGlzLmN1cnJlbnRDb250ZXh0XG4gICAgICApLFxuICAgICAgbWFwKGUgPT4gZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25TdGFydCksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbnRleHQgcm91dGUuXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgY3VycmVudCBhY3RpdmF0ZWQgcm91dGUuXG4gICAqL1xuICBpbml0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudENvbnRleHQgPSAocm91dGUucm91dGVDb25maWcgYXMgVmlld0NvbnRleHRSb290Um91dGUpLnJvb3RDb250ZXh0O1xuICAgIGlmICghdGhpcy5jdXJyZW50Q29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHtTY29wZWRDb250ZXh0Um91dGVTZXJ2aWNlLm5hbWV9IHNob3VsZCBub3QgYmUgdXNlZCBvbiBhIHJvdXRlIHdpdGhvdXQgYSByb290Q29udGV4dGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25FbmQpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZTogQWN0aXZhdGlvbkVuZCkgPT4gdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoZSkpO1xuXG4gICAgcm91dGUuZGF0YVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlKHRoaXMudXBkYXRlZENvbnRleHQocm91dGUpLCB0aGlzLnJlZnJlc2hUcmlnZ2VyJCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnRhYnNSZXNvbHZlci5yZXNvbHZlKHJvdXRlLnNuYXBzaG90KSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRhYnMgPT4gdGhpcy51cGRhdGVUYWJzKHRhYnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgc2VydmljZS5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubGFzdEFkZGVkVGFicy5mb3JFYWNoKHQgPT4gdGhpcy50YWJzU2VydmljZS5yZW1vdmUodCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgY29udGV4dC5cbiAgICovXG4gIHJlZnJlc2hDb250ZXh0KCkge1xuICAgIHRoaXMucmVmcmVzaFRyaWdnZXIkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIEFQSSBob29rIHRvIHJlZnJlc2ggdGhlIGNvbnRleHREYXRhIG9uIGNoYW5nZXMuXG4gICAqIEBwYXJhbSBhY3RpdmF0ZWRSb3V0ZSBUaGUgY3VycmVudCBhY3RpdmF0ZWQgcm91dGUuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZWRDb250ZXh0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IE9ic2VydmFibGU8QXBpQ2FsbD4ge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gcm91dGUuc25hcHNob3Q7XG4gICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gVmlld0NvbnRleHRTZXJ2aWNlcy5jb250ZXh0VG9TZXJ2aWNlKGRhdGEuY29udGV4dCk7XG4gICAgaWYgKHNlcnZpY2VJbnN0YW5jZSkge1xuICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFxuICAgICAgICBzZXJ2aWNlSW5zdGFuY2UgYXMgVHlwZTxJbnN0YW5jZVR5cGU8dHlwZW9mIHNlcnZpY2VJbnN0YW5jZT4+XG4gICAgICApO1xuICAgICAgY29uc3QgZGV0YWlsc1VybFJlZ2V4ID0gKHNlcnZpY2UgYXMgdHlwZW9mIHNlcnZpY2UgJiB7IGdldERldGFpbFVybD86ICguLi5hcmdzKSA9PiBzdHJpbmcgfSlcbiAgICAgICAgLmdldERldGFpbFVybChkYXRhLmNvbnRleHREYXRhKVxuICAgICAgICAucmVwbGFjZSgvXFxkKy9nLCAnP1xcXFxkKicpO1xuICAgICAgY29uc3QgY29udGV4dFJlZ2V4ID0gbmV3IFJlZ0V4cChkZXRhaWxzVXJsUmVnZXgsICdpJyk7XG4gICAgICBjb25zdCBjaGlsZHJlblJlZ2V4ID0gbmV3IFJlZ0V4cChgJHtkZXRhaWxzVXJsUmVnZXh9L2NoaWxkYCwgJ2knKTtcbiAgICAgIGNvbnN0IGZpbHRlclJlc3BvbnNlID0gKHsgdXJsLCBtZXRob2QgfSkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0Q2hhbmdlZCA9IGNvbnRleHRSZWdleC50ZXN0KHVybCkgJiYgWydQT1NUJywgJ1BVVCddLmluY2x1ZGVzKG1ldGhvZCk7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQWZmZWN0ZWQgPSBjaGlsZHJlblJlZ2V4LnRlc3QodXJsKSAmJiBbJ1BPU1QnLCAnREVMRVRFJ10uaW5jbHVkZXMobWV0aG9kKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRDaGFuZ2VkIHx8IGNoaWxkcmVuQWZmZWN0ZWQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5ob29rUmVzcG9uc2UoZmlsdGVyUmVzcG9uc2UpO1xuICAgIH1cbiAgICByZXR1cm4gTkVWRVI7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYnModGFicyA9IFtdKSB7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLnJlbW92ZSh0KSk7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzID0gdGFicztcbiAgICB0YWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLmFkZCh0KSk7XG4gICAgdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RUb0ZpcnN0VGFiKGV2ZW50PzogQWN0aXZhdGlvbkVuZCkge1xuICAgIGNvbnN0IGN1cnJlbnRRdWVyeVBhcmFtcyA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3QucXVlcnlQYXJhbXM7XG4gICAgY29uc3QgcXVlcnlQYXJhbXNTdHJpbmcgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGN1cnJlbnRRdWVyeVBhcmFtcykudG9TdHJpbmcoKTtcbiAgICBjb25zdCBxdWVyeVBhcmFtc1N1ZmZpeCA9IHF1ZXJ5UGFyYW1zU3RyaW5nID8gYD8ke3F1ZXJ5UGFyYW1zU3RyaW5nfWAgOiAnJztcblxuICAgIGlmIChldmVudCkge1xuICAgICAgaWYgKHRoaXMubmVlZHNSZWRpcmVjdChldmVudCkpIHtcbiAgICAgICAgY29uc3QgdGFiID0gdGhpcy50YWJzU2VydmljZS5zb3J0VGFicyhldmVudC5zbmFwc2hvdC5kYXRhLnRhYnMpPy5bMF07XG4gICAgICAgIGlmICghdGFiKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSAodGhpcy5yb3V0ZXIudXJsLm1hdGNoKHRoaXMuSURfUkVHRVgpIHx8IFtdKS5zaGlmdCgpO1xuICAgICAgICBjb25zdCB0YWJQYXRoSWQgPSAodGFiLnBhdGgubWF0Y2godGhpcy5JRF9SRUdFWCkgfHwgW10pLnNoaWZ0KCk7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dElkID09PSB0YWJQYXRoSWQpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAke3RhYi5wYXRofSR7cXVlcnlQYXJhbXNTdWZmaXh9YCwge1xuICAgICAgICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSAodGhpcy5yb3V0ZXIudXJsLm1hdGNoKHRoaXMuSURfUkVHRVgpIHx8IFtdKS5zaGlmdCgpO1xuICAgICAgaWYgKHRoaXMubmVlZHNSZWRpcmVjdExlZ2FjeSgpKSB7XG4gICAgICAgIHRoaXMudGFic1NlcnZpY2UuZmlyc3RUYWIkLnBpcGUoZmlsdGVyKCh0YWI6IFRhYikgPT4gISF0YWI/LnBhdGgpKS5zdWJzY3JpYmUoKHRhYjogVGFiKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFiUGF0aElkID0gKHRhYi5wYXRoLm1hdGNoKHRoaXMuSURfUkVHRVgpIHx8IFtdKS5zaGlmdCgpO1xuICAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dElkID09PSB0YWJQYXRoSWQpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYCR7dGFiLnBhdGh9JHtxdWVyeVBhcmFtc1N1ZmZpeH1gLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5lZWRzUmVkaXJlY3RMZWdhY3koKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHJlZTogVXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCk7XG4gICAgY29uc3QgZ3JvdXBzOiBVcmxTZWdtZW50R3JvdXAgPSB0cmVlLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0TWF0Y2hpbmdDb250ZXh0Um91dGUodGhpcy5yb3V0ZXIudXJsKTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybiBncm91cHMuc2VnbWVudHMubGVuZ3RoID09PSAyO1xuICAgIH1cbiAgICByZXR1cm4gY29udGV4dC5zcGxpdCgnLycpLmxlbmd0aCA9PT0gZ3JvdXBzLnNlZ21lbnRzLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgbmVlZHNSZWRpcmVjdChldmVudDogQWN0aXZhdGlvbkVuZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbnRleHRSb3V0ZTogVmlld0NvbnRleHRSb290Um91dGUgPSBldmVudC5zbmFwc2hvdC5yb3V0ZUNvbmZpZyBhcyBWaWV3Q29udGV4dFJvb3RSb3V0ZTtcbiAgICBpZiAoIWNvbnRleHRSb3V0ZS5yb290Q29udGV4dCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0Um91dGVGcm9tVXJsID0gdGhpcy5nZXRNYXRjaGluZ0NvbnRleHRSb3V0ZSh0aGlzLnJvdXRlci51cmwpO1xuICAgIHJldHVybiBjb250ZXh0Um91dGUucm9vdENvbnRleHQgPT09IGNvbnRleHRSb3V0ZUZyb21Vcmw7XG4gIH1cblxuICBwcml2YXRlIGdldE1hdGNoaW5nQ29udGV4dFJvdXRlKHVybDogc3RyaW5nKTogVmlld0NvbnRleHQge1xuICAgIGNvbnN0IHZpZXdDb250ZXh0cyA9IE9iamVjdC52YWx1ZXMoVmlld0NvbnRleHQpO1xuICAgIC8vIHJlcGxhY2UgYWxsIDppZCBwbGFjZWhvbGRlcnMgd2l0aCBhIHJlZ2V4IG1hdGNoZXIgZm9yIGEgbnVtYmVyXG4gICAgY29uc3QgcmVnZXhNYXRjaGVycyA9IHZpZXdDb250ZXh0cy5tYXAoXG4gICAgICBjb250ZXh0ID0+IGBeLyR7Y29udGV4dC5yZXBsYWNlKC86aWQvZywgJyhbMC05XSspJyl9KFxcXFw/LiopPyRgXG4gICAgKTtcbiAgICBjb25zdCBtYXRjaGluZ1JlZ2V4Q29udGV4dCA9IHJlZ2V4TWF0Y2hlcnMuZmluZChjb250ZXh0ID0+IG5ldyBSZWdFeHAoY29udGV4dCkudGVzdCh1cmwpKTtcbiAgICByZXR1cm4gbWF0Y2hpbmdSZWdleENvbnRleHQgPyB2aWV3Q29udGV4dHNbcmVnZXhNYXRjaGVycy5pbmRleE9mKG1hdGNoaW5nUmVnZXhDb250ZXh0KV0gOiBudWxsO1xuICB9XG59XG4iXX0=