@scion/workbench 18.0.0-beta.3 → 18.0.0-beta.5

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 (169) hide show
  1. package/esm2022/lib/common/class-list.mjs +67 -29
  2. package/esm2022/lib/common/operators.mjs +1 -12
  3. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +3 -3
  4. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -8
  5. package/esm2022/lib/dialog/workbench-dialog.component.mjs +22 -20
  6. package/esm2022/lib/dialog/workbench-dialog.mjs +61 -1
  7. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +71 -26
  8. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +25 -23
  9. package/esm2022/lib/executor/latest-task-executor.mjs +55 -0
  10. package/esm2022/lib/executor/single-task-executor.mjs +7 -17
  11. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +5 -6
  12. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +1 -1
  13. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +3 -3
  14. package/esm2022/lib/layout/stringifier.mjs +2 -2
  15. package/esm2022/lib/layout/workbench-layout.component.mjs +4 -5
  16. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  17. package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
  18. package/esm2022/lib/layout/workbench-layout.service.mjs +6 -7
  19. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +3 -2
  20. package/esm2022/lib/layout//311/265workbench-layout.mjs +34 -31
  21. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +3 -3
  22. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
  23. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +5 -6
  24. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +3 -3
  25. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +14 -6
  26. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +3 -3
  27. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +5 -5
  28. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +3 -3
  29. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +11 -12
  30. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +3 -3
  31. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
  32. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +11 -12
  33. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +18 -16
  34. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +13 -14
  35. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +3 -3
  36. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +4 -4
  37. package/esm2022/lib/notification/notification-list.component.mjs +4 -8
  38. package/esm2022/lib/notification/notification.component.mjs +4 -5
  39. package/esm2022/lib/page-not-found/page-not-found.component.mjs +3 -3
  40. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +7 -13
  41. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
  42. package/esm2022/lib/part/part-bar/part-bar.component.mjs +56 -75
  43. package/esm2022/lib/part/part-portal.pipe.mjs +8 -8
  44. package/esm2022/lib/part/part.component.mjs +32 -40
  45. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +4 -6
  46. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +2 -2
  47. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +27 -28
  48. package/esm2022/lib/part/view-list/view-list.component.mjs +41 -48
  49. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +20 -24
  50. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +15 -17
  51. package/esm2022/lib/part/view-tab/view-tab.component.mjs +77 -88
  52. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +3 -4
  53. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +14 -15
  54. package/esm2022/lib/part/workbench-part-action.registry.mjs +18 -42
  55. package/esm2022/lib/part/workbench-part.model.mjs +10 -1
  56. package/esm2022/lib/part/workbench-part.registry.mjs +11 -45
  57. package/esm2022/lib/part//311/265workbench-part.model.mjs +71 -55
  58. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  59. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +11 -43
  60. package/esm2022/lib/perspective/workbench-perspective.service.mjs +27 -28
  61. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +53 -47
  62. package/esm2022/lib/popup/popup.component.mjs +3 -3
  63. package/esm2022/lib/popup/popup.config.mjs +23 -13
  64. package/esm2022/lib/popup/popup.service.mjs +48 -45
  65. package/esm2022/lib/portal/wb-component-portal.mjs +2 -2
  66. package/esm2022/lib/registry/workbench-object-registry.mjs +38 -17
  67. package/esm2022/lib/routing/public_api.mjs +2 -1
  68. package/esm2022/lib/routing/routing.model.mjs +1 -1
  69. package/esm2022/lib/routing/routing.util.mjs +210 -0
  70. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +19 -3
  71. package/esm2022/lib/routing/workbench-dialog-differ.mjs +3 -3
  72. package/esm2022/lib/routing/workbench-message-box-differ.mjs +3 -3
  73. package/esm2022/lib/routing/workbench-navigational-states.mjs +2 -2
  74. package/esm2022/lib/routing/workbench-popup-differ.mjs +3 -3
  75. package/esm2022/lib/routing/workbench-route-guards.mjs +57 -0
  76. package/esm2022/lib/routing/workbench-url-observer.service.mjs +132 -144
  77. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +3 -3
  78. package/esm2022/lib/routing//311/265workbench-router.service.mjs +52 -40
  79. package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
  80. package/esm2022/lib/startup/workbench-launcher.service.mjs +7 -10
  81. package/esm2022/lib/testing/workbench.provider.mjs +2 -2
  82. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +15 -19
  83. package/esm2022/lib/view/public_api.mjs +1 -2
  84. package/esm2022/lib/view/view-move-handler.service.mjs +7 -7
  85. package/esm2022/lib/view/view-portal.pipe.mjs +7 -7
  86. package/esm2022/lib/view/view.component.mjs +22 -34
  87. package/esm2022/lib/view/workbench-view.model.mjs +1 -1
  88. package/esm2022/lib/view/workbench-view.registry.mjs +11 -45
  89. package/esm2022/lib/view//311/265workbench-view.model.mjs +136 -150
  90. package/esm2022/lib/view-dnd/view-drag.service.mjs +1 -1
  91. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +18 -20
  92. package/esm2022/lib/workbench.component.mjs +3 -3
  93. package/esm2022/lib/workbench.model.mjs +1 -1
  94. package/esm2022/lib/workbench.service.mjs +1 -1
  95. package/esm2022/lib//311/265workbench.service.mjs +31 -42
  96. package/fesm2022/scion-workbench.mjs +2028 -1953
  97. package/fesm2022/scion-workbench.mjs.map +1 -1
  98. package/lib/common/class-list.d.ts +35 -22
  99. package/lib/common/operators.d.ts +1 -6
  100. package/lib/dialog/workbench-dialog.component.d.ts +3 -2
  101. package/lib/dialog/workbench-dialog.d.ts +57 -13
  102. package/lib/dialog//311/265workbench-dialog.d.ts +36 -17
  103. package/lib/dialog//311/265workbench-dialog.service.d.ts +10 -11
  104. package/lib/executor/latest-task-executor.d.ts +26 -0
  105. package/lib/executor/single-task-executor.d.ts +3 -6
  106. package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +4 -0
  107. package/lib/layout/workbench-layout.d.ts +9 -6
  108. package/lib/layout/workbench-layout.model.d.ts +2 -0
  109. package/lib/layout/workbench-layout.service.d.ts +4 -4
  110. package/lib/layout//311/265workbench-layout.d.ts +12 -13
  111. package/lib/layout//311/265workbench-layout.factory.d.ts +3 -2
  112. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +1 -5
  113. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.d.ts +4 -8
  114. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +5 -8
  115. package/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.d.ts +3 -7
  116. package/lib/notification/notification-list.component.d.ts +0 -2
  117. package/lib/part/part-action-bar/part-action-bar.component.d.ts +4 -1
  118. package/lib/part/part-action-bar/part-action.directive.d.ts +2 -2
  119. package/lib/part/part-bar/part-bar.component.d.ts +8 -12
  120. package/lib/part/part-portal.pipe.d.ts +3 -5
  121. package/lib/part/part.component.d.ts +9 -12
  122. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  123. package/lib/part/view-context-menu/view-menu.service.d.ts +8 -12
  124. package/lib/part/view-list/view-list.component.d.ts +8 -21
  125. package/lib/part/view-list-button/view-list-button.component.d.ts +8 -11
  126. package/lib/part/view-list-item/view-list-item.component.d.ts +3 -7
  127. package/lib/part/view-tab/view-tab.component.d.ts +17 -28
  128. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +4 -4
  129. package/lib/part/workbench-part-action.registry.d.ts +3 -23
  130. package/lib/part/workbench-part.model.d.ts +8 -27
  131. package/lib/part/workbench-part.registry.d.ts +3 -26
  132. package/lib/part//311/265workbench-part.model.d.ts +24 -17
  133. package/lib/perspective/workbench-perspective.model.d.ts +2 -8
  134. package/lib/perspective/workbench-perspective.registry.d.ts +3 -26
  135. package/lib/perspective/workbench-perspective.service.d.ts +8 -14
  136. package/lib/perspective//311/265workbench-perspective.model.d.ts +26 -21
  137. package/lib/popup/popup.config.d.ts +2 -0
  138. package/lib/popup/popup.service.d.ts +12 -14
  139. package/lib/registry/workbench-object-registry.d.ts +10 -6
  140. package/lib/routing/public_api.d.ts +2 -1
  141. package/lib/routing/routing.model.d.ts +25 -13
  142. package/lib/routing/{router.util.d.ts → routing.util.d.ts} +24 -1
  143. package/lib/routing/workbench-auxiliary-route-installer.service.d.ts +7 -0
  144. package/lib/routing/workbench-navigational-states.d.ts +8 -4
  145. package/lib/{view/workbench-view-route-guards.d.ts → routing/workbench-route-guards.d.ts} +8 -2
  146. package/lib/routing/workbench-url-observer.service.d.ts +31 -57
  147. package/lib/routing//311/265workbench-router.service.d.ts +10 -16
  148. package/lib/startup/workbench-launcher.service.d.ts +4 -5
  149. package/lib/testing/workbench.provider.d.ts +3 -1
  150. package/lib/theme/workbench-theme-switcher.service.d.ts +4 -6
  151. package/lib/view/public_api.d.ts +0 -1
  152. package/lib/view/view-portal.pipe.d.ts +1 -3
  153. package/lib/view/view.component.d.ts +2 -4
  154. package/lib/view/workbench-view.model.d.ts +49 -35
  155. package/lib/view/workbench-view.registry.d.ts +3 -27
  156. package/lib/view//311/265workbench-view.model.d.ts +51 -61
  157. package/lib/view-dnd/view-drag.service.d.ts +5 -2
  158. package/lib/workbench.model.d.ts +6 -2
  159. package/lib/workbench.service.d.ts +58 -56
  160. package/lib//311/265workbench.service.d.ts +18 -31
  161. package/package.json +1 -1
  162. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +0 -27
  163. package/esm2022/lib/common/filter-by-text.pipe.mjs +0 -39
  164. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +0 -26
  165. package/esm2022/lib/routing/router.util.mjs +0 -126
  166. package/esm2022/lib/view/workbench-view-route-guards.mjs +0 -47
  167. package/lib/common/filter-by-predicate.pipe.d.ts +0 -10
  168. package/lib/common/filter-by-text.pipe.d.ts +0 -12
  169. package/lib/part/part-action-bar/part-action-filter.pipe.d.ts +0 -11
@@ -7,55 +7,93 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Subject } from 'rxjs';
11
- import { map, startWith } from 'rxjs/operators';
12
10
  import { Arrays } from '@scion/toolkit/util';
11
+ import { computed, signal } from '@angular/core';
13
12
  /**
14
13
  * Container for managing CSS classes set in different scopes.
15
14
  */
16
15
  export class ClassList {
17
16
  constructor() {
18
- this._cssClasses = new Map();
19
- this._change$ = new Subject();
20
- this.value = new Array();
21
- this.value$ = this._change$
22
- .pipe(startWith(undefined), map(() => [...this.value]));
17
+ this._layout = signal([], { equal: isEqualArray });
18
+ this._navigation = signal([], { equal: isEqualArray });
19
+ this._route = signal([], { equal: isEqualArray });
20
+ this._application = signal([], { equal: isEqualArray });
21
+ this.asList = computed(() => Arrays.distinct(new Array()
22
+ .concat(this._layout())
23
+ .concat(this._navigation())
24
+ .concat(this._route())
25
+ .concat(this._application())));
26
+ this.asMap = computed(() => removeEmptyEntries(new Map()
27
+ .set('layout', this._layout())
28
+ .set('navigation', this._navigation())
29
+ .set('route', this._route())
30
+ .set('application', this._application())));
23
31
  }
24
32
  /**
25
- * Sets CSS classes for a specific scope.
33
+ * Specifies CSS classes defined by the layout.
26
34
  */
27
- set(cssClasses, options) {
28
- this._cssClasses.set(options.scope, Arrays.coerce(cssClasses));
29
- this.computeValue();
35
+ set layout(cssClasses) {
36
+ this._layout.set(Arrays.coerce(cssClasses));
30
37
  }
31
38
  /**
32
- * Retuns CSS classes of a specific scope.
39
+ * Returns CSS classes defined in the scope 'layout'.
33
40
  */
34
- get(options) {
35
- return this._cssClasses.get(options.scope) ?? [];
41
+ get layout() {
42
+ return this._layout;
36
43
  }
37
44
  /**
38
- * Removes CSS classes of a specific scope.
45
+ * Specifies CSS classes associated with the navigation.
39
46
  */
40
- remove(options) {
41
- this._cssClasses.delete(options.scope);
42
- this.computeValue();
47
+ set navigation(cssClasses) {
48
+ this._navigation.set(Arrays.coerce(cssClasses));
43
49
  }
44
50
  /**
45
- * Returns the CSS classes as readonly {@link Map} grouped by scope,
46
- * useful to transfer the class list to a different browsing context.
51
+ * Returns CSS classes defined in the scope 'navigation'.
47
52
  */
48
- toMap() {
49
- return new Map(this._cssClasses.entries());
53
+ get navigation() {
54
+ return this._navigation;
50
55
  }
51
56
  /**
52
- * Computes the aggregated list of CSS classes.
57
+ * Specifies CSS classes defined by the route.
53
58
  */
54
- computeValue() {
55
- this.value.length = 0;
56
- const classes = new Set(Array.from(this._cssClasses.values()).flat());
57
- classes.forEach(clazz => this.value.push(clazz));
58
- this._change$.next();
59
+ set route(cssClasses) {
60
+ this._route.set(Arrays.coerce(cssClasses));
59
61
  }
62
+ /**
63
+ * Returns CSS classes defined in the scope 'route'.
64
+ */
65
+ get route() {
66
+ return this._route;
67
+ }
68
+ /**
69
+ * Specifies CSS classes set by the application.
70
+ */
71
+ set application(cssClasses) {
72
+ this._application.set(Arrays.coerce(cssClasses));
73
+ }
74
+ /**
75
+ * Returns classes defined in the scope 'application'.
76
+ */
77
+ get application() {
78
+ return this._application;
79
+ }
80
+ }
81
+ /**
82
+ * Creates a copy with empty map entries removed.
83
+ */
84
+ function removeEmptyEntries(map) {
85
+ const copy = new Map(map);
86
+ for (const key of copy.keys()) {
87
+ if (!copy.get(key)?.length) {
88
+ copy.delete(key);
89
+ }
90
+ }
91
+ return copy;
92
+ }
93
+ /**
94
+ * Compares two arrays of strings for equality, ignoring element order.
95
+ */
96
+ function isEqualArray(a, b) {
97
+ return Arrays.isEqual(a, b, { exactOrder: false });
60
98
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2NvbW1vbi9jbGFzcy1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUzQzs7R0FFRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBUXBCO1FBTmlCLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7UUFDbkQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFaEMsVUFBSyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFJMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUTthQUN4QixJQUFJLENBQ0gsU0FBUyxDQUFDLFNBQWlCLENBQUMsRUFDNUIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDM0IsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNJLEdBQUcsQ0FBQyxVQUFnRCxFQUFFLE9BQWlDO1FBQzVGLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsT0FBaUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUFpQztRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLO1FBQ1YsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWTtRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXJyYXlzfSBmcm9tICdAc2Npb24vdG9vbGtpdC91dGlsJztcblxuLyoqXG4gKiBDb250YWluZXIgZm9yIG1hbmFnaW5nIENTUyBjbGFzc2VzIHNldCBpbiBkaWZmZXJlbnQgc2NvcGVzLlxuICovXG5leHBvcnQgY2xhc3MgQ2xhc3NMaXN0IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jc3NDbGFzc2VzID0gbmV3IE1hcDxDbGFzc0xpc3RTY29wZXMsIHN0cmluZ1tdPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWUgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnZhbHVlJCA9IHRoaXMuX2NoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkIGFzIHZvaWQpLFxuICAgICAgICBtYXAoKCkgPT4gWy4uLnRoaXMudmFsdWVdKSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBDU1MgY2xhc3NlcyBmb3IgYSBzcGVjaWZpYyBzY29wZS5cbiAgICovXG4gIHB1YmxpYyBzZXQoY3NzQ2xhc3Nlczogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHwgdW5kZWZpbmVkLCBvcHRpb25zOiB7c2NvcGU6IENsYXNzTGlzdFNjb3Blc30pOiB2b2lkIHtcbiAgICB0aGlzLl9jc3NDbGFzc2VzLnNldChvcHRpb25zLnNjb3BlLCBBcnJheXMuY29lcmNlKGNzc0NsYXNzZXMpKTtcbiAgICB0aGlzLmNvbXB1dGVWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVucyBDU1MgY2xhc3NlcyBvZiBhIHNwZWNpZmljIHNjb3BlLlxuICAgKi9cbiAgcHVibGljIGdldChvcHRpb25zOiB7c2NvcGU6IENsYXNzTGlzdFNjb3Blc30pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2Nzc0NsYXNzZXMuZ2V0KG9wdGlvbnMuc2NvcGUpID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgQ1NTIGNsYXNzZXMgb2YgYSBzcGVjaWZpYyBzY29wZS5cbiAgICovXG4gIHB1YmxpYyByZW1vdmUob3B0aW9uczoge3Njb3BlOiBDbGFzc0xpc3RTY29wZXN9KTogdm9pZCB7XG4gICAgdGhpcy5fY3NzQ2xhc3Nlcy5kZWxldGUob3B0aW9ucy5zY29wZSk7XG4gICAgdGhpcy5jb21wdXRlVmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBDU1MgY2xhc3NlcyBhcyByZWFkb25seSB7QGxpbmsgTWFwfSBncm91cGVkIGJ5IHNjb3BlLFxuICAgKiB1c2VmdWwgdG8gdHJhbnNmZXIgdGhlIGNsYXNzIGxpc3QgdG8gYSBkaWZmZXJlbnQgYnJvd3NpbmcgY29udGV4dC5cbiAgICovXG4gIHB1YmxpYyB0b01hcCgpOiBSZWFkb25seU1hcDxDbGFzc0xpc3RTY29wZXMsIHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIG5ldyBNYXAodGhpcy5fY3NzQ2xhc3Nlcy5lbnRyaWVzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBhZ2dyZWdhdGVkIGxpc3Qgb2YgQ1NTIGNsYXNzZXMuXG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLmxlbmd0aCA9IDA7XG4gICAgY29uc3QgY2xhc3NlcyA9IG5ldyBTZXQoQXJyYXkuZnJvbSh0aGlzLl9jc3NDbGFzc2VzLnZhbHVlcygpKS5mbGF0KCkpO1xuICAgIGNsYXNzZXMuZm9yRWFjaChjbGF6eiA9PiB0aGlzLnZhbHVlLnB1c2goY2xhenopKTtcbiAgICB0aGlzLl9jaGFuZ2UkLm5leHQoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgc2NvcGVzIHVzZWQgaW4ge0BsaW5rIENsYXNzTGlzdH0uXG4gKlxuICogYGxheW91dGA6IFVzZSBmb3IgQ1NTIGNsYXNzZXMgZGVmaW5lZCBvbiB0aGUgbGF5b3V0LlxuICogYG5hdmlnYXRpb25gOiBVc2UgZm9yIENTUyBjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbmF2aWdhdGlvbi5cbiAqIGByb3V0ZWA6IFVzZSBmb3IgQ1NTIGNsYXNzZXMgZGVmaW5lZCBvbiB0aGUgcm91dGUuXG4gKiBgYXBwbGljYXRpb25gOiBVc2UgZm9yIENTUyBjbGFzc2VzIHNldCBieSB0aGUgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIENsYXNzTGlzdFNjb3BlcyA9ICdsYXlvdXQnIHwgJ25hdmlnYXRpb24nIHwgJ3JvdXRlJyB8ICdhcHBsaWNhdGlvbic7XG5cbi8qKlxuICogQ1NTIGNsYXNzZXMgZ3JvdXBlZCBieSBzY29wZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ2xhc3NMaXN0TWFwID0gUmVhZG9ubHlNYXA8Q2xhc3NMaXN0U2NvcGVzLCBzdHJpbmdbXT47XG4iXX0=
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2NvbW1vbi9jbGFzcy1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQVUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFpQnBCO1FBZmlCLFlBQU8sR0FBRyxNQUFNLENBQVcsRUFBRSxFQUFFLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7UUFDdEQsZ0JBQVcsR0FBRyxNQUFNLENBQVcsRUFBRSxFQUFFLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7UUFDMUQsV0FBTSxHQUFHLE1BQU0sQ0FBVyxFQUFFLEVBQUUsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQztRQUNyRCxpQkFBWSxHQUFHLE1BQU0sQ0FBVyxFQUFFLEVBQUUsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQztRQWExRSxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxFQUFVO2FBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxHQUFHLEVBQTZCO2FBQ2hGLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzdCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3JDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQzNCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsTUFBTSxDQUFDLFVBQWdEO1FBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxVQUFVLENBQUMsVUFBZ0Q7UUFDcEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxLQUFLLENBQUMsVUFBZ0Q7UUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFdBQVcsQ0FBQyxVQUFnRDtRQUNyRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFpQkQ7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUFPLEdBQWdCO0lBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxZQUFZLENBQUMsQ0FBVyxFQUFFLENBQVc7SUFDNUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0FycmF5c30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5pbXBvcnQge2NvbXB1dGVkLCBTaWduYWwsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQ29udGFpbmVyIGZvciBtYW5hZ2luZyBDU1MgY2xhc3NlcyBzZXQgaW4gZGlmZmVyZW50IHNjb3Blcy5cbiAqL1xuZXhwb3J0IGNsYXNzIENsYXNzTGlzdCB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGF5b3V0ID0gc2lnbmFsPHN0cmluZ1tdPihbXSwge2VxdWFsOiBpc0VxdWFsQXJyYXl9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdGlvbiA9IHNpZ25hbDxzdHJpbmdbXT4oW10sIHtlcXVhbDogaXNFcXVhbEFycmF5fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlID0gc2lnbmFsPHN0cmluZ1tdPihbXSwge2VxdWFsOiBpc0VxdWFsQXJyYXl9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb24gPSBzaWduYWw8c3RyaW5nW10+KFtdLCB7ZXF1YWw6IGlzRXF1YWxBcnJheX0pO1xuXG4gIC8qKlxuICAgKiBDU1MgY2xhc3NlcyBhcyBsaXN0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFzTGlzdDogU2lnbmFsPHN0cmluZ1tdPjtcblxuICAvKipcbiAgICogQ1NTIGNsYXNzZXMgYXMge0BsaW5rIE1hcH0gZ3JvdXBlZCBieSBzY29wZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhc01hcDogU2lnbmFsPENsYXNzTGlzdE1hcD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hc0xpc3QgPSBjb21wdXRlZCgoKSA9PiBBcnJheXMuZGlzdGluY3QobmV3IEFycmF5PHN0cmluZz4oKVxuICAgICAgLmNvbmNhdCh0aGlzLl9sYXlvdXQoKSlcbiAgICAgIC5jb25jYXQodGhpcy5fbmF2aWdhdGlvbigpKVxuICAgICAgLmNvbmNhdCh0aGlzLl9yb3V0ZSgpKVxuICAgICAgLmNvbmNhdCh0aGlzLl9hcHBsaWNhdGlvbigpKSkpO1xuXG4gICAgdGhpcy5hc01hcCA9IGNvbXB1dGVkKCgpID0+IHJlbW92ZUVtcHR5RW50cmllcyhuZXcgTWFwPENsYXNzTGlzdFNjb3Blcywgc3RyaW5nW10+KClcbiAgICAgIC5zZXQoJ2xheW91dCcsIHRoaXMuX2xheW91dCgpKVxuICAgICAgLnNldCgnbmF2aWdhdGlvbicsIHRoaXMuX25hdmlnYXRpb24oKSlcbiAgICAgIC5zZXQoJ3JvdXRlJywgdGhpcy5fcm91dGUoKSlcbiAgICAgIC5zZXQoJ2FwcGxpY2F0aW9uJywgdGhpcy5fYXBwbGljYXRpb24oKSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgQ1NTIGNsYXNzZXMgZGVmaW5lZCBieSB0aGUgbGF5b3V0LlxuICAgKi9cbiAgcHVibGljIHNldCBsYXlvdXQoY3NzQ2xhc3Nlczogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fbGF5b3V0LnNldChBcnJheXMuY29lcmNlKGNzc0NsYXNzZXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIENTUyBjbGFzc2VzIGRlZmluZWQgaW4gdGhlIHNjb3BlICdsYXlvdXQnLlxuICAgKi9cbiAgcHVibGljIGdldCBsYXlvdXQoKTogU2lnbmFsPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xheW91dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgQ1NTIGNsYXNzZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgcHVibGljIHNldCBuYXZpZ2F0aW9uKGNzc0NsYXNzZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX25hdmlnYXRpb24uc2V0KEFycmF5cy5jb2VyY2UoY3NzQ2xhc3NlcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgQ1NTIGNsYXNzZXMgZGVmaW5lZCBpbiB0aGUgc2NvcGUgJ25hdmlnYXRpb24nLlxuICAgKi9cbiAgcHVibGljIGdldCBuYXZpZ2F0aW9uKCk6IFNpZ25hbDxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBDU1MgY2xhc3NlcyBkZWZpbmVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHB1YmxpYyBzZXQgcm91dGUoY3NzQ2xhc3Nlczogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcm91dGUuc2V0KEFycmF5cy5jb2VyY2UoY3NzQ2xhc3NlcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgQ1NTIGNsYXNzZXMgZGVmaW5lZCBpbiB0aGUgc2NvcGUgJ3JvdXRlJy5cbiAgICovXG4gIHB1YmxpYyBnZXQgcm91dGUoKTogU2lnbmFsPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBDU1MgY2xhc3NlcyBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcHVibGljIHNldCBhcHBsaWNhdGlvbihjc3NDbGFzc2VzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbi5zZXQoQXJyYXlzLmNvZXJjZShjc3NDbGFzc2VzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBjbGFzc2VzIGRlZmluZWQgaW4gdGhlIHNjb3BlICdhcHBsaWNhdGlvbicuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFwcGxpY2F0aW9uKCk6IFNpZ25hbDxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbjtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgc2NvcGVzIHVzZWQgaW4ge0BsaW5rIENsYXNzTGlzdH0uXG4gKlxuICogYGxheW91dGA6IFVzZSBmb3IgQ1NTIGNsYXNzZXMgZGVmaW5lZCBvbiB0aGUgbGF5b3V0LlxuICogYG5hdmlnYXRpb25gOiBVc2UgZm9yIENTUyBjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbmF2aWdhdGlvbi5cbiAqIGByb3V0ZWA6IFVzZSBmb3IgQ1NTIGNsYXNzZXMgZGVmaW5lZCBvbiB0aGUgcm91dGUuXG4gKiBgYXBwbGljYXRpb25gOiBVc2UgZm9yIENTUyBjbGFzc2VzIHNldCBieSB0aGUgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIENsYXNzTGlzdFNjb3BlcyA9ICdsYXlvdXQnIHwgJ25hdmlnYXRpb24nIHwgJ3JvdXRlJyB8ICdhcHBsaWNhdGlvbic7XG5cbi8qKlxuICogQ1NTIGNsYXNzZXMgZ3JvdXBlZCBieSBzY29wZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ2xhc3NMaXN0TWFwID0gUmVhZG9ubHlNYXA8Q2xhc3NMaXN0U2NvcGVzLCBzdHJpbmdbXT47XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvcHkgd2l0aCBlbXB0eSBtYXAgZW50cmllcyByZW1vdmVkLlxuICovXG5mdW5jdGlvbiByZW1vdmVFbXB0eUVudHJpZXM8SywgVj4obWFwOiBNYXA8SywgVltdPik6IE1hcDxLLCBWW10+IHtcbiAgY29uc3QgY29weSA9IG5ldyBNYXA8SywgVltdPihtYXApO1xuICBmb3IgKGNvbnN0IGtleSBvZiBjb3B5LmtleXMoKSkge1xuICAgIGlmICghY29weS5nZXQoa2V5KT8ubGVuZ3RoKSB7XG4gICAgICBjb3B5LmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY29weTtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gYXJyYXlzIG9mIHN0cmluZ3MgZm9yIGVxdWFsaXR5LCBpZ25vcmluZyBlbGVtZW50IG9yZGVyLlxuICovXG5mdW5jdGlvbiBpc0VxdWFsQXJyYXkoYTogc3RyaW5nW10sIGI6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gIHJldHVybiBBcnJheXMuaXNFcXVhbChhLCBiLCB7ZXhhY3RPcmRlcjogZmFsc2V9KTtcbn1cbiJdfQ==
@@ -7,10 +7,7 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { audit } from 'rxjs';
11
10
  import { filter, mergeMap } from 'rxjs/operators';
12
- import { inject } from '@angular/core';
13
- import { WorkbenchLayoutService } from '../layout/workbench-layout.service';
14
11
  /**
15
12
  * Serializes the execution of elements emitted by the source Observable.
16
13
  *
@@ -27,12 +24,4 @@ export function serializeExecution(fn) {
27
24
  export function filterNull() {
28
25
  return filter((item) => item !== null);
29
26
  }
30
- /**
31
- * Buffers the most recent value from the source Observable until the next layout change.
32
- * Use this operator to avoid emitting a partially updated layout.
33
- */
34
- export function bufferLatestUntilLayoutChange() {
35
- const onLayoutChange$ = inject(WorkbenchLayoutService).onLayoutChange$;
36
- return audit(() => onLayoutChange$);
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvY29tbW9uL29wZXJhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxLQUFLLEVBQXlELE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUUxRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQVUsRUFBaUQ7SUFDM0YsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxNQUFNLENBQUMsQ0FBQyxJQUFjLEVBQWEsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QjtJQUMzQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxlQUFlLENBQUM7SUFDdkUsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHthdWRpdCwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtZXJnZU1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlfSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dC5zZXJ2aWNlJztcblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBleGVjdXRpb24gb2YgZWxlbWVudHMgZW1pdHRlZCBieSB0aGUgc291cmNlIE9ic2VydmFibGUuXG4gKlxuICogRm9yIGVhY2ggZWxlbWVudCBlbWl0dGVkIGJ5IHRoZSBzb3VyY2UsIHRoZSBzcGVjaWZpZWQgY2FsbGJhY2sgZnVuY3Rpb24gaXMgY2FsbGVkLlxuICogVGhlIG5leHQgZWxlbWVudCB3aWxsIG9ubHkgYmUgcHJvY2Vzc2VkIG9uY2UgdGhlIFByb21pc2Ugb3IgT2JzZXJ2YWJsZSByZXR1cm5lZCBieVxuICogdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHJlc29sdmVzIG9yIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUV4ZWN1dGlvbjxJTiwgT1VUPihmbjogKHZhbHVlOiBJTikgPT4gT2JzZXJ2YWJsZTxPVVQ+IHwgUHJvbWlzZTxPVVQ+KTogT3BlcmF0b3JGdW5jdGlvbjxJTiwgT1VUPiB7XG4gIHJldHVybiBtZXJnZU1hcChlbGVtZW50ID0+IGZuKGVsZW1lbnQpLCAxKTtcbn1cblxuLyoqXG4gKiBNaXJyb3JzIHRoZSBzb3VyY2UgZXhjZXB0IGZvciBgbnVsbGAgZW1pc3Npb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyTnVsbDxUPigpOiBPcGVyYXRvckZ1bmN0aW9uPFQgfCBudWxsLCBUPiB7XG4gIHJldHVybiBmaWx0ZXIoKGl0ZW06IFQgfCBudWxsKTogaXRlbSBpcyBUID0+IGl0ZW0gIT09IG51bGwpO1xufVxuXG4vKipcbiAqIEJ1ZmZlcnMgdGhlIG1vc3QgcmVjZW50IHZhbHVlIGZyb20gdGhlIHNvdXJjZSBPYnNlcnZhYmxlIHVudGlsIHRoZSBuZXh0IGxheW91dCBjaGFuZ2UuXG4gKiBVc2UgdGhpcyBvcGVyYXRvciB0byBhdm9pZCBlbWl0dGluZyBhIHBhcnRpYWxseSB1cGRhdGVkIGxheW91dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1ZmZlckxhdGVzdFVudGlsTGF5b3V0Q2hhbmdlPFQ+KCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gIGNvbnN0IG9uTGF5b3V0Q2hhbmdlJCA9IGluamVjdChXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlKS5vbkxheW91dENoYW5nZSQ7XG4gIHJldHVybiBhdWRpdCgoKSA9PiBvbkxheW91dENoYW5nZSQpO1xufVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvY29tbW9uL29wZXJhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUdILE9BQU8sRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFVLEVBQWlEO0lBQzNGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVO0lBQ3hCLE9BQU8sTUFBTSxDQUFDLENBQUMsSUFBYyxFQUFhLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDOUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtZXJnZU1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGV4ZWN1dGlvbiBvZiBlbGVtZW50cyBlbWl0dGVkIGJ5IHRoZSBzb3VyY2UgT2JzZXJ2YWJsZS5cbiAqXG4gKiBGb3IgZWFjaCBlbGVtZW50IGVtaXR0ZWQgYnkgdGhlIHNvdXJjZSwgdGhlIHNwZWNpZmllZCBjYWxsYmFjayBmdW5jdGlvbiBpcyBjYWxsZWQuXG4gKiBUaGUgbmV4dCBlbGVtZW50IHdpbGwgb25seSBiZSBwcm9jZXNzZWQgb25jZSB0aGUgUHJvbWlzZSBvciBPYnNlcnZhYmxlIHJldHVybmVkIGJ5XG4gKiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gcmVzb2x2ZXMgb3IgY29tcGxldGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplRXhlY3V0aW9uPElOLCBPVVQ+KGZuOiAodmFsdWU6IElOKSA9PiBPYnNlcnZhYmxlPE9VVD4gfCBQcm9taXNlPE9VVD4pOiBPcGVyYXRvckZ1bmN0aW9uPElOLCBPVVQ+IHtcbiAgcmV0dXJuIG1lcmdlTWFwKGVsZW1lbnQgPT4gZm4oZWxlbWVudCksIDEpO1xufVxuXG4vKipcbiAqIE1pcnJvcnMgdGhlIHNvdXJjZSBleGNlcHQgZm9yIGBudWxsYCBlbWlzc2lvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJOdWxsPFQ+KCk6IE9wZXJhdG9yRnVuY3Rpb248VCB8IG51bGwsIFQ+IHtcbiAgcmV0dXJuIGZpbHRlcigoaXRlbTogVCB8IG51bGwpOiBpdGVtIGlzIFQgPT4gaXRlbSAhPT0gbnVsbCk7XG59XG4iXX0=
@@ -45,13 +45,13 @@ import * as i0 from "@angular/core";
45
45
  */
46
46
  export class ContentAsOverlayComponent {
47
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ContentAsOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ContentAsOverlayComponent, isStandalone: true, selector: "wb-content-as-overlay", inputs: { overlayHost: "overlayHost" }, ngImport: i0, template: "<!-- define the area where to project `ng-content` into -->\n<div wbContentProjection\n [wbContentProjectionContent]=\"ng_content_template\"\n [wbContentProjectionOverlayHost]=\"overlayHost\">\n</div>\n\n<!-- make `ng-content` available in the form of a template -->\n<ng-template #ng_content_template>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:grid}\n"], dependencies: [{ kind: "directive", type: ContentProjectionDirective, selector: "[wbContentProjection]", inputs: ["wbContentProjectionOverlayHost", "wbContentProjectionContent"] }] }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: ContentAsOverlayComponent, isStandalone: true, selector: "wb-content-as-overlay", inputs: { overlayHost: "overlayHost" }, ngImport: i0, template: "<!-- define the area where to project `ng-content` into -->\n<div wbContentProjection\n [wbContentProjectionContent]=\"ng_content_template\"\n [wbContentProjectionOverlayHost]=\"overlayHost\">\n</div>\n\n<!-- make `ng-content` available in the form of a template -->\n<ng-template #ng_content_template>\n <ng-content/>\n</ng-template>\n", styles: [":host{display:grid}\n"], dependencies: [{ kind: "directive", type: ContentProjectionDirective, selector: "[wbContentProjection]", inputs: ["wbContentProjectionOverlayHost", "wbContentProjectionContent"] }] }); }
49
49
  }
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ContentAsOverlayComponent, decorators: [{
51
51
  type: Component,
52
- args: [{ selector: 'wb-content-as-overlay', standalone: true, imports: [ContentProjectionDirective], template: "<!-- define the area where to project `ng-content` into -->\n<div wbContentProjection\n [wbContentProjectionContent]=\"ng_content_template\"\n [wbContentProjectionOverlayHost]=\"overlayHost\">\n</div>\n\n<!-- make `ng-content` available in the form of a template -->\n<ng-template #ng_content_template>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:grid}\n"] }]
52
+ args: [{ selector: 'wb-content-as-overlay', standalone: true, imports: [ContentProjectionDirective], template: "<!-- define the area where to project `ng-content` into -->\n<div wbContentProjection\n [wbContentProjectionContent]=\"ng_content_template\"\n [wbContentProjectionOverlayHost]=\"overlayHost\">\n</div>\n\n<!-- make `ng-content` available in the form of a template -->\n<ng-template #ng_content_template>\n <ng-content/>\n</ng-template>\n", styles: [":host{display:grid}\n"] }]
53
53
  }], propDecorators: { overlayHost: [{
54
54
  type: Input,
55
55
  args: [{ required: true }]
56
56
  }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1hcy1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2NvbnRlbnQtcHJvamVjdGlvbi9jb250ZW50LWFzLW92ZXJsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvY29udGVudC1wcm9qZWN0aW9uL2NvbnRlbnQtYXMtb3ZlcmxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFFMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBUUgsTUFBTSxPQUFPLHlCQUF5Qjs4R0FBekIseUJBQXlCO2tHQUF6Qix5QkFBeUIseUhDckR0Qyx1V0FVQSwrRUR5Q1ksMEJBQTBCOzsyRkFFekIseUJBQXlCO2tCQVByQyxTQUFTOytCQUNFLHVCQUF1QixjQUdyQixJQUFJLFdBQ1AsQ0FBQywwQkFBMEIsQ0FBQzs4QkFROUIsV0FBVztzQkFEakIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRlbnRQcm9qZWN0aW9uRGlyZWN0aXZlfSBmcm9tICcuL2NvbnRlbnQtcHJvamVjdGlvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIFN0cnVjdHVyYWwgY29tcG9uZW50IHdoaWNoIGFkZHMgaXRzIGBuZy1jb250ZW50YCB0byBhIHRvcC1sZXZlbCB3b3JrYmVuY2ggRE9NIGVsZW1lbnQgYW5kIHByb2plY3RzIGl0IGludG8gdGhpcyBjb21wb25lbnQncyBib3VuZGluZyBib3guXG4gKlxuICogVGhpcyBjb21wb25lbnQgZW5zdXJlcyB0aGF0IGl0cyBjb250ZW50IGNoaWxkcmVuIGFyZSBub3QgcmVwYXJlbnRlZCBpbiB0aGUgRE9NIHdoZW4gdGhlIHdvcmtiZW5jaCBsYXlvdXQgaXMgY2hhbmdlZC5cbiAqIEZvciBpbnN0YW5jZSwgYW4gaWZyYW1lIHdvdWxkIHJlbG9hZCB3aGVuIGl0IGlzIHJlcGFyZW50ZWQgaW4gdGhlIERPTS5cbiAqXG4gKiBVc2UgdGhpcyBjb21wb25lbnQgdG8gd3JhcCB0aGUgZW50aXJlIGNvbnRlbnQgb2YgeW91ciBjb21wb25lbnQsIHNvIGA8d2ItY29udGVudC1hcy1vdmVybGF5PmAgaXMgdGhlIG9ubHkgcm9vdCB2aWV3IGNoaWxkIG9mIHlvdXIgY29tcG9uZW50LlxuICpcbiAqIFRoZSA8bmctY29udGVudD4gaXMgYWRkZWQgdG8gYSBDU1MgZ3JpZCBjb250YWluZXIgd2l0aCBhIHNpbmdsZSBjb2x1bW4sIHRodXMsIGNvbnRlbnQgZmlsbHMgcmVtYWluaW5nIHNwYWNlIHZlcnRpY2FsbHkgYW5kIGhvcml6b250YWxseS5cbiAqIFRvIHN0eWxlIGVsZW1lbnRzIG9mIGBuZy1jb250ZW50YCwgZG8gbm90IGNvbWJpbmUgQ1NTIHNlbGVjdG9ycyB3aXRoIHRoZSBgOmhvc3RgIENTUyBwc2V1ZG8tY2xhc3MgYmVjYXVzZSwgaW4gdGhlIERPTSwgdGhleSBhcmUgbm90IGNoaWxkcmVuXG4gKiBvZiB0aGUgaG9zdCBjb21wb25lbnQuXG4gKlxuICogIyMjIyBFeGFtcGxlIEhUTUwgdGVtcGxhdGU6XG4gKlxuICogYGBgaHRtbFxuICogPHdiLWNvbnRlbnQtYXMtb3ZlcmxheSBvdmVybGF5SG9zdD1cIi4uLlwiPlxuICogICA8aWZyYW1lIFtzcmNdPVwiLi4uXCI+PC9pZnJhbWU+XG4gKiA8L3diLWNvbnRlbnQtYXMtb3ZlcmxheT5cbiAqIGBgYFxuICpcbiAqXG4gKiAjIyMjIEV4YW1wbGUgU0NTUyBzdHlsZXM6XG4gKlxuICogYGBgc2Nzc1xuICogOmhvc3Qge1xuICogICBkaXNwbGF5OiBncmlkOyAvLyBmaWxscyByZW1haW5pbmcgc3BhY2UgdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGxcbiAqIH1cbiAqXG4gKiBpZnJhbWUge1xuICogICBiYWNrZ3JvdW5kLWNvbG9yOiBncmF5O1xuICogfVxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLWNvbnRlbnQtYXMtb3ZlcmxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LWFzLW92ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb250ZW50LWFzLW92ZXJsYXkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbnRlbnRQcm9qZWN0aW9uRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudEFzT3ZlcmxheUNvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgdmlldyBjb250YWluZXIgd2hlcmUgdG8gaW5zZXJ0IHRoZSBvdmVybGF5LlxuICAgKi9cbiAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gIHB1YmxpYyBvdmVybGF5SG9zdDogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZCB8IG51bGw7XG59XG4iLCI8IS0tIGRlZmluZSB0aGUgYXJlYSB3aGVyZSB0byBwcm9qZWN0IGBuZy1jb250ZW50YCBpbnRvIC0tPlxuPGRpdiB3YkNvbnRlbnRQcm9qZWN0aW9uXG4gICAgIFt3YkNvbnRlbnRQcm9qZWN0aW9uQ29udGVudF09XCJuZ19jb250ZW50X3RlbXBsYXRlXCJcbiAgICAgW3diQ29udGVudFByb2plY3Rpb25PdmVybGF5SG9zdF09XCJvdmVybGF5SG9zdFwiPlxuPC9kaXY+XG5cbjwhLS0gbWFrZSBgbmctY29udGVudGAgYXZhaWxhYmxlIGluIHRoZSBmb3JtIG9mIGEgdGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI25nX2NvbnRlbnRfdGVtcGxhdGU+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1hcy1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2NvbnRlbnQtcHJvamVjdGlvbi9jb250ZW50LWFzLW92ZXJsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvY29udGVudC1wcm9qZWN0aW9uL2NvbnRlbnQtYXMtb3ZlcmxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFFMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBUUgsTUFBTSxPQUFPLHlCQUF5Qjs4R0FBekIseUJBQXlCO2tHQUF6Qix5QkFBeUIseUhDckR0QywyVkFVQSwrRUR5Q1ksMEJBQTBCOzsyRkFFekIseUJBQXlCO2tCQVByQyxTQUFTOytCQUNFLHVCQUF1QixjQUdyQixJQUFJLFdBQ1AsQ0FBQywwQkFBMEIsQ0FBQzs4QkFROUIsV0FBVztzQkFEakIsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRlbnRQcm9qZWN0aW9uRGlyZWN0aXZlfSBmcm9tICcuL2NvbnRlbnQtcHJvamVjdGlvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIFN0cnVjdHVyYWwgY29tcG9uZW50IHdoaWNoIGFkZHMgaXRzIGBuZy1jb250ZW50YCB0byBhIHRvcC1sZXZlbCB3b3JrYmVuY2ggRE9NIGVsZW1lbnQgYW5kIHByb2plY3RzIGl0IGludG8gdGhpcyBjb21wb25lbnQncyBib3VuZGluZyBib3guXG4gKlxuICogVGhpcyBjb21wb25lbnQgZW5zdXJlcyB0aGF0IGl0cyBjb250ZW50IGNoaWxkcmVuIGFyZSBub3QgcmVwYXJlbnRlZCBpbiB0aGUgRE9NIHdoZW4gdGhlIHdvcmtiZW5jaCBsYXlvdXQgaXMgY2hhbmdlZC5cbiAqIEZvciBpbnN0YW5jZSwgYW4gaWZyYW1lIHdvdWxkIHJlbG9hZCB3aGVuIGl0IGlzIHJlcGFyZW50ZWQgaW4gdGhlIERPTS5cbiAqXG4gKiBVc2UgdGhpcyBjb21wb25lbnQgdG8gd3JhcCB0aGUgZW50aXJlIGNvbnRlbnQgb2YgeW91ciBjb21wb25lbnQsIHNvIGA8d2ItY29udGVudC1hcy1vdmVybGF5PmAgaXMgdGhlIG9ubHkgcm9vdCB2aWV3IGNoaWxkIG9mIHlvdXIgY29tcG9uZW50LlxuICpcbiAqIFRoZSA8bmctY29udGVudD4gaXMgYWRkZWQgdG8gYSBDU1MgZ3JpZCBjb250YWluZXIgd2l0aCBhIHNpbmdsZSBjb2x1bW4sIHRodXMsIGNvbnRlbnQgZmlsbHMgcmVtYWluaW5nIHNwYWNlIHZlcnRpY2FsbHkgYW5kIGhvcml6b250YWxseS5cbiAqIFRvIHN0eWxlIGVsZW1lbnRzIG9mIGBuZy1jb250ZW50YCwgZG8gbm90IGNvbWJpbmUgQ1NTIHNlbGVjdG9ycyB3aXRoIHRoZSBgOmhvc3RgIENTUyBwc2V1ZG8tY2xhc3MgYmVjYXVzZSwgaW4gdGhlIERPTSwgdGhleSBhcmUgbm90IGNoaWxkcmVuXG4gKiBvZiB0aGUgaG9zdCBjb21wb25lbnQuXG4gKlxuICogIyMjIyBFeGFtcGxlIEhUTUwgdGVtcGxhdGU6XG4gKlxuICogYGBgaHRtbFxuICogPHdiLWNvbnRlbnQtYXMtb3ZlcmxheSBvdmVybGF5SG9zdD1cIi4uLlwiPlxuICogICA8aWZyYW1lIFtzcmNdPVwiLi4uXCI+PC9pZnJhbWU+XG4gKiA8L3diLWNvbnRlbnQtYXMtb3ZlcmxheT5cbiAqIGBgYFxuICpcbiAqXG4gKiAjIyMjIEV4YW1wbGUgU0NTUyBzdHlsZXM6XG4gKlxuICogYGBgc2Nzc1xuICogOmhvc3Qge1xuICogICBkaXNwbGF5OiBncmlkOyAvLyBmaWxscyByZW1haW5pbmcgc3BhY2UgdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGxcbiAqIH1cbiAqXG4gKiBpZnJhbWUge1xuICogICBiYWNrZ3JvdW5kLWNvbG9yOiBncmF5O1xuICogfVxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLWNvbnRlbnQtYXMtb3ZlcmxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LWFzLW92ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb250ZW50LWFzLW92ZXJsYXkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbnRlbnRQcm9qZWN0aW9uRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudEFzT3ZlcmxheUNvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgdmlldyBjb250YWluZXIgd2hlcmUgdG8gaW5zZXJ0IHRoZSBvdmVybGF5LlxuICAgKi9cbiAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gIHB1YmxpYyBvdmVybGF5SG9zdDogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZCB8IG51bGw7XG59XG4iLCI8IS0tIGRlZmluZSB0aGUgYXJlYSB3aGVyZSB0byBwcm9qZWN0IGBuZy1jb250ZW50YCBpbnRvIC0tPlxuPGRpdiB3YkNvbnRlbnRQcm9qZWN0aW9uXG4gICAgIFt3YkNvbnRlbnRQcm9qZWN0aW9uQ29udGVudF09XCJuZ19jb250ZW50X3RlbXBsYXRlXCJcbiAgICAgW3diQ29udGVudFByb2plY3Rpb25PdmVybGF5SG9zdF09XCJvdmVybGF5SG9zdFwiPlxuPC9kaXY+XG5cbjwhLS0gbWFrZSBgbmctY29udGVudGAgYXZhaWxhYmxlIGluIHRoZSBmb3JtIG9mIGEgdGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI25nX2NvbnRlbnRfdGVtcGxhdGU+XG4gIDxuZy1jb250ZW50Lz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -8,8 +8,6 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { Component } from '@angular/core';
11
- import { AsyncPipe } from '@angular/common';
12
- import { CoerceObservablePipe } from '../../common/coerce-observable.pipe';
13
11
  import * as i0 from "@angular/core";
14
12
  import * as i1 from "../\u0275workbench-dialog";
15
13
  /**
@@ -26,13 +24,10 @@ export class DialogHeaderComponent {
26
24
  event.stopPropagation(); // Prevent dragging the dialog with the close button.
27
25
  }
28
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DialogHeaderComponent, deps: [{ token: i1.ɵWorkbenchDialog }], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: DialogHeaderComponent, isStandalone: true, selector: "wb-dialog-header", ngImport: i0, template: "@if (dialog.title | wbCoerceObservable$ | async; as title) {\n <div class=\"title e2e-title\">\n <span>{{ title }}</span>\n </div>\n}\n\n@if (dialog.closable) {\n <button tabindex=\"-1\" class=\"close scion-workbench-icons e2e-close\"\n (mousedown)=\"onCloseMouseDown($event)\"\n (click)=\"onCloseClick()\">\n close\n </button>\n}\n", styles: [":host{display:flex;gap:var(--sci-workbench-dialog-padding);place-content:flex-end;padding-inline:var(--sci-workbench-dialog-padding);background-color:var(--sci-workbench-dialog-header-background-color);-webkit-user-select:none;user-select:none;height:var(--sci-workbench-dialog-header-height)}:host>div.title{flex:auto;display:flex;align-items:center;position:relative}:host>div.title>span{position:absolute;left:0;right:0;line-height:1.5;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-family:var(--sci-workbench-dialog-title-font-family);font-size:var(--sci-workbench-dialog-title-font-size);font-weight:var(--sci-workbench-dialog-title-font-weight);text-align:var(--sci-workbench-dialog-title-align)}:host>button.close{all:unset;flex:none;cursor:pointer;align-self:center}:host>button.close:not(:hover){opacity:.75}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: CoerceObservablePipe, name: "wbCoerceObservable$" }] }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: DialogHeaderComponent, isStandalone: true, selector: "wb-dialog-header", ngImport: i0, template: "@if (dialog.title(); as title) {\n <div class=\"title e2e-title\">\n <span>{{title}}</span>\n </div>\n}\n\n@if (dialog.closable()) {\n <button tabindex=\"-1\" class=\"close scion-workbench-icons e2e-close\"\n (mousedown)=\"onCloseMouseDown($event)\"\n (click)=\"onCloseClick()\">\n close\n </button>\n}\n", styles: [":host{display:flex;gap:var(--sci-workbench-dialog-padding);place-content:flex-end;padding-inline:var(--sci-workbench-dialog-padding);background-color:var(--sci-workbench-dialog-header-background-color);-webkit-user-select:none;user-select:none;height:var(--sci-workbench-dialog-header-height)}:host>div.title{flex:auto;display:flex;align-items:center;position:relative}:host>div.title>span{position:absolute;left:0;right:0;line-height:1.5;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-family:var(--sci-workbench-dialog-title-font-family);font-size:var(--sci-workbench-dialog-title-font-size);font-weight:var(--sci-workbench-dialog-title-font-weight);text-align:var(--sci-workbench-dialog-title-align)}:host>button.close{all:unset;flex:none;cursor:pointer;align-self:center}:host>button.close:not(:hover){opacity:.75}\n"] }); }
30
28
  }
31
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DialogHeaderComponent, decorators: [{
32
30
  type: Component,
33
- args: [{ selector: 'wb-dialog-header', standalone: true, imports: [
34
- AsyncPipe,
35
- CoerceObservablePipe,
36
- ], template: "@if (dialog.title | wbCoerceObservable$ | async; as title) {\n <div class=\"title e2e-title\">\n <span>{{ title }}</span>\n </div>\n}\n\n@if (dialog.closable) {\n <button tabindex=\"-1\" class=\"close scion-workbench-icons e2e-close\"\n (mousedown)=\"onCloseMouseDown($event)\"\n (click)=\"onCloseClick()\">\n close\n </button>\n}\n", styles: [":host{display:flex;gap:var(--sci-workbench-dialog-padding);place-content:flex-end;padding-inline:var(--sci-workbench-dialog-padding);background-color:var(--sci-workbench-dialog-header-background-color);-webkit-user-select:none;user-select:none;height:var(--sci-workbench-dialog-header-height)}:host>div.title{flex:auto;display:flex;align-items:center;position:relative}:host>div.title>span{position:absolute;left:0;right:0;line-height:1.5;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-family:var(--sci-workbench-dialog-title-font-family);font-size:var(--sci-workbench-dialog-title-font-size);font-weight:var(--sci-workbench-dialog-title-font-weight);text-align:var(--sci-workbench-dialog-title-align)}:host>button.close{all:unset;flex:none;cursor:pointer;align-self:center}:host>button.close:not(:hover){opacity:.75}\n"] }]
31
+ args: [{ selector: 'wb-dialog-header', standalone: true, template: "@if (dialog.title(); as title) {\n <div class=\"title e2e-title\">\n <span>{{title}}</span>\n </div>\n}\n\n@if (dialog.closable()) {\n <button tabindex=\"-1\" class=\"close scion-workbench-icons e2e-close\"\n (mousedown)=\"onCloseMouseDown($event)\"\n (click)=\"onCloseClick()\">\n close\n </button>\n}\n", styles: [":host{display:flex;gap:var(--sci-workbench-dialog-padding);place-content:flex-end;padding-inline:var(--sci-workbench-dialog-padding);background-color:var(--sci-workbench-dialog-header-background-color);-webkit-user-select:none;user-select:none;height:var(--sci-workbench-dialog-header-height)}:host>div.title{flex:auto;display:flex;align-items:center;position:relative}:host>div.title>span{position:absolute;left:0;right:0;line-height:1.5;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-family:var(--sci-workbench-dialog-title-font-family);font-size:var(--sci-workbench-dialog-title-font-size);font-weight:var(--sci-workbench-dialog-title-font-weight);text-align:var(--sci-workbench-dialog-title-align)}:host>button.close{all:unset;flex:none;cursor:pointer;align-self:center}:host>button.close:not(:hover){opacity:.75}\n"] }]
37
32
  }], ctorParameters: () => [{ type: i1.ɵWorkbenchDialog }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLWhlYWRlci9kaWFsb2ctaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2RpYWxvZy9kaWFsb2ctaGVhZGVyL2RpYWxvZy1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBR3pFOztHQUVHO0FBV0gsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQyxZQUFzQixNQUF3QjtRQUF4QixXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUM5QyxDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxLQUFZO1FBQ3JDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLHFEQUFxRDtJQUNoRixDQUFDOzhHQVhVLHFCQUFxQjtrR0FBckIscUJBQXFCLDRFQzVCbEMsMFdBYUEsdzNCRFdJLFNBQVMseUNBQ1Qsb0JBQW9COzsyRkFHWCxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULG9CQUFvQjtxQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb2VyY2VPYnNlcnZhYmxlUGlwZX0gZnJvbSAnLi4vLi4vY29tbW9uL2NvZXJjZS1vYnNlcnZhYmxlLnBpcGUnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaERpYWxvZ30gZnJvbSAnLi4vybV3b3JrYmVuY2gtZGlhbG9nJztcblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBkaWFsb2cgaGVhZGVyIHdpdGggYSBjbG9zZSBidXR0b24gYW5kIG9wdGlvbmFsIHRpdGxlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3Yi1kaWFsb2ctaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgQ29lcmNlT2JzZXJ2YWJsZVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ0hlYWRlckNvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRpYWxvZzogybVXb3JrYmVuY2hEaWFsb2cpIHtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNsb3NlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2cuY2xvc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNsb3NlTW91c2VEb3duKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBQcmV2ZW50IGRyYWdnaW5nIHRoZSBkaWFsb2cgd2l0aCB0aGUgY2xvc2UgYnV0dG9uLlxuICB9XG59XG4iLCJAaWYgKGRpYWxvZy50aXRsZSB8IHdiQ29lcmNlT2JzZXJ2YWJsZSQgfCBhc3luYzsgYXMgdGl0bGUpIHtcbiAgPGRpdiBjbGFzcz1cInRpdGxlIGUyZS10aXRsZVwiPlxuICAgIDxzcGFuPnt7IHRpdGxlIH19PC9zcGFuPlxuICA8L2Rpdj5cbn1cblxuQGlmIChkaWFsb2cuY2xvc2FibGUpIHtcbiAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCIgY2xhc3M9XCJjbG9zZSBzY2lvbi13b3JrYmVuY2gtaWNvbnMgZTJlLWNsb3NlXCJcbiAgICAgICAgICAobW91c2Vkb3duKT1cIm9uQ2xvc2VNb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2VDbGljaygpXCI+XG4gICAgY2xvc2VcbiAgPC9idXR0b24+XG59XG4iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9kaWFsb2cvZGlhbG9nLWhlYWRlci9kaWFsb2ctaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL2RpYWxvZy9kaWFsb2ctaGVhZGVyL2RpYWxvZy1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFHeEM7O0dBRUc7QUFPSCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQXNCLE1BQXdCO1FBQXhCLFdBQU0sR0FBTixNQUFNLENBQWtCO0lBQzlDLENBQUM7SUFFUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVTLGdCQUFnQixDQUFDLEtBQVk7UUFDckMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMscURBQXFEO0lBQ2hGLENBQUM7OEdBWFUscUJBQXFCO2tHQUFyQixxQkFBcUIsNEVDdEJsQyw4VUFhQTs7MkZEU2EscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLGtCQUFrQixjQUdoQixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoRGlhbG9nfSBmcm9tICcuLi/JtXdvcmtiZW5jaC1kaWFsb2cnO1xuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGRpYWxvZyBoZWFkZXIgd2l0aCBhIGNsb3NlIGJ1dHRvbiBhbmQgb3B0aW9uYWwgdGl0bGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLWRpYWxvZy1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nSGVhZGVyQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZGlhbG9nOiDJtVdvcmtiZW5jaERpYWxvZykge1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xvc2VDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xvc2VNb3VzZURvd24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIFByZXZlbnQgZHJhZ2dpbmcgdGhlIGRpYWxvZyB3aXRoIHRoZSBjbG9zZSBidXR0b24uXG4gIH1cbn1cbiIsIkBpZiAoZGlhbG9nLnRpdGxlKCk7IGFzIHRpdGxlKSB7XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZSBlMmUtdGl0bGVcIj5cbiAgICA8c3Bhbj57e3RpdGxlfX08L3NwYW4+XG4gIDwvZGl2PlxufVxuXG5AaWYgKGRpYWxvZy5jbG9zYWJsZSgpKSB7XG4gIDxidXR0b24gdGFiaW5kZXg9XCItMVwiIGNsYXNzPVwiY2xvc2Ugc2Npb24td29ya2JlbmNoLWljb25zIGUyZS1jbG9zZVwiXG4gICAgICAgICAgKG1vdXNlZG93bik9XCJvbkNsb3NlTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlQ2xpY2soKVwiPlxuICAgIGNsb3NlXG4gIDwvYnV0dG9uPlxufVxuIl19
@@ -7,10 +7,10 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Component, forwardRef, HostBinding, HostListener, inject, ViewChild } from '@angular/core';
10
+ import { Component, effect, forwardRef, HostBinding, HostListener, inject, ViewChild } from '@angular/core';
11
11
  import { BehaviorSubject, fromEvent } from 'rxjs';
12
12
  import { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';
13
- import { AsyncPipe, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
13
+ import { AsyncPipe, NgClass, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
14
14
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
15
15
  import { ɵWorkbenchDialog } from './ɵworkbench-dialog';
16
16
  import { SciViewportComponent } from '@scion/components/viewport';
@@ -26,7 +26,8 @@ import { filter, map, startWith, takeUntil } from 'rxjs/operators';
26
26
  import { fromMutation$ } from '@scion/toolkit/observable';
27
27
  import * as i0 from "@angular/core";
28
28
  import * as i1 from "./\u0275workbench-dialog";
29
- import * as i2 from "@angular/cdk/a11y";
29
+ import * as i2 from "@angular/common";
30
+ import * as i3 from "@angular/cdk/a11y";
30
31
  /**
31
32
  * Renders the workbench dialog.
32
33
  *
@@ -35,28 +36,25 @@ import * as i2 from "@angular/cdk/a11y";
35
36
  */
36
37
  export class WorkbenchDialogComponent {
37
38
  get minHeight() {
38
- return this.dialog.size.minHeight || this._headerHeight;
39
+ return this.dialog.size.minHeight() || this._headerHeight;
39
40
  }
40
41
  get height() {
41
- return this.dialog.size.height;
42
+ return this.dialog.size.height();
42
43
  }
43
44
  get maxHeight() {
44
- return this.dialog.size.maxHeight;
45
+ return this.dialog.size.maxHeight();
45
46
  }
46
47
  get minWidth() {
47
- return this.dialog.size.minWidth || '100px';
48
+ return this.dialog.size.minWidth() || '100px';
48
49
  }
49
50
  get width() {
50
- return this.dialog.size.width;
51
+ return this.dialog.size.width();
51
52
  }
52
53
  get maxWidth() {
53
- return this.dialog.size.maxWidth;
54
+ return this.dialog.size.maxWidth();
54
55
  }
55
56
  get justified() {
56
- return !this.dialog.padding;
57
- }
58
- get cssClasses() {
59
- return this.dialog.cssClass;
57
+ return !this.dialog.padding();
60
58
  }
61
59
  get id() {
62
60
  return this.dialog.id;
@@ -72,6 +70,7 @@ export class WorkbenchDialogComponent {
72
70
  this.transformTranslateX = 0;
73
71
  this.transformTranslateY = 0;
74
72
  this.setDialogOffset();
73
+ this.addHostCssClasses();
75
74
  }
76
75
  ngOnInit() {
77
76
  this.trackFocus();
@@ -82,6 +81,10 @@ export class WorkbenchDialogComponent {
82
81
  this.transformTranslateX = stackPosition * 10;
83
82
  this.transformTranslateY = stackPosition * 10;
84
83
  }
84
+ addHostCssClasses() {
85
+ const ngClass = inject(NgClass);
86
+ effect(() => ngClass.ngClass = this.dialog.cssClass());
87
+ }
85
88
  /**
86
89
  * Focuses this dialog, restoring the focus to the last element that had the focus,
87
90
  * or otherwise focuses the first focusable element.
@@ -124,7 +127,7 @@ export class WorkbenchDialogComponent {
124
127
  });
125
128
  }
126
129
  onEscape(event) {
127
- if (this.dialog.closable) {
130
+ if (this.dialog.closable()) {
128
131
  this.dialog.close();
129
132
  event.stopPropagation();
130
133
  }
@@ -151,7 +154,7 @@ export class WorkbenchDialogComponent {
151
154
  this._headerHeight = `${dimension.offsetHeight}px`;
152
155
  }
153
156
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchDialogComponent, deps: [{ token: i1.ɵWorkbenchDialog }, { token: i0.NgZone }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
154
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: WorkbenchDialogComponent, isStandalone: true, selector: "wb-dialog", host: { listeners: { "keydown.escape": "onEscape($event)" }, properties: { "style.--\u0275dialog-transform-translate-x": "this.transformTranslateX", "style.--\u0275dialog-transform-translate-y": "this.transformTranslateY", "style.--\u0275dialog-min-height": "this.minHeight", "style.--\u0275dialog-height": "this.height", "style.--\u0275dialog-max-height": "this.maxHeight", "style.--\u0275dialog-min-width": "this.minWidth", "style.--\u0275dialog-width": "this.width", "style.--\u0275dialog-max-width": "this.maxWidth", "class.justified": "this.justified", "attr.class": "this.cssClasses", "attr.data-dialogid": "this.id" } }, viewQueries: [{ propertyName: "_cdkTrapFocus", first: true, predicate: CdkTrapFocus, descendants: true, static: true }, { propertyName: "_dialogElement", first: true, predicate: ["dialog_element"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"dialog e2e-dialog\"\n [class.blinking]=\"dialog.blinking$ | async\"\n [tabindex]=\"-1\"\n wbMovable [wbHandle]=\"header\" (wbMovableMove)=\"onMove($event)\"\n wbResizable [wbResizableEnabled]=\"dialog.resizable\" (wbResizableResize)=\"onResize($event)\"\n @enter\n [@.disabled]=\"!dialog.animate\"\n wbGlassPane\n #dialog_element>\n <div class=\"dialog-box e2e-dialog-box\" cdkTrapFocus>\n <header #header\n class=\"e2e-dialog-header\"\n [class.divider]=\"dialog.header?.divider ?? true\"\n sciDimension (sciDimensionChange)=\"onHeaderDimensionChange($event)\">\n <ng-container *ngTemplateOutlet=\"dialog.header?.template ?? default_dialog_header\"/>\n </header>\n\n <sci-viewport class=\"content e2e-dialog-content\">\n <ng-container *ngComponentOutlet=\"dialog.component; inputs: dialog.inputs\"/>\n </sci-viewport>\n\n @if (dialog.footer || dialog.actions.length) {\n <footer class=\"e2e-dialog-footer\" [class.divider]=\"dialog.footer?.divider ?? true\">\n <ng-container *ngTemplateOutlet=\"dialog.footer?.template ?? default_dialog_footer\"/>\n </footer>\n }\n </div>\n</div>\n\n<ng-template #default_dialog_header>\n <wb-dialog-header/>\n</ng-template>\n\n<ng-template #default_dialog_footer>\n <wb-dialog-footer/>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host{--\\275 dialog-transform-translate-x: 0;--\\275 dialog-transform-translate-y: 0;--\\275 dialog-min-height: initial;--\\275 dialog-height: initial;--\\275 dialog-max-height: initial;--\\275 dialog-min-width: initial;--\\275 dialog-width: initial;--\\275 dialog-max-width: initial;--\\275 dialog-padding: var(--sci-workbench-dialog-padding);display:flex;flex-direction:column;align-items:center;position:relative}:host.justified{--\\275 dialog-padding: 0}:host>div.dialog{display:flex;flex-direction:column;position:absolute;top:3%;color:var(--sci-color-text);transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x))) translateY(calc(1px * var(--\\275 dialog-transform-translate-y)));min-height:var(--\\275 dialog-min-height);height:var(--\\275 dialog-height);max-height:var(--\\275 dialog-max-height);min-width:var(--\\275 dialog-min-width);width:var(--\\275 dialog-width);max-width:var(--\\275 dialog-max-width);outline:none;pointer-events:auto}:host>div.dialog>div.dialog-box{flex:auto;display:flex;flex-direction:column;gap:calc(1.25 * var(--\\275 dialog-padding));border:1px solid var(--sci-color-border);border-radius:var(--sci-corner);background-color:var(--sci-color-background-elevation);box-shadow:var(--sci-elevation) var(--sci-static-color-black);overflow:hidden}:host>div.dialog>div.dialog-box>header{flex:none}:host>div.dialog>div.dialog-box>header.divider{border-bottom:1px solid var(--sci-color-border)}:host>div.dialog>div.dialog-box>sci-viewport{flex:auto}:host>div.dialog>div.dialog-box>sci-viewport::part(content){padding-inline:var(--\\275 dialog-padding)}:host>div.dialog>div.dialog-box>footer{flex:none}:host>div.dialog>div.dialog-box>footer.divider{border-top:1px solid var(--sci-color-border)}:host>div.dialog.blinking{animation-duration:50ms;animation-iteration-count:infinite;animation-name:blink-animation}@keyframes blink-animation{0%{transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x) - 2px)) translateY(calc(1px * var(--\\275 dialog-transform-translate-y) - 1px))}to{transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x) + 2px)) translateY(calc(1px * var(--\\275 dialog-transform-translate-y) + 1px))}}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: MovableDirective, selector: "[wbMovable]", inputs: ["wbHandle"], outputs: ["wbMovableMove"] }, { kind: "directive", type: ResizableDirective, selector: "[wbResizable]", inputs: ["wbResizableEnabled"], outputs: ["wbResizableResize"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }, { kind: "directive", type: SciDimensionDirective, selector: "[sciDimension]", inputs: ["emitOutsideAngular"], outputs: ["sciDimensionChange"], exportAs: ["sciDimension"] }, { kind: "component", type: DialogHeaderComponent, selector: "wb-dialog-header" }, { kind: "component", type: DialogFooterComponent, selector: "wb-dialog-footer" }, { kind: "directive", type: GlassPaneDirective, selector: "[wbGlassPane]" }], viewProviders: [
157
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: WorkbenchDialogComponent, isStandalone: true, selector: "wb-dialog", host: { listeners: { "keydown.escape": "onEscape($event)" }, properties: { "style.--\u0275dialog-transform-translate-x": "this.transformTranslateX", "style.--\u0275dialog-transform-translate-y": "this.transformTranslateY", "style.--\u0275dialog-min-height": "this.minHeight", "style.--\u0275dialog-height": "this.height", "style.--\u0275dialog-max-height": "this.maxHeight", "style.--\u0275dialog-min-width": "this.minWidth", "style.--\u0275dialog-width": "this.width", "style.--\u0275dialog-max-width": "this.maxWidth", "class.justified": "this.justified", "attr.data-dialogid": "this.id" } }, viewQueries: [{ propertyName: "_cdkTrapFocus", first: true, predicate: CdkTrapFocus, descendants: true, static: true }, { propertyName: "_dialogElement", first: true, predicate: ["dialog_element"], descendants: true, static: true }], hostDirectives: [{ directive: i2.NgClass }], ngImport: i0, template: "<div class=\"dialog e2e-dialog\"\n [class.blinking]=\"dialog.blinking$ | async\"\n [tabindex]=\"-1\"\n wbMovable [wbHandle]=\"header\" (wbMovableMove)=\"onMove($event)\"\n wbResizable [wbResizableEnabled]=\"dialog.resizable()\" (wbResizableResize)=\"onResize($event)\"\n @enter\n [@.disabled]=\"!dialog.animate\"\n wbGlassPane\n #dialog_element>\n <div class=\"dialog-box e2e-dialog-box\" cdkTrapFocus>\n <header #header\n class=\"e2e-dialog-header\"\n [class.divider]=\"dialog.header?.divider ?? true\"\n sciDimension (sciDimensionChange)=\"onHeaderDimensionChange($event)\">\n <ng-container *ngTemplateOutlet=\"dialog.header?.template ?? default_dialog_header\"/>\n </header>\n\n <sci-viewport class=\"content e2e-dialog-content\">\n <ng-container *ngComponentOutlet=\"dialog.component; inputs: dialog.inputs\"/>\n </sci-viewport>\n\n @if (dialog.footer || dialog.actions.length) {\n <footer class=\"e2e-dialog-footer\" [class.divider]=\"dialog.footer?.divider ?? true\">\n <ng-container *ngTemplateOutlet=\"dialog.footer?.template ?? default_dialog_footer\"/>\n </footer>\n }\n </div>\n</div>\n\n<ng-template #default_dialog_header>\n <wb-dialog-header/>\n</ng-template>\n\n<ng-template #default_dialog_footer>\n <wb-dialog-footer/>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host{--\\275 dialog-transform-translate-x: 0;--\\275 dialog-transform-translate-y: 0;--\\275 dialog-min-height: initial;--\\275 dialog-height: initial;--\\275 dialog-max-height: initial;--\\275 dialog-min-width: initial;--\\275 dialog-width: initial;--\\275 dialog-max-width: initial;--\\275 dialog-padding: var(--sci-workbench-dialog-padding);display:flex;flex-direction:column;align-items:center;position:relative}:host.justified{--\\275 dialog-padding: 0}:host>div.dialog{display:flex;flex-direction:column;position:absolute;top:3%;color:var(--sci-color-text);transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x))) translateY(calc(1px * var(--\\275 dialog-transform-translate-y)));min-height:var(--\\275 dialog-min-height);height:var(--\\275 dialog-height);max-height:var(--\\275 dialog-max-height);min-width:var(--\\275 dialog-min-width);width:var(--\\275 dialog-width);max-width:var(--\\275 dialog-max-width);outline:none;pointer-events:auto}:host>div.dialog>div.dialog-box{flex:auto;display:flex;flex-direction:column;gap:calc(1.25 * var(--\\275 dialog-padding));border:1px solid var(--sci-color-border);border-radius:var(--sci-corner);background-color:var(--sci-color-background-elevation);box-shadow:var(--sci-elevation) var(--sci-static-color-black);overflow:hidden}:host>div.dialog>div.dialog-box>header{flex:none}:host>div.dialog>div.dialog-box>header.divider{border-bottom:1px solid var(--sci-color-border)}:host>div.dialog>div.dialog-box>sci-viewport{flex:auto}:host>div.dialog>div.dialog-box>sci-viewport::part(content){padding-inline:var(--\\275 dialog-padding)}:host>div.dialog>div.dialog-box>footer{flex:none}:host>div.dialog>div.dialog-box>footer.divider{border-top:1px solid var(--sci-color-border)}:host>div.dialog.blinking{animation-duration:50ms;animation-iteration-count:infinite;animation-name:blink-animation}@keyframes blink-animation{0%{transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x) - 2px)) translateY(calc(1px * var(--\\275 dialog-transform-translate-y) - 1px))}to{transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x) + 2px)) translateY(calc(1px * var(--\\275 dialog-transform-translate-y) + 1px))}}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: MovableDirective, selector: "[wbMovable]", inputs: ["wbHandle"], outputs: ["wbMovableMove"] }, { kind: "directive", type: ResizableDirective, selector: "[wbResizable]", inputs: ["wbResizableEnabled"], outputs: ["wbResizableResize"] }, { kind: "component", type: SciViewportComponent, selector: "sci-viewport", inputs: ["scrollbarStyle"], outputs: ["scroll"] }, { kind: "directive", type: SciDimensionDirective, selector: "[sciDimension]", inputs: ["emitOutsideAngular"], outputs: ["sciDimensionChange"], exportAs: ["sciDimension"] }, { kind: "component", type: DialogHeaderComponent, selector: "wb-dialog-header" }, { kind: "component", type: DialogFooterComponent, selector: "wb-dialog-footer" }, { kind: "directive", type: GlassPaneDirective, selector: "[wbGlassPane]" }], viewProviders: [
155
158
  configureDialogGlassPane(),
156
159
  ], animations: [
157
160
  trigger('enter', provideEnterAnimation()),
@@ -173,9 +176,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
173
176
  GlassPaneDirective,
174
177
  ], animations: [
175
178
  trigger('enter', provideEnterAnimation()),
179
+ ], hostDirectives: [
180
+ NgClass,
176
181
  ], viewProviders: [
177
182
  configureDialogGlassPane(),
178
- ], template: "<div class=\"dialog e2e-dialog\"\n [class.blinking]=\"dialog.blinking$ | async\"\n [tabindex]=\"-1\"\n wbMovable [wbHandle]=\"header\" (wbMovableMove)=\"onMove($event)\"\n wbResizable [wbResizableEnabled]=\"dialog.resizable\" (wbResizableResize)=\"onResize($event)\"\n @enter\n [@.disabled]=\"!dialog.animate\"\n wbGlassPane\n #dialog_element>\n <div class=\"dialog-box e2e-dialog-box\" cdkTrapFocus>\n <header #header\n class=\"e2e-dialog-header\"\n [class.divider]=\"dialog.header?.divider ?? true\"\n sciDimension (sciDimensionChange)=\"onHeaderDimensionChange($event)\">\n <ng-container *ngTemplateOutlet=\"dialog.header?.template ?? default_dialog_header\"/>\n </header>\n\n <sci-viewport class=\"content e2e-dialog-content\">\n <ng-container *ngComponentOutlet=\"dialog.component; inputs: dialog.inputs\"/>\n </sci-viewport>\n\n @if (dialog.footer || dialog.actions.length) {\n <footer class=\"e2e-dialog-footer\" [class.divider]=\"dialog.footer?.divider ?? true\">\n <ng-container *ngTemplateOutlet=\"dialog.footer?.template ?? default_dialog_footer\"/>\n </footer>\n }\n </div>\n</div>\n\n<ng-template #default_dialog_header>\n <wb-dialog-header/>\n</ng-template>\n\n<ng-template #default_dialog_footer>\n <wb-dialog-footer/>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host{--\\275 dialog-transform-translate-x: 0;--\\275 dialog-transform-translate-y: 0;--\\275 dialog-min-height: initial;--\\275 dialog-height: initial;--\\275 dialog-max-height: initial;--\\275 dialog-min-width: initial;--\\275 dialog-width: initial;--\\275 dialog-max-width: initial;--\\275 dialog-padding: var(--sci-workbench-dialog-padding);display:flex;flex-direction:column;align-items:center;position:relative}:host.justified{--\\275 dialog-padding: 0}:host>div.dialog{display:flex;flex-direction:column;position:absolute;top:3%;color:var(--sci-color-text);transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x))) translateY(calc(1px * var(--\\275 dialog-transform-translate-y)));min-height:var(--\\275 dialog-min-height);height:var(--\\275 dialog-height);max-height:var(--\\275 dialog-max-height);min-width:var(--\\275 dialog-min-width);width:var(--\\275 dialog-width);max-width:var(--\\275 dialog-max-width);outline:none;pointer-events:auto}:host>div.dialog>div.dialog-box{flex:auto;display:flex;flex-direction:column;gap:calc(1.25 * var(--\\275 dialog-padding));border:1px solid var(--sci-color-border);border-radius:var(--sci-corner);background-color:var(--sci-color-background-elevation);box-shadow:var(--sci-elevation) var(--sci-static-color-black);overflow:hidden}:host>div.dialog>div.dialog-box>header{flex:none}:host>div.dialog>div.dialog-box>header.divider{border-bottom:1px solid var(--sci-color-border)}:host>div.dialog>div.dialog-box>sci-viewport{flex:auto}:host>div.dialog>div.dialog-box>sci-viewport::part(content){padding-inline:var(--\\275 dialog-padding)}:host>div.dialog>div.dialog-box>footer{flex:none}:host>div.dialog>div.dialog-box>footer.divider{border-top:1px solid var(--sci-color-border)}:host>div.dialog.blinking{animation-duration:50ms;animation-iteration-count:infinite;animation-name:blink-animation}@keyframes blink-animation{0%{transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x) - 2px)) translateY(calc(1px * var(--\\275 dialog-transform-translate-y) - 1px))}to{transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x) + 2px)) translateY(calc(1px * var(--\\275 dialog-transform-translate-y) + 1px))}}\n"] }]
183
+ ], template: "<div class=\"dialog e2e-dialog\"\n [class.blinking]=\"dialog.blinking$ | async\"\n [tabindex]=\"-1\"\n wbMovable [wbHandle]=\"header\" (wbMovableMove)=\"onMove($event)\"\n wbResizable [wbResizableEnabled]=\"dialog.resizable()\" (wbResizableResize)=\"onResize($event)\"\n @enter\n [@.disabled]=\"!dialog.animate\"\n wbGlassPane\n #dialog_element>\n <div class=\"dialog-box e2e-dialog-box\" cdkTrapFocus>\n <header #header\n class=\"e2e-dialog-header\"\n [class.divider]=\"dialog.header?.divider ?? true\"\n sciDimension (sciDimensionChange)=\"onHeaderDimensionChange($event)\">\n <ng-container *ngTemplateOutlet=\"dialog.header?.template ?? default_dialog_header\"/>\n </header>\n\n <sci-viewport class=\"content e2e-dialog-content\">\n <ng-container *ngComponentOutlet=\"dialog.component; inputs: dialog.inputs\"/>\n </sci-viewport>\n\n @if (dialog.footer || dialog.actions.length) {\n <footer class=\"e2e-dialog-footer\" [class.divider]=\"dialog.footer?.divider ?? true\">\n <ng-container *ngTemplateOutlet=\"dialog.footer?.template ?? default_dialog_footer\"/>\n </footer>\n }\n </div>\n</div>\n\n<ng-template #default_dialog_header>\n <wb-dialog-header/>\n</ng-template>\n\n<ng-template #default_dialog_footer>\n <wb-dialog-footer/>\n</ng-template>\n", styles: ["@charset \"UTF-8\";:host{--\\275 dialog-transform-translate-x: 0;--\\275 dialog-transform-translate-y: 0;--\\275 dialog-min-height: initial;--\\275 dialog-height: initial;--\\275 dialog-max-height: initial;--\\275 dialog-min-width: initial;--\\275 dialog-width: initial;--\\275 dialog-max-width: initial;--\\275 dialog-padding: var(--sci-workbench-dialog-padding);display:flex;flex-direction:column;align-items:center;position:relative}:host.justified{--\\275 dialog-padding: 0}:host>div.dialog{display:flex;flex-direction:column;position:absolute;top:3%;color:var(--sci-color-text);transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x))) translateY(calc(1px * var(--\\275 dialog-transform-translate-y)));min-height:var(--\\275 dialog-min-height);height:var(--\\275 dialog-height);max-height:var(--\\275 dialog-max-height);min-width:var(--\\275 dialog-min-width);width:var(--\\275 dialog-width);max-width:var(--\\275 dialog-max-width);outline:none;pointer-events:auto}:host>div.dialog>div.dialog-box{flex:auto;display:flex;flex-direction:column;gap:calc(1.25 * var(--\\275 dialog-padding));border:1px solid var(--sci-color-border);border-radius:var(--sci-corner);background-color:var(--sci-color-background-elevation);box-shadow:var(--sci-elevation) var(--sci-static-color-black);overflow:hidden}:host>div.dialog>div.dialog-box>header{flex:none}:host>div.dialog>div.dialog-box>header.divider{border-bottom:1px solid var(--sci-color-border)}:host>div.dialog>div.dialog-box>sci-viewport{flex:auto}:host>div.dialog>div.dialog-box>sci-viewport::part(content){padding-inline:var(--\\275 dialog-padding)}:host>div.dialog>div.dialog-box>footer{flex:none}:host>div.dialog>div.dialog-box>footer.divider{border-top:1px solid var(--sci-color-border)}:host>div.dialog.blinking{animation-duration:50ms;animation-iteration-count:infinite;animation-name:blink-animation}@keyframes blink-animation{0%{transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x) - 2px)) translateY(calc(1px * var(--\\275 dialog-transform-translate-y) - 1px))}to{transform:translate(calc(1px * var(--\\275 dialog-transform-translate-x) + 2px)) translateY(calc(1px * var(--\\275 dialog-transform-translate-y) + 1px))}}\n"] }]
179
184
  }], ctorParameters: () => [{ type: i1.ɵWorkbenchDialog }, { type: i0.NgZone }, { type: i0.DestroyRef }], propDecorators: { _cdkTrapFocus: [{
180
185
  type: ViewChild,
181
186
  args: [CdkTrapFocus, { static: true }]
@@ -209,9 +214,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
209
214
  }], justified: [{
210
215
  type: HostBinding,
211
216
  args: ['class.justified']
212
- }], cssClasses: [{
213
- type: HostBinding,
214
- args: ['attr.class']
215
217
  }], id: [{
216
218
  type: HostBinding,
217
219
  args: ['attr.data-dialogid']
@@ -245,4 +247,4 @@ function configureDialogGlassPane() {
245
247
  },
246
248
  ];
247
249
  }
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9kaWFsb2cvd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9kaWFsb2cvd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQTBCLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBNEIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BKLE9BQU8sRUFBQyxlQUFlLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxPQUFPLEVBQXFCLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDM0YsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBYyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBZ0IsTUFBTSx1QkFB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QUMsQ0FBQyxFQUFFLEVBQUMsRUFBQyxDQUFDO1NBQ25HO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBEZXN0cm95UmVmLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBpbmplY3QsIE5nWm9uZSwgT25Jbml0LCBQcm92aWRlciwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBMTF5TW9kdWxlLCBDZGtUcmFwRm9jdXN9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7QXN5bmNQaXBlLCBOZ0NvbXBvbmVudE91dGxldCwgTmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge8m1V29ya2JlbmNoRGlhbG9nfSBmcm9tICcuL8m1d29ya2JlbmNoLWRpYWxvZyc7XG5pbXBvcnQge1NjaVZpZXdwb3J0Q29tcG9uZW50fSBmcm9tICdAc2Npb24vY29tcG9uZW50cy92aWV3cG9ydCc7XG5pbXBvcnQge2FuaW1hdGUsIEFuaW1hdGlvbk1ldGFkYXRhLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge3N1YnNjcmliZUluc2lkZX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcbmltcG9ydCB7TW92YWJsZURpcmVjdGl2ZSwgV2JNb3ZlRXZlbnR9IGZyb20gJy4vbW92YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtSZXNpemFibGVEaXJlY3RpdmUsIFdiUmVzaXplRXZlbnR9IGZyb20gJy4vcmVzaXphYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1NjaURpbWVuc2lvbiwgU2NpRGltZW5zaW9uRGlyZWN0aXZlfSBmcm9tICdAc2Npb24vY29tcG9uZW50cy9kaW1lbnNpb24nO1xuaW1wb3J0IHtEaWFsb2dIZWFkZXJDb21wb25lbnR9IGZyb20gJy4vZGlhbG9nLWhlYWRlci9kaWFsb2ctaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0RpYWxvZ0Zvb3RlckNvbXBvbmVudH0gZnJvbSAnLi9kaWFsb2ctZm9vdGVyL2RpYWxvZy1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7R0xBU1NfUEFORV9CTE9DS0FCTEUsIEdMQVNTX1BBTkVfT1BUSU9OUywgR2xhc3NQYW5lRGlyZWN0aXZlLCBHbGFzc1BhbmVPcHRpb25zfSBmcm9tICcuLi9nbGFzcy1wYW5lL2dsYXNzLXBhbmUuZGlyZWN0aXZlJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2Zyb21NdXRhdGlvbiR9IGZyb20gJ0BzY2lvbi90b29sa2l0L29ic2VydmFibGUnO1xuXG4vKipcbiAqIFJlbmRlcnMgdGhlIHdvcmtiZW5jaCBkaWFsb2cuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgYWRkZWQgdG8gYSBDREsgb3ZlcmxheSBhbGlnbmVkIHRvIHRoZSBtb2RhbGl0eSBjb250ZXh0IGRlZmluZWQgYnkgdGhlIGRpYWxvZy5cbiAqIFRoZSBkaWFsb2cgaXRzZWxmIGlzIHJlbmRlcmVkIGluIHRoZSBjZW50ZXIgb2YgaXRzIG1vZGFsaXR5IGNvbnRleHQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrYmVuY2gtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBBMTF5TW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBNb3ZhYmxlRGlyZWN0aXZlLFxuICAgIFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICBTY2lWaWV3cG9ydENvbXBvbmVudCxcbiAgICBTY2lEaW1lbnNpb25EaXJlY3RpdmUsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICBHbGFzc1BhbmVEaXJlY3RpdmUsXG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdlbnRlcicsIHByb3ZpZGVFbnRlckFuaW1hdGlvbigpKSxcbiAgXSxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIGNvbmZpZ3VyZURpYWxvZ0dsYXNzUGFuZSgpLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBFbGVtZW50IG9mIHRoZSBkaWFsb2cgdGhhdCBoYXMgb3IgbGFzdCBoYWQgZm9jdXMuXG4gICAqL1xuICBwcml2YXRlIF9hY3RpdmVFbGVtZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgX2hlYWRlckhlaWdodDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoQ2RrVHJhcEZvY3VzLCB7c3RhdGljOiB0cnVlfSlcbiAgcHJpdmF0ZSBfY2RrVHJhcEZvY3VzITogQ2RrVHJhcEZvY3VzO1xuXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ19lbGVtZW50Jywge3N0YXRpYzogdHJ1ZX0pXG4gIHByaXZhdGUgX2RpYWxvZ0VsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctdHJhbnNmb3JtLXRyYW5zbGF0ZS14JylcbiAgcHJvdGVjdGVkIHRyYW5zZm9ybVRyYW5zbGF0ZVggPSAwO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS3JtWRpYWxvZy10cmFuc2Zvcm0tdHJhbnNsYXRlLXknKVxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtVHJhbnNsYXRlWSA9IDA7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLcm1ZGlhbG9nLW1pbi1oZWlnaHQnKVxuICBwcm90ZWN0ZWQgZ2V0IG1pbkhlaWdodCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5zaXplLm1pbkhlaWdodCB8fCB0aGlzLl9oZWFkZXJIZWlnaHQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctaGVpZ2h0JylcbiAgcHJvdGVjdGVkIGdldCBoZWlnaHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuc2l6ZS5oZWlnaHQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctbWF4LWhlaWdodCcpXG4gIHByb3RlY3RlZCBnZXQgbWF4SGVpZ2h0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLnNpemUubWF4SGVpZ2h0O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLcm1ZGlhbG9nLW1pbi13aWR0aCcpXG4gIHByb3RlY3RlZCBnZXQgbWluV2lkdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuc2l6ZS5taW5XaWR0aCB8fCAnMTAwcHgnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLcm1ZGlhbG9nLXdpZHRoJylcbiAgcHJvdGVjdGVkIGdldCB3aWR0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5zaXplLndpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLcm1ZGlhbG9nLW1heC13aWR0aCcpXG4gIHByb3RlY3RlZCBnZXQgbWF4V2lkdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuc2l6ZS5tYXhXaWR0aDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuanVzdGlmaWVkJylcbiAgcHJvdGVjdGVkIGdldCBqdXN0aWZpZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmRpYWxvZy5wYWRkaW5nO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJylcbiAgcHVibGljIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLmNzc0NsYXNzO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtZGlhbG9naWQnKVxuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLmlkO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZzogybVXb3JrYmVuY2hEaWFsb2csXG4gICAgICAgICAgICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfZGVzdHJveVJlZjogRGVzdHJveVJlZikge1xuICAgIHRoaXMuc2V0RGlhbG9nT2Zmc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50cmFja0ZvY3VzKCk7XG4gICAgdGhpcy5hdXRvRm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlhbG9nT2Zmc2V0KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YWNrUG9zaXRpb24gPSB0aGlzLmRpYWxvZy5nZXRQb3NpdGlvbkluRGlhbG9nU3RhY2soKTtcbiAgICB0aGlzLnRyYW5zZm9ybVRyYW5zbGF0ZVggPSBzdGFja1Bvc2l0aW9uICogMTA7XG4gICAgdGhpcy50cmFuc2Zvcm1UcmFuc2xhdGVZID0gc3RhY2tQb3NpdGlvbiAqIDEwO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhpcyBkaWFsb2csIHJlc3RvcmluZyB0aGUgZm9jdXMgdG8gdGhlIGxhc3QgZWxlbWVudCB0aGF0IGhhZCB0aGUgZm9jdXMsXG4gICAqIG9yIG90aGVyd2lzZSBmb2N1c2VzIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5fYWN0aXZlRWxlbWVudCQuZ2V0VmFsdWUoKTtcbiAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgYWN0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICBlbHNlIGlmICghdGhpcy5fY2RrVHJhcEZvY3VzLmZvY3VzVHJhcC5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCkpIHtcbiAgICAgIC8vIEZvY3VzIGRpYWxvZyBlbGVtZW50IHNvIHRoYXQgaXQgY2FuIGJlIGNsb3NlZCB2aWEgRXNjYXBlIGtleXN0cm9rZS5cbiAgICAgIHRoaXMuX2RpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFja3MgdGhlIGZvY3VzIG9mIHRoZSBkaWFsb2cuXG4gICAqL1xuICBwcml2YXRlIHRyYWNrRm9jdXMoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KHRoaXMuX2RpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChldmVudCA9PiBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGV2ZW50LnRhcmdldCA6IHVuZGVmaW5lZCksXG4gICAgICAgIC8vIFRoZSBkaWFsb2cgaXMgZm9jdXNlZCBpZiBpdCBoYXMgbm8gZm9jdXNhYmxlIGVsZW1lbnQsIHNvIHRoZSBkaWFsb2cgY2FuIGJlIGNsb3NlZCB2aWEgRXNjYXBlLlxuICAgICAgICAvLyBIb3dldmVyLCBpbiBvcmRlciBub3QgdG8gY2FuY2VsIHRoZSBhdXRvZm9jdXMsIHRoZSBkaWFsb2cgZWxlbWVudCBtdXN0IG5vdCBiZSBtZW1vaXplZCBhcyB0aGVcbiAgICAgICAgLy8gYWN0aXZlIGVsZW1lbnQuIE90aGVyd2lzZSwgZGVsYXllZCBjb250ZW50IHdvdWxkIG5vdCBiZSBmb2N1c2VkLlxuICAgICAgICBmaWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50ICE9PSB0aGlzLl9kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLFxuICAgICAgICBzdWJzY3JpYmVJbnNpZGUoY29udGludWVGbiA9PiB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGNvbnRpbnVlRm4pKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhY3RpdmVFbGVtZW50ID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudCQubmV4dChhY3RpdmVFbGVtZW50KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50IGluIHRoZSBkaWFsb2cuIEhhcyBubyBlZmZlY3QgaWYgYW4gZWxlbWVudCBpbiB0aGUgZGlhbG9nIGFscmVhZHkgaGFzIHRoZSBmb2N1cy5cbiAgICpcbiAgICogSWYgbm8gZm9jdXNhYmxlIGVsZW1lbnQgY2FuIGJlIGZvdW5kLCB0aGUgZm9jdXNpbmcgd2lsbCBiZSByZXBlYXRlZCBvbiB0aGUgbmV4dCBET00gY2hhbmdlIHVudGlsIGFuIGVsZW1lbnQgaGFzIHRoZVxuICAgKiBmb2N1cywgYWxsb3dpbmcgZGVsYXllZCBjb250ZW50IHRvIGdldCBmb2N1cy5cbiAgICovXG4gIHByaXZhdGUgYXV0b0ZvY3VzKCk6IHZvaWQge1xuICAgIGZyb21NdXRhdGlvbiQodGhpcy5fZGlhbG9nRWxlbWVudC5uYXRpdmVFbGVtZW50LCB7c3VidHJlZTogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkIGFzIHZvaWQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fYWN0aXZlRWxlbWVudCQucGlwZShmaWx0ZXIoQm9vbGVhbikpKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Fc2NhcGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlhbG9nLmNsb3NhYmxlKSB7XG4gICAgICB0aGlzLmRpYWxvZy5jbG9zZSgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uTW92ZShldmVudDogV2JNb3ZlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zZm9ybVRyYW5zbGF0ZVggPSBldmVudC50cmFuc2xhdGVYO1xuICAgIHRoaXMudHJhbnNmb3JtVHJhbnNsYXRlWSA9IGV2ZW50LnRyYW5zbGF0ZVk7XG4gIH1cblxuICBwdWJsaWMgb25SZXNpemUoZXZlbnQ6IFdiUmVzaXplRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuaGVpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGlhbG9nLnNpemUuaGVpZ2h0ID0gYCR7ZXZlbnQuaGVpZ2h0fXB4YDtcbiAgICB9XG4gICAgaWYgKGV2ZW50LndpZHRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGlhbG9nLnNpemUud2lkdGggPSBgJHtldmVudC53aWR0aH1weGA7XG4gICAgfVxuICAgIGlmIChldmVudC50cmFuc2xhdGVYICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudHJhbnNmb3JtVHJhbnNsYXRlWCA9IGV2ZW50LnRyYW5zbGF0ZVg7XG4gICAgfVxuICAgIGlmIChldmVudC50cmFuc2xhdGVZICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudHJhbnNmb3JtVHJhbnNsYXRlWSA9IGV2ZW50LnRyYW5zbGF0ZVk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uSGVhZGVyRGltZW5zaW9uQ2hhbmdlKGRpbWVuc2lvbjogU2NpRGltZW5zaW9uKTogdm9pZCB7XG4gICAgdGhpcy5faGVhZGVySGVpZ2h0ID0gYCR7ZGltZW5zaW9uLm9mZnNldEhlaWdodH1weGA7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuaW1hdGlvbiBtZXRhZGF0YSB0byBzbGlkZS1pbiBhIG5ldyBkaWFsb2cuXG4gKi9cbmZ1bmN0aW9uIHByb3ZpZGVFbnRlckFuaW1hdGlvbigpOiBBbmltYXRpb25NZXRhZGF0YVtdIHtcbiAgcmV0dXJuIFtcbiAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICBzdHlsZSh7b3BhY2l0eTogMCwgYm90dG9tOiAnMTAwJScsIHRvcDogJ3Vuc2V0J30pLFxuICAgICAgYW5pbWF0ZSgnLjFzIGVhc2Utb3V0Jywgc3R5bGUoe29wYWNpdHk6IDEsIGJvdHRvbTogJyonfSkpLFxuICAgIF0pLFxuICBdO1xufVxuXG4vKipcbiAqIEJsb2NrcyB0aGlzIGRpYWxvZyB3aGVuIG90aGVyIGRpYWxvZyhzKSBvdmVybGF5IGl0LlxuICovXG5mdW5jdGlvbiBjb25maWd1cmVEaWFsb2dHbGFzc1BhbmUoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogR0xBU1NfUEFORV9CTE9DS0FCTEUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiDJtVdvcmtiZW5jaERpYWxvZyksIC8vIHJlc29sdmUge0BsaW5rIMm1V29ya2JlbmNoRGlhbG9nfSB2aWEgZm9yd2FyZFJlZiBiZWNhdXNlIG5vdCBkZWZpbmVkIHlldCwgaS5lLiwge0BsaW5rIMm1V29ya2JlbmNoRGlhbG9nfSBjb25zdHJ1Y3RzIHtAbGluayBXb3JrYmVuY2hEaWFsb2dDb21wb25lbnR9IGluIGl0cyBjb25zdHJ1Y3Rvci5cbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEdMQVNTX1BBTkVfT1BUSU9OUyxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpOiBHbGFzc1BhbmVPcHRpb25zID0+ICh7YXR0cmlidXRlczogeydkYXRhLWRpYWxvZ2lkJzogaW5qZWN0KMm1V29ya2JlbmNoRGlhbG9nKS5pZH19KSxcbiAgICB9LFxuICBdO1xufVxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZyBlMmUtZGlhbG9nXCJcbiAgICAgW2NsYXNzLmJsaW5raW5nXT1cImRpYWxvZy5ibGlua2luZyQgfCBhc3luY1wiXG4gICAgIFt0YWJpbmRleF09XCItMVwiXG4gICAgIHdiTW92YWJsZSBbd2JIYW5kbGVdPVwiaGVhZGVyXCIgKHdiTW92YWJsZU1vdmUpPVwib25Nb3ZlKCRldmVudClcIlxuICAgICB3YlJlc2l6YWJsZSBbd2JSZXNpemFibGVFbmFibGVkXT1cImRpYWxvZy5yZXNpemFibGVcIiAod2JSZXNpemFibGVSZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiXG4gICAgIEBlbnRlclxuICAgICBbQC5kaXNhYmxlZF09XCIhZGlhbG9nLmFuaW1hdGVcIlxuICAgICB3YkdsYXNzUGFuZVxuICAgICAjZGlhbG9nX2VsZW1lbnQ+XG4gIDxkaXYgY2xhc3M9XCJkaWFsb2ctYm94IGUyZS1kaWFsb2ctYm94XCIgY2RrVHJhcEZvY3VzPlxuICAgIDxoZWFkZXIgI2hlYWRlclxuICAgICAgICAgICAgY2xhc3M9XCJlMmUtZGlhbG9nLWhlYWRlclwiXG4gICAgICAgICAgICBbY2xhc3MuZGl2aWRlcl09XCJkaWFsb2cuaGVhZGVyPy5kaXZpZGVyID8/IHRydWVcIlxuICAgICAgICAgICAgc2NpRGltZW5zaW9uIChzY2lEaW1lbnNpb25DaGFuZ2UpPVwib25IZWFkZXJEaW1lbnNpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpYWxvZy5oZWFkZXI/LnRlbXBsYXRlID8/IGRlZmF1bHRfZGlhbG9nX2hlYWRlclwiLz5cbiAgICA8L2hlYWRlcj5cblxuICAgIDxzY2ktdmlld3BvcnQgY2xhc3M9XCJjb250ZW50IGUyZS1kaWFsb2ctY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJkaWFsb2cuY29tcG9uZW50OyBpbnB1dHM6IGRpYWxvZy5pbnB1dHNcIi8+XG4gICAgPC9zY2ktdmlld3BvcnQ+XG5cbiAgICBAaWYgKGRpYWxvZy5mb290ZXIgfHwgZGlhbG9nLmFjdGlvbnMubGVuZ3RoKSB7XG4gICAgICA8Zm9vdGVyIGNsYXNzPVwiZTJlLWRpYWxvZy1mb290ZXJcIiBbY2xhc3MuZGl2aWRlcl09XCJkaWFsb2cuZm9vdGVyPy5kaXZpZGVyID8/IHRydWVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpYWxvZy5mb290ZXI/LnRlbXBsYXRlID8/IGRlZmF1bHRfZGlhbG9nX2Zvb3RlclwiLz5cbiAgICAgIDwvZm9vdGVyPlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0X2RpYWxvZ19oZWFkZXI+XG4gIDx3Yi1kaWFsb2ctaGVhZGVyLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdF9kaWFsb2dfZm9vdGVyPlxuICA8d2ItZGlhbG9nLWZvb3Rlci8+XG48L25nLXRlbXBsYXRlPlxuIl19
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9kaWFsb2cvd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9kaWFsb2cvd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQWMsTUFBTSxFQUFjLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBNEIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBQyxlQUFlLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUUsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFxQixLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsa0JB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VyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLDBLQUEwSztTQUM1TjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixVQUFVLEVBQUUsR0FBcUIsRUFBRSxDQUFDLENBQUMsRUFBQyxVQUFVLEVBQUUsRUFBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUMsQ0FBQztTQUNuRztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRGVzdHJveVJlZiwgZWZmZWN0LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBpbmplY3QsIE5nWm9uZSwgT25Jbml0LCBQcm92aWRlciwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBMTF5TW9kdWxlLCBDZGtUcmFwRm9jdXN9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7QXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0NvbXBvbmVudE91dGxldCwgTmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge8m1V29ya2JlbmNoRGlhbG9nfSBmcm9tICcuL8m1d29ya2JlbmNoLWRpYWxvZyc7XG5pbXBvcnQge1NjaVZpZXdwb3J0Q29tcG9uZW50fSBmcm9tICdAc2Npb24vY29tcG9uZW50cy92aWV3cG9ydCc7XG5pbXBvcnQge2FuaW1hdGUsIEFuaW1hdGlvbk1ldGFkYXRhLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge3N1YnNjcmliZUluc2lkZX0gZnJvbSAnQHNjaW9uL3Rvb2xraXQvb3BlcmF0b3JzJztcbmltcG9ydCB7TW92YWJsZURpcmVjdGl2ZSwgV2JNb3ZlRXZlbnR9IGZyb20gJy4vbW92YWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtSZXNpemFibGVEaXJlY3RpdmUsIFdiUmVzaXplRXZlbnR9IGZyb20gJy4vcmVzaXphYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1NjaURpbWVuc2lvbiwgU2NpRGltZW5zaW9uRGlyZWN0aXZlfSBmcm9tICdAc2Npb24vY29tcG9uZW50cy9kaW1lbnNpb24nO1xuaW1wb3J0IHtEaWFsb2dIZWFkZXJDb21wb25lbnR9IGZyb20gJy4vZGlhbG9nLWhlYWRlci9kaWFsb2ctaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0RpYWxvZ0Zvb3RlckNvbXBvbmVudH0gZnJvbSAnLi9kaWFsb2ctZm9vdGVyL2RpYWxvZy1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7R0xBU1NfUEFORV9CTE9DS0FCTEUsIEdMQVNTX1BBTkVfT1BUSU9OUywgR2xhc3NQYW5lRGlyZWN0aXZlLCBHbGFzc1BhbmVPcHRpb25zfSBmcm9tICcuLi9nbGFzcy1wYW5lL2dsYXNzLXBhbmUuZGlyZWN0aXZlJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2Zyb21NdXRhdGlvbiR9IGZyb20gJ0BzY2lvbi90b29sa2l0L29ic2VydmFibGUnO1xuXG4vKipcbiAqIFJlbmRlcnMgdGhlIHdvcmtiZW5jaCBkaWFsb2cuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgYWRkZWQgdG8gYSBDREsgb3ZlcmxheSBhbGlnbmVkIHRvIHRoZSBtb2RhbGl0eSBjb250ZXh0IGRlZmluZWQgYnkgdGhlIGRpYWxvZy5cbiAqIFRoZSBkaWFsb2cgaXRzZWxmIGlzIHJlbmRlcmVkIGluIHRoZSBjZW50ZXIgb2YgaXRzIG1vZGFsaXR5IGNvbnRleHQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3diLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrYmVuY2gtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2JlbmNoLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBBMTF5TW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBNb3ZhYmxlRGlyZWN0aXZlLFxuICAgIFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICBTY2lWaWV3cG9ydENvbXBvbmVudCxcbiAgICBTY2lEaW1lbnNpb25EaXJlY3RpdmUsXG4gICAgRGlhbG9nSGVhZGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0Zvb3RlckNvbXBvbmVudCxcbiAgICBHbGFzc1BhbmVEaXJlY3RpdmUsXG4gIF0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdlbnRlcicsIHByb3ZpZGVFbnRlckFuaW1hdGlvbigpKSxcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICBOZ0NsYXNzLFxuICBdLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgY29uZmlndXJlRGlhbG9nR2xhc3NQYW5lKCksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLyoqXG4gICAqIEVsZW1lbnQgb2YgdGhlIGRpYWxvZyB0aGF0IGhhcyBvciBsYXN0IGhhZCBmb2N1cy5cbiAgICovXG4gIHByaXZhdGUgX2FjdGl2ZUVsZW1lbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBfaGVhZGVySGVpZ2h0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZChDZGtUcmFwRm9jdXMsIHtzdGF0aWM6IHRydWV9KVxuICBwcml2YXRlIF9jZGtUcmFwRm9jdXMhOiBDZGtUcmFwRm9jdXM7XG5cbiAgQFZpZXdDaGlsZCgnZGlhbG9nX2VsZW1lbnQnLCB7c3RhdGljOiB0cnVlfSlcbiAgcHJpdmF0ZSBfZGlhbG9nRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS3JtWRpYWxvZy10cmFuc2Zvcm0tdHJhbnNsYXRlLXgnKVxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtVHJhbnNsYXRlWCA9IDA7XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLcm1ZGlhbG9nLXRyYW5zZm9ybS10cmFuc2xhdGUteScpXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm1UcmFuc2xhdGVZID0gMDtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctbWluLWhlaWdodCcpXG4gIHByb3RlY3RlZCBnZXQgbWluSGVpZ2h0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLnNpemUubWluSGVpZ2h0KCkgfHwgdGhpcy5faGVhZGVySGVpZ2h0O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLcm1ZGlhbG9nLWhlaWdodCcpXG4gIHByb3RlY3RlZCBnZXQgaGVpZ2h0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLnNpemUuaGVpZ2h0KCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctbWF4LWhlaWdodCcpXG4gIHByb3RlY3RlZCBnZXQgbWF4SGVpZ2h0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLnNpemUubWF4SGVpZ2h0KCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tybVkaWFsb2ctbWluLXdpZHRoJylcbiAgcHJvdGVjdGVkIGdldCBtaW5XaWR0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5zaXplLm1pbldpZHRoKCkgfHwgJzEwMHB4JztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS3JtWRpYWxvZy13aWR0aCcpXG4gIHByb3RlY3RlZCBnZXQgd2lkdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuc2l6ZS53aWR0aCgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLcm1ZGlhbG9nLW1heC13aWR0aCcpXG4gIHByb3RlY3RlZCBnZXQgbWF4V2lkdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cuc2l6ZS5tYXhXaWR0aCgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5qdXN0aWZpZWQnKVxuICBwcm90ZWN0ZWQgZ2V0IGp1c3RpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlhbG9nLnBhZGRpbmcoKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWRpYWxvZ2lkJylcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5pZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IMm1V29ya2JlbmNoRGlhbG9nLFxuICAgICAgICAgICAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYpIHtcbiAgICB0aGlzLnNldERpYWxvZ09mZnNldCgpO1xuICAgIHRoaXMuYWRkSG9zdENzc0NsYXNzZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYWNrRm9jdXMoKTtcbiAgICB0aGlzLmF1dG9Gb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREaWFsb2dPZmZzZXQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhY2tQb3NpdGlvbiA9IHRoaXMuZGlhbG9nLmdldFBvc2l0aW9uSW5EaWFsb2dTdGFjaygpO1xuICAgIHRoaXMudHJhbnNmb3JtVHJhbnNsYXRlWCA9IHN0YWNrUG9zaXRpb24gKiAxMDtcbiAgICB0aGlzLnRyYW5zZm9ybVRyYW5zbGF0ZVkgPSBzdGFja1Bvc2l0aW9uICogMTA7XG4gIH1cblxuICBwcml2YXRlIGFkZEhvc3RDc3NDbGFzc2VzKCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ2xhc3MgPSBpbmplY3QoTmdDbGFzcyk7XG4gICAgZWZmZWN0KCgpID0+IG5nQ2xhc3MubmdDbGFzcyA9IHRoaXMuZGlhbG9nLmNzc0NsYXNzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhpcyBkaWFsb2csIHJlc3RvcmluZyB0aGUgZm9jdXMgdG8gdGhlIGxhc3QgZWxlbWVudCB0aGF0IGhhZCB0aGUgZm9jdXMsXG4gICAqIG9yIG90aGVyd2lzZSBmb2N1c2VzIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5fYWN0aXZlRWxlbWVudCQuZ2V0VmFsdWUoKTtcbiAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgYWN0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICBlbHNlIGlmICghdGhpcy5fY2RrVHJhcEZvY3VzLmZvY3VzVHJhcC5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCkpIHtcbiAgICAgIC8vIEZvY3VzIGRpYWxvZyBlbGVtZW50IHNvIHRoYXQgaXQgY2FuIGJlIGNsb3NlZCB2aWEgRXNjYXBlIGtleXN0cm9rZS5cbiAgICAgIHRoaXMuX2RpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFja3MgdGhlIGZvY3VzIG9mIHRoZSBkaWFsb2cuXG4gICAqL1xuICBwcml2YXRlIHRyYWNrRm9jdXMoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KHRoaXMuX2RpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChldmVudCA9PiBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGV2ZW50LnRhcmdldCA6IHVuZGVmaW5lZCksXG4gICAgICAgIC8vIFRoZSBkaWFsb2cgaXMgZm9jdXNlZCBpZiBpdCBoYXMgbm8gZm9jdXNhYmxlIGVsZW1lbnQsIHNvIHRoZSBkaWFsb2cgY2FuIGJlIGNsb3NlZCB2aWEgRXNjYXBlLlxuICAgICAgICAvLyBIb3dldmVyLCBpbiBvcmRlciBub3QgdG8gY2FuY2VsIHRoZSBhdXRvZm9jdXMsIHRoZSBkaWFsb2cgZWxlbWVudCBtdXN0IG5vdCBiZSBtZW1vaXplZCBhcyB0aGVcbiAgICAgICAgLy8gYWN0aXZlIGVsZW1lbnQuIE90aGVyd2lzZSwgZGVsYXllZCBjb250ZW50IHdvdWxkIG5vdCBiZSBmb2N1c2VkLlxuICAgICAgICBmaWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50ICE9PSB0aGlzLl9kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLFxuICAgICAgICBzdWJzY3JpYmVJbnNpZGUoY29udGludWVGbiA9PiB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKGNvbnRpbnVlRm4pKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhY3RpdmVFbGVtZW50ID0+IHtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudCQubmV4dChhY3RpdmVFbGVtZW50KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50IGluIHRoZSBkaWFsb2cuIEhhcyBubyBlZmZlY3QgaWYgYW4gZWxlbWVudCBpbiB0aGUgZGlhbG9nIGFscmVhZHkgaGFzIHRoZSBmb2N1cy5cbiAgICpcbiAgICogSWYgbm8gZm9jdXNhYmxlIGVsZW1lbnQgY2FuIGJlIGZvdW5kLCB0aGUgZm9jdXNpbmcgd2lsbCBiZSByZXBlYXRlZCBvbiB0aGUgbmV4dCBET00gY2hhbmdlIHVudGlsIGFuIGVsZW1lbnQgaGFzIHRoZVxuICAgKiBmb2N1cywgYWxsb3dpbmcgZGVsYXllZCBjb250ZW50IHRvIGdldCBmb2N1cy5cbiAgICovXG4gIHByaXZhdGUgYXV0b0ZvY3VzKCk6IHZvaWQge1xuICAgIGZyb21NdXRhdGlvbiQodGhpcy5fZGlhbG9nRWxlbWVudC5uYXRpdmVFbGVtZW50LCB7c3VidHJlZTogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkIGFzIHZvaWQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fYWN0aXZlRWxlbWVudCQucGlwZShmaWx0ZXIoQm9vbGVhbikpKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Fc2NhcGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlhbG9nLmNsb3NhYmxlKCkpIHtcbiAgICAgIHRoaXMuZGlhbG9nLmNsb3NlKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Nb3ZlKGV2ZW50OiBXYk1vdmVFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNmb3JtVHJhbnNsYXRlWCA9IGV2ZW50LnRyYW5zbGF0ZVg7XG4gICAgdGhpcy50cmFuc2Zvcm1UcmFuc2xhdGVZID0gZXZlbnQudHJhbnNsYXRlWTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc2l6ZShldmVudDogV2JSZXNpemVFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5oZWlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaWFsb2cuc2l6ZS5oZWlnaHQgPSBgJHtldmVudC5oZWlnaHR9cHhgO1xuICAgIH1cbiAgICBpZiAoZXZlbnQud2lkdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaWFsb2cuc2l6ZS53aWR0aCA9IGAke2V2ZW50LndpZHRofXB4YDtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnRyYW5zbGF0ZVggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm1UcmFuc2xhdGVYID0gZXZlbnQudHJhbnNsYXRlWDtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnRyYW5zbGF0ZVkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm1UcmFuc2xhdGVZID0gZXZlbnQudHJhbnNsYXRlWTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25IZWFkZXJEaW1lbnNpb25DaGFuZ2UoZGltZW5zaW9uOiBTY2lEaW1lbnNpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJIZWlnaHQgPSBgJHtkaW1lbnNpb24ub2Zmc2V0SGVpZ2h0fXB4YDtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYW5pbWF0aW9uIG1ldGFkYXRhIHRvIHNsaWRlLWluIGEgbmV3IGRpYWxvZy5cbiAqL1xuZnVuY3Rpb24gcHJvdmlkZUVudGVyQW5pbWF0aW9uKCk6IEFuaW1hdGlvbk1ldGFkYXRhW10ge1xuICByZXR1cm4gW1xuICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgIHN0eWxlKHtvcGFjaXR5OiAwLCBib3R0b206ICcxMDAlJywgdG9wOiAndW5zZXQnfSksXG4gICAgICBhbmltYXRlKCcuMXMgZWFzZS1vdXQnLCBzdHlsZSh7b3BhY2l0eTogMSwgYm90dG9tOiAnKid9KSksXG4gICAgXSksXG4gIF07XG59XG5cbi8qKlxuICogQmxvY2tzIHRoaXMgZGlhbG9nIHdoZW4gb3RoZXIgZGlhbG9nKHMpIG92ZXJsYXkgaXQuXG4gKi9cbmZ1bmN0aW9uIGNvbmZpZ3VyZURpYWxvZ0dsYXNzUGFuZSgpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBHTEFTU19QQU5FX0JMT0NLQUJMRSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IMm1V29ya2JlbmNoRGlhbG9nKSwgLy8gcmVzb2x2ZSB7QGxpbmsgybVXb3JrYmVuY2hEaWFsb2d9IHZpYSBmb3J3YXJkUmVmIGJlY2F1c2Ugbm90IGRlZmluZWQgeWV0LCBpLmUuLCB7QGxpbmsgybVXb3JrYmVuY2hEaWFsb2d9IGNvbnN0cnVjdHMge0BsaW5rIFdvcmtiZW5jaERpYWxvZ0NvbXBvbmVudH0gaW4gaXRzIGNvbnN0cnVjdG9yLlxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogR0xBU1NfUEFORV9PUFRJT05TLFxuICAgICAgdXNlRmFjdG9yeTogKCk6IEdsYXNzUGFuZU9wdGlvbnMgPT4gKHthdHRyaWJ1dGVzOiB7J2RhdGEtZGlhbG9naWQnOiBpbmplY3QoybVXb3JrYmVuY2hEaWFsb2cpLmlkfX0pLFxuICAgIH0sXG4gIF07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nIGUyZS1kaWFsb2dcIlxuICAgICBbY2xhc3MuYmxpbmtpbmddPVwiZGlhbG9nLmJsaW5raW5nJCB8IGFzeW5jXCJcbiAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgd2JNb3ZhYmxlIFt3YkhhbmRsZV09XCJoZWFkZXJcIiAod2JNb3ZhYmxlTW92ZSk9XCJvbk1vdmUoJGV2ZW50KVwiXG4gICAgIHdiUmVzaXphYmxlIFt3YlJlc2l6YWJsZUVuYWJsZWRdPVwiZGlhbG9nLnJlc2l6YWJsZSgpXCIgKHdiUmVzaXphYmxlUmVzaXplKT1cIm9uUmVzaXplKCRldmVudClcIlxuICAgICBAZW50ZXJcbiAgICAgW0AuZGlzYWJsZWRdPVwiIWRpYWxvZy5hbmltYXRlXCJcbiAgICAgd2JHbGFzc1BhbmVcbiAgICAgI2RpYWxvZ19lbGVtZW50PlxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWJveCBlMmUtZGlhbG9nLWJveFwiIGNka1RyYXBGb2N1cz5cbiAgICA8aGVhZGVyICNoZWFkZXJcbiAgICAgICAgICAgIGNsYXNzPVwiZTJlLWRpYWxvZy1oZWFkZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmRpdmlkZXJdPVwiZGlhbG9nLmhlYWRlcj8uZGl2aWRlciA/PyB0cnVlXCJcbiAgICAgICAgICAgIHNjaURpbWVuc2lvbiAoc2NpRGltZW5zaW9uQ2hhbmdlKT1cIm9uSGVhZGVyRGltZW5zaW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaWFsb2cuaGVhZGVyPy50ZW1wbGF0ZSA/PyBkZWZhdWx0X2RpYWxvZ19oZWFkZXJcIi8+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8c2NpLXZpZXdwb3J0IGNsYXNzPVwiY29udGVudCBlMmUtZGlhbG9nLWNvbnRlbnRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiZGlhbG9nLmNvbXBvbmVudDsgaW5wdXRzOiBkaWFsb2cuaW5wdXRzXCIvPlxuICAgIDwvc2NpLXZpZXdwb3J0PlxuXG4gICAgQGlmIChkaWFsb2cuZm9vdGVyIHx8IGRpYWxvZy5hY3Rpb25zLmxlbmd0aCkge1xuICAgICAgPGZvb3RlciBjbGFzcz1cImUyZS1kaWFsb2ctZm9vdGVyXCIgW2NsYXNzLmRpdmlkZXJdPVwiZGlhbG9nLmZvb3Rlcj8uZGl2aWRlciA/PyB0cnVlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaWFsb2cuZm9vdGVyPy50ZW1wbGF0ZSA/PyBkZWZhdWx0X2RpYWxvZ19mb290ZXJcIi8+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdF9kaWFsb2dfaGVhZGVyPlxuICA8d2ItZGlhbG9nLWhlYWRlci8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRfZGlhbG9nX2Zvb3Rlcj5cbiAgPHdiLWRpYWxvZy1mb290ZXIvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==