@scion/workbench 17.0.0-beta.6 → 17.0.0-beta.8

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 (314) hide show
  1. package/README.md +1 -1
  2. package/esm2022/lib/activation-instant.provider.mjs +3 -3
  3. package/esm2022/lib/common/asserts.util.mjs +2 -2
  4. package/esm2022/lib/common/class-list.mjs +61 -0
  5. package/esm2022/lib/common/coerce-observable.pipe.mjs +3 -3
  6. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +3 -3
  7. package/esm2022/lib/common/filter-by-text.pipe.mjs +3 -3
  8. package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +6 -6
  9. package/esm2022/lib/common/instanceof.pipe.mjs +3 -3
  10. package/esm2022/lib/common/map-coerce.pipe.mjs +3 -3
  11. package/esm2022/lib/common/null-if-empty.pipe.mjs +3 -3
  12. package/esm2022/lib/common/objects.util.mjs +34 -0
  13. package/esm2022/lib/common/typeof.pipe.mjs +3 -3
  14. package/esm2022/lib/common/uuid.util.mjs +17 -0
  15. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +3 -3
  16. package/esm2022/lib/content-projection/content-projection.directive.mjs +3 -3
  17. package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +3 -3
  18. package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
  19. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +3 -3
  20. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +3 -3
  21. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -3
  22. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +3 -3
  23. package/esm2022/lib/dialog/movable.directive.mjs +3 -3
  24. package/esm2022/lib/dialog/resizable.directive.mjs +3 -3
  25. package/esm2022/lib/dialog/workbench-dialog.component.mjs +3 -3
  26. package/esm2022/lib/dialog/workbench-dialog.mjs +1 -1
  27. package/esm2022/lib/dialog/workbench-dialog.options.mjs +1 -1
  28. package/esm2022/lib/dialog/workbench-dialog.registry.mjs +4 -4
  29. package/esm2022/lib/dialog/workbench-dialog.service.mjs +5 -5
  30. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +8 -26
  31. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +3 -3
  32. package/esm2022/lib/filter-field/filter-field.component.mjs +6 -6
  33. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +3 -3
  34. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +10 -10
  35. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +7 -4
  36. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v1.model.mjs +11 -0
  37. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v2.model.mjs +11 -0
  38. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v3.model.mjs +11 -0
  39. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v4.model.mjs +11 -0
  40. package/esm2022/lib/layout/migration/workbench-layout-migration-v2.service.mjs +59 -0
  41. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +117 -0
  42. package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +57 -0
  43. package/esm2022/lib/layout/workbench-layout.component.mjs +7 -4
  44. package/esm2022/lib/layout/workbench-layout.factory.mjs +4 -4
  45. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  46. package/esm2022/lib/layout/workbench-layout.model.mjs +5 -6
  47. package/esm2022/lib/layout/workbench-layout.service.mjs +3 -3
  48. package/esm2022/lib/layout/workbench-layouts.util.mjs +53 -16
  49. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +53 -21
  50. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +8 -5
  51. package/esm2022/lib/layout//311/265workbench-layout.mjs +382 -195
  52. package/esm2022/lib/logging/console-appender.service.mjs +3 -3
  53. package/esm2022/lib/logging/logger-names.mjs +8 -9
  54. package/esm2022/lib/logging/logger.mjs +3 -3
  55. package/esm2022/lib/logging/logging-support.mjs +4 -4
  56. package/esm2022/lib/logging/logging.model.mjs +3 -3
  57. package/esm2022/lib/logging//311/265logger.mjs +3 -3
  58. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +18 -20
  59. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
  60. package/esm2022/lib/message-box/workbench-message-box.component.mjs +3 -3
  61. package/esm2022/lib/message-box/workbench-message-box.options.mjs +1 -1
  62. package/esm2022/lib/message-box/workbench-message-box.service.mjs +5 -5
  63. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +5 -5
  64. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +55 -0
  65. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +34 -22
  66. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +3 -3
  67. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +3 -3
  68. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +53 -0
  69. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +85 -0
  70. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +140 -0
  71. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +122 -0
  72. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +11 -10
  73. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.service.mjs +3 -3
  74. package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +3 -3
  75. package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +3 -3
  76. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +30 -0
  77. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +130 -0
  78. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +18 -30
  79. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
  80. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +9 -31
  81. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +88 -144
  82. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.mjs +23 -0
  83. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +41 -0
  84. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +30 -0
  85. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +125 -0
  86. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +103 -0
  87. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +45 -47
  88. package/esm2022/lib/migration/workbench-migration.mjs +11 -0
  89. package/esm2022/lib/migration/workbench-migrator.mjs +38 -0
  90. package/esm2022/lib/notification/notification-css-classes.pipe.mjs +3 -3
  91. package/esm2022/lib/notification/notification-list.component.mjs +3 -3
  92. package/esm2022/lib/notification/notification.component.mjs +3 -3
  93. package/esm2022/lib/notification/notification.config.mjs +1 -1
  94. package/esm2022/lib/notification/notification.mjs +1 -1
  95. package/esm2022/lib/notification/notification.service.mjs +9 -9
  96. package/esm2022/lib/notification/text-notification.component.mjs +3 -3
  97. package/esm2022/lib/page-not-found/format-url.pipe.mjs +26 -0
  98. package/esm2022/lib/page-not-found/page-not-found.component.mjs +28 -0
  99. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +3 -3
  100. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +3 -3
  101. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
  102. package/esm2022/lib/part/part-bar/part-bar.component.mjs +11 -8
  103. package/esm2022/lib/part/part-portal.pipe.mjs +3 -3
  104. package/esm2022/lib/part/part.component.mjs +7 -4
  105. package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +3 -3
  106. package/esm2022/lib/part/view-context-menu/text.component.mjs +3 -3
  107. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +3 -3
  108. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +4 -4
  109. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +19 -19
  110. package/esm2022/lib/part/view-list/view-list.component.mjs +3 -3
  111. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +3 -3
  112. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +9 -9
  113. package/esm2022/lib/part/view-tab/view-tab.component.mjs +16 -13
  114. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +5 -5
  115. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +9 -9
  116. package/esm2022/lib/part/workbench-part-action.registry.mjs +3 -3
  117. package/esm2022/lib/part/workbench-part.model.mjs +1 -1
  118. package/esm2022/lib/part/workbench-part.registry.mjs +3 -3
  119. package/esm2022/lib/part//311/265workbench-part.model.mjs +3 -3
  120. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v1.model.mjs +11 -0
  121. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v2.model.mjs +11 -0
  122. package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +57 -0
  123. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +19 -51
  124. package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +23 -18
  125. package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +27 -42
  126. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  127. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +3 -3
  128. package/esm2022/lib/perspective/workbench-perspective.service.mjs +15 -10
  129. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +62 -0
  130. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +98 -78
  131. package/esm2022/lib/popup/popup.component.mjs +3 -3
  132. package/esm2022/lib/popup/popup.config.mjs +1 -1
  133. package/esm2022/lib/popup/popup.service.mjs +3 -3
  134. package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +6 -6
  135. package/esm2022/lib/public_api.mjs +3 -2
  136. package/esm2022/lib/registry/workbench-object-registry.mjs +3 -3
  137. package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +31 -0
  138. package/esm2022/lib/routing/public_api.mjs +1 -1
  139. package/esm2022/lib/routing/router.util.mjs +96 -71
  140. package/esm2022/lib/routing/routing.model.mjs +11 -0
  141. package/esm2022/lib/routing/url-segment-matcher.mjs +46 -0
  142. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +58 -50
  143. package/esm2022/lib/routing/workbench-dialog-differ.mjs +51 -0
  144. package/esm2022/lib/routing/workbench-layout-differ.mjs +14 -17
  145. package/esm2022/lib/routing/workbench-navigational-states.mjs +11 -25
  146. package/esm2022/lib/routing/workbench-popup-differ.mjs +6 -6
  147. package/esm2022/lib/routing/workbench-route-data.mjs +15 -14
  148. package/esm2022/lib/routing/workbench-router-link.directive.mjs +24 -33
  149. package/esm2022/lib/routing/workbench-router.service.mjs +13 -378
  150. package/esm2022/lib/routing/workbench-url-observer.service.mjs +65 -36
  151. package/esm2022/lib/routing//311/265location.mjs +3 -3
  152. package/esm2022/lib/routing//311/265workbench-router.service.mjs +317 -0
  153. package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
  154. package/esm2022/lib/startup/workbench-launcher.service.mjs +11 -11
  155. package/esm2022/lib/storage/workbench-storage.mjs +3 -3
  156. package/esm2022/lib/testing/public_api.mjs +2 -1
  157. package/esm2022/lib/testing/workbench-testing.module.mjs +13 -39
  158. package/esm2022/lib/testing/workbench.provider.mjs +60 -0
  159. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +3 -3
  160. package/esm2022/lib/view/public_api.mjs +2 -1
  161. package/esm2022/lib/view/view-move-handler.service.mjs +42 -62
  162. package/esm2022/lib/view/view-portal.pipe.mjs +4 -4
  163. package/esm2022/lib/view/view.component.mjs +8 -38
  164. package/esm2022/lib/view/workbench-view-route-guards.mjs +47 -0
  165. package/esm2022/lib/view/workbench-view.model.mjs +6 -4
  166. package/esm2022/lib/view/workbench-view.registry.mjs +4 -4
  167. package/esm2022/lib/view//311/265workbench-view.model.mjs +135 -28
  168. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +33 -32
  169. package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +7 -7
  170. package/esm2022/lib/view-dnd/view-drag.service.mjs +6 -6
  171. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +3 -3
  172. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +4 -4
  173. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +11 -9
  174. package/esm2022/lib/workbench-config.mjs +15 -0
  175. package/esm2022/lib/workbench-id.mjs +3 -3
  176. package/esm2022/lib/workbench.component.mjs +14 -10
  177. package/esm2022/lib/workbench.constants.mjs +8 -10
  178. package/esm2022/lib/workbench.model.mjs +1 -1
  179. package/esm2022/lib/workbench.module.mjs +15 -86
  180. package/esm2022/lib/workbench.provider.mjs +117 -0
  181. package/esm2022/lib/workbench.service.mjs +5 -5
  182. package/esm2022/lib//311/265workbench.service.mjs +15 -21
  183. package/fesm2022/scion-workbench.mjs +5527 -4289
  184. package/fesm2022/scion-workbench.mjs.map +1 -1
  185. package/lib/common/class-list.d.ts +51 -0
  186. package/lib/common/objects.util.d.ts +17 -0
  187. package/lib/common/uuid.util.d.ts +8 -0
  188. package/lib/dialog/workbench-dialog.d.ts +3 -7
  189. package/lib/dialog/workbench-dialog.options.d.ts +5 -4
  190. package/lib/dialog/workbench-dialog.registry.d.ts +4 -3
  191. package/lib/dialog/workbench-dialog.service.d.ts +1 -1
  192. package/lib/dialog//311/265workbench-dialog.d.ts +4 -6
  193. package/lib/filter-field/filter-field.component.d.ts +1 -1
  194. package/lib/layout/grid-element/grid-element.component.d.ts +2 -2
  195. package/lib/layout/migration/model/workbench-layout-migration-v1.model.d.ts +16 -0
  196. package/lib/layout/migration/model/workbench-layout-migration-v2.model.d.ts +22 -0
  197. package/lib/layout/migration/model/workbench-layout-migration-v3.model.d.ts +30 -0
  198. package/lib/layout/migration/model/workbench-layout-migration-v4.model.d.ts +31 -0
  199. package/lib/layout/migration/workbench-layout-migration-v2.service.d.ts +13 -0
  200. package/lib/layout/migration/workbench-layout-migration-v3.service.d.ts +16 -0
  201. package/lib/layout/migration/workbench-layout-migration-v4.service.d.ts +12 -0
  202. package/lib/layout/workbench-layout.d.ts +61 -7
  203. package/lib/layout/workbench-layout.factory.d.ts +1 -1
  204. package/lib/layout/workbench-layout.model.d.ts +19 -9
  205. package/lib/layout/workbench-layouts.util.d.ts +22 -6
  206. package/lib/layout/workench-layout-serializer.service.d.ts +28 -7
  207. package/lib/layout//311/265workbench-layout.d.ts +172 -98
  208. package/lib/layout//311/265workbench-layout.factory.d.ts +4 -0
  209. package/lib/logging/logger-names.d.ts +7 -7
  210. package/lib/logging/logging-support.d.ts +2 -2
  211. package/lib/message-box/workbench-message-box.options.d.ts +4 -3
  212. package/lib/message-box/workbench-message-box.service.d.ts +1 -1
  213. package/lib/microfrontend-platform/common/microfrontend.util.d.ts +22 -0
  214. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +15 -9
  215. package/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.d.ts +11 -0
  216. package/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.d.ts +28 -0
  217. package/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.d.ts +52 -0
  218. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +37 -0
  219. package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +2 -1
  220. package/lib/microfrontend-platform/microfrontend-popup/{microfrontend-popup-capability-interceptor.service.d.ts → microfrontend-popup-capability-validator.interceptor.d.ts} +3 -3
  221. package/lib/microfrontend-platform/microfrontend-popup/{microfrontend-popup-intent-interceptor.service.d.ts → microfrontend-popup-intent-handler.interceptor.d.ts} +9 -6
  222. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +7 -10
  223. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +2 -9
  224. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +12 -23
  225. package/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.d.ts +14 -0
  226. package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +10 -0
  227. package/lib/microfrontend-platform/routing/{microfrontend-view-capability-interceptor.service.d.ts → microfrontend-view-capability-validator.interceptor.d.ts} +3 -3
  228. package/lib/microfrontend-platform/routing/{microfrontend-view-intent-interceptor.service.d.ts → microfrontend-view-intent-handler.interceptor.d.ts} +6 -5
  229. package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +49 -0
  230. package/lib/microfrontend-platform/workbench-microfrontend-support.d.ts +3 -2
  231. package/lib/migration/workbench-migration.d.ts +9 -0
  232. package/lib/migration/workbench-migrator.d.ts +18 -0
  233. package/lib/notification/notification.config.d.ts +1 -1
  234. package/lib/notification/notification.d.ts +1 -3
  235. package/lib/page-not-found/format-url.pipe.d.ts +11 -0
  236. package/lib/page-not-found/page-not-found.component.d.ts +8 -0
  237. package/lib/part/part-action-bar/part-action.directive.d.ts +1 -1
  238. package/lib/part/part-bar/part-bar.component.d.ts +4 -3
  239. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  240. package/lib/part/view-context-menu/view-menu.service.d.ts +5 -4
  241. package/lib/part/view-list-item/view-list-item.component.d.ts +5 -4
  242. package/lib/part/view-tab/view-tab.component.d.ts +6 -5
  243. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +3 -3
  244. package/lib/part/workbench-part.model.d.ts +5 -4
  245. package/lib/part//311/265workbench-part.model.d.ts +5 -4
  246. package/lib/perspective/migration/model/workbench-perspective-migration-v1.model.d.ts +8 -0
  247. package/lib/perspective/migration/model/workbench-perspective-migration-v2.model.d.ts +10 -0
  248. package/lib/perspective/migration/workbench-perspective-migration-v2.service.d.ts +13 -0
  249. package/lib/perspective/workbench-grid-merger.service.d.ts +9 -16
  250. package/lib/perspective/workbench-perspective-storage.service.d.ts +10 -28
  251. package/lib/perspective/workbench-perspective-view-conflict-resolver.service.d.ts +8 -25
  252. package/lib/perspective/workbench-perspective.model.d.ts +123 -14
  253. package/lib/perspective/workbench-perspective.service.d.ts +10 -3
  254. package/lib/perspective/workench-perspective-serializer.service.d.ts +26 -0
  255. package/lib/perspective//311/265workbench-perspective.model.d.ts +16 -14
  256. package/lib/popup/popup.config.d.ts +4 -3
  257. package/lib/portal/workbench-portal-outlet.directive.d.ts +2 -2
  258. package/lib/public_api.d.ts +4 -3
  259. package/lib/registry/workbench-object-registry.d.ts +2 -2
  260. package/lib/routing/empty-outlet/empty-outlet.component.d.ts +15 -0
  261. package/lib/routing/public_api.d.ts +2 -1
  262. package/lib/routing/router.util.d.ts +45 -31
  263. package/lib/routing/routing.model.d.ts +129 -0
  264. package/lib/routing/url-segment-matcher.d.ts +20 -0
  265. package/lib/routing/workbench-auxiliary-routes-registrator.service.d.ts +25 -16
  266. package/lib/routing/workbench-dialog-differ.d.ts +25 -0
  267. package/lib/routing/workbench-layout-differ.d.ts +4 -7
  268. package/lib/routing/workbench-navigational-states.d.ts +11 -21
  269. package/lib/routing/workbench-route-data.d.ts +14 -12
  270. package/lib/routing/workbench-router-link.directive.d.ts +22 -7
  271. package/lib/routing/workbench-router.service.d.ts +42 -157
  272. package/lib/routing/workbench-url-observer.service.d.ts +18 -6
  273. package/lib/routing//311/265workbench-router.service.d.ts +75 -0
  274. package/lib/startup/workbench-launcher.service.d.ts +4 -4
  275. package/lib/testing/public_api.d.ts +1 -0
  276. package/lib/testing/workbench-testing.module.d.ts +7 -6
  277. package/lib/testing/workbench.provider.d.ts +29 -0
  278. package/lib/view/public_api.d.ts +2 -1
  279. package/lib/view/view-move-handler.service.d.ts +2 -4
  280. package/lib/view/view-portal.pipe.d.ts +2 -1
  281. package/lib/view/view.component.d.ts +1 -11
  282. package/lib/view/workbench-view-route-guards.d.ts +36 -0
  283. package/lib/view/workbench-view.model.d.ts +46 -13
  284. package/lib/view/workbench-view.registry.d.ts +4 -3
  285. package/lib/view//311/265workbench-view.model.d.ts +79 -14
  286. package/lib/view-dnd/grid-drop-targets.util.d.ts +15 -17
  287. package/lib/view-dnd/view-drag.service.d.ts +12 -4
  288. package/lib/view-dnd/view-drop-zone.directive.d.ts +1 -1
  289. package/lib/{workbench-module-config.d.ts → workbench-config.d.ts} +29 -71
  290. package/lib/workbench.component.d.ts +2 -2
  291. package/lib/workbench.constants.d.ts +6 -8
  292. package/lib/workbench.model.d.ts +20 -8
  293. package/lib/workbench.module.d.ts +12 -7
  294. package/lib/workbench.provider.d.ts +38 -0
  295. package/lib/workbench.service.d.ts +32 -8
  296. package/lib//311/265workbench.service.d.ts +9 -3
  297. package/package.json +8 -8
  298. package/esm2022/lib/layout/migration/workbench-layout-migrator.service.mjs +0 -38
  299. package/esm2022/lib/layout/migration/workbench-layout-v1-migrator.service.mjs +0 -59
  300. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-interceptor.service.mjs +0 -30
  301. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-interceptor.service.mjs +0 -130
  302. package/esm2022/lib/microfrontend-platform/routing/microfrontend-navigational-states.mjs +0 -22
  303. package/esm2022/lib/microfrontend-platform/routing/microfrontend-routes.mjs +0 -71
  304. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-interceptor.service.mjs +0 -54
  305. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-interceptor.service.mjs +0 -123
  306. package/esm2022/lib/routing/navigation-state.resolver.mjs +0 -54
  307. package/esm2022/lib/view/workbench-view-pre-destroy.guard.mjs +0 -36
  308. package/esm2022/lib/workbench-module-config.mjs +0 -15
  309. package/lib/layout/migration/workbench-layout-migrator.service.d.ts +0 -15
  310. package/lib/layout/migration/workbench-layout-v1-migrator.service.d.ts +0 -12
  311. package/lib/microfrontend-platform/routing/microfrontend-navigational-states.d.ts +0 -11
  312. package/lib/microfrontend-platform/routing/microfrontend-routes.d.ts +0 -38
  313. package/lib/routing/navigation-state.resolver.d.ts +0 -12
  314. package/lib/view/workbench-view-pre-destroy.guard.d.ts +0 -5
@@ -0,0 +1,57 @@
1
+ /*
2
+ * Copyright (c) 2018-2024 Swiss Federal Railways
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ */
10
+ import { Injectable } from '@angular/core';
11
+ import * as i0 from "@angular/core";
12
+ /**
13
+ * Migrates the perspective layout from version 1 to version 2.
14
+ *
15
+ * TODO [Angular 20] Remove migrator.
16
+ */
17
+ export class WorkbenchPerspectiveMigrationV2 {
18
+ migrate(json) {
19
+ const perspectiveDataV1 = JSON.parse(json);
20
+ const perspectiveLayoutV2 = {
21
+ userLayout: {
22
+ workbenchGrid: perspectiveDataV1.workbenchGrid,
23
+ viewOutlets: this.migrateViewOutlets(perspectiveDataV1.viewOutlets),
24
+ },
25
+ referenceLayout: {
26
+ workbenchGrid: perspectiveDataV1.initialWorkbenchGrid,
27
+ viewOutlets: JSON.stringify({}),
28
+ },
29
+ };
30
+ return JSON.stringify(perspectiveLayoutV2);
31
+ }
32
+ migrateViewOutlets(viewOutlets) {
33
+ return JSON.stringify(Object.fromEntries(Object.entries(viewOutlets)
34
+ .map(([viewId, commands]) => {
35
+ return [viewId, commandsToSegments(commands)];
36
+ })));
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveMigrationV2, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
39
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveMigrationV2, providedIn: 'root' }); }
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveMigrationV2, decorators: [{
42
+ type: Injectable,
43
+ args: [{ providedIn: 'root' }]
44
+ }] });
45
+ function commandsToSegments(commands) {
46
+ const segments = new Array();
47
+ commands.forEach(command => {
48
+ if (typeof command === 'string') {
49
+ segments.push({ path: command, parameters: {} });
50
+ }
51
+ else {
52
+ segments.at(-1).parameters = command;
53
+ }
54
+ });
55
+ return segments;
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLW1pZ3JhdGlvbi12Mi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvbWlncmF0aW9uL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS1taWdyYXRpb24tdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTXpDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sK0JBQStCO0lBRW5DLE9BQU8sQ0FBQyxJQUFZO1FBQ3pCLE1BQU0saUJBQWlCLEdBQXNCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUQsTUFBTSxtQkFBbUIsR0FBeUI7WUFDaEQsVUFBVSxFQUFFO2dCQUNWLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxhQUFhO2dCQUM5QyxXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQzthQUNwRTtZQUNELGVBQWUsRUFBRTtnQkFDZixhQUFhLEVBQUUsaUJBQWlCLENBQUMsb0JBQW9CO2dCQUNyRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7YUFDaEM7U0FDRixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFdBQXlDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2FBQ2pFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBcUIsRUFBNkIsRUFBRTtZQUN6RSxPQUFPLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F2QlUsK0JBQStCO2tIQUEvQiwrQkFBK0IsY0FEbkIsTUFBTTs7MkZBQ2xCLCtCQUErQjtrQkFEM0MsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBMkJoQyxTQUFTLGtCQUFrQixDQUFDLFFBQWtCO0lBQzVDLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxFQUFpQixDQUFDO0lBRTVDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDekIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7U0FDaEQ7YUFDSTtZQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDI0IFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQZXJzcGVjdGl2ZURhdGFWMX0gZnJvbSAnLi9tb2RlbC93b3JrYmVuY2gtcGVyc3BlY3RpdmUtbWlncmF0aW9uLXYxLm1vZGVsJztcbmltcG9ydCB7TVBlcnNwZWN0aXZlTGF5b3V0VjJ9IGZyb20gJy4vbW9kZWwvd29ya2JlbmNoLXBlcnNwZWN0aXZlLW1pZ3JhdGlvbi12Mi5tb2RlbCc7XG5pbXBvcnQge0NvbW1hbmRzfSBmcm9tICcuLi8uLi9yb3V0aW5nL3JvdXRpbmcubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hNaWdyYXRpb259IGZyb20gJy4uLy4uL21pZ3JhdGlvbi93b3JrYmVuY2gtbWlncmF0aW9uJztcblxuLyoqXG4gKiBNaWdyYXRlcyB0aGUgcGVyc3BlY3RpdmUgbGF5b3V0IGZyb20gdmVyc2lvbiAxIHRvIHZlcnNpb24gMi5cbiAqXG4gKiBUT0RPIFtBbmd1bGFyIDIwXSBSZW1vdmUgbWlncmF0b3IuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaFBlcnNwZWN0aXZlTWlncmF0aW9uVjIgaW1wbGVtZW50cyBXb3JrYmVuY2hNaWdyYXRpb24ge1xuXG4gIHB1YmxpYyBtaWdyYXRlKGpzb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGVyc3BlY3RpdmVEYXRhVjE6IFBlcnNwZWN0aXZlRGF0YVYxID0gSlNPTi5wYXJzZShqc29uKTtcbiAgICBjb25zdCBwZXJzcGVjdGl2ZUxheW91dFYyOiBNUGVyc3BlY3RpdmVMYXlvdXRWMiA9IHtcbiAgICAgIHVzZXJMYXlvdXQ6IHtcbiAgICAgICAgd29ya2JlbmNoR3JpZDogcGVyc3BlY3RpdmVEYXRhVjEud29ya2JlbmNoR3JpZCxcbiAgICAgICAgdmlld091dGxldHM6IHRoaXMubWlncmF0ZVZpZXdPdXRsZXRzKHBlcnNwZWN0aXZlRGF0YVYxLnZpZXdPdXRsZXRzKSxcbiAgICAgIH0sXG4gICAgICByZWZlcmVuY2VMYXlvdXQ6IHtcbiAgICAgICAgd29ya2JlbmNoR3JpZDogcGVyc3BlY3RpdmVEYXRhVjEuaW5pdGlhbFdvcmtiZW5jaEdyaWQsXG4gICAgICAgIHZpZXdPdXRsZXRzOiBKU09OLnN0cmluZ2lmeSh7fSksXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHBlcnNwZWN0aXZlTGF5b3V0VjIpO1xuICB9XG5cbiAgcHJpdmF0ZSBtaWdyYXRlVmlld091dGxldHModmlld091dGxldHM6IHtbdmlld0lkOiBzdHJpbmddOiBDb21tYW5kc30pOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModmlld091dGxldHMpXG4gICAgICAubWFwKChbdmlld0lkLCBjb21tYW5kc106IFtzdHJpbmcsIENvbW1hbmRzXSk6IFtzdHJpbmcsIE1VcmxTZWdtZW50VjJbXV0gPT4ge1xuICAgICAgICByZXR1cm4gW3ZpZXdJZCwgY29tbWFuZHNUb1NlZ21lbnRzKGNvbW1hbmRzKV07XG4gICAgICB9KSxcbiAgICApKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21tYW5kc1RvU2VnbWVudHMoY29tbWFuZHM6IENvbW1hbmRzKTogTVVybFNlZ21lbnRWMltdIHtcbiAgY29uc3Qgc2VnbWVudHMgPSBuZXcgQXJyYXk8TVVybFNlZ21lbnRWMj4oKTtcblxuICBjb21tYW5kcy5mb3JFYWNoKGNvbW1hbmQgPT4ge1xuICAgIGlmICh0eXBlb2YgY29tbWFuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNlZ21lbnRzLnB1c2goe3BhdGg6IGNvbW1hbmQsIHBhcmFtZXRlcnM6IHt9fSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc2VnbWVudHMuYXQoLTEpIS5wYXJhbWV0ZXJzID0gY29tbWFuZDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBzZWdtZW50cztcbn1cblxuaW50ZXJmYWNlIE1VcmxTZWdtZW50VjIge1xuICBwYXRoOiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM6IHtbbmFtZTogc3RyaW5nXTogc3RyaW5nfTtcbn1cbiJdfQ==
@@ -7,65 +7,33 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { inject, Injectable, IterableDiffers } from '@angular/core';
11
- import { MAIN_AREA } from '../layout/workbench-layout';
10
+ import { Injectable } from '@angular/core';
12
11
  import * as i0 from "@angular/core";
13
- import * as i1 from "../layout/\u0275workbench-layout.factory";
14
12
  /**
15
- * Performs a three-way merge of the changes from the local and remote grid, using the base grid (common ancestor) as the base of the merge operation.
13
+ * Performs a three-way merge of the local and remote layouts, using the base layout (common ancestor) as the base of the merge operation.
14
+ *
15
+ * TODO [#452] This implementation discards local changes when a new layout is available.
16
16
  */
17
17
  export class WorkbenchGridMerger {
18
- constructor(_workbenchLayoutFactory, iterableDiffers) {
19
- this._workbenchLayoutFactory = _workbenchLayoutFactory;
20
- this._differs = inject(IterableDiffers).find([]);
21
- this._differs = iterableDiffers.find([]);
22
- }
23
18
  /**
24
- * Performs a merge of given local and remote grids, using the base grid as the common ancestor.
19
+ * Performs a merge of given local and remote layouts, using the base layout as the common ancestor.
25
20
  */
26
21
  merge(grids) {
27
- const localLayout = this._workbenchLayoutFactory.create({ workbenchGrid: grids.local });
28
- const baseLayout = this._workbenchLayoutFactory.create({ workbenchGrid: grids.base });
29
- const remoteLayout = this._workbenchLayoutFactory.create({ workbenchGrid: grids.remote });
30
- let mergedLayout = localLayout;
31
- const viewsChanges = this.viewsDiff(baseLayout, remoteLayout);
32
- viewsChanges?.forEachAddedItem(({ item: addedView }) => {
33
- // If the local grid contains the part, add the view to that part.
34
- const part = remoteLayout.part({ by: { viewId: addedView.id } });
35
- if (mergedLayout.hasPart(part.id)) {
36
- mergedLayout = mergedLayout.addView(addedView.id, { partId: part.id });
37
- }
38
- // If the local grid does not contain the part, add the part to an existing part or create a new part.
39
- else {
40
- const existingPart = mergedLayout.parts({ grid: 'workbench' }).filter(part => part.id !== MAIN_AREA)[0];
41
- if (existingPart) {
42
- mergedLayout = mergedLayout.addView(addedView.id, { partId: existingPart.id });
43
- }
44
- else {
45
- mergedLayout = mergedLayout
46
- .addPart(part.id, { align: 'left' })
47
- .addView(addedView.id, { partId: part.id });
48
- }
49
- }
50
- });
51
- viewsChanges?.forEachRemovedItem(({ item: removedView }) => {
52
- mergedLayout = mergedLayout.removeView(removedView.id);
53
- });
54
- return mergedLayout.workbenchGrid;
55
- }
56
- /**
57
- * Computes the diff of views added or removed in layout 2.
58
- */
59
- viewsDiff(layout1, layout2) {
60
- const differ = this._differs.create((index, view) => view.id);
61
- differ.diff(layout1.views({ grid: 'workbench' }));
62
- return differ.diff(layout2.views({ grid: 'workbench' }));
22
+ const serializedBaseLayout = grids.base.serialize();
23
+ const serializedRemoteLayout = grids.remote.serialize();
24
+ if (serializedBaseLayout.workbenchGrid !== serializedRemoteLayout.workbenchGrid) {
25
+ return grids.remote;
26
+ }
27
+ if (serializedBaseLayout.workbenchViewOutlets !== serializedRemoteLayout.workbenchViewOutlets) {
28
+ return grids.remote;
29
+ }
30
+ return grids.local;
63
31
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchGridMerger, deps: [{ token: i1.ɵWorkbenchLayoutFactory }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Injectable }); }
65
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchGridMerger, providedIn: 'root' }); }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchGridMerger, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
33
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchGridMerger, providedIn: 'root' }); }
66
34
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchGridMerger, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchGridMerger, decorators: [{
68
36
  type: Injectable,
69
37
  args: [{ providedIn: 'root' }]
70
- }], ctorParameters: () => [{ type: i1.ɵWorkbenchLayoutFactory }, { type: i0.IterableDiffers }] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWdyaWQtbWVyZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtZ3JpZC1tZXJnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFtQixlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHbkYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7QUFHckQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQW9CLHVCQUFnRCxFQUFFLGVBQWdDO1FBQWxGLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFGNUQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFHbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUE2RDtRQUN4RSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEVBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsRUFBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7UUFDcEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQztRQUV4RixJQUFJLFlBQVksR0FBcUIsV0FBVyxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTlELFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBQyxFQUFFLEVBQUU7WUFDbkQsa0VBQWtFO1lBQ2xFLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBQyxFQUFFLEVBQUUsRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBQyxFQUFDLENBQUMsQ0FBQztZQUM3RCxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNqQyxZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0Qsc0dBQXNHO2lCQUNqRztnQkFDSCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEcsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLFlBQVksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUM7aUJBQzlFO3FCQUNJO29CQUNILFlBQVksR0FBRyxZQUFZO3lCQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQzt5QkFDakMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUM7aUJBQzdDO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQyxFQUFFLEVBQUU7WUFDdkQsWUFBWSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxZQUFZLENBQUMsYUFBYSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVMsQ0FBQyxPQUF5QixFQUFFLE9BQXlCO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7OEdBckRVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRFAsTUFBTTs7MkZBQ2xCLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZSwgSXRlcmFibGVDaGFuZ2VzLCBJdGVyYWJsZURpZmZlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNUGFydEdyaWQsIE1WaWV3fSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dC5tb2RlbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0fSBmcm9tICcuLi9sYXlvdXQvybV3b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7TUFJTl9BUkVBfSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0RmFjdG9yeX0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dC5mYWN0b3J5JztcblxuLyoqXG4gKiBQZXJmb3JtcyBhIHRocmVlLXdheSBtZXJnZSBvZiB0aGUgY2hhbmdlcyBmcm9tIHRoZSBsb2NhbCBhbmQgcmVtb3RlIGdyaWQsIHVzaW5nIHRoZSBiYXNlIGdyaWQgKGNvbW1vbiBhbmNlc3RvcikgYXMgdGhlIGJhc2Ugb2YgdGhlIG1lcmdlIG9wZXJhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoR3JpZE1lcmdlciB7XG5cbiAgcHJpdmF0ZSBfZGlmZmVycyA9IGluamVjdChJdGVyYWJsZURpZmZlcnMpLmZpbmQoW10pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3dvcmtiZW5jaExheW91dEZhY3Rvcnk6IMm1V29ya2JlbmNoTGF5b3V0RmFjdG9yeSwgaXRlcmFibGVEaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHtcbiAgICB0aGlzLl9kaWZmZXJzID0gaXRlcmFibGVEaWZmZXJzLmZpbmQoW10pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgbWVyZ2Ugb2YgZ2l2ZW4gbG9jYWwgYW5kIHJlbW90ZSBncmlkcywgdXNpbmcgdGhlIGJhc2UgZ3JpZCBhcyB0aGUgY29tbW9uIGFuY2VzdG9yLlxuICAgKi9cbiAgcHVibGljIG1lcmdlKGdyaWRzOiB7bG9jYWw6IE1QYXJ0R3JpZDsgcmVtb3RlOiBNUGFydEdyaWQ7IGJhc2U6IE1QYXJ0R3JpZH0pOiBNUGFydEdyaWQge1xuICAgIGNvbnN0IGxvY2FsTGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoTGF5b3V0RmFjdG9yeS5jcmVhdGUoe3dvcmtiZW5jaEdyaWQ6IGdyaWRzLmxvY2FsfSk7XG4gICAgY29uc3QgYmFzZUxheW91dCA9IHRoaXMuX3dvcmtiZW5jaExheW91dEZhY3RvcnkuY3JlYXRlKHt3b3JrYmVuY2hHcmlkOiBncmlkcy5iYXNlfSk7XG4gICAgY29uc3QgcmVtb3RlTGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoTGF5b3V0RmFjdG9yeS5jcmVhdGUoe3dvcmtiZW5jaEdyaWQ6IGdyaWRzLnJlbW90ZX0pO1xuXG4gICAgbGV0IG1lcmdlZExheW91dDogybVXb3JrYmVuY2hMYXlvdXQgPSBsb2NhbExheW91dDtcbiAgICBjb25zdCB2aWV3c0NoYW5nZXMgPSB0aGlzLnZpZXdzRGlmZihiYXNlTGF5b3V0LCByZW1vdGVMYXlvdXQpO1xuXG4gICAgdmlld3NDaGFuZ2VzPy5mb3JFYWNoQWRkZWRJdGVtKCh7aXRlbTogYWRkZWRWaWV3fSkgPT4ge1xuICAgICAgLy8gSWYgdGhlIGxvY2FsIGdyaWQgY29udGFpbnMgdGhlIHBhcnQsIGFkZCB0aGUgdmlldyB0byB0aGF0IHBhcnQuXG4gICAgICBjb25zdCBwYXJ0ID0gcmVtb3RlTGF5b3V0LnBhcnQoe2J5OiB7dmlld0lkOiBhZGRlZFZpZXcuaWR9fSk7XG4gICAgICBpZiAobWVyZ2VkTGF5b3V0Lmhhc1BhcnQocGFydC5pZCkpIHtcbiAgICAgICAgbWVyZ2VkTGF5b3V0ID0gbWVyZ2VkTGF5b3V0LmFkZFZpZXcoYWRkZWRWaWV3LmlkLCB7cGFydElkOiBwYXJ0LmlkfSk7XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgbG9jYWwgZ3JpZCBkb2VzIG5vdCBjb250YWluIHRoZSBwYXJ0LCBhZGQgdGhlIHBhcnQgdG8gYW4gZXhpc3RpbmcgcGFydCBvciBjcmVhdGUgYSBuZXcgcGFydC5cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBleGlzdGluZ1BhcnQgPSBtZXJnZWRMYXlvdXQucGFydHMoe2dyaWQ6ICd3b3JrYmVuY2gnfSkuZmlsdGVyKHBhcnQgPT4gcGFydC5pZCAhPT0gTUFJTl9BUkVBKVswXTtcbiAgICAgICAgaWYgKGV4aXN0aW5nUGFydCkge1xuICAgICAgICAgIG1lcmdlZExheW91dCA9IG1lcmdlZExheW91dC5hZGRWaWV3KGFkZGVkVmlldy5pZCwge3BhcnRJZDogZXhpc3RpbmdQYXJ0LmlkfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgbWVyZ2VkTGF5b3V0ID0gbWVyZ2VkTGF5b3V0XG4gICAgICAgICAgICAuYWRkUGFydChwYXJ0LmlkLCB7YWxpZ246ICdsZWZ0J30pXG4gICAgICAgICAgICAuYWRkVmlldyhhZGRlZFZpZXcuaWQsIHtwYXJ0SWQ6IHBhcnQuaWR9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmlld3NDaGFuZ2VzPy5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHtpdGVtOiByZW1vdmVkVmlld30pID0+IHtcbiAgICAgIG1lcmdlZExheW91dCA9IG1lcmdlZExheW91dC5yZW1vdmVWaWV3KHJlbW92ZWRWaWV3LmlkKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZXJnZWRMYXlvdXQud29ya2JlbmNoR3JpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgZGlmZiBvZiB2aWV3cyBhZGRlZCBvciByZW1vdmVkIGluIGxheW91dCAyLlxuICAgKi9cbiAgcHJpdmF0ZSB2aWV3c0RpZmYobGF5b3V0MTogybVXb3JrYmVuY2hMYXlvdXQsIGxheW91dDI6IMm1V29ya2JlbmNoTGF5b3V0KTogSXRlcmFibGVDaGFuZ2VzPE1WaWV3PiB8IG51bGwge1xuICAgIGNvbnN0IGRpZmZlciA9IHRoaXMuX2RpZmZlcnMuY3JlYXRlPE1WaWV3PigoaW5kZXgsIHZpZXcpID0+IHZpZXcuaWQpO1xuICAgIGRpZmZlci5kaWZmKGxheW91dDEudmlld3Moe2dyaWQ6ICd3b3JrYmVuY2gnfSkpO1xuICAgIHJldHVybiBkaWZmZXIuZGlmZihsYXlvdXQyLnZpZXdzKHtncmlkOiAnd29ya2JlbmNoJ30pKTtcbiAgfVxufVxuIl19
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWdyaWQtbWVyZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtZ3JpZC1tZXJnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBR3pDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEtBQWtGO1FBQzdGLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwRCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFeEQsSUFBSSxvQkFBb0IsQ0FBQyxhQUFhLEtBQUssc0JBQXNCLENBQUMsYUFBYSxFQUFFO1lBQy9FLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUNyQjtRQUNELElBQUksb0JBQW9CLENBQUMsb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsb0JBQW9CLEVBQUU7WUFDN0YsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3JCLENBQUM7OEdBaEJVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRFAsTUFBTTs7MkZBQ2xCLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5cbi8qKlxuICogUGVyZm9ybXMgYSB0aHJlZS13YXkgbWVyZ2Ugb2YgdGhlIGxvY2FsIGFuZCByZW1vdGUgbGF5b3V0cywgdXNpbmcgdGhlIGJhc2UgbGF5b3V0IChjb21tb24gYW5jZXN0b3IpIGFzIHRoZSBiYXNlIG9mIHRoZSBtZXJnZSBvcGVyYXRpb24uXG4gKlxuICogVE9ETyBbIzQ1Ml0gVGhpcyBpbXBsZW1lbnRhdGlvbiBkaXNjYXJkcyBsb2NhbCBjaGFuZ2VzIHdoZW4gYSBuZXcgbGF5b3V0IGlzIGF2YWlsYWJsZS5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoR3JpZE1lcmdlciB7XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgbWVyZ2Ugb2YgZ2l2ZW4gbG9jYWwgYW5kIHJlbW90ZSBsYXlvdXRzLCB1c2luZyB0aGUgYmFzZSBsYXlvdXQgYXMgdGhlIGNvbW1vbiBhbmNlc3Rvci5cbiAgICovXG4gIHB1YmxpYyBtZXJnZShncmlkczoge2xvY2FsOiDJtVdvcmtiZW5jaExheW91dDsgcmVtb3RlOiDJtVdvcmtiZW5jaExheW91dDsgYmFzZTogybVXb3JrYmVuY2hMYXlvdXR9KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRCYXNlTGF5b3V0ID0gZ3JpZHMuYmFzZS5zZXJpYWxpemUoKTtcbiAgICBjb25zdCBzZXJpYWxpemVkUmVtb3RlTGF5b3V0ID0gZ3JpZHMucmVtb3RlLnNlcmlhbGl6ZSgpO1xuXG4gICAgaWYgKHNlcmlhbGl6ZWRCYXNlTGF5b3V0LndvcmtiZW5jaEdyaWQgIT09IHNlcmlhbGl6ZWRSZW1vdGVMYXlvdXQud29ya2JlbmNoR3JpZCkge1xuICAgICAgcmV0dXJuIGdyaWRzLnJlbW90ZTtcbiAgICB9XG4gICAgaWYgKHNlcmlhbGl6ZWRCYXNlTGF5b3V0LndvcmtiZW5jaFZpZXdPdXRsZXRzICE9PSBzZXJpYWxpemVkUmVtb3RlTGF5b3V0LndvcmtiZW5jaFZpZXdPdXRsZXRzKSB7XG4gICAgICByZXR1cm4gZ3JpZHMucmVtb3RlO1xuICAgIH1cbiAgICByZXR1cm4gZ3JpZHMubG9jYWw7XG4gIH1cbn1cbiJdfQ==
@@ -10,32 +10,37 @@
10
10
  import { Injectable } from '@angular/core';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "../storage/workbench-storage";
13
+ import * as i2 from "./workench-perspective-serializer.service";
14
+ import * as i3 from "../logging";
13
15
  /**
14
16
  * Provides API to read/write perspective data from/to {@link WorkbenchStorage}.
15
17
  */
16
18
  export class WorkbenchPerspectiveStorageService {
17
- constructor(_storage) {
19
+ constructor(_storage, _workbenchPerspectiveSerializer, _logger) {
18
20
  this._storage = _storage;
21
+ this._workbenchPerspectiveSerializer = _workbenchPerspectiveSerializer;
22
+ this._logger = _logger;
19
23
  }
20
24
  /**
21
- * Reads perspective data for a given perspective from storage.
25
+ * Reads the layout of given perspective from storage, applying necessary migrations if the serialized layout is outdated.
22
26
  */
23
- async loadPerspectiveData(perspectiveId) {
24
- const storageKey = storageKeys.perspectiveData(perspectiveId);
27
+ async loadPerspectiveLayout(perspectiveId) {
28
+ const storageKey = storageKeys.perspectiveLayout(perspectiveId);
25
29
  const serialized = await this._storage.load(storageKey);
26
- if (!serialized?.length) {
30
+ try {
31
+ return this._workbenchPerspectiveSerializer.deserialize(serialized);
32
+ }
33
+ catch (error) {
34
+ this._logger.error(`[SerializeError] Failed to deserialize perspective '${perspectiveId}'. Please clear your browser storage and reload the application.`, error);
27
35
  return null;
28
36
  }
29
- const json = window.atob(serialized);
30
- return JSON.parse(json);
31
37
  }
32
38
  /**
33
- * Writes perspective data for a given perspective to storage.
39
+ * Writes the layout of a perspective to storage.
34
40
  */
35
- async storePerspectiveData(perspectiveId, data) {
36
- const storageKey = storageKeys.perspectiveData(perspectiveId);
37
- const json = JSON.stringify(data);
38
- const serialized = window.btoa(json);
41
+ async storePerspectiveLayout(perspectiveId, data) {
42
+ const serialized = this._workbenchPerspectiveSerializer.serialize(data);
43
+ const storageKey = storageKeys.perspectiveLayout(perspectiveId);
39
44
  await this._storage.store(storageKey, serialized);
40
45
  }
41
46
  /**
@@ -50,18 +55,18 @@ export class WorkbenchPerspectiveStorageService {
50
55
  async storeActivePerspectiveId(perspectiveId) {
51
56
  return this._storage.store(storageKeys.activePerspectiveId, perspectiveId);
52
57
  }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveStorageService, deps: [{ token: i1.WorkbenchStorage }], target: i0.ɵɵFactoryTarget.Injectable }); }
54
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveStorageService, providedIn: 'root' }); }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveStorageService, deps: [{ token: i1.WorkbenchStorage }, { token: i2.WorkbenchPerspectiveSerializer }, { token: i3.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
59
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveStorageService, providedIn: 'root' }); }
55
60
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveStorageService, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveStorageService, decorators: [{
57
62
  type: Injectable,
58
63
  args: [{ providedIn: 'root' }]
59
- }], ctorParameters: () => [{ type: i1.WorkbenchStorage }] });
64
+ }], ctorParameters: () => [{ type: i1.WorkbenchStorage }, { type: i2.WorkbenchPerspectiveSerializer }, { type: i3.Logger }] });
60
65
  /**
61
66
  * Represents keys to associate data in the storage.
62
67
  */
63
68
  const storageKeys = {
64
- perspectiveData: (perspectiveId) => `scion.workbench.perspectives.${perspectiveId}`,
69
+ perspectiveLayout: (perspectiveId) => `scion.workbench.perspectives.${perspectiveId}`,
65
70
  activePerspectiveId: 'scion.workbench.perspective',
66
71
  };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFJekM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0NBQWtDO0lBRTdDLFlBQW9CLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxhQUFxQjtRQUNwRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxhQUFxQixFQUFFLElBQXFCO1FBQzVFLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyx1QkFBdUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsYUFBcUI7UUFDekQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDN0UsQ0FBQzs4R0F4Q1Usa0NBQWtDO2tIQUFsQyxrQ0FBa0MsY0FEdEIsTUFBTTs7MkZBQ2xCLGtDQUFrQztrQkFEOUMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBNENoQzs7R0FFRztBQUNILE1BQU0sV0FBVyxHQUFHO0lBQ2xCLGVBQWUsRUFBRSxDQUFDLGFBQXFCLEVBQVUsRUFBRSxDQUFDLGdDQUFnQyxhQUFhLEVBQUU7SUFDbkcsbUJBQW1CLEVBQUUsNkJBQTZCO0NBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dvcmtiZW5jaFN0b3JhZ2V9IGZyb20gJy4uL3N0b3JhZ2Uvd29ya2JlbmNoLXN0b3JhZ2UnO1xuaW1wb3J0IHtDb21tYW5kc30gZnJvbSAnLi4vcm91dGluZy93b3JrYmVuY2gtcm91dGVyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFByb3ZpZGVzIEFQSSB0byByZWFkL3dyaXRlIHBlcnNwZWN0aXZlIGRhdGEgZnJvbS90byB7QGxpbmsgV29ya2JlbmNoU3RvcmFnZX0uXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3N0b3JhZ2U6IFdvcmtiZW5jaFN0b3JhZ2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBwZXJzcGVjdGl2ZSBkYXRhIGZvciBhIGdpdmVuIHBlcnNwZWN0aXZlIGZyb20gc3RvcmFnZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2FkUGVyc3BlY3RpdmVEYXRhKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IFByb21pc2U8UGVyc3BlY3RpdmVEYXRhIHwgbnVsbD4ge1xuICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBzdG9yYWdlS2V5cy5wZXJzcGVjdGl2ZURhdGEocGVyc3BlY3RpdmVJZCk7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IGF3YWl0IHRoaXMuX3N0b3JhZ2UubG9hZChzdG9yYWdlS2V5KTtcbiAgICBpZiAoIXNlcmlhbGl6ZWQ/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGpzb24gPSB3aW5kb3cuYXRvYihzZXJpYWxpemVkKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgcGVyc3BlY3RpdmUgZGF0YSBmb3IgYSBnaXZlbiBwZXJzcGVjdGl2ZSB0byBzdG9yYWdlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN0b3JlUGVyc3BlY3RpdmVEYXRhKHBlcnNwZWN0aXZlSWQ6IHN0cmluZywgZGF0YTogUGVyc3BlY3RpdmVEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc3RvcmFnZUtleSA9IHN0b3JhZ2VLZXlzLnBlcnNwZWN0aXZlRGF0YShwZXJzcGVjdGl2ZUlkKTtcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IHdpbmRvdy5idG9hKGpzb24pO1xuICAgIGF3YWl0IHRoaXMuX3N0b3JhZ2Uuc3RvcmUoc3RvcmFnZUtleSwgc2VyaWFsaXplZCk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdGhlIGlkIG9mIHRoZSBhY3RpdmUgcGVyc3BlY3RpdmUgZnJvbSBzdG9yYWdlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWRBY3RpdmVQZXJzcGVjdGl2ZUlkKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9zdG9yYWdlLmxvYWQoc3RvcmFnZUtleXMuYWN0aXZlUGVyc3BlY3RpdmVJZCk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBpZCBvZiB0aGUgYWN0aXZlIHBlcnNwZWN0aXZlIHRvIHN0b3JhZ2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3RvcmVBY3RpdmVQZXJzcGVjdGl2ZUlkKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9zdG9yYWdlLnN0b3JlKHN0b3JhZ2VLZXlzLmFjdGl2ZVBlcnNwZWN0aXZlSWQsIHBlcnNwZWN0aXZlSWQpO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBrZXlzIHRvIGFzc29jaWF0ZSBkYXRhIGluIHRoZSBzdG9yYWdlLlxuICovXG5jb25zdCBzdG9yYWdlS2V5cyA9IHtcbiAgcGVyc3BlY3RpdmVEYXRhOiAocGVyc3BlY3RpdmVJZDogc3RyaW5nKTogc3RyaW5nID0+IGBzY2lvbi53b3JrYmVuY2gucGVyc3BlY3RpdmVzLiR7cGVyc3BlY3RpdmVJZH1gLFxuICBhY3RpdmVQZXJzcGVjdGl2ZUlkOiAnc2Npb24ud29ya2JlbmNoLnBlcnNwZWN0aXZlJyxcbn07XG5cbi8qKlxuICogUGVyc3BlY3RpdmUgZGF0YSBzdG9yZWQgaW4gcGVyc2lzdGVudCBzdG9yYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBlcnNwZWN0aXZlRGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgYWN0dWFsIHdvcmtiZW5jaCBncmlkLlxuICAgKlxuICAgKiBXaGVuIGFjdGl2YXRlZCB0aGUgcGVyc3BlY3RpdmUgZm9yIHRoZSBmaXJzdCB0aW1lLCB0aGlzIGdyaWQgaXMgaWRlbnRpY2FsIHRvIHRoZSB7QGxpbmsgaW5pdGlhbFdvcmtiZW5jaEdyaWR9LFxuICAgKiBidXQgY2hhbmdlcyB3aGVuIHRoZSB1c2VyIGN1c3RvbWl6ZXMgdGhlIGxheW91dC5cbiAgICovXG4gIHdvcmtiZW5jaEdyaWQ6IHN0cmluZyB8IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBkZWZpbml0aW9uIHVzZWQgdG8gY3JlYXRlIHRoZSB3b3JrYmVuY2ggZ3JpZC5cbiAgICovXG4gIGluaXRpYWxXb3JrYmVuY2hHcmlkOiBzdHJpbmcgfCBudWxsO1xuICAvKipcbiAgICogQ29tbWFuZHMgb2Ygdmlld3MgY29udGFpbmVkIGluIHRoZSB3b3JrYmVuY2ggZ3JpZC5cbiAgICovXG4gIHZpZXdPdXRsZXRzOiB7W3ZpZXdJZDogc3RyaW5nXTogQ29tbWFuZHN9O1xufVxuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7OztBQU16Qzs7R0FFRztBQUVILE1BQU0sT0FBTyxrQ0FBa0M7SUFFN0MsWUFBb0IsUUFBMEIsRUFDMUIsK0JBQStELEVBQy9ELE9BQWU7UUFGZixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixvQ0FBK0IsR0FBL0IsK0JBQStCLENBQWdDO1FBQy9ELFlBQU8sR0FBUCxPQUFPLENBQVE7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLHFCQUFxQixDQUFDLGFBQXFCO1FBQ3RELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELElBQUk7WUFDRixPQUFPLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckU7UUFDRCxPQUFPLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxhQUFhLGtFQUFrRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xLLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsYUFBcUIsRUFBRSxJQUF3QjtRQUNqRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsdUJBQXVCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLHdCQUF3QixDQUFDLGFBQXFCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzdFLENBQUM7OEdBM0NVLGtDQUFrQztrSEFBbEMsa0NBQWtDLGNBRHRCLE1BQU07OzJGQUNsQixrQ0FBa0M7a0JBRDlDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQStDaEM7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBRztJQUNsQixpQkFBaUIsRUFBRSxDQUFDLGFBQXFCLEVBQVUsRUFBRSxDQUFDLGdDQUFnQyxhQUFhLEVBQUU7SUFDckcsbUJBQW1CLEVBQUUsNkJBQTZCO0NBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dvcmtiZW5jaFN0b3JhZ2V9IGZyb20gJy4uL3N0b3JhZ2Uvd29ya2JlbmNoLXN0b3JhZ2UnO1xuaW1wb3J0IHtNUGVyc3BlY3RpdmVMYXlvdXR9IGZyb20gJy4vd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoUGVyc3BlY3RpdmVTZXJpYWxpemVyfSBmcm9tICcuL3dvcmtlbmNoLXBlcnNwZWN0aXZlLXNlcmlhbGl6ZXIuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2luZyc7XG5cbi8qKlxuICogUHJvdmlkZXMgQVBJIHRvIHJlYWQvd3JpdGUgcGVyc3BlY3RpdmUgZGF0YSBmcm9tL3RvIHtAbGluayBXb3JrYmVuY2hTdG9yYWdlfS5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoUGVyc3BlY3RpdmVTdG9yYWdlU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3RvcmFnZTogV29ya2JlbmNoU3RvcmFnZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd29ya2JlbmNoUGVyc3BlY3RpdmVTZXJpYWxpemVyOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlcmlhbGl6ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2xvZ2dlcjogTG9nZ2VyKSB7XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdGhlIGxheW91dCBvZiBnaXZlbiBwZXJzcGVjdGl2ZSBmcm9tIHN0b3JhZ2UsIGFwcGx5aW5nIG5lY2Vzc2FyeSBtaWdyYXRpb25zIGlmIHRoZSBzZXJpYWxpemVkIGxheW91dCBpcyBvdXRkYXRlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2FkUGVyc3BlY3RpdmVMYXlvdXQocGVyc3BlY3RpdmVJZDogc3RyaW5nKTogUHJvbWlzZTxNUGVyc3BlY3RpdmVMYXlvdXQgfCBudWxsPiB7XG4gICAgY29uc3Qgc3RvcmFnZUtleSA9IHN0b3JhZ2VLZXlzLnBlcnNwZWN0aXZlTGF5b3V0KHBlcnNwZWN0aXZlSWQpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBhd2FpdCB0aGlzLl9zdG9yYWdlLmxvYWQoc3RvcmFnZUtleSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLl93b3JrYmVuY2hQZXJzcGVjdGl2ZVNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoc2VyaWFsaXplZCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKGBbU2VyaWFsaXplRXJyb3JdIEZhaWxlZCB0byBkZXNlcmlhbGl6ZSBwZXJzcGVjdGl2ZSAnJHtwZXJzcGVjdGl2ZUlkfScuIFBsZWFzZSBjbGVhciB5b3VyIGJyb3dzZXIgc3RvcmFnZSBhbmQgcmVsb2FkIHRoZSBhcHBsaWNhdGlvbi5gLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSBsYXlvdXQgb2YgYSBwZXJzcGVjdGl2ZSB0byBzdG9yYWdlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN0b3JlUGVyc3BlY3RpdmVMYXlvdXQocGVyc3BlY3RpdmVJZDogc3RyaW5nLCBkYXRhOiBNUGVyc3BlY3RpdmVMYXlvdXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXJpYWxpemVkID0gdGhpcy5fd29ya2JlbmNoUGVyc3BlY3RpdmVTZXJpYWxpemVyLnNlcmlhbGl6ZShkYXRhKTtcbiAgICBjb25zdCBzdG9yYWdlS2V5ID0gc3RvcmFnZUtleXMucGVyc3BlY3RpdmVMYXlvdXQocGVyc3BlY3RpdmVJZCk7XG4gICAgYXdhaXQgdGhpcy5fc3RvcmFnZS5zdG9yZShzdG9yYWdlS2V5LCBzZXJpYWxpemVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgaWQgb2YgdGhlIGFjdGl2ZSBwZXJzcGVjdGl2ZSBmcm9tIHN0b3JhZ2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZEFjdGl2ZVBlcnNwZWN0aXZlSWQoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2UubG9hZChzdG9yYWdlS2V5cy5hY3RpdmVQZXJzcGVjdGl2ZUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgdGhlIGlkIG9mIHRoZSBhY3RpdmUgcGVyc3BlY3RpdmUgdG8gc3RvcmFnZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzdG9yZUFjdGl2ZVBlcnNwZWN0aXZlSWQocGVyc3BlY3RpdmVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc3RvcmUoc3RvcmFnZUtleXMuYWN0aXZlUGVyc3BlY3RpdmVJZCwgcGVyc3BlY3RpdmVJZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGtleXMgdG8gYXNzb2NpYXRlIGRhdGEgaW4gdGhlIHN0b3JhZ2UuXG4gKi9cbmNvbnN0IHN0b3JhZ2VLZXlzID0ge1xuICBwZXJzcGVjdGl2ZUxheW91dDogKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IHN0cmluZyA9PiBgc2Npb24ud29ya2JlbmNoLnBlcnNwZWN0aXZlcy4ke3BlcnNwZWN0aXZlSWR9YCxcbiAgYWN0aXZlUGVyc3BlY3RpdmVJZDogJ3NjaW9uLndvcmtiZW5jaC5wZXJzcGVjdGl2ZScsXG59O1xuIl19
@@ -8,58 +8,43 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { Injectable } from '@angular/core';
11
- import { Arrays, Dictionaries, Maps } from '@scion/toolkit/util';
12
- import { RouterUtils } from '../routing/router.util';
11
+ import { Arrays } from '@scion/toolkit/util';
12
+ import { WorkbenchLayouts } from '../layout/workbench-layouts.util';
13
13
  import * as i0 from "@angular/core";
14
- import * as i1 from "../layout/\u0275workbench-layout.factory";
15
14
  /**
16
- * Detects and resolves name conflicts of view names, that may occur when switching between perspectives.
15
+ * Detects and resolves conflicting view ids, that may occur when switching between perspectives.
17
16
  */
18
17
  export class WorkbenchPerspectiveViewConflictResolver {
19
- constructor(_workbenchLayoutFactory) {
20
- this._workbenchLayoutFactory = _workbenchLayoutFactory;
21
- }
22
18
  /**
23
- * Detects and resolves name clashes between views defined by the perspective and views in the main area.
24
- *
25
- * Conflict resolution for views defined by the perspective:
26
- * - Assigns views a new identity if target of a primary route. The id of such views begin with the view prefix.
27
- * - Removes views if target of a secondary route. The id of such views does not begin with the view prefix.
19
+ * Detects and resolves id clashes between views defined by the perspective and views contained in the main area,
20
+ * assigning views of the perspective a new identity.
28
21
  *
29
- * @param mainAreaGrid - The grid of the main area.
30
- * @param perspective - The workbench grid and views of the perspective.
31
- * @return workbench grid and views of the provided perspective with conflicts resolved, if any.
22
+ * @param currentLayout - The current workbench layout.
23
+ * @param perspectiveLayout - The layout of the perspective to activate.
24
+ * @return layout of the perspective with conflicts resolved.
32
25
  */
33
- resolve(mainAreaGrid, perspective) {
34
- const conflictingLayout = this._workbenchLayoutFactory.create({ mainAreaGrid, workbenchGrid: perspective.workbenchGrid });
35
- const conflictingViewIds = Arrays.intersect(conflictingLayout.views({ grid: 'workbench' }).map(view => view.id), conflictingLayout.views({ grid: 'mainArea' }).map(view => view.id));
26
+ resolve(currentLayout, perspectiveLayout) {
27
+ const perspectiveViewIds = perspectiveLayout.views({ grid: 'workbench' }).map(view => view.id);
28
+ const mainAreaViewIds = currentLayout.views({ grid: 'mainArea' }).map(view => view.id);
29
+ // Test if there are conflicts.
30
+ const conflictingViewIds = Arrays.intersect(perspectiveViewIds, mainAreaViewIds);
36
31
  if (!conflictingViewIds.length) {
37
- return perspective;
32
+ return perspectiveLayout;
38
33
  }
39
- const viewOutlets = Maps.coerce(perspective.viewOutlets);
40
- const resolvedLayout = conflictingViewIds.reduce((layout, conflictingViewId) => {
41
- if (RouterUtils.isPrimaryRouteTarget(conflictingViewId)) {
42
- const newViewId = layout.computeNextViewId();
43
- const path = viewOutlets.get(conflictingViewId);
44
- viewOutlets.delete(conflictingViewId);
45
- // Rename view in the perspective grid.
46
- viewOutlets.set(newViewId, path);
47
- return layout.renameView(conflictingViewId, newViewId, { grid: 'workbench' });
48
- }
49
- else {
50
- return layout.removeView(conflictingViewId, { grid: 'workbench' });
51
- }
52
- }, conflictingLayout);
53
- return {
54
- workbenchGrid: resolvedLayout.workbenchGrid,
55
- viewOutlets: Dictionaries.coerce(viewOutlets),
56
- };
34
+ // Rename conflicting views.
35
+ const usedViewIds = new Set(perspectiveViewIds.concat(mainAreaViewIds));
36
+ conflictingViewIds.forEach(conflictingViewId => {
37
+ const newViewId = WorkbenchLayouts.computeNextViewId(usedViewIds);
38
+ perspectiveLayout = perspectiveLayout.renameView(conflictingViewId, newViewId);
39
+ usedViewIds.add(newViewId);
40
+ });
41
+ return perspectiveLayout;
57
42
  }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, deps: [{ token: i1.ɵWorkbenchLayoutFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }
59
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, providedIn: 'root' }); }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
44
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, providedIn: 'root' }); }
60
45
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveViewConflictResolver, decorators: [{
62
47
  type: Injectable,
63
48
  args: [{ providedIn: 'root' }]
64
- }], ctorParameters: () => [{ type: i1.ɵWorkbenchLayoutFactory }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLXZpZXctY29uZmxpY3QtcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS12aWV3LWNvbmZsaWN0LXJlc29sdmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRS9ELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBR25EOztHQUVHO0FBRUgsTUFBTSxPQUFPLHdDQUF3QztJQUVuRCxZQUFvQix1QkFBZ0Q7UUFBaEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtJQUNwRSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLE9BQU8sQ0FBQyxZQUF1QixFQUFFLFdBQWtGO1FBQ3hILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLGFBQWEsRUFBQyxDQUFDLENBQUM7UUFDeEgsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUN6QyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQ2pFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDakUsQ0FBQztRQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7WUFDOUIsT0FBTyxXQUFXLENBQUM7U0FDcEI7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RCxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsRUFBRTtZQUM3RSxJQUFJLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO2dCQUN2RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBRSxDQUFDO2dCQUNqRCxXQUFXLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBRXRDLHVDQUF1QztnQkFDdkMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQzthQUM3RTtpQkFDSTtnQkFDSCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQzthQUNsRTtRQUNILENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXRCLE9BQU87WUFDTCxhQUFhLEVBQUUsY0FBYyxDQUFDLGFBQWE7WUFDM0MsV0FBVyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1NBQzlDLENBQUM7SUFDSixDQUFDOzhHQTlDVSx3Q0FBd0M7a0hBQXhDLHdDQUF3QyxjQUQ1QixNQUFNOzsyRkFDbEIsd0NBQXdDO2tCQURwRCxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01QYXJ0R3JpZH0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQubW9kZWwnO1xuaW1wb3J0IHtBcnJheXMsIERpY3Rpb25hcmllcywgTWFwc30gZnJvbSAnQHNjaW9uL3Rvb2xraXQvdXRpbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0RmFjdG9yeX0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dC5mYWN0b3J5JztcbmltcG9ydCB7Um91dGVyVXRpbHN9IGZyb20gJy4uL3JvdXRpbmcvcm91dGVyLnV0aWwnO1xuaW1wb3J0IHtDb21tYW5kc30gZnJvbSAnLi4vcm91dGluZy93b3JrYmVuY2gtcm91dGVyLnNlcnZpY2UnO1xuXG4vKipcbiAqIERldGVjdHMgYW5kIHJlc29sdmVzIG5hbWUgY29uZmxpY3RzIG9mIHZpZXcgbmFtZXMsIHRoYXQgbWF5IG9jY3VyIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gcGVyc3BlY3RpdmVzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hQZXJzcGVjdGl2ZVZpZXdDb25mbGljdFJlc29sdmVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF93b3JrYmVuY2hMYXlvdXRGYWN0b3J5OiDJtVdvcmtiZW5jaExheW91dEZhY3RvcnkpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlY3RzIGFuZCByZXNvbHZlcyBuYW1lIGNsYXNoZXMgYmV0d2VlbiB2aWV3cyBkZWZpbmVkIGJ5IHRoZSBwZXJzcGVjdGl2ZSBhbmQgdmlld3MgaW4gdGhlIG1haW4gYXJlYS5cbiAgICpcbiAgICogQ29uZmxpY3QgcmVzb2x1dGlvbiBmb3Igdmlld3MgZGVmaW5lZCBieSB0aGUgcGVyc3BlY3RpdmU6XG4gICAqIC0gQXNzaWducyB2aWV3cyBhIG5ldyBpZGVudGl0eSBpZiB0YXJnZXQgb2YgYSBwcmltYXJ5IHJvdXRlLiBUaGUgaWQgb2Ygc3VjaCB2aWV3cyBiZWdpbiB3aXRoIHRoZSB2aWV3IHByZWZpeC5cbiAgICogLSBSZW1vdmVzIHZpZXdzIGlmIHRhcmdldCBvZiBhIHNlY29uZGFyeSByb3V0ZS4gVGhlIGlkIG9mIHN1Y2ggdmlld3MgZG9lcyBub3QgYmVnaW4gd2l0aCB0aGUgdmlldyBwcmVmaXguXG4gICAqXG4gICAqIEBwYXJhbSBtYWluQXJlYUdyaWQgLSBUaGUgZ3JpZCBvZiB0aGUgbWFpbiBhcmVhLlxuICAgKiBAcGFyYW0gcGVyc3BlY3RpdmUgLSBUaGUgd29ya2JlbmNoIGdyaWQgYW5kIHZpZXdzIG9mIHRoZSBwZXJzcGVjdGl2ZS5cbiAgICogQHJldHVybiB3b3JrYmVuY2ggZ3JpZCBhbmQgdmlld3Mgb2YgdGhlIHByb3ZpZGVkIHBlcnNwZWN0aXZlIHdpdGggY29uZmxpY3RzIHJlc29sdmVkLCBpZiBhbnkuXG4gICAqL1xuICBwdWJsaWMgcmVzb2x2ZShtYWluQXJlYUdyaWQ6IE1QYXJ0R3JpZCwgcGVyc3BlY3RpdmU6IHt3b3JrYmVuY2hHcmlkOiBNUGFydEdyaWQ7IHZpZXdPdXRsZXRzOiB7W3ZpZXdJZDogc3RyaW5nXTogQ29tbWFuZHN9fSk6IHt3b3JrYmVuY2hHcmlkOiBNUGFydEdyaWQ7IHZpZXdPdXRsZXRzOiB7W3ZpZXdJZDogc3RyaW5nXTogQ29tbWFuZHN9fSB7XG4gICAgY29uc3QgY29uZmxpY3RpbmdMYXlvdXQgPSB0aGlzLl93b3JrYmVuY2hMYXlvdXRGYWN0b3J5LmNyZWF0ZSh7bWFpbkFyZWFHcmlkLCB3b3JrYmVuY2hHcmlkOiBwZXJzcGVjdGl2ZS53b3JrYmVuY2hHcmlkfSk7XG4gICAgY29uc3QgY29uZmxpY3RpbmdWaWV3SWRzID0gQXJyYXlzLmludGVyc2VjdChcbiAgICAgIGNvbmZsaWN0aW5nTGF5b3V0LnZpZXdzKHtncmlkOiAnd29ya2JlbmNoJ30pLm1hcCh2aWV3ID0+IHZpZXcuaWQpLFxuICAgICAgY29uZmxpY3RpbmdMYXlvdXQudmlld3Moe2dyaWQ6ICdtYWluQXJlYSd9KS5tYXAodmlldyA9PiB2aWV3LmlkKSxcbiAgICApO1xuICAgIGlmICghY29uZmxpY3RpbmdWaWV3SWRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdPdXRsZXRzID0gTWFwcy5jb2VyY2UocGVyc3BlY3RpdmUudmlld091dGxldHMpO1xuICAgIGNvbnN0IHJlc29sdmVkTGF5b3V0ID0gY29uZmxpY3RpbmdWaWV3SWRzLnJlZHVjZSgobGF5b3V0LCBjb25mbGljdGluZ1ZpZXdJZCkgPT4ge1xuICAgICAgaWYgKFJvdXRlclV0aWxzLmlzUHJpbWFyeVJvdXRlVGFyZ2V0KGNvbmZsaWN0aW5nVmlld0lkKSkge1xuICAgICAgICBjb25zdCBuZXdWaWV3SWQgPSBsYXlvdXQuY29tcHV0ZU5leHRWaWV3SWQoKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IHZpZXdPdXRsZXRzLmdldChjb25mbGljdGluZ1ZpZXdJZCkhO1xuICAgICAgICB2aWV3T3V0bGV0cy5kZWxldGUoY29uZmxpY3RpbmdWaWV3SWQpO1xuXG4gICAgICAgIC8vIFJlbmFtZSB2aWV3IGluIHRoZSBwZXJzcGVjdGl2ZSBncmlkLlxuICAgICAgICB2aWV3T3V0bGV0cy5zZXQobmV3Vmlld0lkLCBwYXRoKTtcbiAgICAgICAgcmV0dXJuIGxheW91dC5yZW5hbWVWaWV3KGNvbmZsaWN0aW5nVmlld0lkLCBuZXdWaWV3SWQsIHtncmlkOiAnd29ya2JlbmNoJ30pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBsYXlvdXQucmVtb3ZlVmlldyhjb25mbGljdGluZ1ZpZXdJZCwge2dyaWQ6ICd3b3JrYmVuY2gnfSk7XG4gICAgICB9XG4gICAgfSwgY29uZmxpY3RpbmdMYXlvdXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdvcmtiZW5jaEdyaWQ6IHJlc29sdmVkTGF5b3V0LndvcmtiZW5jaEdyaWQsXG4gICAgICB2aWV3T3V0bGV0czogRGljdGlvbmFyaWVzLmNvZXJjZSh2aWV3T3V0bGV0cyksXG4gICAgfTtcbiAgfVxufVxuIl19
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLXZpZXctY29uZmxpY3QtcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS12aWV3LWNvbmZsaWN0LXJlc29sdmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFHbEU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sd0NBQXdDO0lBRW5EOzs7Ozs7O09BT0c7SUFDSSxPQUFPLENBQUMsYUFBK0IsRUFBRSxpQkFBbUM7UUFDakYsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0YsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVyRiwrQkFBK0I7UUFDL0IsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7WUFDOUIsT0FBTyxpQkFBaUIsQ0FBQztTQUMxQjtRQUVELDRCQUE0QjtRQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBUyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUNoRixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUM3QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDL0UsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQzs4R0E3QlUsd0NBQXdDO2tIQUF4Qyx3Q0FBd0MsY0FENUIsTUFBTTs7MkZBQ2xCLHdDQUF3QztrQkFEcEQsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBcnJheXN9IGZyb20gJ0BzY2lvbi90b29sa2l0L3V0aWwnO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRzfSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dHMudXRpbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0fSBmcm9tICcuLi9sYXlvdXQvybV3b3JrYmVuY2gtbGF5b3V0JztcblxuLyoqXG4gKiBEZXRlY3RzIGFuZCByZXNvbHZlcyBjb25mbGljdGluZyB2aWV3IGlkcywgdGhhdCBtYXkgb2NjdXIgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBwZXJzcGVjdGl2ZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaFBlcnNwZWN0aXZlVmlld0NvbmZsaWN0UmVzb2x2ZXIge1xuXG4gIC8qKlxuICAgKiBEZXRlY3RzIGFuZCByZXNvbHZlcyBpZCBjbGFzaGVzIGJldHdlZW4gdmlld3MgZGVmaW5lZCBieSB0aGUgcGVyc3BlY3RpdmUgYW5kIHZpZXdzIGNvbnRhaW5lZCBpbiB0aGUgbWFpbiBhcmVhLFxuICAgKiBhc3NpZ25pbmcgdmlld3Mgb2YgdGhlIHBlcnNwZWN0aXZlIGEgbmV3IGlkZW50aXR5LlxuICAgKlxuICAgKiBAcGFyYW0gY3VycmVudExheW91dCAtIFRoZSBjdXJyZW50IHdvcmtiZW5jaCBsYXlvdXQuXG4gICAqIEBwYXJhbSBwZXJzcGVjdGl2ZUxheW91dCAtIFRoZSBsYXlvdXQgb2YgdGhlIHBlcnNwZWN0aXZlIHRvIGFjdGl2YXRlLlxuICAgKiBAcmV0dXJuIGxheW91dCBvZiB0aGUgcGVyc3BlY3RpdmUgd2l0aCBjb25mbGljdHMgcmVzb2x2ZWQuXG4gICAqL1xuICBwdWJsaWMgcmVzb2x2ZShjdXJyZW50TGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCwgcGVyc3BlY3RpdmVMYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIGNvbnN0IHBlcnNwZWN0aXZlVmlld0lkcyA9IHBlcnNwZWN0aXZlTGF5b3V0LnZpZXdzKHtncmlkOiAnd29ya2JlbmNoJ30pLm1hcCh2aWV3ID0+IHZpZXcuaWQpO1xuICAgIGNvbnN0IG1haW5BcmVhVmlld0lkcyA9IGN1cnJlbnRMYXlvdXQudmlld3Moe2dyaWQ6ICdtYWluQXJlYSd9KS5tYXAodmlldyA9PiB2aWV3LmlkKTtcblxuICAgIC8vIFRlc3QgaWYgdGhlcmUgYXJlIGNvbmZsaWN0cy5cbiAgICBjb25zdCBjb25mbGljdGluZ1ZpZXdJZHMgPSBBcnJheXMuaW50ZXJzZWN0KHBlcnNwZWN0aXZlVmlld0lkcywgbWFpbkFyZWFWaWV3SWRzKTtcbiAgICBpZiAoIWNvbmZsaWN0aW5nVmlld0lkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBwZXJzcGVjdGl2ZUxheW91dDtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWUgY29uZmxpY3Rpbmcgdmlld3MuXG4gICAgY29uc3QgdXNlZFZpZXdJZHMgPSBuZXcgU2V0PFZpZXdJZD4ocGVyc3BlY3RpdmVWaWV3SWRzLmNvbmNhdChtYWluQXJlYVZpZXdJZHMpKTtcbiAgICBjb25mbGljdGluZ1ZpZXdJZHMuZm9yRWFjaChjb25mbGljdGluZ1ZpZXdJZCA9PiB7XG4gICAgICBjb25zdCBuZXdWaWV3SWQgPSBXb3JrYmVuY2hMYXlvdXRzLmNvbXB1dGVOZXh0Vmlld0lkKHVzZWRWaWV3SWRzKTtcbiAgICAgIHBlcnNwZWN0aXZlTGF5b3V0ID0gcGVyc3BlY3RpdmVMYXlvdXQucmVuYW1lVmlldyhjb25mbGljdGluZ1ZpZXdJZCwgbmV3Vmlld0lkKTtcbiAgICAgIHVzZWRWaWV3SWRzLmFkZChuZXdWaWV3SWQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBlcnNwZWN0aXZlTGF5b3V0O1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0RmFjdG9yeX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQuZmFjdG9yeSc7XG5cbi8qKlxuICogQSBwZXJzcGVjdGl2ZSBpcyBhIG5hbWVkIHdvcmtiZW5jaCBsYXlvdXQuXG4gKlxuICogTXVsdGlwbGUgcGVyc3BlY3RpdmVzIGFyZSBzdXBwb3J0ZWQuIFBlcnNwZWN0aXZlcyBjYW4gYmUgc3dpdGNoZWQuIE9ubHkgb25lIHBlcnNwZWN0aXZlIGlzIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKiBQZXJzcGVjdGl2ZXMgc2hhcmUgdGhlIHNhbWUgbWFpbiBhcmVhLCBpZiBhbnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmUge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBwZXJzcGVjdGl2ZSBpcyBhY3RpdmUuXG4gICAqIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBwZXJzcGVjdGl2ZSBhY3RpdmUgYXQgYSB0aW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlOiBib29sZWFuO1xuICAvKipcbiAgICogVXBvbiBzdWJzY3JpcHRpb24sIGVtaXRzIHRoZSBjdXJyZW50IGFjdGl2ZSBzdGF0ZSBvZiB0aGlzIHBlcnNwZWN0aXZlLCBhbmQgdGhlblxuICAgKiBlbWl0cyBjb250aW51b3VzbHkgd2hlbiBpdHMgYWN0aXZlIHN0YXRlIGNoYW5nZXMuIFRoZSBPYnNlcnZhYmxlIG5ldmVyIGNvbXBsZXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHBlcnNwZWN0aXZlIGlzIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICByZWFkb25seSB0cmFuc2llbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmaW5lcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAqXG4gKiBBIHBlcnNwZWN0aXZlIGlzIGFuIGFycmFuZ2VtZW50IG9mIHZpZXdzIGFyb3VuZCB0aGUgbWFpbiBhcmVhLiBNdWx0aXBsZSBwZXJzcGVjdGl2ZXMgYXJlIHN1cHBvcnRlZC5cbiAqIERpZmZlcmVudCBwZXJzcGVjdGl2ZXMgcHJvdmlkZSBhIGRpZmZlcmVudCBwZXJzcGVjdGl2ZSBvbiB0aGUgYXBwbGljYXRpb24gd2hpbGUgc2hhcmluZyB0aGUgbWFpbiBhcmVhLlxuICogT25seSBvbmUgcGVyc3BlY3RpdmUgY2FuIGJlIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmVzIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAgICovXG4gIHBlcnNwZWN0aXZlczogV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uW107XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICAgKlxuICAgKiBDYW4gYmUgZWl0aGVyIHRoZSBpZGVudGl0eSBvZiBhIHBlcnNwZWN0aXZlIG9yIGEgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBpbml0aWFsUGVyc3BlY3RpdmU/OiBzdHJpbmcgfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlbGVjdGlvbkZuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHBlcnNwZWN0aXZlIHRvIHJlZ2lzdGVyIGluIHRoZSB3b3JrYmVuY2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdW5pcXVlIGlkZW50aXR5IG9mIHRoZSBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBjcmVhdGUgdGhlIGluaXRpYWwgbGF5b3V0IGZvciB0aGUgcGVyc3BlY3RpdmUuIFRoZSBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAgICovXG4gIGxheW91dDogV29ya2JlbmNoTGF5b3V0Rm47XG4gIC8qKlxuICAgKiBBc3NvY2lhdGVzIGFyYml0cmFyeSBkYXRhIHdpdGggdGhlIHBlcnNwZWN0aXZlLCBlLmcuLCBhIGxhYmVsLCBpY29uIG9yIHRvb2x0aXAuXG4gICAqL1xuICBkYXRhPzoge1trZXk6IHN0cmluZ106IGFueX07XG4gIC8qKlxuICAgKiBEZWNpZGVzIGlmIHRoZSBwZXJzcGVjdGl2ZSBjYW4gYmUgYWN0aXZhdGVkLiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBjYW5BY3RpdmF0ZT86ICgpID0+IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuO1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgcGVyc3BlY3RpdmUgYXMgdHJhbnNpZW50LCB3aXRoIGl0cyBsYXlvdXQgb25seSBtZW1vaXplZCwgbm90IHBlcnNpc3RlZC5cbiAgICovXG4gIHRyYW5zaWVudD86IHRydWU7XG59XG5cbi8qKlxuICogU2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24gdG8gcHJvdmlkZSBhIHdvcmtiZW5jaCBsYXlvdXQuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGlzIHBhc3NlZCBhIGZhY3RvcnkgdG8gY3JlYXRlIHRoZSBsYXlvdXQuIFRoZSBsYXlvdXQgaGFzIG1ldGhvZHMgdG8gbW9kaWZ5IGl0LlxuICogRWFjaCBtb2RpZmljYXRpb24gY3JlYXRlcyBhIG5ldyBsYXlvdXQgaW5zdGFuY2UgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZnVydGhlciBtb2RpZmljYXRpb25zLlxuICpcbiAqIFRoZSBsYXlvdXQgaXMgYW4gaW1tdXRhYmxlIG9iamVjdCwgaS5lLiwgbW9kaWZpY2F0aW9ucyBoYXZlIG5vIHNpZGUgZWZmZWN0cy5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKlxuICogYGBgdHNcbiAqIGZ1bmN0aW9uIGRlZmluZUxheW91dChmYWN0b3J5OiBXb3JrYmVuY2hMYXlvdXRGYWN0b3J5KTogV29ya2JlbmNoTGF5b3V0IHtcbiAqICAgcmV0dXJuIGZhY3RvcnkuYWRkUGFydChNQUlOX0FSRUEpXG4gKiAgICAgICAgICAgICAgICAgLmFkZFBhcnQoJ3RvcExlZnQnLCB7YWxpZ246ICdsZWZ0JywgcmF0aW86IC4yNX0pXG4gKiAgICAgICAgICAgICAgICAgLmFkZFBhcnQoJ2JvdHRvbUxlZnQnLCB7cmVsYXRpdmVUbzogJ3RvcExlZnQnLCBhbGlnbjogJ2JvdHRvbScsIHJhdGlvOiAuNX0pXG4gKiAgICAgICAgICAgICAgICAgLmFkZFBhcnQoJ2JvdHRvbScsIHthbGlnbjogJ2JvdHRvbScsIHJhdGlvOiAuM30pXG4gKiAgICAgICAgICAgICAgICAgLmFkZFZpZXcoJ25hdmlnYXRvcicsIHtwYXJ0SWQ6ICd0b3BMZWZ0JywgYWN0aXZhdGVWaWV3OiB0cnVlfSlcbiAqICAgICAgICAgICAgICAgICAuYWRkVmlldygnZXhwbG9yZXInLCB7cGFydElkOiAndG9wTGVmdCd9KVxuICogICAgICAgICAgICAgICAgIC5hZGRWaWV3KCdyZXBvc2l0b3JpZXMnLCB7cGFydElkOiAnYm90dG9tTGVmdCcsIGFjdGl2YXRlVmlldzogdHJ1ZX0pXG4gKiAgICAgICAgICAgICAgICAgLmFkZFZpZXcoJ2NvbnNvbGUnLCB7cGFydElkOiAnYm90dG9tJywgYWN0aXZhdGVWaWV3OiB0cnVlfSlcbiAqICAgICAgICAgICAgICAgICAuYWRkVmlldygncHJvYmxlbXMnLCB7cGFydElkOiAnYm90dG9tJ30pXG4gKiAgICAgICAgICAgICAgICAgLmFkZFZpZXcoJ3NlYXJjaCcsIHtwYXJ0SWQ6ICdib3R0b20nfSk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgV29ya2JlbmNoTGF5b3V0Rm4gPSAoZmFjdG9yeTogV29ya2JlbmNoTGF5b3V0RmFjdG9yeSkgPT4gUHJvbWlzZTxXb3JrYmVuY2hMYXlvdXQ+IHwgV29ya2JlbmNoTGF5b3V0O1xuXG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHByb3ZpZGVkIGluIHtAbGluayBXb3JrYmVuY2hQZXJzcGVjdGl2ZXMjaW5pdGlhbFBlcnNwZWN0aXZlfSB0byBzZWxlY3QgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBpcyBwYXNzZWQgYSBsaXN0IG9mIHJlZ2lzdGVyZWQgcGVyc3BlY3RpdmVzLiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtiZW5jaFBlcnNwZWN0aXZlU2VsZWN0aW9uRm4gPSAocGVyc3BlY3RpdmVzOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVtdKSA9PiBQcm9taXNlPFdvcmtiZW5jaFBlcnNwZWN0aXZlIHwgbnVsbD4gfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZSB8IG51bGw7XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjMgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0RmFjdG9yeX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQuZmFjdG9yeSc7XG5cbi8qKlxuICogQSBwZXJzcGVjdGl2ZSBpcyBhIG5hbWVkIHdvcmtiZW5jaCBsYXlvdXQuXG4gKlxuICogTXVsdGlwbGUgcGVyc3BlY3RpdmVzIGFyZSBzdXBwb3J0ZWQuIFBlcnNwZWN0aXZlcyBjYW4gYmUgc3dpdGNoZWQuIE9ubHkgb25lIHBlcnNwZWN0aXZlIGlzIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKiBQZXJzcGVjdGl2ZXMgc2hhcmUgdGhlIHNhbWUgbWFpbiBhcmVhLCBpZiBhbnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmUge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGE6IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBwZXJzcGVjdGl2ZSBpcyBhY3RpdmUuXG4gICAqIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBwZXJzcGVjdGl2ZSBhY3RpdmUgYXQgYSB0aW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlOiBib29sZWFuO1xuICAvKipcbiAgICogVXBvbiBzdWJzY3JpcHRpb24sIGVtaXRzIHRoZSBjdXJyZW50IGFjdGl2ZSBzdGF0ZSBvZiB0aGlzIHBlcnNwZWN0aXZlLCBhbmQgdGhlblxuICAgKiBlbWl0cyBjb250aW51b3VzbHkgd2hlbiBpdHMgYWN0aXZlIHN0YXRlIGNoYW5nZXMuIFRoZSBPYnNlcnZhYmxlIG5ldmVyIGNvbXBsZXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIHBlcnNwZWN0aXZlIGlzIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICByZWFkb25seSB0cmFuc2llbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVmaW5lcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAqXG4gKiBBIHBlcnNwZWN0aXZlIGlzIGFuIGFycmFuZ2VtZW50IG9mIHZpZXdzIGFyb3VuZCB0aGUgbWFpbiBhcmVhLiBNdWx0aXBsZSBwZXJzcGVjdGl2ZXMgYXJlIHN1cHBvcnRlZC5cbiAqIERpZmZlcmVudCBwZXJzcGVjdGl2ZXMgcHJvdmlkZSBhIGRpZmZlcmVudCBwZXJzcGVjdGl2ZSBvbiB0aGUgYXBwbGljYXRpb24gd2hpbGUgc2hhcmluZyB0aGUgbWFpbiBhcmVhLlxuICogT25seSBvbmUgcGVyc3BlY3RpdmUgY2FuIGJlIGFjdGl2ZSBhdCBhIHRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmVzIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBwZXJzcGVjdGl2ZXMgdG8gcmVnaXN0ZXIgaW4gdGhlIHdvcmtiZW5jaC5cbiAgICovXG4gIHBlcnNwZWN0aXZlczogV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uW107XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICAgKlxuICAgKiBDYW4gYmUgZWl0aGVyIHRoZSBpZGVudGl0eSBvZiBhIHBlcnNwZWN0aXZlIG9yIGEgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBpbml0aWFsUGVyc3BlY3RpdmU/OiBzdHJpbmcgfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlbGVjdGlvbkZuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHBlcnNwZWN0aXZlIHRvIHJlZ2lzdGVyIGluIHRoZSB3b3JrYmVuY2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdW5pcXVlIGlkZW50aXR5IG9mIHRoZSBwZXJzcGVjdGl2ZS5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBjcmVhdGUgdGhlIGluaXRpYWwgbGF5b3V0IGZvciB0aGUgcGVyc3BlY3RpdmUuIFRoZSBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogU2VlIHtAbGluayBXb3JrYmVuY2hMYXlvdXRGbn0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGFuIGV4YW1wbGUuXG4gICAqL1xuICBsYXlvdXQ6IFdvcmtiZW5jaExheW91dEZuO1xuICAvKipcbiAgICogQXNzb2NpYXRlcyBhcmJpdHJhcnkgZGF0YSB3aXRoIHRoZSBwZXJzcGVjdGl2ZSwgZS5nLiwgYSBsYWJlbCwgaWNvbiBvciB0b29sdGlwLlxuICAgKi9cbiAgZGF0YT86IHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAvKipcbiAgICogRGVjaWRlcyBpZiB0aGUgcGVyc3BlY3RpdmUgY2FuIGJlIGFjdGl2YXRlZC4gVGhlIGZ1bmN0aW9uIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgY2FuQWN0aXZhdGU/OiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHBlcnNwZWN0aXZlIGFzIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICB0cmFuc2llbnQ/OiB0cnVlO1xufVxuXG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRvIHByb3ZpZGUgYSB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIFRoZSB3b3JrYmVuY2ggd2lsbCBpbnZva2UgdGhpcyBmdW5jdGlvbiB3aXRoIGEgZmFjdG9yeSB0byBjcmVhdGUgdGhlIGxheW91dC4gVGhlIGxheW91dCBpcyBpbW11dGFibGUsIHNvIGVhY2ggbW9kaWZpY2F0aW9uIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UuXG4gKiBVc2UgdGhlIGluc3RhbmNlIGZvciBmdXJ0aGVyIG1vZGlmaWNhdGlvbnMgYW5kIGZpbmFsbHkgcmV0dXJuIGl0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBjYW4gY2FsbCBgaW5qZWN0YCB0byBnZXQgYW55IHJlcXVpcmVkIGRlcGVuZGVuY2llcy5cbiAqXG4gKiAjIyBXb3JrYmVuY2ggTGF5b3V0XG4gKiBUaGUgd29ya2JlbmNoIGxheW91dCBpcyBhIGdyaWQgb2YgcGFydHMuIFBhcnRzIGFyZSBhbGlnbmVkIHJlbGF0aXZlIHRvIGVhY2ggb3RoZXIuIEEgcGFydCBpcyBhIHN0YWNrIG9mIHZpZXdzLiBDb250ZW50IGlzIGRpc3BsYXllZCBpbiB2aWV3cy5cbiAqXG4gKiBUaGUgbGF5b3V0IGNhbiBiZSBkaXZpZGVkIGludG8gYSBtYWluIGFuZCBhIHBlcmlwaGVyYWwgYXJlYSwgd2l0aCB0aGUgbWFpbiBhcmVhIGFzIHRoZSBwcmltYXJ5IHBsYWNlIGZvciBvcGVuaW5nIHZpZXdzLlxuICogVGhlIHBlcmlwaGVyYWwgYXJlYSBhcnJhbmdlcyBwYXJ0cyBhcm91bmQgdGhlIG1haW4gYXJlYSB0byBwcm92aWRlIG5hdmlnYXRpb24gb3IgY29udGV4dC1zZW5zaXRpdmUgYXNzaXN0YW5jZSB0byBzdXBwb3J0XG4gKiB0aGUgdXNlcidzIHdvcmtmbG93LiBEZWZpbmluZyBhIG1haW4gYXJlYSBpcyBvcHRpb25hbCBhbmQgcmVjb21tZW5kZWQgZm9yIGFwcGxpY2F0aW9ucyByZXF1aXJpbmcgYSBkZWRpY2F0ZWQgYW5kIG1heGltaXphYmxlXG4gKiBhcmVhIGZvciB1c2VyIGludGVyYWN0aW9uLlxuICpcbiAqICMjIFN0ZXBzIHRvIGNyZWF0ZSB0aGUgbGF5b3V0XG4gKiBTdGFydCBieSBhZGRpbmcgdGhlIGZpcnN0IHBhcnQuIEZyb20gdGhlcmUsIHlvdSBjYW4gZ3JhZHVhbGx5IGFkZCBtb3JlIHBhcnRzIGFuZCBhbGlnbiB0aGVtIHJlbGF0aXZlIHRvIGVhY2ggb3RoZXIuXG4gKiBOZXh0LCBhZGQgdmlld3MgdG8gdGhlIGxheW91dCwgc3BlY2lmeWluZyB0byB3aGljaCBwYXJ0IHRvIGFkZCB0aGUgdmlld3MuXG4gKiBUaGUgZmluYWwgc3RlcCBpcyB0byBuYXZpZ2F0ZSB0aGUgdmlld3MuIEEgdmlldyBjYW4gYmUgbmF2aWdhdGVkIHRvIGFueSByb3V0ZS5cbiAqXG4gKiBUbyBhdm9pZCBjbHV0dGVyaW5nIHRoZSBpbml0aWFsIFVSTCwgd2UgcmVjb21tZW5kIG5hdmlnYXRpbmcgdGhlIHZpZXdzIG9mIHRoZSBpbml0aWFsIGxheW91dCB0byBlbXB0eSBwYXRoIHJvdXRlcyBhbmQgdXNpbmcgYSBuYXZpZ2F0aW9uIGhpbnQgdG8gZGlmZmVyZW50aWF0ZS5cbiAqXG4gKiAjIyBFeGFtcGxlXG4gKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVmaW5lcyBhIGxheW91dCB3aXRoIGEgbWFpbiBhcmVhIGFuZCB0aHJlZSBwYXJ0cyBpbiB0aGUgcGVyaXBoZXJhbCBhcmVhOlxuICpcbiAqIGBgYHBsYWluXG4gKiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLStcbiAqIHwgIHRvcCAgIHwgICBtYWluIGFyZWEgICAgfFxuICogfCAgbGVmdCAgfCAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0rICAgICAgICAgICAgICAgIHxcbiAqIHwgYm90dG9tIHwgICAgICAgICAgICAgICAgfFxuICogfCAgbGVmdCAgfCAgICAgICAgICAgICAgICB8XG4gKiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLStcbiAqIHwgICAgICAgICAgYm90dG9tICAgICAgICAgfFxuICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiBgYGBcbiAqXG4gKiBgYGB0c1xuICogZnVuY3Rpb24gZGVmaW5lTGF5b3V0KGZhY3Rvcnk6IFdvcmtiZW5jaExheW91dEZhY3RvcnkpOiBXb3JrYmVuY2hMYXlvdXQge1xuICogICByZXR1cm4gZmFjdG9yeVxuICogICAgIC8vIEFkZCBwYXJ0cyB0byB0aGUgbGF5b3V0LlxuICogICAgIC5hZGRQYXJ0KE1BSU5fQVJFQSlcbiAqICAgICAuYWRkUGFydCgndG9wTGVmdCcsIHtyZWxhdGl2ZVRvOiBNQUlOX0FSRUEsIGFsaWduOiAnbGVmdCcsIHJhdGlvOiAuMjV9KVxuICogICAgIC5hZGRQYXJ0KCdib3R0b21MZWZ0Jywge3JlbGF0aXZlVG86ICd0b3BMZWZ0JywgYWxpZ246ICdib3R0b20nLCByYXRpbzogLjV9KVxuICogICAgIC5hZGRQYXJ0KCdib3R0b20nLCB7YWxpZ246ICdib3R0b20nLCByYXRpbzogLjN9KVxuICpcbiAqICAgICAvLyBBZGQgdmlld3MgdG8gdGhlIGxheW91dC5cbiAqICAgICAuYWRkVmlldygnbmF2aWdhdG9yJywge3BhcnRJZDogJ3RvcExlZnQnfSlcbiAqICAgICAuYWRkVmlldygnZXhwbG9yZXInLCB7cGFydElkOiAnYm90dG9tTGVmdCd9KVxuICogICAgIC5hZGRWaWV3KCdjb25zb2xlJywge3BhcnRJZDogJ2JvdHRvbSd9KVxuICogICAgIC5hZGRWaWV3KCdwcm9ibGVtcycsIHtwYXJ0SWQ6ICdib3R0b20nfSlcbiAqICAgICAuYWRkVmlldygnc2VhcmNoJywge3BhcnRJZDogJ2JvdHRvbSd9KVxuICpcbiAqICAgICAvLyBOYXZpZ2F0ZSB2aWV3cy5cbiAqICAgICAubmF2aWdhdGVWaWV3KCduYXZpZ2F0b3InLCBbJ3BhdGgvdG8vbmF2aWdhdG9yJ10pXG4gKiAgICAgLm5hdmlnYXRlVmlldygnZXhwbG9yZXInLCBbJ3BhdGgvdG8vZXhwbG9yZXInXSlcbiAqICAgICAubmF2aWdhdGVWaWV3KCdjb25zb2xlJywgW10sIHtoaW50OiAnY29uc29sZSd9KSAvLyBTZXQgaGludCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gcm91dGVzIHdpdGggYW4gZW1wdHkgcGF0aC5cbiAqICAgICAubmF2aWdhdGVWaWV3KCdwcm9ibGVtcycsIFtdLCB7aGludDogJ3Byb2JsZW1zJ30pIC8vIFNldCBoaW50IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiByb3V0ZXMgd2l0aCBhbiBlbXB0eSBwYXRoLlxuICogICAgIC5uYXZpZ2F0ZVZpZXcoJ3NlYXJjaCcsIFsncGF0aC90by9zZWFyY2gnXSlcbiAqXG4gKiAgICAgLy8gRGVjaWRlIHdoaWNoIHZpZXdzIHRvIGFjdGl2YXRlLlxuICogICAgIC5hY3RpdmF0ZVZpZXcoJ25hdmlnYXRvcicpXG4gKiAgICAgLmFjdGl2YXRlVmlldygnZXhwbG9yZXInKVxuICogICAgIC5hY3RpdmF0ZVZpZXcoJ2NvbnNvbGUnKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBsYXlvdXQgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyByb3V0ZXMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7Ym9vdHN0cmFwQXBwbGljYXRpb259IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuICogaW1wb3J0IHtwcm92aWRlUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuICogaW1wb3J0IHtjYW5NYXRjaFdvcmtiZW5jaFZpZXd9IGZyb20gJ0BzY2lvbi93b3JrYmVuY2gnO1xuICpcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlUm91dGVyKFtcbiAqICAgICAgIC8vIE5hdmlnYXRvciBWaWV3XG4gKiAgICAgICB7cGF0aDogJ3BhdGgvdG8vbmF2aWdhdG9yJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL25hdmlnYXRvci9uYXZpZ2F0b3IuY29tcG9uZW50Jyl9LFxuICogICAgICAgLy8gRXhwbG9yZXIgVmlld1xuICogICAgICAge3BhdGg6ICdwYXRoL3RvL2V4cGxvcmVyJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2V4cGxvcmVyL2V4cGxvcmVyLmNvbXBvbmVudCcpfSxcbiAqICAgICAgIC8vIFNlYXJjaCB2aWV3XG4gKiAgICAgICB7cGF0aDogJ3BhdGgvdG8vc2VhcmNoJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3NlYXJjaC9zZWFyY2guY29tcG9uZW50Jyl9LFxuICogICAgICAgLy8gQ29uc29sZSB2aWV3XG4gKiAgICAgICB7cGF0aDogJycsIGNhbk1hdGNoOiBbY2FuTWF0Y2hXb3JrYmVuY2hWaWV3KCdjb25zb2xlJyldLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vY29uc29sZS9jb25zb2xlLmNvbXBvbmVudCcpfSxcbiAqICAgICAgIC8vIFByb2JsZW1zIHZpZXdcbiAqICAgICAgIHtwYXRoOiAnJywgY2FuTWF0Y2g6IFtjYW5NYXRjaFdvcmtiZW5jaFZpZXcoJ3Byb2JsZW1zJyldLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vcHJvYmxlbXMvcHJvYmxlbXMuY29tcG9uZW50Jyl9LFxuICogICAgIF0pLFxuICogICBdLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgV29ya2JlbmNoTGF5b3V0Rm4gPSAoZmFjdG9yeTogV29ya2JlbmNoTGF5b3V0RmFjdG9yeSkgPT4gUHJvbWlzZTxXb3JrYmVuY2hMYXlvdXQ+IHwgV29ya2JlbmNoTGF5b3V0O1xuXG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHByb3ZpZGVkIGluIHtAbGluayBXb3JrYmVuY2hQZXJzcGVjdGl2ZXMjaW5pdGlhbFBlcnNwZWN0aXZlfSB0byBzZWxlY3QgdGhlIHBlcnNwZWN0aXZlIGZvciB0aGUgaW5pdGlhbCB3b3JrYmVuY2ggbGF5b3V0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiBpcyBwYXNzZWQgYSBsaXN0IG9mIHJlZ2lzdGVyZWQgcGVyc3BlY3RpdmVzLiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtiZW5jaFBlcnNwZWN0aXZlU2VsZWN0aW9uRm4gPSAocGVyc3BlY3RpdmVzOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVtdKSA9PiBQcm9taXNlPFdvcmtiZW5jaFBlcnNwZWN0aXZlIHwgbnVsbD4gfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZSB8IG51bGw7XG5cbi8qKlxuICogQ29udGFpbnMgZGlmZmVyZW50IHZlcnNpb25zIG9mIGEgcGVyc3BlY3RpdmUgbGF5b3V0LlxuICpcbiAqIFRoZSBNLXByZWZpeCBpbmRpY2F0ZXMgdGhpcyBvYmplY3QgaXMgYSBtb2RlbCBvYmplY3QgdGhhdCBpcyBzZXJpYWxpemVkIGFuZCBzdG9yZWQsIHJlcXVpcmluZyBtaWdyYXRpb24gb24gYnJlYWtpbmcgY2hhbmdlLlxuICpcbiAqIEBzZWUgV09SS0JFTkNIX1BFUlNQRUNUSVZFX01PREVMX1ZFUlNJT05cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNUGVyc3BlY3RpdmVMYXlvdXQge1xuICAvKipcbiAgICogTGF5b3V0IGJlZm9yZSBhbnkgdXNlciBwZXJzb25hbGl6YXRpb24gKGluaXRpYWwgbGF5b3V0KS5cbiAgICovXG4gIHJlZmVyZW5jZUxheW91dDoge1xuICAgIC8qKlxuICAgICAqIEBzZWUgV29ya2JlbmNoTGF5b3V0U2VyaWFsaXplci5zZXJpYWxpemVHcmlkXG4gICAgICogQHNlZSBXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyLmRlc2VyaWFsaXplR3JpZFxuICAgICAqL1xuICAgIHdvcmtiZW5jaEdyaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuc2VyaWFsaXplVmlld091dGxldHNcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVWaWV3T3V0bGV0c1xuICAgICAqL1xuICAgIHZpZXdPdXRsZXRzOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBMYXlvdXQgcGVyc29uYWxpemVkIGJ5IHRoZSB1c2VyLlxuICAgKi9cbiAgdXNlckxheW91dDoge1xuICAgIC8qKlxuICAgICAqIEBzZWUgV29ya2JlbmNoTGF5b3V0U2VyaWFsaXplci5zZXJpYWxpemVHcmlkXG4gICAgICogQHNlZSBXb3JrYmVuY2hMYXlvdXRTZXJpYWxpemVyLmRlc2VyaWFsaXplR3JpZFxuICAgICAqL1xuICAgIHdvcmtiZW5jaEdyaWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuc2VyaWFsaXplVmlld091dGxldHNcbiAgICAgKiBAc2VlIFdvcmtiZW5jaExheW91dFNlcmlhbGl6ZXIuZGVzZXJpYWxpemVWaWV3T3V0bGV0c1xuICAgICAqL1xuICAgIHZpZXdPdXRsZXRzOiBzdHJpbmc7XG4gIH07XG59XG4iXX0=
@@ -45,10 +45,10 @@ export class WorkbenchPerspectiveRegistry {
45
45
  this._registry.objects.forEach(perspective => perspective.destroy());
46
46
  this._registry.clear();
47
47
  }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
49
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveRegistry, providedIn: 'root' }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
49
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveRegistry, providedIn: 'root' }); }
50
50
  }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveRegistry, decorators: [{
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveRegistry, decorators: [{
52
52
  type: Injectable,
53
53
  args: [{ providedIn: 'root' }]
54
54
  }] });
@@ -31,13 +31,13 @@ export class WorkbenchPerspectiveService {
31
31
  .catch(error => logger.error(() => 'Failed to initialize perspectives', error));
32
32
  }
33
33
  async init() {
34
- await this.registerPerspectivesFromModuleConfig();
34
+ await this.registerPerspectivesFromConfig();
35
35
  await this.registerAnonymousPerspectiveFromWindowName();
36
36
  }
37
37
  /**
38
- * Registers perspectives configured in {@link WorkbenchModuleConfig}.
38
+ * Registers perspectives configured in {@link WorkbenchConfig}.
39
39
  */
40
- async registerPerspectivesFromModuleConfig() {
40
+ async registerPerspectivesFromConfig() {
41
41
  // Register perspective either from function or object config.
42
42
  if (typeof this._layoutConfig === 'function') {
43
43
  await this.registerPerspective({ id: DEFAULT_WORKBENCH_PERSPECTIVE_ID, layout: this._layoutConfig });
@@ -78,13 +78,18 @@ export class WorkbenchPerspectiveService {
78
78
  }
79
79
  /**
80
80
  * Switches to the specified perspective. The main area will not change, if any.
81
+ *
82
+ * @param id - Specifies the id of the perspective to activate.
83
+ * @param options - Controls activation of the perspective.
84
+ * @param options.storePerspectiveAsActive - Controls if to store the perspective as the active perspective. Default is `true`.
85
+ * @return `true` if activated the perspective, otherwise `false`.
81
86
  */
82
- async switchPerspective(id) {
87
+ async switchPerspective(id, options) {
83
88
  if (this.activePerspective?.id === id) {
84
89
  return true;
85
90
  }
86
91
  const activated = await this._perspectiveRegistry.get(id).activate();
87
- if (activated) {
92
+ if (activated && (options?.storePerspectiveAsActive ?? true)) {
88
93
  await this._workbenchPerspectiveStorageService.storeActivePerspectiveId(id);
89
94
  window.name = generatePerspectiveWindowName(id);
90
95
  }
@@ -127,7 +132,7 @@ export class WorkbenchPerspectiveService {
127
132
  })();
128
133
  // Select initial perspective.
129
134
  if (initialPerspectiveId) {
130
- await this.switchPerspective(initialPerspectiveId);
135
+ await this.switchPerspective(initialPerspectiveId, { storePerspectiveAsActive: false });
131
136
  }
132
137
  }
133
138
  /**
@@ -136,10 +141,10 @@ export class WorkbenchPerspectiveService {
136
141
  get activePerspective() {
137
142
  return this._perspectiveRegistry.perspectives.find(perspective => perspective.active) ?? null;
138
143
  }
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveService, deps: [{ token: WORKBENCH_LAYOUT_CONFIG }, { token: i1.WorkbenchPerspectiveRegistry }, { token: i0.EnvironmentInjector }, { token: i2.WorkbenchPerspectiveStorageService }, { token: i3.WorkbenchStartup }, { token: i4.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
140
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveService, providedIn: 'root' }); }
144
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveService, deps: [{ token: WORKBENCH_LAYOUT_CONFIG }, { token: i1.WorkbenchPerspectiveRegistry }, { token: i0.EnvironmentInjector }, { token: i2.WorkbenchPerspectiveStorageService }, { token: i3.WorkbenchStartup }, { token: i4.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
145
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveService, providedIn: 'root' }); }
141
146
  }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WorkbenchPerspectiveService, decorators: [{
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkbenchPerspectiveService, decorators: [{
143
148
  type: Injectable,
144
149
  args: [{ providedIn: 'root' }]
145
150
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -163,4 +168,4 @@ function parsePerspectiveIdFromWindowName() {
163
168
  const windowNameRegex = new RegExp(`^${generatePerspectiveWindowName('(?<perspective>.+)')}$`);
164
169
  return window.name.match(windowNameRegex)?.groups['perspective'] ?? null;
165
170
  }
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtcGVyc3BlY3RpdmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBc0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9yRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQUVyRDs7R0FFRztBQUVILE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFBcUQsYUFBd0QsRUFDekYsb0JBQWtELEVBQ2xELG9CQUF5QyxFQUN6QyxtQ0FBdUUsRUFDL0UsZ0JBQWtDLEVBQ2xDLE1BQWM7UUFMMkIsa0JBQWEsR0FBYixhQUFhLENBQTJDO1FBQ3pGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBOEI7UUFDbEQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6Qyx3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQW9DO1FBR3pGLGdCQUFnQixDQUFDLFdBQVc7YUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2FBQzdDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFD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RUwsOEJBQThCO1FBQzlCLElBQUksb0JBQW9CLEVBQUU7WUFDeEIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQVksaUJBQWlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ2hHLENBQUM7OEdBbElVLDJCQUEyQixrQkFFbEIsdUJBQXVCO2tIQUZoQywyQkFBMkIsY0FEZixNQUFNOzsyRkFDbEIsMkJBQTJCO2tCQUR2QyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7MEJBR2pCLE1BQU07MkJBQUMsdUJBQXVCOztBQW1JN0M7O0dBRUc7QUFDSCxNQUFNLGdDQUFnQyxHQUFHLFNBQVMsQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxhQUFxQjtJQUNqRSxPQUFPLCtCQUErQixhQUFhLEVBQUUsQ0FBQztBQUN4RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGdDQUFnQztJQUN2QyxNQUFNLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLDZCQUE2QixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9GLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsTUFBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuaW1wb3J0IHtFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3QsIEluamVjdGFibGUsIHJ1bkluSW5qZWN0aW9uQ29udGV4dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoUGVyc3BlY3RpdmV9IGZyb20gJy4vybV3b3JrYmVuY2gtcGVyc3BlY3RpdmUubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRGbiwgV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uLCBXb3JrYmVuY2hQZXJzcGVjdGl2ZXN9IGZyb20gJy4vd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoSW5pdGlhbGl6ZXJ9IGZyb20gJy4uL3N0YXJ0dXAvd29ya2JlbmNoLWluaXRpYWxpemVyJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1dvcmtiZW5jaFN0YXJ0dXB9IGZyb20gJy4uL3N0YXJ0dXAvd29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZVJlZ2lzdHJ5fSBmcm9tICcuL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5yZWdpc3RyeSc7XG5pbXBvcnQge1dvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4vd29ya2JlbmNoLXBlcnNwZWN0aXZlLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1dPUktCRU5DSF9MQVlPVVRfQ09ORklHfSBmcm9tICcuLi93b3JrYmVuY2guY29uc3RhbnRzJztcbmltcG9ydCB7QU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWH0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge01BSU5fQVJFQX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQnO1xuXG4vKipcbiAqIEVuYWJsZXMgcmVnaXN0cmF0aW9uIGFuZCBhY3RpdmF0aW9uIG9mIHBlcnNwZWN0aXZlcy5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoUGVyc3BlY3RpdmVTZXJ2aWNlIGltcGxlbWVudHMgV29ya2JlbmNoSW5pdGlhbGl6ZXIge1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoV09SS0JFTkNIX0xBWU9VVF9DT05GSUcpIHByaXZhdGUgX2xheW91dENvbmZpZzogV29ya2JlbmNoTGF5b3V0Rm4gfCBXb3JrYmVuY2hQZXJzcGVjdGl2ZXMsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3BlcnNwZWN0aXZlUmVnaXN0cnk6IFdvcmtiZW5jaFBlcnNwZWN0aXZlUmVnaXN0cnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX2Vudmlyb25tZW50SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3dvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2U6IFdvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHdvcmtiZW5jaFN0YXJ0dXA6IFdvcmtiZW5jaFN0YXJ0dXAsXG4gICAgICAgICAgICAgIGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgd29ya2JlbmNoU3RhcnR1cC53aGVuU3RhcnRlZFxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5hY3RpdmF0ZUluaXRpYWxQZXJzcGVjdGl2ZSgpKVxuICAgICAgLmNhdGNoKGVycm9yID0+IGxvZ2dlci5lcnJvcigoKSA9PiAnRmFpbGVkIHRvIGluaXRpYWxpemUgcGVyc3BlY3RpdmVzJywgZXJyb3IpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJQZXJzcGVjdGl2ZXNGcm9tTW9kdWxlQ29uZmlnKCk7XG4gICAgYXdhaXQgdGhpcy5yZWdpc3RlckFub255bW91c1BlcnNwZWN0aXZlRnJvbVdpbmRvd05hbWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgcGVyc3BlY3RpdmVzIGNvbmZpZ3VyZWQgaW4ge0BsaW5rIFdvcmtiZW5jaE1vZHVsZUNvbmZpZ30uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlZ2lzdGVyUGVyc3BlY3RpdmVzRnJvbU1vZHVsZUNvbmZpZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBSZWdpc3RlciBwZXJzcGVjdGl2ZSBlaXRoZXIgZnJvbSBmdW5jdGlvbiBvciBvYmplY3QgY29uZmlnLlxuICAgIGlmICh0eXBlb2YgdGhpcy5fbGF5b3V0Q29uZmlnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyUGVyc3BlY3RpdmUoe2lkOiBERUZBVUxUX1dPUktCRU5DSF9QRVJTUEVDVElWRV9JRCwgbGF5b3V0OiB0aGlzLl9sYXlvdXRDb25maWd9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IHBlcnNwZWN0aXZlIG9mIHRoaXMuX2xheW91dENvbmZpZy5wZXJzcGVjdGl2ZXMpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWdpc3RlclBlcnNwZWN0aXZlKHBlcnNwZWN0aXZlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGFuIGFub255bW91cyBwZXJzcGVjdGl2ZSBpZiB0aGUgd2luZG93IG5hbWUgaW5kaWNhdGVzIGl0LlxuICAgKiBUaGUgcGVyc3BlY3RpdmUgaXMgbWFya2VkIHRyYW5zaWVudCwgd2l0aCBpdHMgbGF5b3V0IG9ubHkgbWVtb2l6ZWQsIG5vdCBwZXJzaXN0ZWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlZ2lzdGVyQW5vbnltb3VzUGVyc3BlY3RpdmVGcm9tV2luZG93TmFtZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB3aW5kb3dQZXJzcGVjdGl2ZUlkID0gcGFyc2VQZXJzcGVjdGl2ZUlkRnJvbVdpbmRvd05hbWUoKTtcbiAgICBpZiAod2luZG93UGVyc3BlY3RpdmVJZD8uc3RhcnRzV2l0aChBTk9OWU1PVVNfUEVSU1BFQ1RJVkVfSURfUFJFRklYKSkge1xuICAgICAgYXdhaXQgdGhpcy5yZWdpc3RlclBlcnNwZWN0aXZlKHtcbiAgICAgICAgaWQ6IHdpbmRvd1BlcnNwZWN0aXZlSWQsXG4gICAgICAgIGxheW91dDogZmFjdG9yeSA9PiBmYWN0b3J5LmFkZFBhcnQoTUFJTl9BUkVBKSxcbiAgICAgICAgdHJhbnNpZW50OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgZ2l2ZW4gcGVyc3BlY3RpdmUgdG8gYXJyYW5nZSB2aWV3cyBhcm91bmQgdGhlIG1haW4gYXJlYS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWdpc3RlclBlcnNwZWN0aXZlKGRlZmluaXRpb246IFdvcmtiZW5jaFBlcnNwZWN0aXZlRGVmaW5pdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBlcnNwZWN0aXZlSWQgPSBkZWZpbml0aW9uLmlkO1xuXG4gICAgaWYgKHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkuaGFzKHBlcnNwZWN0aXZlSWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgRmFpbGVkIHRvIHJlZ2lzdGVyIHBlcnNwZWN0aXZlICcke3BlcnNwZWN0aXZlSWR9Jy4gQW5vdGhlciBwZXJzcGVjdGl2ZSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgdW5kZXIgdGhhdCBpZGVudGl0eS5gKTtcbiAgICB9XG4gICAgaWYgKGRlZmluaXRpb24uY2FuQWN0aXZhdGUgJiYgIShhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gZGVmaW5pdGlvbi5jYW5BY3RpdmF0ZSEoKSkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGVyc3BlY3RpdmUgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gbmV3IMm1V29ya2JlbmNoUGVyc3BlY3RpdmUoZGVmaW5pdGlvbikpO1xuICAgIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucmVnaXN0ZXIocGVyc3BlY3RpdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN3aXRjaGVzIHRvIHRoZSBzcGVjaWZpZWQgcGVyc3BlY3RpdmUuIFRoZSBtYWluIGFyZWEgd2lsbCBub3QgY2hhbmdlLCBpZiBhbnkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3dpdGNoUGVyc3BlY3RpdmUoaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmFjdGl2ZVBlcnNwZWN0aXZlPy5pZCA9PT0gaWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBhY3RpdmF0ZWQgPSBhd2FpdCB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LmdldChpZCkuYWN0aXZhdGUoKTtcbiAgICBpZiAoYWN0aXZhdGVkKSB7XG4gICAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hQZXJzcGVjdGl2ZVN0b3JhZ2VTZXJ2aWNlLnN0b3JlQWN0aXZlUGVyc3BlY3RpdmVJZChpZCk7XG4gICAgICB3aW5kb3cubmFtZSA9IGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKGlkKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2YXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgcGVyc3BlY3RpdmUgdG8gaXRzIGluaXRpYWwgbGF5b3V0LiBUaGUgbWFpbiBhcmVhIHdpbGwgbm90IGNoYW5nZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZXNldFBlcnNwZWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aXZlUGVyc3BlY3RpdmU/LnJlc2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBpbml0aWFsIHBlcnNwZWN0aXZlLCBpZiBhbnkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGFjdGl2YXRlSW5pdGlhbFBlcnNwZWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZS5cbiAgICBjb25zdCBpbml0aWFsUGVyc3BlY3RpdmVJZCA9IGF3YWl0IChhc3luYyAoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZSB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSB3aW5kb3cgbmFtZS5cbiAgICAgIGNvbnN0IHBlcnNwZWN0aXZlRnJvbVdpbmRvdyA9IHBhcnNlUGVyc3BlY3RpdmVJZEZyb21XaW5kb3dOYW1lKCk7XG4gICAgICBpZiAocGVyc3BlY3RpdmVGcm9tV2luZG93ICYmIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkuaGFzKHBlcnNwZWN0aXZlRnJvbVdpbmRvdykpIHtcbiAgICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbVdpbmRvdztcbiAgICAgIH1cblxuICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBpbml0aWFsIHBlcnNwZWN0aXZlIHVzaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIHN0b3JhZ2UuXG4gICAgICBjb25zdCBwZXJzcGVjdGl2ZUZyb21TdG9yYWdlID0gYXdhaXQgdGhpcy5fd29ya2JlbmNoUGVyc3BlY3RpdmVTdG9yYWdlU2VydmljZS5sb2FkQWN0aXZlUGVyc3BlY3RpdmVJZCgpO1xuICAgICAgaWYgKHBlcnNwZWN0aXZlRnJvbVN0b3JhZ2UgJiYgdGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5oYXMocGVyc3BlY3RpdmVGcm9tU3RvcmFnZSkpIHtcbiAgICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbVN0b3JhZ2U7XG4gICAgICB9XG5cbiAgICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZSB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjb25maWcuXG4gICAgICBjb25zdCBwZXJzcGVjdGl2ZUZyb21Db25maWcgPSB0eXBlb2YgdGhpcy5fbGF5b3V0Q29uZmlnID09PSAnb2JqZWN0JyA/IHRoaXMuX2xheW91dENvbmZpZy5pbml0aWFsUGVyc3BlY3RpdmUgOiBudWxsO1xuICAgICAgaWYgKCFwZXJzcGVjdGl2ZUZyb21Db25maWcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucGVyc3BlY3RpdmVzWzBdPy5pZDtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgcGVyc3BlY3RpdmVGcm9tQ29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcGVyc3BlY3RpdmVGcm9tQ29uZmlnO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBwZXJzcGVjdGl2ZUZyb21Db25maWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gcGVyc3BlY3RpdmVGcm9tQ29uZmlnKFsuLi50aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LnBlcnNwZWN0aXZlc10pKSk/LmlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KSgpO1xuXG4gICAgLy8gU2VsZWN0IGluaXRpYWwgcGVyc3BlY3RpdmUuXG4gICAgaWYgKGluaXRpYWxQZXJzcGVjdGl2ZUlkKSB7XG4gICAgICBhd2FpdCB0aGlzLnN3aXRjaFBlcnNwZWN0aXZlKGluaXRpYWxQZXJzcGVjdGl2ZUlkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudGx5IGFjdGl2ZSBwZXJzcGVjdGl2ZSwgb3IgYG51bGxgIGlmIHRoZXJlIGlzIG5vIGN1cnJlbnQgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBwcml2YXRlIGdldCBhY3RpdmVQZXJzcGVjdGl2ZSgpOiDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucGVyc3BlY3RpdmVzLmZpbmQocGVyc3BlY3RpdmUgPT4gcGVyc3BlY3RpdmUuYWN0aXZlKSA/PyBudWxsO1xuICB9XG59XG5cbi8qKlxuICogSWRlbnRpZmllciBmb3IgdGhlIFwiZGVmYXVsdFwiIHBlcnNwZWN0aXZlIHRoYXQgdGhlIHdvcmtiZW5jaCBjcmVhdGVzIGlmIG5vdCBwcm92aWRpbmcgYSBuYW1lZCBsYXlvdXQuXG4gKi9cbmNvbnN0IERFRkFVTFRfV09SS0JFTkNIX1BFUlNQRUNUSVZFX0lEID0gJ2RlZmF1bHQnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgd2luZG93IG5hbWUgZm9yIGdpdmVuIHBlcnNwZWN0aXZlIHRvIGNvbnRyb2wgd2hpY2ggcGVyc3BlY3RpdmUgdG8gZGlzcGxheSBpbiBhIHdpbmRvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgc2Npb24ud29ya2JlbmNoLnBlcnNwZWN0aXZlLiR7cGVyc3BlY3RpdmVJZH1gO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgcGVyc3BlY3RpdmUgaWRlbnRpdHkgZnJvbSB0aGUgd2luZG93IG5hbWUsIHJldHVybmluZyBgbnVsbGAgaWYgbm90IHNldC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VQZXJzcGVjdGl2ZUlkRnJvbVdpbmRvd05hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHdpbmRvd05hbWVSZWdleCA9IG5ldyBSZWdFeHAoYF4ke2dlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKCcoPzxwZXJzcGVjdGl2ZT4uKyknKX0kYCk7XG4gIHJldHVybiB3aW5kb3cubmFtZS5tYXRjaCh3aW5kb3dOYW1lUmVnZXgpPy5ncm91cHMhWydwZXJzcGVjdGl2ZSddID8/IG51bGw7XG59XG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXBlcnNwZWN0aXZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9wZXJzcGVjdGl2ZS93b3JrYmVuY2gtcGVyc3BlY3RpdmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBc0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9yRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQUVyRDs7R0FFRztBQUVILE1BQU0sT0FBTywyQkFBMkI7SUFFdEMsWUFBcUQsYUFBd0QsRUFDekYsb0JBQWtELEVBQ2xELG9CQUF5QyxFQUN6QyxtQ0FBdUUsRUFDL0UsZ0JBQWtDLEVBQ2xDLE1BQWM7UUFMMkIsa0JBQWEsR0FBYixhQUFhLENBQTJDO1FBQ3pGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBOEI7UUFDbEQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6Qyx3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQW9DO1FBR3pGLGdCQUFnQixDQUFDLFdBQVc7YUFDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2FBQzdDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDZixNQUFNLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxDQUFDLDBDQUEwQyxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLDhCQUE4QjtRQUMxQyw4REFBOEQ7UUFDOUQsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssVUFBVSxFQUFFO1lBQzVDLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUMsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQztTQUNwRzthQUNJO1lBQ0gsS0FBSyxNQUFNLFdBQVcsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRTtnQkFDekQsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDN0M7U0FDRjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxLQUFLLENBQUMsMENBQTBDO1FBQ3RELE1BQU0sbUJBQW1CLEdBQUcsZ0NBQWdDLEVBQUUsQ0FBQztRQUMvRCxJQUFJLG1CQUFtQixFQUFFLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDO2dCQUM3QixFQUFFLEVBQUUsbUJBQW1CO2dCQUN2QixNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztnQkFDN0MsU0FBUyxFQUFFLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsVUFBMEM7UUFDekUsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDaEQsTUFBTSxLQUFLLENBQUMsbUNBQW1DLGFBQWEsbUVBQW1FLENBQUMsQ0FBQztTQUNsSTtRQUNELElBQUksVUFBVSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVksRUFBRSxDQUFDLENBQUMsRUFBRTtZQUN4SCxPQUFPO1NBQ1I7UUFFRCxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2xILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBVSxFQUFFLE9BQThDO1FBQ3ZGLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyRSxJQUFJLFNBQVMsSUFBSSxDQUFDLE9BQU8sRUFBRSx3QkFBd0IsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUM1RCxNQUFNLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGdCQUFnQjtRQUMzQixNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsMEJBQTBCO1FBQ3RDLHFDQUFxQztRQUNyQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQWlDLEVBQUU7WUFDMUUsNEVBQTRFO1lBQzVFLE1BQU0scUJBQXFCLEdBQUcsZ0NBQWdDLEVBQUUsQ0FBQztZQUNqRSxJQUFJLHFCQUFxQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRTtnQkFDakYsT0FBTyxxQkFBcUIsQ0FBQzthQUM5QjtZQUVELHdFQUF3RTtZQUN4RSxNQUFNLHNCQUFzQixHQUFHLE1BQU0sSUFBSSxDQUFDLG1DQUFtQyxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDeEcsSUFBSSxzQkFBc0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEVBQUU7Z0JBQ25GLE9BQU8sc0JBQXNCLENBQUM7YUFDL0I7WUFFRCx1RUFBdUU7WUFDdkUsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDcEgsSUFBSSxDQUFDLHFCQUFxQixFQUFFO2dCQUMxQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ3REO1lBQ0QsSUFBSSxPQUFPLHFCQUFxQixLQUFLLFFBQVEsRUFBRTtnQkFDN0MsT0FBTyxxQkFBcUIsQ0FBQzthQUM5QjtZQUNELElBQUksT0FBTyxxQkFBcUIsS0FBSyxVQUFVLEVBQUU7Z0JBQy9DLE9BQU8sQ0FBQyxNQUFNLHFCQUFxQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUMvSTtZQUNELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFTCw4QkFBOEI7UUFDOUIsSUFBSSxvQkFBb0IsRUFBRTtZQUN4QixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxFQUFDLHdCQUF3QixFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7U0FDdkY7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFZLGlCQUFpQjtRQUMzQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNoRyxDQUFDOzhHQXZJVSwyQkFBMkIsa0JBRWxCLHVCQUF1QjtrSEFGaEMsMkJBQTJCLGNBRGYsTUFBTTs7MkZBQ2xCLDJCQUEyQjtrQkFEdkMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzBCQUdqQixNQUFNOzJCQUFDLHVCQUF1Qjs7QUF3STdDOztHQUVHO0FBQ0gsTUFBTSxnQ0FBZ0MsR0FBRyxTQUFTLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsYUFBcUI7SUFDakUsT0FBTywrQkFBK0IsYUFBYSxFQUFFLENBQUM7QUFDeEQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxnQ0FBZ0M7SUFDdkMsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSw2QkFBNkIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDNUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cbmltcG9ydCB7RW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0LCBJbmplY3RhYmxlLCBydW5JbkluamVjdGlvbkNvbnRleHR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFBlcnNwZWN0aXZlfSBmcm9tICcuL8m1d29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoTGF5b3V0Rm4sIFdvcmtiZW5jaFBlcnNwZWN0aXZlRGVmaW5pdGlvbiwgV29ya2JlbmNoUGVyc3BlY3RpdmVzfSBmcm9tICcuL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5tb2RlbCc7XG5pbXBvcnQge1dvcmtiZW5jaEluaXRpYWxpemVyfSBmcm9tICcuLi9zdGFydHVwL3dvcmtiZW5jaC1pbml0aWFsaXplcic7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hTdGFydHVwfSBmcm9tICcuLi9zdGFydHVwL3dvcmtiZW5jaC1sYXVuY2hlci5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoUGVyc3BlY3RpdmVSZWdpc3RyeX0gZnJvbSAnLi93b3JrYmVuY2gtcGVyc3BlY3RpdmUucmVnaXN0cnknO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZVN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfTEFZT1VUX0NPTkZJR30gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge0FOT05ZTU9VU19QRVJTUEVDVElWRV9JRF9QUkVGSVh9IGZyb20gJy4uL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuaW1wb3J0IHtNQUlOX0FSRUF9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcblxuLyoqXG4gKiBFbmFibGVzIHJlZ2lzdHJhdGlvbiBhbmQgYWN0aXZhdGlvbiBvZiBwZXJzcGVjdGl2ZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaFBlcnNwZWN0aXZlU2VydmljZSBpbXBsZW1lbnRzIFdvcmtiZW5jaEluaXRpYWxpemVyIHtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFdPUktCRU5DSF9MQVlPVVRfQ09ORklHKSBwcml2YXRlIF9sYXlvdXRDb25maWc6IFdvcmtiZW5jaExheW91dEZuIHwgV29ya2JlbmNoUGVyc3BlY3RpdmVzLFxuICAgICAgICAgICAgICBwcml2YXRlIF9wZXJzcGVjdGl2ZVJlZ2lzdHJ5OiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVJlZ2lzdHJ5LFxuICAgICAgICAgICAgICBwcml2YXRlIF9lbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hQZXJzcGVjdGl2ZVN0b3JhZ2VTZXJ2aWNlOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICAgICAgICB3b3JrYmVuY2hTdGFydHVwOiBXb3JrYmVuY2hTdGFydHVwLFxuICAgICAgICAgICAgICBsb2dnZXI6IExvZ2dlcikge1xuICAgIHdvcmtiZW5jaFN0YXJ0dXAud2hlblN0YXJ0ZWRcbiAgICAgIC50aGVuKCgpID0+IHRoaXMuYWN0aXZhdGVJbml0aWFsUGVyc3BlY3RpdmUoKSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiBsb2dnZXIuZXJyb3IoKCkgPT4gJ0ZhaWxlZCB0byBpbml0aWFsaXplIHBlcnNwZWN0aXZlcycsIGVycm9yKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyUGVyc3BlY3RpdmVzRnJvbUNvbmZpZygpO1xuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJBbm9ueW1vdXNQZXJzcGVjdGl2ZUZyb21XaW5kb3dOYW1lKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHBlcnNwZWN0aXZlcyBjb25maWd1cmVkIGluIHtAbGluayBXb3JrYmVuY2hDb25maWd9LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3RlclBlcnNwZWN0aXZlc0Zyb21Db25maWcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gUmVnaXN0ZXIgcGVyc3BlY3RpdmUgZWl0aGVyIGZyb20gZnVuY3Rpb24gb3Igb2JqZWN0IGNvbmZpZy5cbiAgICBpZiAodHlwZW9mIHRoaXMuX2xheW91dENvbmZpZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYXdhaXQgdGhpcy5yZWdpc3RlclBlcnNwZWN0aXZlKHtpZDogREVGQVVMVF9XT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfSUQsIGxheW91dDogdGhpcy5fbGF5b3V0Q29uZmlnfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBwZXJzcGVjdGl2ZSBvZiB0aGlzLl9sYXlvdXRDb25maWcucGVyc3BlY3RpdmVzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJQZXJzcGVjdGl2ZShwZXJzcGVjdGl2ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhbiBhbm9ueW1vdXMgcGVyc3BlY3RpdmUgaWYgdGhlIHdpbmRvdyBuYW1lIGluZGljYXRlcyBpdC5cbiAgICogVGhlIHBlcnNwZWN0aXZlIGlzIG1hcmtlZCB0cmFuc2llbnQsIHdpdGggaXRzIGxheW91dCBvbmx5IG1lbW9pemVkLCBub3QgcGVyc2lzdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3RlckFub255bW91c1BlcnNwZWN0aXZlRnJvbVdpbmRvd05hbWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgd2luZG93UGVyc3BlY3RpdmVJZCA9IHBhcnNlUGVyc3BlY3RpdmVJZEZyb21XaW5kb3dOYW1lKCk7XG4gICAgaWYgKHdpbmRvd1BlcnNwZWN0aXZlSWQ/LnN0YXJ0c1dpdGgoQU5PTllNT1VTX1BFUlNQRUNUSVZFX0lEX1BSRUZJWCkpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJQZXJzcGVjdGl2ZSh7XG4gICAgICAgIGlkOiB3aW5kb3dQZXJzcGVjdGl2ZUlkLFxuICAgICAgICBsYXlvdXQ6IGZhY3RvcnkgPT4gZmFjdG9yeS5hZGRQYXJ0KE1BSU5fQVJFQSksXG4gICAgICAgIHRyYW5zaWVudDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGdpdmVuIHBlcnNwZWN0aXZlIHRvIGFycmFuZ2Ugdmlld3MgYXJvdW5kIHRoZSBtYWluIGFyZWEuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVnaXN0ZXJQZXJzcGVjdGl2ZShkZWZpbml0aW9uOiBXb3JrYmVuY2hQZXJzcGVjdGl2ZURlZmluaXRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwZXJzcGVjdGl2ZUlkID0gZGVmaW5pdGlvbi5pZDtcblxuICAgIGlmICh0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LmhhcyhwZXJzcGVjdGl2ZUlkKSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEZhaWxlZCB0byByZWdpc3RlciBwZXJzcGVjdGl2ZSAnJHtwZXJzcGVjdGl2ZUlkfScuIEFub3RoZXIgcGVyc3BlY3RpdmUgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHVuZGVyIHRoYXQgaWRlbnRpdHkuYCk7XG4gICAgfVxuICAgIGlmIChkZWZpbml0aW9uLmNhbkFjdGl2YXRlICYmICEoYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3IsICgpID0+IGRlZmluaXRpb24uY2FuQWN0aXZhdGUhKCkpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBlcnNwZWN0aXZlID0gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3IsICgpID0+IG5ldyDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlKGRlZmluaXRpb24pKTtcbiAgICB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LnJlZ2lzdGVyKHBlcnNwZWN0aXZlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTd2l0Y2hlcyB0byB0aGUgc3BlY2lmaWVkIHBlcnNwZWN0aXZlLiBUaGUgbWFpbiBhcmVhIHdpbGwgbm90IGNoYW5nZSwgaWYgYW55LlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBTcGVjaWZpZXMgdGhlIGlkIG9mIHRoZSBwZXJzcGVjdGl2ZSB0byBhY3RpdmF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb250cm9scyBhY3RpdmF0aW9uIG9mIHRoZSBwZXJzcGVjdGl2ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMuc3RvcmVQZXJzcGVjdGl2ZUFzQWN0aXZlIC0gQ29udHJvbHMgaWYgdG8gc3RvcmUgdGhlIHBlcnNwZWN0aXZlIGFzIHRoZSBhY3RpdmUgcGVyc3BlY3RpdmUuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBAcmV0dXJuIGB0cnVlYCBpZiBhY3RpdmF0ZWQgdGhlIHBlcnNwZWN0aXZlLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzd2l0Y2hQZXJzcGVjdGl2ZShpZDogc3RyaW5nLCBvcHRpb25zPzoge3N0b3JlUGVyc3BlY3RpdmVBc0FjdGl2ZT86IGJvb2xlYW59KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuYWN0aXZlUGVyc3BlY3RpdmU/LmlkID09PSBpZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2YXRlZCA9IGF3YWl0IHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkuZ2V0KGlkKS5hY3RpdmF0ZSgpO1xuICAgIGlmIChhY3RpdmF0ZWQgJiYgKG9wdGlvbnM/LnN0b3JlUGVyc3BlY3RpdmVBc0FjdGl2ZSA/PyB0cnVlKSkge1xuICAgICAgYXdhaXQgdGhpcy5fd29ya2JlbmNoUGVyc3BlY3RpdmVTdG9yYWdlU2VydmljZS5zdG9yZUFjdGl2ZVBlcnNwZWN0aXZlSWQoaWQpO1xuICAgICAgd2luZG93Lm5hbWUgPSBnZW5lcmF0ZVBlcnNwZWN0aXZlV2luZG93TmFtZShpZCk7XG4gICAgfVxuICAgIHJldHVybiBhY3RpdmF0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHBlcnNwZWN0aXZlIHRvIGl0cyBpbml0aWFsIGxheW91dC4gVGhlIG1haW4gYXJlYSB3aWxsIG5vdCBjaGFuZ2UuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcmVzZXRQZXJzcGVjdGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmFjdGl2ZVBlcnNwZWN0aXZlPy5yZXNldCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZSwgaWYgYW55LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBhY3RpdmF0ZUluaXRpYWxQZXJzcGVjdGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBEZXRlcm1pbmUgdGhlIGluaXRpYWwgcGVyc3BlY3RpdmUuXG4gICAgY29uc3QgaW5pdGlhbFBlcnNwZWN0aXZlSWQgPSBhd2FpdCAoYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgICAvLyBEZXRlcm1pbmUgdGhlIGluaXRpYWwgcGVyc3BlY3RpdmUgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgd2luZG93IG5hbWUuXG4gICAgICBjb25zdCBwZXJzcGVjdGl2ZUZyb21XaW5kb3cgPSBwYXJzZVBlcnNwZWN0aXZlSWRGcm9tV2luZG93TmFtZSgpO1xuICAgICAgaWYgKHBlcnNwZWN0aXZlRnJvbVdpbmRvdyAmJiB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LmhhcyhwZXJzcGVjdGl2ZUZyb21XaW5kb3cpKSB7XG4gICAgICAgIHJldHVybiBwZXJzcGVjdGl2ZUZyb21XaW5kb3c7XG4gICAgICB9XG5cbiAgICAgIC8vIERldGVybWluZSB0aGUgaW5pdGlhbCBwZXJzcGVjdGl2ZSB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzdG9yYWdlLlxuICAgICAgY29uc3QgcGVyc3BlY3RpdmVGcm9tU3RvcmFnZSA9IGF3YWl0IHRoaXMuX3dvcmtiZW5jaFBlcnNwZWN0aXZlU3RvcmFnZVNlcnZpY2UubG9hZEFjdGl2ZVBlcnNwZWN0aXZlSWQoKTtcbiAgICAgIGlmIChwZXJzcGVjdGl2ZUZyb21TdG9yYWdlICYmIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkuaGFzKHBlcnNwZWN0aXZlRnJvbVN0b3JhZ2UpKSB7XG4gICAgICAgIHJldHVybiBwZXJzcGVjdGl2ZUZyb21TdG9yYWdlO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXRlcm1pbmUgdGhlIGluaXRpYWwgcGVyc3BlY3RpdmUgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgY29uZmlnLlxuICAgICAgY29uc3QgcGVyc3BlY3RpdmVGcm9tQ29uZmlnID0gdHlwZW9mIHRoaXMuX2xheW91dENvbmZpZyA9PT0gJ29iamVjdCcgPyB0aGlzLl9sYXlvdXRDb25maWcuaW5pdGlhbFBlcnNwZWN0aXZlIDogbnVsbDtcbiAgICAgIGlmICghcGVyc3BlY3RpdmVGcm9tQ29uZmlnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LnBlcnNwZWN0aXZlc1swXT8uaWQ7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHBlcnNwZWN0aXZlRnJvbUNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHBlcnNwZWN0aXZlRnJvbUNvbmZpZztcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgcGVyc3BlY3RpdmVGcm9tQ29uZmlnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3IsICgpID0+IHBlcnNwZWN0aXZlRnJvbUNvbmZpZyhbLi4udGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5wZXJzcGVjdGl2ZXNdKSkpPy5pZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSkoKTtcblxuICAgIC8vIFNlbGVjdCBpbml0aWFsIHBlcnNwZWN0aXZlLlxuICAgIGlmIChpbml0aWFsUGVyc3BlY3RpdmVJZCkge1xuICAgICAgYXdhaXQgdGhpcy5zd2l0Y2hQZXJzcGVjdGl2ZShpbml0aWFsUGVyc3BlY3RpdmVJZCwge3N0b3JlUGVyc3BlY3RpdmVBc0FjdGl2ZTogZmFsc2V9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudGx5IGFjdGl2ZSBwZXJzcGVjdGl2ZSwgb3IgYG51bGxgIGlmIHRoZXJlIGlzIG5vIGN1cnJlbnQgcGVyc3BlY3RpdmUuXG4gICAqL1xuICBwcml2YXRlIGdldCBhY3RpdmVQZXJzcGVjdGl2ZSgpOiDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkucGVyc3BlY3RpdmVzLmZpbmQocGVyc3BlY3RpdmUgPT4gcGVyc3BlY3RpdmUuYWN0aXZlKSA/PyBudWxsO1xuICB9XG59XG5cbi8qKlxuICogSWRlbnRpZmllciBmb3IgdGhlIFwiZGVmYXVsdFwiIHBlcnNwZWN0aXZlIHRoYXQgdGhlIHdvcmtiZW5jaCBjcmVhdGVzIGlmIG5vdCBwcm92aWRpbmcgYSBuYW1lZCBsYXlvdXQuXG4gKi9cbmNvbnN0IERFRkFVTFRfV09SS0JFTkNIX1BFUlNQRUNUSVZFX0lEID0gJ2RlZmF1bHQnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgd2luZG93IG5hbWUgZm9yIGdpdmVuIHBlcnNwZWN0aXZlIHRvIGNvbnRyb2wgd2hpY2ggcGVyc3BlY3RpdmUgdG8gZGlzcGxheSBpbiBhIHdpbmRvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgc2Npb24ud29ya2JlbmNoLnBlcnNwZWN0aXZlLiR7cGVyc3BlY3RpdmVJZH1gO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgcGVyc3BlY3RpdmUgaWRlbnRpdHkgZnJvbSB0aGUgd2luZG93IG5hbWUsIHJldHVybmluZyBgbnVsbGAgaWYgbm90IHNldC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VQZXJzcGVjdGl2ZUlkRnJvbVdpbmRvd05hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHdpbmRvd05hbWVSZWdleCA9IG5ldyBSZWdFeHAoYF4ke2dlbmVyYXRlUGVyc3BlY3RpdmVXaW5kb3dOYW1lKCcoPzxwZXJzcGVjdGl2ZT4uKyknKX0kYCk7XG4gIHJldHVybiB3aW5kb3cubmFtZS5tYXRjaCh3aW5kb3dOYW1lUmVnZXgpPy5ncm91cHMhWydwZXJzcGVjdGl2ZSddID8/IG51bGw7XG59XG4iXX0=