@alfresco/aca-content 5.1.1 → 5.2.0-11950694546

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 (408) hide show
  1. package/assets/app.extensions.json +9 -0
  2. package/assets/i18n/ar.json +600 -599
  3. package/assets/i18n/cs.json +600 -599
  4. package/assets/i18n/da.json +600 -599
  5. package/assets/i18n/de.json +600 -599
  6. package/assets/i18n/en.json +40 -1
  7. package/assets/i18n/es.json +600 -599
  8. package/assets/i18n/fi.json +600 -599
  9. package/assets/i18n/fr.json +600 -599
  10. package/assets/i18n/it.json +600 -599
  11. package/assets/i18n/ja.json +600 -599
  12. package/assets/i18n/nb.json +600 -599
  13. package/assets/i18n/nl.json +600 -599
  14. package/assets/i18n/pl.json +600 -599
  15. package/assets/i18n/pt-BR.json +600 -599
  16. package/assets/i18n/ru.json +600 -599
  17. package/assets/i18n/sv.json +600 -599
  18. package/assets/i18n/zh-CN.json +600 -599
  19. package/esm2022/about/about.component.mjs +70 -0
  20. package/esm2022/about/aca-about.module.mjs +47 -0
  21. package/esm2022/folder-rules/folder-rules.module.mjs +116 -0
  22. package/esm2022/folder-rules/manage-rules/manage-rules.smart-component.mjs +276 -0
  23. package/esm2022/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +117 -0
  24. package/esm2022/folder-rules/rule-details/actions/rule-action.ui-component.mjs +356 -0
  25. package/esm2022/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +171 -0
  26. package/esm2022/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +233 -0
  27. package/esm2022/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +80 -0
  28. package/esm2022/folder-rules/rule-details/options/rule-options.ui-component.mjs +129 -0
  29. package/esm2022/folder-rules/rule-details/rule-details.ui-component.mjs +188 -0
  30. package/esm2022/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +87 -0
  31. package/esm2022/folder-rules/rule-details/validators/rule-actions.validator.mjs +36 -0
  32. package/esm2022/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +164 -0
  33. package/esm2022/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +80 -0
  34. package/esm2022/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +59 -0
  35. package/esm2022/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +122 -0
  36. package/esm2022/folder-rules/services/actions.service.mjs +117 -0
  37. package/esm2022/folder-rules/services/folder-rule-sets.service.mjs +230 -0
  38. package/esm2022/folder-rules/services/folder-rules.service.mjs +195 -0
  39. package/esm2022/lib/aca-content.module.mjs +303 -0
  40. package/esm2022/lib/aca-content.routes.mjs +369 -0
  41. package/esm2022/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +79 -0
  42. package/{esm2020 → esm2022}/lib/components/common/language-picker/language-picker.component.mjs +9 -8
  43. package/esm2022/lib/components/common/location-link/location-link.component.mjs +182 -0
  44. package/{esm2020 → esm2022}/lib/components/common/logout/logout.component.mjs +8 -6
  45. package/esm2022/lib/components/common/toggle-shared/toggle-shared.component.mjs +76 -0
  46. package/esm2022/lib/components/common/user-info/user-info.component.mjs +46 -0
  47. package/esm2022/lib/components/context-menu/base-context-menu.directive.mjs +77 -0
  48. package/esm2022/lib/components/context-menu/context-menu-item.component.mjs +65 -0
  49. package/esm2022/lib/components/context-menu/context-menu-outside-event.directive.mjs +57 -0
  50. package/esm2022/lib/components/context-menu/context-menu-overlay.mjs +33 -0
  51. package/esm2022/lib/components/context-menu/context-menu.component.mjs +84 -0
  52. package/esm2022/lib/components/context-menu/context-menu.service.mjs +127 -0
  53. package/esm2022/lib/components/context-menu/custom-context-menu-actions.token.mjs +26 -0
  54. package/esm2022/lib/components/context-menu/custom-context-menu.component.mjs +79 -0
  55. package/esm2022/lib/components/details/details.component.mjs +155 -0
  56. package/esm2022/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +70 -0
  57. package/esm2022/lib/components/dl-custom-components/name-column/name-column.component.mjs +102 -0
  58. package/esm2022/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +52 -0
  59. package/esm2022/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +77 -0
  60. package/esm2022/lib/components/favorite-libraries/favorite-libraries.component.mjs +126 -0
  61. package/esm2022/lib/components/favorites/favorites.component.mjs +105 -0
  62. package/esm2022/lib/components/files/files.component.mjs +337 -0
  63. package/esm2022/lib/components/home/home.component.mjs +46 -0
  64. package/esm2022/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +62 -0
  65. package/esm2022/lib/components/info-drawer/info.drawer.module.mjs +74 -0
  66. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +210 -0
  67. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +47 -0
  68. package/esm2022/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +141 -0
  69. package/esm2022/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +107 -0
  70. package/esm2022/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +132 -0
  71. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +176 -0
  72. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.mjs +77 -0
  73. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +207 -0
  74. package/esm2022/lib/components/libraries/libraries.component.mjs +81 -0
  75. package/esm2022/lib/components/recent-files/recent-files.component.mjs +80 -0
  76. package/esm2022/lib/components/search/search-action-menu/search-action-menu.component.mjs +66 -0
  77. package/esm2022/lib/components/search/search-input/search-input.component.mjs +294 -0
  78. package/esm2022/lib/components/search/search-input-control/search-input-control.component.mjs +88 -0
  79. package/esm2022/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +93 -0
  80. package/esm2022/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +155 -0
  81. package/esm2022/lib/components/search/search-navigation.service.mjs +62 -0
  82. package/esm2022/lib/components/search/search-results/search-results.component.mjs +278 -0
  83. package/esm2022/lib/components/search/search-results-row/search-results-row.component.mjs +145 -0
  84. package/esm2022/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.mjs +82 -0
  85. package/esm2022/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.mjs +116 -0
  86. package/esm2022/lib/components/search/search-save/dialog/save-search-dialog.component.mjs +125 -0
  87. package/esm2022/lib/components/search/search-save/dialog/saved-search-form.interface.mjs +25 -0
  88. package/esm2022/lib/components/search/search-save/dialog/unique-search-name-validator.mjs +45 -0
  89. package/esm2022/lib/components/search/search-save/directive/save-search.directive.mjs +64 -0
  90. package/esm2022/lib/components/search/search-save/list/saved-searches-list-ui.service.mjs +51 -0
  91. package/esm2022/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.mjs +44 -0
  92. package/esm2022/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.mjs +50 -0
  93. package/esm2022/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.mjs +153 -0
  94. package/esm2022/lib/components/search/search-save/sidenav/save-search-sidenav.component.mjs +89 -0
  95. package/esm2022/lib/components/shared-files/shared-files.component.mjs +85 -0
  96. package/esm2022/lib/components/shared-link-view/shared-link-view.component.mjs +86 -0
  97. package/esm2022/lib/components/sidenav/components/button-menu.component.mjs +66 -0
  98. package/esm2022/lib/components/sidenav/components/expand-menu.component.mjs +73 -0
  99. package/esm2022/lib/components/sidenav/components/sidenav-header.component.mjs +60 -0
  100. package/esm2022/lib/components/sidenav/directives/action.directive.mjs +86 -0
  101. package/esm2022/lib/components/sidenav/directives/active-link.directive.mjs +100 -0
  102. package/esm2022/lib/components/sidenav/directives/expansion-panel.directive.mjs +103 -0
  103. package/esm2022/lib/components/sidenav/directives/menu-panel.directive.mjs +99 -0
  104. package/esm2022/lib/components/sidenav/sidenav.component.mjs +97 -0
  105. package/esm2022/lib/components/sidenav/user-menu/user-menu.component.mjs +57 -0
  106. package/esm2022/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +143 -0
  107. package/esm2022/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +91 -0
  108. package/esm2022/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +108 -0
  109. package/esm2022/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +77 -0
  110. package/esm2022/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +107 -0
  111. package/{esm2020 → esm2022}/lib/components/toolbar/toggle-join-library/toggle-join-library-menu.component.mjs +7 -6
  112. package/esm2022/lib/components/toolbar/view-node/view-node.component.mjs +128 -0
  113. package/esm2022/lib/components/trashcan/trashcan.component.mjs +66 -0
  114. package/esm2022/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +50 -0
  115. package/esm2022/lib/components/view-profile/view-profile.component.mjs +195 -0
  116. package/esm2022/lib/dialogs/node-template/create-from-template.dialog.mjs +127 -0
  117. package/esm2022/lib/directives/document-list.directive.mjs +203 -0
  118. package/esm2022/lib/extensions/core.extensions.module.mjs +56 -0
  119. package/esm2022/lib/services/content-management.service.mjs +892 -0
  120. package/esm2022/lib/services/content-url.service.mjs +74 -0
  121. package/esm2022/lib/services/modal-ai.service.mjs +65 -0
  122. package/esm2022/lib/services/node-actions.service.mjs +609 -0
  123. package/esm2022/lib/services/node-template.service.mjs +145 -0
  124. package/esm2022/lib/services/search-ai-navigation.service.mjs +63 -0
  125. package/esm2022/lib/store/app-store.module.mjs +101 -0
  126. package/esm2022/lib/store/effects/app.effects.mjs +46 -0
  127. package/esm2022/lib/store/effects/contextmenu.effects.mjs +65 -0
  128. package/esm2022/lib/store/effects/download.effects.mjs +153 -0
  129. package/esm2022/lib/store/effects/favorite.effects.mjs +72 -0
  130. package/esm2022/lib/store/effects/library.effects.mjs +108 -0
  131. package/esm2022/lib/store/effects/node.effects.mjs +318 -0
  132. package/esm2022/lib/store/effects/search-ai.effects.mjs +54 -0
  133. package/esm2022/lib/store/effects/search.effects.mjs +52 -0
  134. package/esm2022/lib/store/effects/template.effects.mjs +116 -0
  135. package/esm2022/lib/store/effects/upload.effects.mjs +166 -0
  136. package/esm2022/lib/store/effects/viewer.effects.mjs +169 -0
  137. package/esm2022/lib/utils/aca-search-utils.mjs +129 -0
  138. package/esm2022/ms-office/actions/aos.actions.mjs +32 -0
  139. package/esm2022/ms-office/aos-extension.module.mjs +53 -0
  140. package/esm2022/ms-office/aos-extension.service.mjs +136 -0
  141. package/esm2022/ms-office/effects/aos.effects.mjs +45 -0
  142. package/esm2022/public-api.mjs +33 -0
  143. package/esm2022/viewer/lib/components/preview/preview.component.mjs +244 -0
  144. package/esm2022/viewer/lib/components/viewer/viewer.component.mjs +260 -0
  145. package/esm2022/viewer/lib/services/viewer.service.mjs +229 -0
  146. package/esm2022/viewer/lib/viewer.module.mjs +53 -0
  147. package/{fesm2015 → fesm2022}/alfresco-aca-content-about.mjs +17 -19
  148. package/fesm2022/alfresco-aca-content-about.mjs.map +1 -0
  149. package/{fesm2020 → fesm2022}/alfresco-aca-content-folder-rules.mjs +376 -357
  150. package/fesm2022/alfresco-aca-content-folder-rules.mjs.map +1 -0
  151. package/{fesm2020 → fesm2022}/alfresco-aca-content-ms-office.mjs +28 -26
  152. package/fesm2022/alfresco-aca-content-ms-office.mjs.map +1 -0
  153. package/{fesm2020 → fesm2022}/alfresco-aca-content-viewer.mjs +110 -83
  154. package/fesm2022/alfresco-aca-content-viewer.mjs.map +1 -0
  155. package/fesm2022/alfresco-aca-content.mjs +10996 -0
  156. package/fesm2022/alfresco-aca-content.mjs.map +1 -0
  157. package/folder-rules/manage-rules/manage-rules.smart-component.d.ts +3 -5
  158. package/folder-rules/rule-details/actions/rule-action-list.ui-component.d.ts +1 -1
  159. package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +5 -6
  160. package/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.d.ts +1 -1
  161. package/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.d.ts +4 -5
  162. package/folder-rules/rule-details/options/rule-options.ui-component.d.ts +1 -1
  163. package/folder-rules/rule-details/rule-details.ui-component.d.ts +5 -6
  164. package/folder-rules/rule-list/rule-list/rule-list.ui-component.d.ts +4 -5
  165. package/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.d.ts +1 -1
  166. package/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.d.ts +1 -1
  167. package/folder-rules/rule-set-picker/rule-set-picker.smart-component.d.ts +3 -5
  168. package/folder-rules/services/folder-rule-sets.service.d.ts +4 -4
  169. package/folder-rules/services/folder-rules.service.d.ts +1 -1
  170. package/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.d.ts +7 -13
  171. package/lib/components/common/location-link/location-link.component.d.ts +1 -1
  172. package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +5 -6
  173. package/lib/components/context-menu/base-context-menu.directive.d.ts +20 -0
  174. package/lib/components/context-menu/context-menu-item.component.d.ts +1 -1
  175. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +4 -5
  176. package/lib/components/context-menu/context-menu.component.d.ts +4 -15
  177. package/lib/components/context-menu/context-menu.service.d.ts +4 -1
  178. package/lib/components/{knowledge-retrieval/search-ai/search-ai-utils.d.ts → context-menu/custom-context-menu-actions.token.d.ts} +2 -2
  179. package/lib/components/context-menu/custom-context-menu.component.d.ts +36 -0
  180. package/lib/components/details/details.component.d.ts +1 -2
  181. package/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.d.ts +4 -5
  182. package/lib/components/dl-custom-components/name-column/name-column.component.d.ts +3 -4
  183. package/lib/components/dl-custom-components/tags-column/tags-column.component.d.ts +1 -1
  184. package/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.d.ts +1 -1
  185. package/lib/components/files/files.component.d.ts +1 -1
  186. package/lib/components/info-drawer/comments-tab/comments-tab.component.d.ts +1 -1
  187. package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +5 -7
  188. package/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.d.ts +1 -1
  189. package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +7 -8
  190. package/lib/components/info-drawer/versions-tab/versions-tab.component.d.ts +1 -1
  191. package/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.d.ts +4 -6
  192. package/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.d.ts +6 -8
  193. package/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.d.ts +8 -8
  194. package/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.d.ts +4 -6
  195. package/lib/components/search/search-input/search-input.component.d.ts +13 -16
  196. package/lib/components/search/search-input-control/search-input-control.component.d.ts +3 -6
  197. package/lib/components/search/search-libraries-results/search-libraries-results.component.d.ts +0 -1
  198. package/lib/components/search/search-results/search-results.component.d.ts +14 -9
  199. package/lib/components/search/search-results-row/search-results-row.component.d.ts +4 -5
  200. package/lib/components/search/search-save/dialog/delete/saved-search-delete-dialog.component.d.ts +16 -0
  201. package/lib/components/search/search-save/dialog/edit/saved-search-edit-dialog.component.d.ts +22 -0
  202. package/lib/components/search/search-save/dialog/save-search-dialog.component.d.ts +23 -0
  203. package/lib/components/search/search-save/dialog/saved-search-form.interface.d.ts +28 -0
  204. package/lib/components/search/search-save/dialog/unique-search-name-validator.d.ts +34 -0
  205. package/lib/components/search/search-save/directive/save-search.directive.d.ts +13 -0
  206. package/lib/components/search/search-save/list/saved-searches-list-ui.service.d.ts +9 -0
  207. package/lib/components/search/search-save/list/smart-list/saved-searches-list-schema.d.ts +33 -0
  208. package/lib/components/search/search-save/list/smart-list/saved-searches-smart-list.component.d.ts +13 -0
  209. package/lib/components/search/search-save/list/ui-list/saved-searches-list.ui-component.d.ts +66 -0
  210. package/lib/components/search/search-save/sidenav/save-search-sidenav.component.d.ts +42 -0
  211. package/lib/components/shared-link-view/shared-link-view.component.d.ts +4 -5
  212. package/lib/components/sidenav/components/button-menu.component.d.ts +1 -1
  213. package/lib/components/sidenav/components/expand-menu.component.d.ts +3 -2
  214. package/lib/components/sidenav/components/sidenav-header.component.d.ts +3 -4
  215. package/lib/components/sidenav/directives/action.directive.d.ts +28 -1
  216. package/lib/components/sidenav/directives/active-link.directive.d.ts +3 -3
  217. package/lib/components/sidenav/directives/expansion-panel.directive.d.ts +4 -5
  218. package/lib/components/sidenav/directives/menu-panel.directive.d.ts +4 -5
  219. package/lib/components/sidenav/sidenav.component.d.ts +7 -7
  220. package/lib/components/sidenav/user-menu/user-menu.component.d.ts +1 -1
  221. package/lib/components/toolbar/toggle-favorite/toggle-favorite.component.d.ts +1 -1
  222. package/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.d.ts +3 -4
  223. package/lib/components/toolbar/view-node/view-node.component.d.ts +1 -1
  224. package/lib/components/upload-files-dialog/upload-files-dialog.component.d.ts +1 -27
  225. package/lib/components/view-profile/view-profile.component.d.ts +2 -4
  226. package/lib/directives/document-list.directive.d.ts +3 -5
  227. package/lib/services/search-ai-navigation.service.d.ts +4 -2
  228. package/lib/store/effects/app.effects.d.ts +2 -3
  229. package/lib/store/effects/contextmenu.effects.d.ts +3 -3
  230. package/lib/store/effects/download.effects.d.ts +0 -30
  231. package/lib/store/effects/favorite.effects.d.ts +0 -28
  232. package/lib/store/effects/library.effects.d.ts +2 -7
  233. package/lib/store/effects/node.effects.d.ts +7 -38
  234. package/lib/store/effects/search-ai.effects.d.ts +0 -4
  235. package/lib/store/effects/search.effects.d.ts +3 -30
  236. package/lib/store/effects/template.effects.d.ts +5 -7
  237. package/lib/store/effects/upload.effects.d.ts +8 -32
  238. package/lib/store/effects/viewer.effects.d.ts +0 -29
  239. package/lib/utils/aca-search-utils.d.ts +67 -0
  240. package/ms-office/effects/aos.effects.d.ts +0 -3
  241. package/package.json +21 -35
  242. package/public-api.d.ts +1 -0
  243. package/ui/overrides/adf-pagination.theme.scss +0 -4
  244. package/ui/theme.scss +9 -4
  245. package/viewer/lib/components/preview/preview.component.d.ts +3 -4
  246. package/viewer/lib/components/viewer/viewer.component.d.ts +2 -2
  247. package/assets/images/agent-avatar-blue.png +0 -0
  248. package/assets/images/agent-avatar-gold.png +0 -0
  249. package/assets/images/agent-avatar-pink.png +0 -0
  250. package/esm2020/about/about.component.mjs +0 -71
  251. package/esm2020/about/aca-about.module.mjs +0 -46
  252. package/esm2020/folder-rules/folder-rules.module.mjs +0 -115
  253. package/esm2020/folder-rules/manage-rules/manage-rules.smart-component.mjs +0 -261
  254. package/esm2020/folder-rules/rule-details/actions/rule-action-list.ui-component.mjs +0 -117
  255. package/esm2020/folder-rules/rule-details/actions/rule-action.ui-component.mjs +0 -351
  256. package/esm2020/folder-rules/rule-details/conditions/rule-composite-condition.ui-component.mjs +0 -172
  257. package/esm2020/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +0 -234
  258. package/esm2020/folder-rules/rule-details/edit-rule-dialog.ui-component.mjs +0 -74
  259. package/esm2020/folder-rules/rule-details/options/rule-options.ui-component.mjs +0 -129
  260. package/esm2020/folder-rules/rule-details/rule-details.ui-component.mjs +0 -185
  261. package/esm2020/folder-rules/rule-details/triggers/rule-triggers.ui-component.mjs +0 -88
  262. package/esm2020/folder-rules/rule-details/validators/rule-actions.validator.mjs +0 -37
  263. package/esm2020/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +0 -164
  264. package/esm2020/folder-rules/rule-list/rule-list-grouping/rule-list-grouping.ui-component.mjs +0 -81
  265. package/esm2020/folder-rules/rule-list/rule-list-item/rule-list-item.ui-component.mjs +0 -58
  266. package/esm2020/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +0 -120
  267. package/esm2020/folder-rules/services/actions.service.mjs +0 -114
  268. package/esm2020/folder-rules/services/folder-rule-sets.service.mjs +0 -225
  269. package/esm2020/folder-rules/services/folder-rules.service.mjs +0 -193
  270. package/esm2020/lib/aca-content.module.mjs +0 -299
  271. package/esm2020/lib/aca-content.routes.mjs +0 -359
  272. package/esm2020/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +0 -83
  273. package/esm2020/lib/components/common/location-link/location-link.component.mjs +0 -180
  274. package/esm2020/lib/components/common/toggle-shared/toggle-shared.component.mjs +0 -76
  275. package/esm2020/lib/components/common/user-info/user-info.component.mjs +0 -47
  276. package/esm2020/lib/components/context-menu/context-menu-item.component.mjs +0 -62
  277. package/esm2020/lib/components/context-menu/context-menu-outside-event.directive.mjs +0 -63
  278. package/esm2020/lib/components/context-menu/context-menu-overlay.mjs +0 -32
  279. package/esm2020/lib/components/context-menu/context-menu.component.mjs +0 -114
  280. package/esm2020/lib/components/context-menu/context-menu.service.mjs +0 -99
  281. package/esm2020/lib/components/details/details.component.mjs +0 -147
  282. package/esm2020/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +0 -71
  283. package/esm2020/lib/components/dl-custom-components/name-column/name-column.component.mjs +0 -101
  284. package/esm2020/lib/components/dl-custom-components/tags-column/tags-column.component.mjs +0 -48
  285. package/esm2020/lib/components/dl-custom-components/thumbnail-column/thumbnail-column.component.mjs +0 -75
  286. package/esm2020/lib/components/favorite-libraries/favorite-libraries.component.mjs +0 -120
  287. package/esm2020/lib/components/favorites/favorites.component.mjs +0 -103
  288. package/esm2020/lib/components/files/files.component.mjs +0 -330
  289. package/esm2020/lib/components/home/home.component.mjs +0 -47
  290. package/esm2020/lib/components/info-drawer/comments-tab/comments-tab.component.mjs +0 -59
  291. package/esm2020/lib/components/info-drawer/info.drawer.module.mjs +0 -73
  292. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +0 -206
  293. package/esm2020/lib/components/info-drawer/library-metadata-tab/library-metadata-tab.component.mjs +0 -45
  294. package/esm2020/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +0 -134
  295. package/esm2020/lib/components/info-drawer/versions-tab/versions-tab.component.mjs +0 -95
  296. package/esm2020/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +0 -129
  297. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +0 -171
  298. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-input-container/search-ai-input-container.component.mjs +0 -82
  299. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +0 -199
  300. package/esm2020/lib/components/knowledge-retrieval/search-ai/search-ai-utils.mjs +0 -33
  301. package/esm2020/lib/components/libraries/libraries.component.mjs +0 -79
  302. package/esm2020/lib/components/recent-files/recent-files.component.mjs +0 -82
  303. package/esm2020/lib/components/search/search-action-menu/search-action-menu.component.mjs +0 -64
  304. package/esm2020/lib/components/search/search-input/search-input.component.mjs +0 -301
  305. package/esm2020/lib/components/search/search-input-control/search-input-control.component.mjs +0 -94
  306. package/esm2020/lib/components/search/search-libraries-results/search-libraries-query-builder.service.mjs +0 -90
  307. package/esm2020/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +0 -153
  308. package/esm2020/lib/components/search/search-navigation.service.mjs +0 -60
  309. package/esm2020/lib/components/search/search-results/search-results.component.mjs +0 -255
  310. package/esm2020/lib/components/search/search-results-row/search-results-row.component.mjs +0 -142
  311. package/esm2020/lib/components/shared-files/shared-files.component.mjs +0 -83
  312. package/esm2020/lib/components/shared-link-view/shared-link-view.component.mjs +0 -82
  313. package/esm2020/lib/components/sidenav/components/button-menu.component.mjs +0 -62
  314. package/esm2020/lib/components/sidenav/components/expand-menu.component.mjs +0 -67
  315. package/esm2020/lib/components/sidenav/components/sidenav-header.component.mjs +0 -66
  316. package/esm2020/lib/components/sidenav/directives/action.directive.mjs +0 -75
  317. package/esm2020/lib/components/sidenav/directives/active-link.directive.mjs +0 -93
  318. package/esm2020/lib/components/sidenav/directives/expansion-panel.directive.mjs +0 -102
  319. package/esm2020/lib/components/sidenav/directives/menu-panel.directive.mjs +0 -99
  320. package/esm2020/lib/components/sidenav/sidenav.component.mjs +0 -89
  321. package/esm2020/lib/components/sidenav/user-menu/user-menu.component.mjs +0 -56
  322. package/esm2020/lib/components/toolbar/toggle-edit-offline/toggle-edit-offline.component.mjs +0 -137
  323. package/esm2020/lib/components/toolbar/toggle-favorite/toggle-favorite.component.mjs +0 -86
  324. package/esm2020/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +0 -107
  325. package/esm2020/lib/components/toolbar/toggle-info-drawer/toggle-info-drawer.component.mjs +0 -74
  326. package/esm2020/lib/components/toolbar/toggle-join-library/toggle-join-library-button.component.mjs +0 -105
  327. package/esm2020/lib/components/toolbar/view-node/view-node.component.mjs +0 -122
  328. package/esm2020/lib/components/trashcan/trashcan.component.mjs +0 -68
  329. package/esm2020/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +0 -52
  330. package/esm2020/lib/components/view-profile/view-profile.component.mjs +0 -193
  331. package/esm2020/lib/dialogs/node-template/create-from-template.dialog.mjs +0 -120
  332. package/esm2020/lib/directives/document-list.directive.mjs +0 -199
  333. package/esm2020/lib/extensions/core.extensions.module.mjs +0 -55
  334. package/esm2020/lib/services/content-management.service.mjs +0 -873
  335. package/esm2020/lib/services/content-url.service.mjs +0 -71
  336. package/esm2020/lib/services/modal-ai.service.mjs +0 -66
  337. package/esm2020/lib/services/node-actions.service.mjs +0 -600
  338. package/esm2020/lib/services/node-template.service.mjs +0 -144
  339. package/esm2020/lib/services/search-ai-navigation.service.mjs +0 -52
  340. package/esm2020/lib/store/app-store.module.mjs +0 -102
  341. package/esm2020/lib/store/effects/app.effects.mjs +0 -49
  342. package/esm2020/lib/store/effects/contextmenu.effects.mjs +0 -55
  343. package/esm2020/lib/store/effects/download.effects.mjs +0 -159
  344. package/esm2020/lib/store/effects/favorite.effects.mjs +0 -76
  345. package/esm2020/lib/store/effects/library.effects.mjs +0 -113
  346. package/esm2020/lib/store/effects/node.effects.mjs +0 -325
  347. package/esm2020/lib/store/effects/search-ai.effects.mjs +0 -57
  348. package/esm2020/lib/store/effects/search.effects.mjs +0 -60
  349. package/esm2020/lib/store/effects/template.effects.mjs +0 -121
  350. package/esm2020/lib/store/effects/upload.effects.mjs +0 -166
  351. package/esm2020/lib/store/effects/viewer.effects.mjs +0 -175
  352. package/esm2020/ms-office/actions/aos.actions.mjs +0 -31
  353. package/esm2020/ms-office/aos-extension.module.mjs +0 -52
  354. package/esm2020/ms-office/aos-extension.service.mjs +0 -132
  355. package/esm2020/ms-office/effects/aos.effects.mjs +0 -48
  356. package/esm2020/public-api.mjs +0 -32
  357. package/esm2020/viewer/lib/components/preview/preview.component.mjs +0 -236
  358. package/esm2020/viewer/lib/components/viewer/viewer.component.mjs +0 -240
  359. package/esm2020/viewer/lib/services/viewer.service.mjs +0 -226
  360. package/esm2020/viewer/lib/viewer.module.mjs +0 -52
  361. package/fesm2015/alfresco-aca-content-about.mjs.map +0 -1
  362. package/fesm2015/alfresco-aca-content-folder-rules.mjs +0 -2662
  363. package/fesm2015/alfresco-aca-content-folder-rules.mjs.map +0 -1
  364. package/fesm2015/alfresco-aca-content-ms-office.mjs +0 -256
  365. package/fesm2015/alfresco-aca-content-ms-office.mjs.map +0 -1
  366. package/fesm2015/alfresco-aca-content-viewer.mjs +0 -700
  367. package/fesm2015/alfresco-aca-content-viewer.mjs.map +0 -1
  368. package/fesm2015/alfresco-aca-content.mjs +0 -9835
  369. package/fesm2015/alfresco-aca-content.mjs.map +0 -1
  370. package/fesm2020/alfresco-aca-content-about.mjs +0 -193
  371. package/fesm2020/alfresco-aca-content-about.mjs.map +0 -1
  372. package/fesm2020/alfresco-aca-content-folder-rules.mjs.map +0 -1
  373. package/fesm2020/alfresco-aca-content-ms-office.mjs.map +0 -1
  374. package/fesm2020/alfresco-aca-content-viewer.mjs.map +0 -1
  375. package/fesm2020/alfresco-aca-content.mjs +0 -9934
  376. package/fesm2020/alfresco-aca-content.mjs.map +0 -1
  377. /package/{esm2020 → esm2022}/about/alfresco-aca-content-about.mjs +0 -0
  378. /package/{esm2020 → esm2022}/about/dev-mode.tokens.mjs +0 -0
  379. /package/{esm2020 → esm2022}/about/package-json.token.mjs +0 -0
  380. /package/{esm2020 → esm2022}/about/public-api.mjs +0 -0
  381. /package/{esm2020 → esm2022}/alfresco-aca-content.mjs +0 -0
  382. /package/{esm2020 → esm2022}/folder-rules/alfresco-aca-content-folder-rules.mjs +0 -0
  383. /package/{esm2020 → esm2022}/folder-rules/folder-rules.rules.mjs +0 -0
  384. /package/{esm2020 → esm2022}/folder-rules/model/action-parameter-constraint.model.mjs +0 -0
  385. /package/{esm2020 → esm2022}/folder-rules/model/rule-action.model.mjs +0 -0
  386. /package/{esm2020 → esm2022}/folder-rules/model/rule-composite-condition.model.mjs +0 -0
  387. /package/{esm2020 → esm2022}/folder-rules/model/rule-grouping-item.model.mjs +0 -0
  388. /package/{esm2020 → esm2022}/folder-rules/model/rule-set.model.mjs +0 -0
  389. /package/{esm2020 → esm2022}/folder-rules/model/rule-simple-condition.model.mjs +0 -0
  390. /package/{esm2020 → esm2022}/folder-rules/model/rule.model.mjs +0 -0
  391. /package/{esm2020 → esm2022}/folder-rules/public-api.mjs +0 -0
  392. /package/{esm2020 → esm2022}/folder-rules/rule-details/conditions/rule-condition-comparators.mjs +0 -0
  393. /package/{esm2020 → esm2022}/folder-rules/rule-details/conditions/rule-condition-fields.mjs +0 -0
  394. /package/{esm2020 → esm2022}/folder-rules/rule-details/validators/rule-composite-condition.validator.mjs +0 -0
  395. /package/{esm2020 → esm2022}/lib/components/common/index.mjs +0 -0
  396. /package/{esm2020 → esm2022}/lib/components/context-menu/direction.token.mjs +0 -0
  397. /package/{esm2020 → esm2022}/lib/components/context-menu/interfaces.mjs +0 -0
  398. /package/{esm2020 → esm2022}/lib/components/search/index.mjs +0 -0
  399. /package/{esm2020 → esm2022}/lib/components/sidenav/index.mjs +0 -0
  400. /package/{esm2020 → esm2022}/lib/components/toolbar/index.mjs +0 -0
  401. /package/{esm2020 → esm2022}/lib/components/view-profile/view-profile.guard.mjs +0 -0
  402. /package/{esm2020 → esm2022}/lib/store/effects.mjs +0 -0
  403. /package/{esm2020 → esm2022}/lib/store/initial-state.mjs +0 -0
  404. /package/{esm2020 → esm2022}/lib/store/reducers/app.reducer.mjs +0 -0
  405. /package/{esm2020 → esm2022}/ms-office/alfresco-aca-content-ms-office.mjs +0 -0
  406. /package/{esm2020 → esm2022}/ms-office/public-api.mjs +0 -0
  407. /package/{esm2020 → esm2022}/viewer/alfresco-aca-content-viewer.mjs +0 -0
  408. /package/{esm2020 → esm2022}/viewer/public-api.mjs +0 -0
@@ -1,261 +0,0 @@
1
- /*!
2
- * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
3
- *
4
- * Alfresco Example Content Application
5
- *
6
- * This file is part of the Alfresco Example Content Application.
7
- * If the software was purchased under a paid Alfresco license, the terms of
8
- * the paid license agreement will prevail. Otherwise, the software is
9
- * provided under the following open source license terms:
10
- *
11
- * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as published by
13
- * the Free Software Foundation, either version 3 of the License, or
14
- * (at your option) any later version.
15
- *
16
- * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
- */
24
- import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';
25
- import { CommonModule, Location } from '@angular/common';
26
- import { FolderRulesService } from '../services/folder-rules.service';
27
- import { Subject } from 'rxjs';
28
- import { ActivatedRoute, RouterModule } from '@angular/router';
29
- import { delay, takeUntil } from 'rxjs/operators';
30
- import { EditRuleDialogUiComponent } from '../rule-details/edit-rule-dialog.ui-component';
31
- import { MatDialog, MatDialogModule } from '@angular/material/dialog';
32
- import { NotificationService, TemplateModule, ToolbarModule, ConfirmDialogComponent } from '@alfresco/adf-core';
33
- import { ActionsService } from '../services/actions.service';
34
- import { FolderRuleSetsService } from '../services/folder-rule-sets.service';
35
- import { RuleSetPickerSmartComponent } from '../rule-set-picker/rule-set-picker.smart-component';
36
- import { MatSlideToggleModule } from '@angular/material/slide-toggle';
37
- import { TranslateModule } from '@ngx-translate/core';
38
- import { GenericErrorComponent, PageLayoutComponent } from '@alfresco/aca-shared';
39
- import { MatButtonModule } from '@angular/material/button';
40
- import { MatIconModule } from '@angular/material/icon';
41
- import { MatProgressBarModule } from '@angular/material/progress-bar';
42
- import { MatDividerModule } from '@angular/material/divider';
43
- import { RuleListUiComponent } from '../rule-list/rule-list/rule-list.ui-component';
44
- import { RuleDetailsUiComponent } from '../rule-details/rule-details.ui-component';
45
- import * as i0 from "@angular/core";
46
- import * as i1 from "@angular/common";
47
- import * as i2 from "../services/folder-rules.service";
48
- import * as i3 from "@angular/router";
49
- import * as i4 from "@angular/material/dialog";
50
- import * as i5 from "@alfresco/adf-core";
51
- import * as i6 from "../services/actions.service";
52
- import * as i7 from "../services/folder-rule-sets.service";
53
- import * as i8 from "@ngx-translate/core";
54
- import * as i9 from "@angular/material/button";
55
- import * as i10 from "@angular/material/icon";
56
- import * as i11 from "@angular/material/progress-bar";
57
- import * as i12 from "@angular/material/slide-toggle";
58
- import * as i13 from "@angular/material/divider";
59
- export class ManageRulesSmartComponent {
60
- constructor(location, folderRulesService, route, matDialogService, notificationService, actionsService, folderRuleSetsService) {
61
- this.location = location;
62
- this.folderRulesService = folderRulesService;
63
- this.route = route;
64
- this.matDialogService = matDialogService;
65
- this.notificationService = notificationService;
66
- this.actionsService = actionsService;
67
- this.folderRuleSetsService = folderRuleSetsService;
68
- this.nodeId = '';
69
- this.isInheritanceEnabled = true;
70
- this.isInheritanceToggleDisabled = false;
71
- this.canEditMainRule = false;
72
- this.canEditSelectedRule = false;
73
- this.isMainRuleSetNotEmpty = false;
74
- this.isInheritedRuleSetsNotEmpty = false;
75
- this.destroyed$ = new Subject();
76
- }
77
- ngOnInit() {
78
- this.mainRuleSet$ = this.folderRuleSetsService.mainRuleSet$;
79
- this.inheritedRuleSets$ = this.folderRuleSetsService.inheritedRuleSets$;
80
- this.selectedRule$ = this.folderRulesService.selectedRule$;
81
- this.selectedRuleSet$ = this.folderRuleSetsService.selectedRuleSet$;
82
- this.hasMoreRuleSets$ = this.folderRuleSetsService.hasMoreRuleSets$;
83
- this.ruleSetsLoading$ = this.folderRuleSetsService.isLoading$;
84
- this.folderInfo$ = this.folderRuleSetsService.folderInfo$;
85
- this.actionsLoading$ = this.actionsService.loading$.pipe(delay(0));
86
- this.actionDefinitions$ = this.actionsService.actionDefinitionsListing$;
87
- this.parameterConstraints$ = this.actionsService.parameterConstraints$;
88
- this.folderRulesService.deletedRuleId$.pipe(takeUntil(this.destroyed$)).subscribe((deletedRuleId) => this.onRuleDelete(deletedRuleId));
89
- this.actionsService.loadActionDefinitions();
90
- this.route.params.subscribe((params) => {
91
- this.nodeId = params.nodeId;
92
- if (this.nodeId) {
93
- this.folderRulesService.getRuleSettings(this.nodeId).then((ruleSettings) => {
94
- this.isInheritanceEnabled = ruleSettings.value;
95
- });
96
- this.folderRuleSetsService.loadRuleSets(this.nodeId);
97
- }
98
- });
99
- this._actionDefinitionsSub = this.actionDefinitions$.subscribe((actionDefinitions) => this.actionsService.loadActionParameterConstraints(actionDefinitions));
100
- this.mainRuleSet$.pipe(takeUntil(this.destroyed$)).subscribe((ruleSet) => {
101
- this.canEditMainRule = this.canEditRule(ruleSet);
102
- this.isMainRuleSetNotEmpty = !!ruleSet;
103
- });
104
- this.inheritedRuleSets$.pipe(takeUntil(this.destroyed$)).subscribe((inheritedRuleSet) => {
105
- this.isInheritedRuleSetsNotEmpty = inheritedRuleSet.some((ruleSet) => ruleSet.rules.some((rule) => rule.isEnabled));
106
- });
107
- this.selectedRuleSet$.pipe(takeUntil(this.destroyed$)).subscribe((ruleSet) => {
108
- this.canEditSelectedRule = this.canEditRule(ruleSet);
109
- });
110
- }
111
- ngOnDestroy() {
112
- this.destroyed$.next();
113
- this.destroyed$.complete();
114
- this._actionDefinitionsSub.unsubscribe();
115
- }
116
- goBack() {
117
- this.location.back();
118
- }
119
- onSelectRule(rule) {
120
- this.folderRulesService.selectRule(rule);
121
- }
122
- openCreateUpdateRuleDialog(model = {}) {
123
- const dialogRef = this.matDialogService.open(EditRuleDialogUiComponent, {
124
- width: '90%',
125
- panelClass: 'aca-edit-rule-dialog-container',
126
- data: {
127
- model,
128
- nodeId: this.nodeId,
129
- parameterConstraints$: this.parameterConstraints$,
130
- actionDefinitions$: this.actionDefinitions$
131
- }
132
- });
133
- this.onSubmitRuleDialog(dialogRef);
134
- }
135
- onSubmitRuleDialog(dialogRef) {
136
- dialogRef.componentInstance.submitted.subscribe(async (rule) => {
137
- try {
138
- if (rule.id) {
139
- await this.onRuleUpdate(rule);
140
- }
141
- else {
142
- await this.onRuleCreate(rule);
143
- }
144
- dialogRef.close();
145
- }
146
- catch (error) {
147
- this.notificationService.showError(error.response.body.error.errorKey);
148
- }
149
- });
150
- }
151
- async onRuleUpdate(rule) {
152
- const newRule = await this.folderRulesService.updateRule(this.nodeId, rule.id, rule);
153
- this.folderRuleSetsService.addOrUpdateRuleInMainRuleSet(newRule);
154
- }
155
- async onRuleCreate(ruleCreateParams) {
156
- const newRule = await this.folderRulesService.createRule(this.nodeId, ruleCreateParams);
157
- this.folderRuleSetsService.addOrUpdateRuleInMainRuleSet(newRule);
158
- }
159
- async onRuleEnabledToggle(rule, isEnabled) {
160
- const updatedRule = await this.folderRulesService.updateRule(this.nodeId, rule.id, { ...rule, isEnabled });
161
- this.folderRuleSetsService.addOrUpdateRuleInMainRuleSet(updatedRule);
162
- }
163
- async onInheritanceToggleChange(event) {
164
- this.isInheritanceToggleDisabled = true;
165
- const ruleSettings = await this.folderRulesService.updateRuleSettings(this.nodeId, '-isInheritanceEnabled-', { value: event.checked });
166
- this.isInheritanceEnabled = ruleSettings.value;
167
- this.folderRuleSetsService.loadRuleSets(this.nodeId);
168
- this.isInheritanceToggleDisabled = false;
169
- }
170
- onRuleDeleteButtonClicked(rule) {
171
- this.matDialogService
172
- .open(ConfirmDialogComponent, {
173
- data: {
174
- title: 'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE.TITLE',
175
- message: 'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE.MESSAGE'
176
- },
177
- minWidth: '346px'
178
- })
179
- .afterClosed()
180
- .subscribe((result) => {
181
- if (result) {
182
- this.folderRulesService.deleteRule(this.nodeId, rule.id);
183
- }
184
- });
185
- }
186
- onRuleDelete(deletedRuleId) {
187
- this.folderRuleSetsService.removeRuleFromMainRuleSet(deletedRuleId);
188
- }
189
- onLoadMoreRuleSets() {
190
- this.folderRuleSetsService.loadMoreInheritedRuleSets();
191
- }
192
- onLoadMoreRules(ruleSet) {
193
- this.folderRulesService.loadRules(ruleSet);
194
- }
195
- canEditRule(ruleSet) {
196
- return !ruleSet || FolderRuleSetsService.isOwnedRuleSet(ruleSet, this.nodeId);
197
- }
198
- openLinkRulesDialog(existingRuleSet) {
199
- this.matDialogService
200
- .open(RuleSetPickerSmartComponent, {
201
- width: '90%',
202
- panelClass: 'aca-rule-set-picker-container',
203
- data: {
204
- nodeId: this.nodeId,
205
- defaultNodeId: this.nodeId,
206
- existingRuleSet
207
- }
208
- })
209
- .afterClosed()
210
- .subscribe((result) => {
211
- if (result) {
212
- this.folderRuleSetsService.refreshMainRuleSet();
213
- }
214
- });
215
- }
216
- onRuleSetUnlinkClicked(linkedRuleSet) {
217
- this.matDialogService
218
- .open(ConfirmDialogComponent, {
219
- data: {
220
- title: 'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE_SET_LINK.TITLE',
221
- message: 'ACA_FOLDER_RULES.CONFIRMATION_DIALOG.DELETE_RULE_SET_LINK.MESSAGE'
222
- },
223
- minWidth: '346px'
224
- })
225
- .afterClosed()
226
- .subscribe(async (result) => {
227
- if (result) {
228
- try {
229
- await this.folderRuleSetsService.deleteRuleSetLink(this.nodeId, linkedRuleSet.id);
230
- this.folderRuleSetsService.refreshMainRuleSet();
231
- }
232
- catch (error) {
233
- this.notificationService.showError('ACA_FOLDER_RULES.ERRORS.DELETE_RULE_SET_LINK_FAILED');
234
- }
235
- }
236
- });
237
- }
238
- }
239
- ManageRulesSmartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ManageRulesSmartComponent, deps: [{ token: i1.Location }, { token: i2.FolderRulesService }, { token: i3.ActivatedRoute }, { token: i4.MatDialog }, { token: i5.NotificationService }, { token: i6.ActionsService }, { token: i7.FolderRuleSetsService }], target: i0.ɵɵFactoryTarget.Component });
240
- ManageRulesSmartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ManageRulesSmartComponent, isStandalone: true, selector: "aca-manage-rules", host: { classAttribute: "aca-manage-rules" }, ngImport: i0, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"aca-main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n class=\"aca-manage-rules__actions-bar__toggle\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"aca-manage-rules__actions-bar__vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet$]=\"mainRuleSet$\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [parameterConstraints]=\"parameterConstraints$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules .mat-mdc-slide-toggle:is(mat-slide-toggle) .mdc-switch:enabled .mdc-switch__track:after{background:var(--mdc-switch-selected-track-color)}.aca-manage-rules .mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle:before{background:var(--mdc-switch-selected-pressed-handle-color)}.aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar__toggle{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar__vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header .aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header .aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header .aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;margin:0;min-width:unset}.aca-manage-rules__container__rule-details__header .aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn mat-icon{margin:0;padding:0;width:24px;height:24px;font-size:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "component", type: PageLayoutComponent, selector: "aca-page-layout", inputs: ["hasError"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i5.ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: i5.ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i12.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i13.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: RuleListUiComponent, selector: "aca-rule-list", inputs: ["mainRuleSet$", "folderId", "inheritedRuleSets", "hasMoreRuleSets", "ruleSetsLoading", "selectedRule"], outputs: ["loadMoreRuleSets", "loadMoreRules", "selectRule", "ruleEnabledChanged", "ruleSetEditLinkClicked", "ruleSetUnlinkClicked"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TemplateModule }, { kind: "component", type: i5.EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "component", type: GenericErrorComponent, selector: "aca-generic-error", inputs: ["text"] }, { kind: "component", type: RuleDetailsUiComponent, selector: "aca-rule-details", inputs: ["readOnly", "value", "preview", "actionDefinitions", "parameterConstraints", "nodeId"], outputs: ["formValidationChanged", "formValueChanged"] }, { kind: "ngmodule", type: MatDialogModule }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
241
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ManageRulesSmartComponent, decorators: [{
242
- type: Component,
243
- args: [{ standalone: true, imports: [
244
- CommonModule,
245
- TranslateModule,
246
- PageLayoutComponent,
247
- ToolbarModule,
248
- MatButtonModule,
249
- MatIconModule,
250
- MatProgressBarModule,
251
- MatSlideToggleModule,
252
- MatDividerModule,
253
- RuleListUiComponent,
254
- RouterModule,
255
- TemplateModule,
256
- GenericErrorComponent,
257
- RuleDetailsUiComponent,
258
- MatDialogModule
259
- ], selector: 'aca-manage-rules', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: { class: 'aca-manage-rules' }, template: "<aca-page-layout>\n\n <div class=\"aca-page-layout-header\">\n <adf-toolbar class=\"adf-toolbar--inline\">\n <button mat-icon-button (click)=\"goBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </adf-toolbar>\n <h1 class=\"aca-page-title\">{{ 'ACA_FOLDER_RULES.ACTIONS.MANAGE_RULES' | translate }}</h1>\n </div>\n\n <div class=\"aca-page-layout-content\">\n <div class=\"aca-main-content\">\n\n <ng-container *ngIf=\"((ruleSetsLoading$ | async) && (inheritedRuleSets$ | async).length === 0) || (actionsLoading$ | async); else onLoaded\">\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\n </ng-container>\n\n <ng-template #onLoaded>\n <ng-container *ngIf=\"folderInfo$ | async; else genericError\">\n <adf-toolbar class=\"adf-toolbar--inline aca-manage-rules__actions-bar\">\n\n <adf-toolbar-title class=\"aca-manage-rules__actions-bar__title\">\n <mat-icon class=\"icon-aligner\">folder</mat-icon>\n <h2 class=\"aca-page-title\">{{ (folderInfo$ | async).name }}:{{'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.BREADCRUMB.RULES' | translate}}</h2>\n </adf-toolbar-title>\n\n <mat-slide-toggle\n data-automation-id=\"manage-rules-inheritance-toggle-button\"\n class=\"aca-manage-rules__actions-bar__toggle\"\n [checked]=\"isInheritanceEnabled\"\n (change)=\"onInheritanceToggleChange($event)\"\n [disabled]=\"isInheritanceToggleDisabled\"\n [labelPosition]=\"'before'\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.INHERIT_RULES' | translate }}\n </mat-slide-toggle>\n\n <mat-divider vertical class=\"aca-manage-rules__actions-bar__vertical-divider\"></mat-divider>\n\n <div class=\"aca-manage-rules__actions-bar__buttons\">\n <button\n *ngIf=\"!(mainRuleSet$ | async)\"\n data-automation-id=\"manage-rules-link-button\"\n mat-stroked-button\n (click)=\"openLinkRulesDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.LINK_RULES' | translate }}\n </button>\n\n <button\n *ngIf=\"canEditMainRule\"\n data-automation-id=\"manage-rules-create-button\"\n mat-flat-button color=\"primary\"\n (click)=\"openCreateUpdateRuleDialog()\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.CREATE_RULE' | translate }}\n </button>\n </div>\n\n </adf-toolbar>\n <mat-divider></mat-divider>\n\n <div class=\"aca-manage-rules__container\" *ngIf=\"isMainRuleSetNotEmpty || isInheritedRuleSetsNotEmpty; else emptyContent\">\n <aca-rule-list\n [mainRuleSet$]=\"mainRuleSet$\"\n [folderId]=\"nodeId\"\n [inheritedRuleSets]=\"inheritedRuleSets$ | async\"\n [hasMoreRuleSets]=\"hasMoreRuleSets$ | async\"\n [ruleSetsLoading]=\"ruleSetsLoading$ | async\"\n [selectedRule]=\"selectedRule$ | async\"\n (loadMoreRuleSets)=\"onLoadMoreRuleSets()\"\n (loadMoreRules)=\"onLoadMoreRules($event)\"\n (selectRule)=\"onSelectRule($event)\"\n (ruleEnabledChanged)=\"onRuleEnabledToggle($event[0], $event[1])\"\n (ruleSetEditLinkClicked)=\"openLinkRulesDialog($event)\"\n (ruleSetUnlinkClicked)=\"onRuleSetUnlinkClicked($event)\">\n </aca-rule-list>\n\n <div class=\"aca-manage-rules__container__rule-details\">\n\n <div class=\"aca-manage-rules__container__rule-details__header\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <div class=\"aca-manage-rules__container__rule-details__header__title\">\n <div class=\"aca-manage-rules__container__rule-details__header__title__name\">\n {{ selectedRule.name }}\n </div>\n <div class=\"aca-manage-rules__container__rule-details__header__title__description\">\n {{ selectedRule.description }}\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__header__buttons\">\n <ng-container *ngIf=\"canEditSelectedRule; else goToFolderButton\">\n <button mat-stroked-button (click)=\"onRuleDeleteButtonClicked(selectedRule)\" id=\"delete-rule-btn\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n <button mat-stroked-button (click)=\"openCreateUpdateRuleDialog(selectedRule)\" id=\"edit-rule-btn\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.EDIT_RULE' | translate }}\n </button>\n </ng-container>\n\n <ng-template #goToFolderButton>\n <button mat-stroked-button [routerLink]=\"['/nodes', (selectedRuleSet$ | async).owningFolder.id, 'rules']\">\n {{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}\n </button>\n </ng-template>\n </div>\n </div>\n\n <div class=\"aca-manage-rules__container__rule-details__content\" *ngIf=\"(selectedRule$ | async) as selectedRule\">\n <aca-rule-details\n [actionDefinitions]=\"actionDefinitions$ | async\"\n [parameterConstraints]=\"parameterConstraints$ | async\"\n [readOnly]=\"true\"\n [preview]=\"true\"\n [value]=\"selectedRule\"\n [nodeId]=\"nodeId\">\n </aca-rule-details>\n </div>\n </div>\n </div>\n\n <ng-template #emptyContent>\n <adf-empty-content\n icon=\"library_books\"\n [title]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.TITLE' | translate\"\n [subtitle]=\"'ACA_FOLDER_RULES.MANAGE_RULES.EMPTY_RULES_LIST.SUBTITLE' | translate\"\n >\n </adf-empty-content>\n </ng-template>\n </ng-container>\n\n <ng-template #genericError>\n <div class=\"aca-page-layout-error\">\n <aca-generic-error></aca-generic-error>\n </div>\n </ng-template>\n\n </ng-template>\n\n </div>\n </div>\n\n</aca-page-layout>\n", styles: [".aca-manage-rules .mat-mdc-slide-toggle:is(mat-slide-toggle) .mdc-switch:enabled .mdc-switch__track:after{background:var(--mdc-switch-selected-track-color)}.aca-manage-rules .mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle:before{background:var(--mdc-switch-selected-pressed-handle-color)}.aca-manage-rules__actions-bar{padding:0 30px;display:flex;align-items:center}.aca-manage-rules__actions-bar .aca-page-title{margin-left:18px}.aca-manage-rules__actions-bar__title{align-items:center;flex:1}.aca-manage-rules__actions-bar__buttons{display:flex;align-items:stretch;gap:12px}.aca-manage-rules__actions-bar__toggle{font-weight:600;font-size:14px}.aca-manage-rules__actions-bar__vertical-divider{height:50%;margin:0 12px}.aca-manage-rules__container{display:grid;grid-template-columns:minmax(250px,1fr) 3fr;padding:20px;gap:12px;overflow-y:auto;flex:1}.aca-manage-rules__container__rule-details{border:1px solid var(--theme-border-color);border-radius:12px;overflow-y:auto}.aca-manage-rules__container__rule-details__header{position:sticky;top:0;z-index:1;display:flex;flex-direction:row;align-items:flex-start;overflow-x:auto;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--theme-border-color);background-color:var(--theme-background-color);column-gap:20px}.aca-manage-rules__container__rule-details__header__title{display:flex;flex-direction:column;gap:4px;word-wrap:break-word;min-width:100px}.aca-manage-rules__container__rule-details__header__title__name{font-size:1.2em;font-weight:700}.aca-manage-rules__container__rule-details__header__title__description{font-size:.8em;font-style:italic}.aca-manage-rules__container__rule-details__header .aca-manage-rules__container__rule-details__header__buttons{display:flex;flex-direction:row;align-items:stretch;gap:4px}.aca-manage-rules__container__rule-details__header .aca-manage-rules__container__rule-details__header__buttons button{color:var(--theme-text-color)}.aca-manage-rules__container__rule-details__header .aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn{padding:0 8px;margin:0;min-width:unset}.aca-manage-rules__container__rule-details__header .aca-manage-rules__container__rule-details__header__buttons button#delete-rule-btn mat-icon{margin:0;padding:0;width:24px;height:24px;font-size:24px}\n"] }]
260
- }], ctorParameters: function () { return [{ type: i1.Location }, { type: i2.FolderRulesService }, { type: i3.ActivatedRoute }, { type: i4.MatDialog }, { type: i5.NotificationService }, { type: i6.ActionsService }, { type: i7.FolderRuleSetsService }]; } });
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L2ZvbGRlci1ydWxlcy9zcmMvbWFuYWdlLXJ1bGVzL21hbmFnZS1ydWxlcy5zbWFydC1jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL21hbmFnZS1ydWxlcy9tYW5hZ2UtcnVsZXMuc21hcnQtY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFB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LGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxxQkFBcUI7d0JBQ3JCLHNCQUFzQjt3QkFDdEIsZUFBZTtxQkFDaEIsWUFDUyxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsT0FBTyxRQUMxQyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9sZGVyUnVsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9sZGVyLXJ1bGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSdWxlIH0gZnJvbSAnLi4vbW9kZWwvcnVsZS5tb2RlbCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5vZGVJbmZvIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgZGVsYXksIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVkaXRSdWxlRGlhbG9nVWlDb21wb25lbnQgfSBmcm9tICcuLi9ydWxlLWRldGFpbHMvZWRpdC1ydWxlLWRpYWxvZy51aS1jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSwgVGVtcGxhdGVNb2R1bGUsIFRvb2xiYXJNb2R1bGUsIENvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQWN0aW9uRGVmaW5pdGlvblRyYW5zZm9ybWVkIH0gZnJvbSAnLi4vbW9kZWwvcnVsZS1hY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgQWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9sZGVyUnVsZVNldHNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9sZGVyLXJ1bGUtc2V0cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJ1bGVTZXQgfSBmcm9tICcuLi9tb2RlbC9ydWxlLXNldC5tb2RlbCc7XG5pbXBvcnQgeyBSdWxlU2V0UGlja2VyU21hcnRDb21wb25lbnQgfSBmcm9tICcuLi9ydWxlLXNldC1waWNrZXIvcnVsZS1zZXQtcGlja2VyLnNtYXJ0LWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZUNoYW5nZSwgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgQWN0aW9uUGFyYW1ldGVyQ29uc3RyYWludCB9IGZyb20gJy4uL21vZGVsL2FjdGlvbi1wYXJhbWV0ZXItY29uc3RyYWludC5tb2RlbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEdlbmVyaWNFcnJvckNvbXBvbmVudCwgUGFnZUxheW91dENvbXBvbmVudCB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBSdWxlTGlzdFVpQ29tcG9uZW50IH0gZnJvbSAnLi4vcnVsZS1saXN0L3J1bGUtbGlzdC9ydWxlLWxpc3QudWktY29tcG9uZW50JztcbmltcG9ydCB7IFJ1bGVEZXRhaWxzVWlDb21wb25lbnQgfSBmcm9tICcuLi9ydWxlLWRldGFpbHMvcnVsZS1kZXRhaWxzLnVpLWNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIFRvb2xiYXJNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBSdWxlTGlzdFVpQ29tcG9uZW50LFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBUZW1wbGF0ZU1vZHVsZSxcbiAgICBHZW5lcmljRXJyb3JDb21wb25lbnQsXG4gICAgUnVsZURldGFpbHNVaUNvbXBvbmVudCxcbiAgICBNYXREaWFsb2dNb2R1bGVcbiAgXSxcbiAgc2VsZWN0b3I6ICdhY2EtbWFuYWdlLXJ1bGVzJyxcbiAgdGVtcGxhdGVVcmw6ICdtYW5hZ2UtcnVsZXMuc21hcnQtY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnbWFuYWdlLXJ1bGVzLnNtYXJ0LWNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgaG9zdDogeyBjbGFzczogJ2FjYS1tYW5hZ2UtcnVsZXMnIH1cbn0pXG5leHBvcnQgY2xhc3MgTWFuYWdlUnVsZXNTbWFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgbm9kZUlkID0gJyc7XG4gIGlzSW5oZXJpdGFuY2VFbmFibGVkID0gdHJ1ZTtcbiAgaXNJbmhlcml0YW5jZVRvZ2dsZURpc2FibGVkID0gZmFsc2U7XG5cbiAgbWFpblJ1bGVTZXQkOiBPYnNlcnZhYmxlPFJ1bGVTZXQ+O1xuICBpbmhlcml0ZWRSdWxlU2V0cyQ6IE9ic2VydmFibGU8UnVsZVNldFtdPjtcbiAgc2VsZWN0ZWRSdWxlJDogT2JzZXJ2YWJsZTxSdWxlPjtcbiAgc2VsZWN0ZWRSdWxlU2V0JDogT2JzZXJ2YWJsZTxSdWxlU2V0PjtcbiAgaGFzTW9yZVJ1bGVTZXRzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcnVsZVNldHNMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgZm9sZGVySW5mbyQ6IE9ic2VydmFibGU8Tm9kZUluZm8+O1xuXG4gIGFjdGlvbnNMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgYWN0aW9uRGVmaW5pdGlvbnMkOiBPYnNlcnZhYmxlPEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZFtdPjtcbiAgcGFyYW1ldGVyQ29uc3RyYWludHMkOiBPYnNlcnZhYmxlPEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnRbXT47XG4gIGNhbkVkaXRNYWluUnVsZSA9IGZhbHNlO1xuICBjYW5FZGl0U2VsZWN0ZWRSdWxlID0gZmFsc2U7XG4gIGlzTWFpblJ1bGVTZXROb3RFbXB0eSA9IGZhbHNlO1xuICBpc0luaGVyaXRlZFJ1bGVTZXRzTm90RW1wdHkgPSBmYWxzZTtcblxuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9hY3Rpb25EZWZpbml0aW9uc1N1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgZm9sZGVyUnVsZXNTZXJ2aWNlOiBGb2xkZXJSdWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBtYXREaWFsb2dTZXJ2aWNlOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9uc1NlcnZpY2U6IEFjdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9sZGVyUnVsZVNldHNTZXJ2aWNlOiBGb2xkZXJSdWxlU2V0c1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWFpblJ1bGVTZXQkID0gdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UubWFpblJ1bGVTZXQkO1xuICAgIHRoaXMuaW5oZXJpdGVkUnVsZVNldHMkID0gdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UuaW5oZXJpdGVkUnVsZVNldHMkO1xuICAgIHRoaXMuc2VsZWN0ZWRSdWxlJCA9IHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLnNlbGVjdGVkUnVsZSQ7XG4gICAgdGhpcy5zZWxlY3RlZFJ1bGVTZXQkID0gdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2Uuc2VsZWN0ZWRSdWxlU2V0JDtcbiAgICB0aGlzLmhhc01vcmVSdWxlU2V0cyQgPSB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5oYXNNb3JlUnVsZVNldHMkO1xuICAgIHRoaXMucnVsZVNldHNMb2FkaW5nJCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmlzTG9hZGluZyQ7XG4gICAgdGhpcy5mb2xkZXJJbmZvJCA9IHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmZvbGRlckluZm8kO1xuXG4gICAgdGhpcy5hY3Rpb25zTG9hZGluZyQgPSB0aGlzLmFjdGlvbnNTZXJ2aWNlLmxvYWRpbmckLnBpcGUoZGVsYXkoMCkpO1xuICAgIHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMkID0gdGhpcy5hY3Rpb25zU2VydmljZS5hY3Rpb25EZWZpbml0aW9uc0xpc3RpbmckO1xuICAgIHRoaXMucGFyYW1ldGVyQ29uc3RyYWludHMkID0gdGhpcy5hY3Rpb25zU2VydmljZS5wYXJhbWV0ZXJDb25zdHJhaW50cyQ7XG5cbiAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5kZWxldGVkUnVsZUlkJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGRlbGV0ZWRSdWxlSWQpID0+IHRoaXMub25SdWxlRGVsZXRlKGRlbGV0ZWRSdWxlSWQpKTtcblxuICAgIHRoaXMuYWN0aW9uc1NlcnZpY2UubG9hZEFjdGlvbkRlZmluaXRpb25zKCk7XG5cbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgdGhpcy5ub2RlSWQgPSBwYXJhbXMubm9kZUlkO1xuICAgICAgaWYgKHRoaXMubm9kZUlkKSB7XG4gICAgICAgIHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLmdldFJ1bGVTZXR0aW5ncyh0aGlzLm5vZGVJZCkudGhlbigocnVsZVNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0luaGVyaXRhbmNlRW5hYmxlZCA9IHJ1bGVTZXR0aW5ncy52YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UubG9hZFJ1bGVTZXRzKHRoaXMubm9kZUlkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2FjdGlvbkRlZmluaXRpb25zU3ViID0gdGhpcy5hY3Rpb25EZWZpbml0aW9ucyQuc3Vic2NyaWJlKChhY3Rpb25EZWZpbml0aW9uczogQWN0aW9uRGVmaW5pdGlvblRyYW5zZm9ybWVkW10pID0+XG4gICAgICB0aGlzLmFjdGlvbnNTZXJ2aWNlLmxvYWRBY3Rpb25QYXJhbWV0ZXJDb25zdHJhaW50cyhhY3Rpb25EZWZpbml0aW9ucylcbiAgICApO1xuXG4gICAgdGhpcy5tYWluUnVsZVNldCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChydWxlU2V0KSA9PiB7XG4gICAgICB0aGlzLmNhbkVkaXRNYWluUnVsZSA9IHRoaXMuY2FuRWRpdFJ1bGUocnVsZVNldCk7XG4gICAgICB0aGlzLmlzTWFpblJ1bGVTZXROb3RFbXB0eSA9ICEhcnVsZVNldDtcbiAgICB9KTtcblxuICAgIHRoaXMuaW5oZXJpdGVkUnVsZVNldHMkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoaW5oZXJpdGVkUnVsZVNldCkgPT4ge1xuICAgICAgdGhpcy5pc0luaGVyaXRlZFJ1bGVTZXRzTm90RW1wdHkgPSBpbmhlcml0ZWRSdWxlU2V0LnNvbWUoKHJ1bGVTZXQpID0+IHJ1bGVTZXQucnVsZXMuc29tZSgocnVsZTogUnVsZSkgPT4gcnVsZS5pc0VuYWJsZWQpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0ZWRSdWxlU2V0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKHJ1bGVTZXQpID0+IHtcbiAgICAgIHRoaXMuY2FuRWRpdFNlbGVjdGVkUnVsZSA9IHRoaXMuY2FuRWRpdFJ1bGUocnVsZVNldCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2FjdGlvbkRlZmluaXRpb25zU3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnb0JhY2soKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG4gIH1cblxuICBvblNlbGVjdFJ1bGUocnVsZTogUnVsZSkge1xuICAgIHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLnNlbGVjdFJ1bGUocnVsZSk7XG4gIH1cblxuICBvcGVuQ3JlYXRlVXBkYXRlUnVsZURpYWxvZyhtb2RlbCA9IHt9KSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2dTZXJ2aWNlLm9wZW4oRWRpdFJ1bGVEaWFsb2dVaUNvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc5MCUnLFxuICAgICAgcGFuZWxDbGFzczogJ2FjYS1lZGl0LXJ1bGUtZGlhbG9nLWNvbnRhaW5lcicsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIG1vZGVsLFxuICAgICAgICBub2RlSWQ6IHRoaXMubm9kZUlkLFxuICAgICAgICBwYXJhbWV0ZXJDb25zdHJhaW50cyQ6IHRoaXMucGFyYW1ldGVyQ29uc3RyYWludHMkLFxuICAgICAgICBhY3Rpb25EZWZpbml0aW9ucyQ6IHRoaXMuYWN0aW9uRGVmaW5pdGlvbnMkXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uU3VibWl0UnVsZURpYWxvZyhkaWFsb2dSZWYpO1xuICB9XG5cbiAgb25TdWJtaXRSdWxlRGlhbG9nKGRpYWxvZ1JlZikge1xuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5zdWJtaXR0ZWQuc3Vic2NyaWJlKGFzeW5jIChydWxlKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAocnVsZS5pZCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMub25SdWxlVXBkYXRlKHJ1bGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IHRoaXMub25SdWxlQ3JlYXRlKHJ1bGUpO1xuICAgICAgICB9XG4gICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcihlcnJvci5yZXNwb25zZS5ib2R5LmVycm9yLmVycm9yS2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uUnVsZVVwZGF0ZShydWxlOiBSdWxlKSB7XG4gICAgY29uc3QgbmV3UnVsZSA9IGF3YWl0IHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLnVwZGF0ZVJ1bGUodGhpcy5ub2RlSWQsIHJ1bGUuaWQsIHJ1bGUpO1xuICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmFkZE9yVXBkYXRlUnVsZUluTWFpblJ1bGVTZXQobmV3UnVsZSk7XG4gIH1cblxuICBhc3luYyBvblJ1bGVDcmVhdGUocnVsZUNyZWF0ZVBhcmFtczogUGFydGlhbDxSdWxlPikge1xuICAgIGNvbnN0IG5ld1J1bGUgPSBhd2FpdCB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5jcmVhdGVSdWxlKHRoaXMubm9kZUlkLCBydWxlQ3JlYXRlUGFyYW1zKTtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5hZGRPclVwZGF0ZVJ1bGVJbk1haW5SdWxlU2V0KG5ld1J1bGUpO1xuICB9XG5cbiAgYXN5bmMgb25SdWxlRW5hYmxlZFRvZ2dsZShydWxlOiBSdWxlLCBpc0VuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB1cGRhdGVkUnVsZSA9IGF3YWl0IHRoaXMuZm9sZGVyUnVsZXNTZXJ2aWNlLnVwZGF0ZVJ1bGUodGhpcy5ub2RlSWQsIHJ1bGUuaWQsIHsgLi4ucnVsZSwgaXNFbmFibGVkIH0pO1xuICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLmFkZE9yVXBkYXRlUnVsZUluTWFpblJ1bGVTZXQodXBkYXRlZFJ1bGUpO1xuICB9XG5cbiAgYXN5bmMgb25Jbmhlcml0YW5jZVRvZ2dsZUNoYW5nZShldmVudDogTWF0U2xpZGVUb2dnbGVDaGFuZ2UpIHtcbiAgICB0aGlzLmlzSW5oZXJpdGFuY2VUb2dnbGVEaXNhYmxlZCA9IHRydWU7XG4gICAgY29uc3QgcnVsZVNldHRpbmdzID0gYXdhaXQgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UudXBkYXRlUnVsZVNldHRpbmdzKHRoaXMubm9kZUlkLCAnLWlzSW5oZXJpdGFuY2VFbmFibGVkLScsIHsgdmFsdWU6IGV2ZW50LmNoZWNrZWQgfSk7XG4gICAgdGhpcy5pc0luaGVyaXRhbmNlRW5hYmxlZCA9IHJ1bGVTZXR0aW5ncy52YWx1ZTtcbiAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5sb2FkUnVsZVNldHModGhpcy5ub2RlSWQpO1xuICAgIHRoaXMuaXNJbmhlcml0YW5jZVRvZ2dsZURpc2FibGVkID0gZmFsc2U7XG4gIH1cblxuICBvblJ1bGVEZWxldGVCdXR0b25DbGlja2VkKHJ1bGU6IFJ1bGUpIHtcbiAgICB0aGlzLm1hdERpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRpdGxlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFLlRJVExFJyxcbiAgICAgICAgICBtZXNzYWdlOiAnQUNBX0ZPTERFUl9SVUxFUy5DT05GSVJNQVRJT05fRElBTE9HLkRFTEVURV9SVUxFLk1FU1NBR0UnXG4gICAgICAgIH0sXG4gICAgICAgIG1pbldpZHRoOiAnMzQ2cHgnXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdGhpcy5mb2xkZXJSdWxlc1NlcnZpY2UuZGVsZXRlUnVsZSh0aGlzLm5vZGVJZCwgcnVsZS5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb25SdWxlRGVsZXRlKGRlbGV0ZWRSdWxlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuZm9sZGVyUnVsZVNldHNTZXJ2aWNlLnJlbW92ZVJ1bGVGcm9tTWFpblJ1bGVTZXQoZGVsZXRlZFJ1bGVJZCk7XG4gIH1cblxuICBvbkxvYWRNb3JlUnVsZVNldHMoKSB7XG4gICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UubG9hZE1vcmVJbmhlcml0ZWRSdWxlU2V0cygpO1xuICB9XG5cbiAgb25Mb2FkTW9yZVJ1bGVzKHJ1bGVTZXQ6IFJ1bGVTZXQpIHtcbiAgICB0aGlzLmZvbGRlclJ1bGVzU2VydmljZS5sb2FkUnVsZXMocnVsZVNldCk7XG4gIH1cblxuICBjYW5FZGl0UnVsZShydWxlU2V0OiBSdWxlU2V0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFydWxlU2V0IHx8IEZvbGRlclJ1bGVTZXRzU2VydmljZS5pc093bmVkUnVsZVNldChydWxlU2V0LCB0aGlzLm5vZGVJZCk7XG4gIH1cblxuICBvcGVuTGlua1J1bGVzRGlhbG9nKGV4aXN0aW5nUnVsZVNldD86IFJ1bGVTZXQpIHtcbiAgICB0aGlzLm1hdERpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKFJ1bGVTZXRQaWNrZXJTbWFydENvbXBvbmVudCwge1xuICAgICAgICB3aWR0aDogJzkwJScsXG4gICAgICAgIHBhbmVsQ2xhc3M6ICdhY2EtcnVsZS1zZXQtcGlja2VyLWNvbnRhaW5lcicsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBub2RlSWQ6IHRoaXMubm9kZUlkLFxuICAgICAgICAgIGRlZmF1bHROb2RlSWQ6IHRoaXMubm9kZUlkLFxuICAgICAgICAgIGV4aXN0aW5nUnVsZVNldFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdGhpcy5mb2xkZXJSdWxlU2V0c1NlcnZpY2UucmVmcmVzaE1haW5SdWxlU2V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb25SdWxlU2V0VW5saW5rQ2xpY2tlZChsaW5rZWRSdWxlU2V0OiBSdWxlU2V0KSB7XG4gICAgdGhpcy5tYXREaWFsb2dTZXJ2aWNlXG4gICAgICAub3BlbihDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB0aXRsZTogJ0FDQV9GT0xERVJfUlVMRVMuQ09ORklSTUFUSU9OX0RJQUxPRy5ERUxFVEVfUlVMRV9TRVRfTElOSy5USVRMRScsXG4gICAgICAgICAgbWVzc2FnZTogJ0FDQV9GT0xERVJfUlVMRVMuQ09ORklSTUFUSU9OX0RJQUxPRy5ERUxFVEVfUlVMRV9TRVRfTElOSy5NRVNTQUdFJ1xuICAgICAgICB9LFxuICAgICAgICBtaW5XaWR0aDogJzM0NnB4J1xuICAgICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5kZWxldGVSdWxlU2V0TGluayh0aGlzLm5vZGVJZCwgbGlua2VkUnVsZVNldC5pZCk7XG4gICAgICAgICAgICB0aGlzLmZvbGRlclJ1bGVTZXRzU2VydmljZS5yZWZyZXNoTWFpblJ1bGVTZXQoKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcignQUNBX0ZPTERFUl9SVUxFUy5FUlJPUlMuREVMRVRFX1JVTEVfU0VUX0xJTktfRkFJTEVEJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGFjYS1wYWdlLWxheW91dD5cblxuICA8ZGl2IGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWhlYWRlclwiPlxuICAgIDxhZGYtdG9vbGJhciBjbGFzcz1cImFkZi10b29sYmFyLS1pbmxpbmVcIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2FkZi10b29sYmFyPlxuICAgIDxoMSBjbGFzcz1cImFjYS1wYWdlLXRpdGxlXCI+e3sgJ0FDQV9GT0xERVJfUlVMRVMuQUNUSU9OUy5NQU5BR0VfUlVMRVMnIHwgdHJhbnNsYXRlIH19PC9oMT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImFjYS1tYWluLWNvbnRlbnRcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIigocnVsZVNldHNMb2FkaW5nJCB8IGFzeW5jKSAmJiAoaW5oZXJpdGVkUnVsZVNldHMkIHwgYXN5bmMpLmxlbmd0aCA9PT0gMCkgfHwgKGFjdGlvbnNMb2FkaW5nJCB8IGFzeW5jKTsgZWxzZSBvbkxvYWRlZFwiPlxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI29uTG9hZGVkPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9sZGVySW5mbyQgfCBhc3luYzsgZWxzZSBnZW5lcmljRXJyb3JcIj5cbiAgICAgICAgICA8YWRmLXRvb2xiYXIgY2xhc3M9XCJhZGYtdG9vbGJhci0taW5saW5lIGFjYS1tYW5hZ2UtcnVsZXNfX2FjdGlvbnMtYmFyXCI+XG5cbiAgICAgICAgICAgIDxhZGYtdG9vbGJhci10aXRsZSBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2FjdGlvbnMtYmFyX190aXRsZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLWFsaWduZXJcIj5mb2xkZXI8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJhY2EtcGFnZS10aXRsZVwiPnt7IChmb2xkZXJJbmZvJCB8IGFzeW5jKS5uYW1lIH19Ont7J0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQlJFQURDUlVNQi5SVUxFUycgfCB0cmFuc2xhdGV9fTwvaDI+XG4gICAgICAgICAgICA8L2FkZi10b29sYmFyLXRpdGxlPlxuXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJtYW5hZ2UtcnVsZXMtaW5oZXJpdGFuY2UtdG9nZ2xlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fYWN0aW9ucy1iYXJfX3RvZ2dsZVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzSW5oZXJpdGFuY2VFbmFibGVkXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkluaGVyaXRhbmNlVG9nZ2xlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJbmhlcml0YW5jZVRvZ2dsZURpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIj5cbiAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5JTkhFUklUX1JVTEVTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXIgdmVydGljYWwgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fdmVydGljYWwtZGl2aWRlclwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19hY3Rpb25zLWJhcl9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKG1haW5SdWxlU2V0JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwibWFuYWdlLXJ1bGVzLWxpbmstYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkxpbmtSdWxlc0RpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLlRPT0xCQVIuQUNUSU9OUy5MSU5LX1JVTEVTJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5FZGl0TWFpblJ1bGVcIlxuICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cIm1hbmFnZS1ydWxlcy1jcmVhdGUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZVVwZGF0ZVJ1bGVEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdBQ0FfRk9MREVSX1JVTEVTLk1BTkFHRV9SVUxFUy5UT09MQkFSLkFDVElPTlMuQ1JFQVRFX1JVTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2FkZi10b29sYmFyPlxuICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lclwiICpuZ0lmPVwiaXNNYWluUnVsZVNldE5vdEVtcHR5IHx8IGlzSW5oZXJpdGVkUnVsZVNldHNOb3RFbXB0eTsgZWxzZSBlbXB0eUNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxhY2EtcnVsZS1saXN0XG4gICAgICAgICAgICAgIFttYWluUnVsZVNldCRdPVwibWFpblJ1bGVTZXQkXCJcbiAgICAgICAgICAgICAgW2ZvbGRlcklkXT1cIm5vZGVJZFwiXG4gICAgICAgICAgICAgIFtpbmhlcml0ZWRSdWxlU2V0c109XCJpbmhlcml0ZWRSdWxlU2V0cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtoYXNNb3JlUnVsZVNldHNdPVwiaGFzTW9yZVJ1bGVTZXRzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3J1bGVTZXRzTG9hZGluZ109XCJydWxlU2V0c0xvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRSdWxlXT1cInNlbGVjdGVkUnVsZSQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIChsb2FkTW9yZVJ1bGVTZXRzKT1cIm9uTG9hZE1vcmVSdWxlU2V0cygpXCJcbiAgICAgICAgICAgICAgKGxvYWRNb3JlUnVsZXMpPVwib25Mb2FkTW9yZVJ1bGVzKCRldmVudClcIlxuICAgICAgICAgICAgICAoc2VsZWN0UnVsZSk9XCJvblNlbGVjdFJ1bGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChydWxlRW5hYmxlZENoYW5nZWQpPVwib25SdWxlRW5hYmxlZFRvZ2dsZSgkZXZlbnRbMF0sICRldmVudFsxXSlcIlxuICAgICAgICAgICAgICAocnVsZVNldEVkaXRMaW5rQ2xpY2tlZCk9XCJvcGVuTGlua1J1bGVzRGlhbG9nKCRldmVudClcIlxuICAgICAgICAgICAgICAocnVsZVNldFVubGlua0NsaWNrZWQpPVwib25SdWxlU2V0VW5saW5rQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2FjYS1ydWxlLWxpc3Q+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19jb250YWluZXJfX3J1bGUtZGV0YWlsc1wiPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19jb250YWluZXJfX3J1bGUtZGV0YWlsc19faGVhZGVyXCIgKm5nSWY9XCIoc2VsZWN0ZWRSdWxlJCB8IGFzeW5jKSBhcyBzZWxlY3RlZFJ1bGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlcl9fdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2EtbWFuYWdlLXJ1bGVzX19jb250YWluZXJfX3J1bGUtZGV0YWlsc19faGVhZGVyX190aXRsZV9fbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFJ1bGUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlcl9fdGl0bGVfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkUnVsZS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLW1hbmFnZS1ydWxlc19fY29udGFpbmVyX19ydWxlLWRldGFpbHNfX2hlYWRlcl9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbkVkaXRTZWxlY3RlZFJ1bGU7IGVsc2UgZ29Ub0ZvbGRlckJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25SdWxlRGVsZXRlQnV0dG9uQ2xpY2tlZChzZWxlY3RlZFJ1bGUpXCIgaWQ9XCJkZWxldGUtcnVsZS1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIm9wZW5DcmVhdGVVcGRhdGVSdWxlRGlhbG9nKHNlbGVjdGVkUnVsZSlcIiBpZD1cImVkaXQtcnVsZS1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnQUNBX0ZPTERFUl9SVUxFUy5NQU5BR0VfUlVMRVMuVE9PTEJBUi5BQ1RJT05TLkVESVRfUlVMRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNnb1RvRm9sZGVyQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBbcm91dGVyTGlua109XCJbJy9ub2RlcycsIChzZWxlY3RlZFJ1bGVTZXQkIHwgYXN5bmMpLm93bmluZ0ZvbGRlci5pZCwgJ3J1bGVzJ11cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnQUNBX0ZPTERFUl9SVUxFUy5NQU5BR0VfUlVMRVMuVE9PTEJBUi5BQ1RJT05TLlNFRV9JTl9GT0xERVInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1tYW5hZ2UtcnVsZXNfX2NvbnRhaW5lcl9fcnVsZS1kZXRhaWxzX19jb250ZW50XCIgKm5nSWY9XCIoc2VsZWN0ZWRSdWxlJCB8IGFzeW5jKSBhcyBzZWxlY3RlZFJ1bGVcIj5cbiAgICAgICAgICAgICAgICA8YWNhLXJ1bGUtZGV0YWlsc1xuICAgICAgICAgICAgICAgICAgW2FjdGlvbkRlZmluaXRpb25zXT1cImFjdGlvbkRlZmluaXRpb25zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtwYXJhbWV0ZXJDb25zdHJhaW50c109XCJwYXJhbWV0ZXJDb25zdHJhaW50cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbcHJldmlld109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFJ1bGVcIlxuICAgICAgICAgICAgICAgICAgW25vZGVJZF09XCJub2RlSWRcIj5cbiAgICAgICAgICAgICAgICA8L2FjYS1ydWxlLWRldGFpbHM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5Q29udGVudD5cbiAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudFxuICAgICAgICAgICAgICBpY29uPVwibGlicmFyeV9ib29rc1wiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInQUNBX0ZPTERFUl9SVUxFUy5NQU5BR0VfUlVMRVMuRU1QVFlfUlVMRVNfTElTVC5USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ0FDQV9GT0xERVJfUlVMRVMuTUFOQUdFX1JVTEVTLkVNUFRZX1JVTEVTX0xJU1QuU1VCVElUTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvYWRmLWVtcHR5LWNvbnRlbnQ+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNnZW5lcmljRXJyb3I+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1lcnJvclwiPlxuICAgICAgICAgICAgPGFjYS1nZW5lcmljLWVycm9yPjwvYWNhLWdlbmVyaWMtZXJyb3I+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvYWNhLXBhZ2UtbGF5b3V0PlxuIl19
@@ -1,117 +0,0 @@
1
- /*!
2
- * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
3
- *
4
- * Alfresco Example Content Application
5
- *
6
- * This file is part of the Alfresco Example Content Application.
7
- * If the software was purchased under a paid Alfresco license, the terms of
8
- * the paid license agreement will prevail. Otherwise, the software is
9
- * provided under the following open source license terms:
10
- *
11
- * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Lesser General Public License as published by
13
- * the Free Software Foundation, either version 3 of the License, or
14
- * (at your option) any later version.
15
- *
16
- * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Lesser General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Lesser General Public License
22
- * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
- */
24
- import { Component, forwardRef, Input, ViewEncapsulation } from '@angular/core';
25
- import { FormArray, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';
26
- import { ruleActionValidator } from '../validators/rule-actions.validator';
27
- import { CommonModule } from '@angular/common';
28
- import { TranslateModule } from '@ngx-translate/core';
29
- import { RuleActionUiComponent } from './rule-action.ui-component';
30
- import { MatButtonModule } from '@angular/material/button';
31
- import { MatMenuModule } from '@angular/material/menu';
32
- import { MatIconModule } from '@angular/material/icon';
33
- import * as i0 from "@angular/core";
34
- import * as i1 from "@angular/common";
35
- import * as i2 from "@ngx-translate/core";
36
- import * as i3 from "@angular/forms";
37
- import * as i4 from "@angular/material/button";
38
- import * as i5 from "@angular/material/menu";
39
- import * as i6 from "@angular/material/icon";
40
- export class RuleActionListUiComponent {
41
- constructor() {
42
- this.actionDefinitions = [];
43
- this.readOnly = false;
44
- this.parameterConstraints = [];
45
- this.nodeId = '';
46
- this.formArray = new FormArray([]);
47
- this.formControls = [];
48
- this.onChange = () => undefined;
49
- this.onTouch = () => undefined;
50
- }
51
- writeValue(actions) {
52
- if (actions.length === 0) {
53
- actions = [
54
- {
55
- actionDefinitionId: null,
56
- params: {}
57
- }
58
- ];
59
- }
60
- this.formArray = new FormArray(actions.map((action) => new FormControl(action)));
61
- this.formControls = this.formArray.controls;
62
- this.formArraySubscription?.unsubscribe();
63
- this.formArraySubscription = this.formArray.valueChanges.subscribe((value) => {
64
- this.onChange(value);
65
- this.onTouch();
66
- });
67
- }
68
- registerOnChange(fn) {
69
- this.onChange = fn;
70
- }
71
- registerOnTouched(fn) {
72
- this.onTouch = fn;
73
- }
74
- addAction() {
75
- const newAction = {
76
- actionDefinitionId: null,
77
- params: {}
78
- };
79
- this.formArray.push(new FormControl(newAction, [Validators.required, ruleActionValidator(this.actionDefinitions)]));
80
- this.formControls = this.formArray.controls;
81
- }
82
- ngOnDestroy() {
83
- this.formArraySubscription?.unsubscribe();
84
- }
85
- removeAction(control) {
86
- const index = this.formArray.value.indexOf(control.value);
87
- this.formArray.removeAt(index);
88
- this.formControls = this.formArray.controls;
89
- }
90
- }
91
- RuleActionListUiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuleActionListUiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
92
- RuleActionListUiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RuleActionListUiComponent, isStandalone: true, selector: "aca-rule-action-list", inputs: { actionDefinitions: "actionDefinitions", readOnly: "readOnly", parameterConstraints: "parameterConstraints", nodeId: "nodeId" }, host: { classAttribute: "aca-rule-action-list" }, providers: [
93
- {
94
- provide: NG_VALUE_ACCESSOR,
95
- multi: true,
96
- useExisting: forwardRef(() => RuleActionListUiComponent)
97
- }
98
- ], ngImport: i0, template: "<div class=\"aca-rule-action-list__item \" *ngFor=\"let control of formControls\">\n <aca-rule-action\n [actionDefinitions]=\"actionDefinitions\"\n [parameterConstraints]=\"parameterConstraints\"\n [readOnly]=\"readOnly\"\n [formControl]=\"control\"\n [nodeId]=\"nodeId\">\n </aca-rule-action>\n\n <button\n mat-icon-button\n data-automation-id=\"rule-action-list-action-menu\"\n *ngIf=\"!readOnly\" [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n\n <mat-menu #menu>\n <button\n mat-menu-item\n data-automation-id=\"rule-action-list-remove-action-button\"\n [title]=\"'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_BUTTONS.REMOVE' | translate\"\n [disabled]=\"formControls.length <= 1\"\n (click)=\"removeAction(control)\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_BUTTONS.REMOVE' | translate }}</span>\n </button>\n </mat-menu>\n</div>\n\n<button mat-flat-button class=\"aca-rule-action-list-add-action-button\" data-automation-id=\"rule-action-list-add-action-button\" (click)=\"addAction()\" *ngIf=\"!readOnly\">\n <mat-icon class=\"aca-rule-action-list-add-action-button-icon\">add</mat-icon>\n <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_BUTTONS.ADD_ACTION' | translate }}</span>\n</button>\n", styles: [".aca-rule-action-list .aca-rule-action-list__item .aca-rule-action .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding-top:24px}.aca-rule-action-list .mat-mdc-form-field-subscript-wrapper{display:none}.aca-rule-action-list .aca-rule-action-list-add-action-button{margin:4px 0 20px}.aca-rule-action-list .aca-rule-action-list-add-action-button .aca-rule-action-list-add-action-button-icon{width:24px;height:24px;font-size:24px;margin-right:0;margin-left:1px}.aca-rule-action-list__item{border-radius:8px;display:flex;margin:10px;padding:10px}.aca-rule-action-list__item>.aca-rule-action{flex:1}.aca-rule-action-list__item .mdc-text-field--disabled.mdc-text-field--filled{background:transparent}.aca-rule-action-list__item:nth-child(2n){background-color:#f2f2f2}.aca-rule-action-list__item:nth-child(2n):last-of-type{margin-bottom:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: RuleActionUiComponent, selector: "aca-rule-action", inputs: ["nodeId", "actionDefinitions", "readOnly", "parameterConstraints"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], encapsulation: i0.ViewEncapsulation.None });
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuleActionListUiComponent, decorators: [{
100
- type: Component,
101
- args: [{ standalone: true, imports: [CommonModule, TranslateModule, RuleActionUiComponent, ReactiveFormsModule, MatButtonModule, MatMenuModule, MatIconModule], selector: 'aca-rule-action-list', encapsulation: ViewEncapsulation.None, host: { class: 'aca-rule-action-list' }, providers: [
102
- {
103
- provide: NG_VALUE_ACCESSOR,
104
- multi: true,
105
- useExisting: forwardRef(() => RuleActionListUiComponent)
106
- }
107
- ], template: "<div class=\"aca-rule-action-list__item \" *ngFor=\"let control of formControls\">\n <aca-rule-action\n [actionDefinitions]=\"actionDefinitions\"\n [parameterConstraints]=\"parameterConstraints\"\n [readOnly]=\"readOnly\"\n [formControl]=\"control\"\n [nodeId]=\"nodeId\">\n </aca-rule-action>\n\n <button\n mat-icon-button\n data-automation-id=\"rule-action-list-action-menu\"\n *ngIf=\"!readOnly\" [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </button>\n\n <mat-menu #menu>\n <button\n mat-menu-item\n data-automation-id=\"rule-action-list-remove-action-button\"\n [title]=\"'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_BUTTONS.REMOVE' | translate\"\n [disabled]=\"formControls.length <= 1\"\n (click)=\"removeAction(control)\">\n <mat-icon>delete</mat-icon>\n <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_BUTTONS.REMOVE' | translate }}</span>\n </button>\n </mat-menu>\n</div>\n\n<button mat-flat-button class=\"aca-rule-action-list-add-action-button\" data-automation-id=\"rule-action-list-add-action-button\" (click)=\"addAction()\" *ngIf=\"!readOnly\">\n <mat-icon class=\"aca-rule-action-list-add-action-button-icon\">add</mat-icon>\n <span>{{ 'ACA_FOLDER_RULES.RULE_DETAILS.ACTION_BUTTONS.ADD_ACTION' | translate }}</span>\n</button>\n", styles: [".aca-rule-action-list .aca-rule-action-list__item .aca-rule-action .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding-top:24px}.aca-rule-action-list .mat-mdc-form-field-subscript-wrapper{display:none}.aca-rule-action-list .aca-rule-action-list-add-action-button{margin:4px 0 20px}.aca-rule-action-list .aca-rule-action-list-add-action-button .aca-rule-action-list-add-action-button-icon{width:24px;height:24px;font-size:24px;margin-right:0;margin-left:1px}.aca-rule-action-list__item{border-radius:8px;display:flex;margin:10px;padding:10px}.aca-rule-action-list__item>.aca-rule-action{flex:1}.aca-rule-action-list__item .mdc-text-field--disabled.mdc-text-field--filled{background:transparent}.aca-rule-action-list__item:nth-child(2n){background-color:#f2f2f2}.aca-rule-action-list__item:nth-child(2n):last-of-type{margin-bottom:8px}\n"] }]
108
- }], propDecorators: { actionDefinitions: [{
109
- type: Input
110
- }], readOnly: [{
111
- type: Input
112
- }], parameterConstraints: [{
113
- type: Input
114
- }], nodeId: [{
115
- type: Input
116
- }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1hY3Rpb24tbGlzdC51aS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9mb2xkZXItcnVsZXMvc3JjL3J1bGUtZGV0YWlscy9hY3Rpb25zL3J1bGUtYWN0aW9uLWxpc3QudWktY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvZm9sZGVyLXJ1bGVzL3NyYy9ydWxlLWRldGFpbHMvYWN0aW9ucy9ydWxlLWFjdGlvbi1saXN0LnVpLWNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFhLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBd0IsU0FBUyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdsSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQWtCdkQsTUFBTSxPQUFPLHlCQUF5QjtJQWhCdEM7UUFrQkUsc0JBQWlCLEdBQWtDLEVBQUUsQ0FB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QUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsWUFDekgsc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLGFBQzVCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDO3lCQUN6RDtxQkFDRjs4QkFJRCxpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUdOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25EZXN0cm95LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aW9uRGVmaW5pdGlvblRyYW5zZm9ybWVkLCBSdWxlQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvcnVsZS1hY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBydWxlQWN0aW9uVmFsaWRhdG9yIH0gZnJvbSAnLi4vdmFsaWRhdG9ycy9ydWxlLWFjdGlvbnMudmFsaWRhdG9yJztcbmltcG9ydCB7IEFjdGlvblBhcmFtZXRlckNvbnN0cmFpbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9hY3Rpb24tcGFyYW1ldGVyLWNvbnN0cmFpbnQubW9kZWwnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgUnVsZUFjdGlvblVpQ29tcG9uZW50IH0gZnJvbSAnLi9ydWxlLWFjdGlvbi51aS1jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgUnVsZUFjdGlvblVpQ29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdE1lbnVNb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2FjYS1ydWxlLWFjdGlvbi1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3J1bGUtYWN0aW9uLWxpc3QudWktY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ydWxlLWFjdGlvbi1saXN0LnVpLWNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2EtcnVsZS1hY3Rpb24tbGlzdCcgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJ1bGVBY3Rpb25MaXN0VWlDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJ1bGVBY3Rpb25MaXN0VWlDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgYWN0aW9uRGVmaW5pdGlvbnM6IEFjdGlvbkRlZmluaXRpb25UcmFuc2Zvcm1lZFtdID0gW107XG4gIEBJbnB1dCgpXG4gIHJlYWRPbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHBhcmFtZXRlckNvbnN0cmFpbnRzOiBBY3Rpb25QYXJhbWV0ZXJDb25zdHJhaW50W10gPSBbXTtcbiAgQElucHV0KClcbiAgbm9kZUlkID0gJyc7XG5cbiAgZm9ybUFycmF5ID0gbmV3IEZvcm1BcnJheShbXSk7XG4gIHByaXZhdGUgZm9ybUFycmF5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgZm9ybUNvbnRyb2xzOiBGb3JtQ29udHJvbFtdID0gW107XG5cbiAgb25DaGFuZ2U6IChhY3Rpb25zOiBSdWxlQWN0aW9uW10pID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIG9uVG91Y2g6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgd3JpdGVWYWx1ZShhY3Rpb25zOiBSdWxlQWN0aW9uW10pIHtcbiAgICBpZiAoYWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIGFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb25EZWZpbml0aW9uSWQ6IG51bGwsXG4gICAgICAgICAgcGFyYW1zOiB7fVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cbiAgICB0aGlzLmZvcm1BcnJheSA9IG5ldyBGb3JtQXJyYXkoYWN0aW9ucy5tYXAoKGFjdGlvbjogUnVsZUFjdGlvbikgPT4gbmV3IEZvcm1Db250cm9sKGFjdGlvbikpKTtcbiAgICB0aGlzLmZvcm1Db250cm9scyA9IHRoaXMuZm9ybUFycmF5LmNvbnRyb2xzIGFzIEZvcm1Db250cm9sW107XG4gICAgdGhpcy5mb3JtQXJyYXlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5mb3JtQXJyYXlTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1BcnJheS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKGFjdGlvbnM6IFJ1bGVBY3Rpb25bXSkgPT4gdm9pZCkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBhZGRBY3Rpb24oKSB7XG4gICAgY29uc3QgbmV3QWN0aW9uOiBSdWxlQWN0aW9uID0ge1xuICAgICAgYWN0aW9uRGVmaW5pdGlvbklkOiBudWxsLFxuICAgICAgcGFyYW1zOiB7fVxuICAgIH07XG4gICAgdGhpcy5mb3JtQXJyYXkucHVzaChuZXcgRm9ybUNvbnRyb2wobmV3QWN0aW9uLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgcnVsZUFjdGlvblZhbGlkYXRvcih0aGlzLmFjdGlvbkRlZmluaXRpb25zKV0pKTtcbiAgICB0aGlzLmZvcm1Db250cm9scyA9IHRoaXMuZm9ybUFycmF5LmNvbnRyb2xzIGFzIEZvcm1Db250cm9sW107XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZvcm1BcnJheVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHJlbW92ZUFjdGlvbihjb250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mb3JtQXJyYXkudmFsdWUuaW5kZXhPZihjb250cm9sLnZhbHVlKTtcbiAgICB0aGlzLmZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbHMgPSB0aGlzLmZvcm1BcnJheS5jb250cm9scyBhcyBGb3JtQ29udHJvbFtdO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWNhLXJ1bGUtYWN0aW9uLWxpc3RfX2l0ZW0gIFwiICpuZ0Zvcj1cImxldCBjb250cm9sIG9mIGZvcm1Db250cm9sc1wiPlxuICA8YWNhLXJ1bGUtYWN0aW9uXG4gICAgW2FjdGlvbkRlZmluaXRpb25zXT1cImFjdGlvbkRlZmluaXRpb25zXCJcbiAgICBbcGFyYW1ldGVyQ29uc3RyYWludHNdPVwicGFyYW1ldGVyQ29uc3RyYWludHNcIlxuICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgIFtub2RlSWRdPVwibm9kZUlkXCI+XG4gIDwvYWNhLXJ1bGUtYWN0aW9uPlxuXG4gIDxidXR0b25cbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJydWxlLWFjdGlvbi1saXN0LWFjdGlvbi1tZW51XCJcbiAgICAqbmdJZj1cIiFyZWFkT25seVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XG4gICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG4gIDxtYXQtbWVudSAjbWVudT5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtbWVudS1pdGVtXG4gICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJydWxlLWFjdGlvbi1saXN0LXJlbW92ZS1hY3Rpb24tYnV0dG9uXCJcbiAgICAgIFt0aXRsZV09XCInQUNBX0ZPTERFUl9SVUxFUy5SVUxFX0RFVEFJTFMuQUNUSU9OX0JVVFRPTlMuUkVNT1ZFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybUNvbnRyb2xzLmxlbmd0aCA8PSAxXCJcbiAgICAgIChjbGljayk9XCJyZW1vdmVBY3Rpb24oY29udHJvbClcIj5cbiAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuICAgICAgPHNwYW4+e3sgJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkFDVElPTl9CVVRUT05TLlJFTU9WRScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbWF0LW1lbnU+XG48L2Rpdj5cblxuPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY2xhc3M9XCJhY2EtcnVsZS1hY3Rpb24tbGlzdC1hZGQtYWN0aW9uLWJ1dHRvblwiIGRhdGEtYXV0b21hdGlvbi1pZD1cInJ1bGUtYWN0aW9uLWxpc3QtYWRkLWFjdGlvbi1idXR0b25cIiAoY2xpY2spPVwiYWRkQWN0aW9uKClcIiAqbmdJZj1cIiFyZWFkT25seVwiPlxuICA8bWF0LWljb24gY2xhc3M9XCJhY2EtcnVsZS1hY3Rpb24tbGlzdC1hZGQtYWN0aW9uLWJ1dHRvbi1pY29uXCI+YWRkPC9tYXQtaWNvbj5cbiAgPHNwYW4+e3sgJ0FDQV9GT0xERVJfUlVMRVMuUlVMRV9ERVRBSUxTLkFDVElPTl9CVVRUT05TLkFERF9BQ1RJT04nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=