@hmcts/ccd-case-ui-toolkit 5.0.6-angular11-upgrade → 5.0.9-angular11-upgrade

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 (509) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +25692 -5025
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -16
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/shared/components/activity/activity-banner/activity-banner.component.js +42 -0
  6. package/esm2015/lib/shared/components/activity/activity-banner/index.js +2 -0
  7. package/esm2015/lib/shared/components/activity/activity-icon/activity-icon.component.js +35 -0
  8. package/esm2015/lib/shared/components/activity/activity-icon/index.js +2 -0
  9. package/esm2015/lib/shared/components/activity/activity.component.js +150 -0
  10. package/esm2015/lib/shared/components/activity/activity.module.js +53 -0
  11. package/esm2015/lib/shared/components/activity/index.js +5 -0
  12. package/esm2015/lib/shared/components/case-editor/case-create/case-create.component.js +94 -0
  13. package/esm2015/lib/shared/components/case-editor/case-create/index.js +2 -0
  14. package/esm2015/lib/shared/components/case-editor/case-edit/case-edit.component.js +113 -0
  15. package/esm2015/lib/shared/components/case-editor/case-edit/index.js +2 -0
  16. package/esm2015/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.js +131 -0
  17. package/esm2015/lib/shared/components/case-editor/case-edit-confirm/index.js +2 -0
  18. package/esm2015/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.js +146 -0
  19. package/esm2015/lib/shared/components/case-editor/case-edit-form/index.js +2 -0
  20. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page-text.enum.js +11 -0
  21. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +654 -0
  22. package/esm2015/lib/shared/components/case-editor/case-edit-page/index.js +2 -0
  23. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +759 -0
  24. package/esm2015/lib/shared/components/case-editor/case-edit-submit/index.js +2 -0
  25. package/esm2015/lib/shared/components/case-editor/case-editor.module.js +185 -0
  26. package/esm2015/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.js +89 -0
  27. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.js +72 -0
  28. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.js +157 -0
  29. package/esm2015/lib/shared/components/case-editor/case-event-completion/index.js +4 -0
  30. package/esm2015/lib/shared/components/case-editor/case-progress/case-progress.component.js +85 -0
  31. package/esm2015/lib/shared/components/case-editor/case-progress/index.js +2 -0
  32. package/esm2015/lib/shared/components/case-editor/domain/event-completion-params.model.js +2 -0
  33. package/esm2015/lib/shared/components/case-editor/domain/event-completion-portal-types.model.js +6 -0
  34. package/esm2015/lib/shared/components/case-editor/editor.routing.js +31 -0
  35. package/esm2015/lib/shared/components/case-editor/index.js +13 -0
  36. package/esm2015/lib/shared/components/case-editor/services/case-edit-wizard.guard.js +92 -0
  37. package/esm2015/lib/shared/components/case-editor/services/case-worker.service.js +32 -0
  38. package/esm2015/lib/shared/components/case-editor/services/convert-href-to-router.service.js +41 -0
  39. package/esm2015/lib/shared/components/case-editor/services/event-completion-state-machine.service.js +162 -0
  40. package/esm2015/lib/shared/components/case-editor/services/event-trigger.service.js +20 -0
  41. package/esm2015/lib/shared/components/case-editor/services/index.js +12 -0
  42. package/esm2015/lib/shared/components/case-editor/services/judicial-worker.service.js +32 -0
  43. package/esm2015/lib/shared/components/case-editor/services/page-validation.service.js +50 -0
  44. package/esm2015/lib/shared/components/case-editor/services/wizard-factory.service.js +7 -0
  45. package/esm2015/lib/shared/components/case-header/case-header.component.js +65 -0
  46. package/esm2015/lib/shared/components/case-header/case-header.module.js +35 -0
  47. package/esm2015/lib/shared/components/case-header/index.js +3 -0
  48. package/esm2015/lib/shared/components/case-history/case-history.component.js +264 -0
  49. package/esm2015/lib/shared/components/case-history/case-history.module.js +52 -0
  50. package/esm2015/lib/shared/components/case-history/domain/case-history.model.js +28 -0
  51. package/esm2015/lib/shared/components/case-history/index.js +3 -0
  52. package/esm2015/lib/shared/components/case-history/services/case-history.service.js +40 -0
  53. package/esm2015/lib/shared/components/case-list/case-list.component.js +370 -0
  54. package/esm2015/lib/shared/components/case-list/case-list.module.js +45 -0
  55. package/esm2015/lib/shared/components/case-list/index.js +3 -0
  56. package/esm2015/lib/shared/components/case-list-filters/case-list-filters.component.js +57 -0
  57. package/esm2015/lib/shared/components/case-list-filters/case-list-filters.module.js +59 -0
  58. package/esm2015/lib/shared/components/case-list-filters/index.js +3 -0
  59. package/esm2015/lib/shared/components/case-timeline/case-timeline.component.js +118 -0
  60. package/esm2015/lib/shared/components/case-timeline/case-timeline.module.js +46 -0
  61. package/esm2015/lib/shared/components/case-timeline/index.js +3 -0
  62. package/esm2015/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.js +195 -0
  63. package/esm2015/lib/shared/components/case-viewer/case-basic-access-view/index.js +2 -0
  64. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.js +307 -0
  65. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/index.js +2 -0
  66. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.js +20 -0
  67. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/models/index.js +2 -0
  68. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.js +64 -0
  69. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-success/index.js +2 -0
  70. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +120 -0
  71. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/index.js +2 -0
  72. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +545 -0
  73. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/index.js +2 -0
  74. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js +63 -0
  75. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-reject/index.js +2 -0
  76. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js +258 -0
  77. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/index.js +2 -0
  78. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.js +18 -0
  79. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.js +2 -0
  80. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +195 -0
  81. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/index.js +2 -0
  82. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.js +11 -0
  83. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/models/index.js +2 -0
  84. package/esm2015/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.js +60 -0
  85. package/esm2015/lib/shared/components/case-viewer/case-specific-access-success/index.js +2 -0
  86. package/esm2015/lib/shared/components/case-viewer/case-view/case-view.component.js +100 -0
  87. package/esm2015/lib/shared/components/case-viewer/case-view/index.js +2 -0
  88. package/esm2015/lib/shared/components/case-viewer/case-viewer.component.js +129 -0
  89. package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +155 -0
  90. package/esm2015/lib/shared/components/case-viewer/index.js +14 -0
  91. package/esm2015/lib/shared/components/case-viewer/printer/case-printer.component.js +111 -0
  92. package/esm2015/lib/shared/components/case-viewer/printer/index.js +4 -0
  93. package/esm2015/lib/shared/components/case-viewer/printer/pipes/index.js +2 -0
  94. package/esm2015/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.js +60 -0
  95. package/esm2015/lib/shared/components/case-viewer/services/case.resolver.js +110 -0
  96. package/esm2015/lib/shared/components/case-viewer/services/event-trigger.resolver.js +64 -0
  97. package/esm2015/lib/shared/components/case-viewer/services/index.js +3 -0
  98. package/esm2015/lib/shared/components/case-viewer/viewer.routing.js +127 -0
  99. package/esm2015/lib/shared/components/create-case-filters/create-case-filters-selection.model.js +8 -0
  100. package/esm2015/lib/shared/components/create-case-filters/create-case-filters.component.js +257 -0
  101. package/esm2015/lib/shared/components/create-case-filters/create-case-filters.module.js +42 -0
  102. package/esm2015/lib/shared/components/create-case-filters/index.js +4 -0
  103. package/esm2015/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.js +57 -0
  104. package/esm2015/lib/shared/components/dialogs/delete-or-cancel-dialog/index.js +2 -0
  105. package/esm2015/lib/shared/components/dialogs/dialogs.module.js +49 -0
  106. package/esm2015/lib/shared/components/dialogs/document-dialog/index.js +2 -0
  107. package/esm2015/lib/shared/components/dialogs/index.js +6 -0
  108. package/esm2015/lib/shared/components/dialogs/remove-dialog/index.js +2 -0
  109. package/esm2015/lib/shared/components/dialogs/save-or-discard-dialog/index.js +2 -0
  110. package/esm2015/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.js +61 -0
  111. package/esm2015/lib/shared/components/error/callback-errors.component.js +145 -0
  112. package/esm2015/lib/shared/components/error/domain/error-context.js +3 -0
  113. package/esm2015/lib/shared/components/error/domain/index.js +2 -0
  114. package/esm2015/lib/shared/components/error/errors.module.js +31 -0
  115. package/esm2015/lib/shared/components/error/index.js +4 -0
  116. package/esm2015/lib/shared/components/error-message/error-message.component.js +51 -0
  117. package/esm2015/lib/shared/components/error-message/error-message.module.js +39 -0
  118. package/esm2015/lib/shared/components/error-message/index.js +3 -0
  119. package/esm2015/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.js +55 -0
  120. package/esm2015/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.js +52 -0
  121. package/esm2015/lib/shared/components/event-start/components/task-assigned/task-assigned.component.js +104 -0
  122. package/esm2015/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.js +60 -0
  123. package/esm2015/lib/shared/components/event-start/components/task-conflict/task-conflict.component.js +54 -0
  124. package/esm2015/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.js +52 -0
  125. package/esm2015/lib/shared/components/event-start/event-guard/event-start.guard.js +103 -0
  126. package/esm2015/lib/shared/components/event-start/event-start.component.js +52 -0
  127. package/esm2015/lib/shared/components/event-start/event-start.module.js +69 -0
  128. package/esm2015/lib/shared/components/event-start/index.js +10 -0
  129. package/esm2015/lib/shared/components/event-start/models/event-start-state-machine-context.model.js +2 -0
  130. package/esm2015/lib/shared/components/event-start/models/event-start-states-enum.model.js +16 -0
  131. package/esm2015/lib/shared/components/event-start/models/index.js +3 -0
  132. package/esm2015/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.js +29 -0
  133. package/esm2015/lib/shared/components/event-start/services/event-start-state-machine.service.js +168 -0
  134. package/esm2015/lib/shared/components/event-start/services/index.js +2 -0
  135. package/esm2015/lib/shared/components/event-trigger/event-trigger.component.js +108 -0
  136. package/esm2015/lib/shared/components/event-trigger/event-trigger.module.js +35 -0
  137. package/esm2015/lib/shared/components/event-trigger/index.js +3 -0
  138. package/esm2015/lib/shared/components/index.js +20 -0
  139. package/esm2015/lib/shared/components/loading-spinner/index.js +2 -0
  140. package/esm2015/lib/shared/components/loading-spinner/loading-spinner.component.js +33 -0
  141. package/esm2015/lib/shared/components/pagination/index.js +3 -0
  142. package/esm2015/lib/shared/components/pagination/pagination.component.js +255 -0
  143. package/esm2015/lib/shared/components/pagination/pagination.module.js +33 -0
  144. package/esm2015/lib/shared/components/palette/address/index.js +3 -0
  145. package/esm2015/lib/shared/components/palette/case-link/index.js +3 -0
  146. package/esm2015/lib/shared/components/palette/complex/index.js +1 -7
  147. package/esm2015/lib/shared/components/palette/complex/write-complex-field.component.js +2 -2
  148. package/esm2015/lib/shared/components/palette/index.js +32 -0
  149. package/esm2015/lib/shared/components/palette/palette.module.js +16 -27
  150. package/esm2015/lib/shared/components/search-result/index.js +3 -0
  151. package/esm2015/lib/shared/components/search-result/search-result.component.js +845 -0
  152. package/esm2015/lib/shared/components/search-result/search-result.module.js +67 -0
  153. package/esm2015/lib/shared/components/workbasket-filters/index.js +3 -0
  154. package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.component.js +448 -0
  155. package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.module.js +60 -0
  156. package/esm2015/lib/shared/domain/case-view/role-request.model.js +1 -1
  157. package/esm2015/lib/shared/domain/work-allocation/case-worker.model.js +2 -0
  158. package/esm2015/lib/shared/domain/work-allocation/judicial-worker.model.js +2 -0
  159. package/esm2015/lib/shared/index.js +2 -1
  160. package/esm2015/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.js +29 -0
  161. package/esm2015/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.js +29 -0
  162. package/esm2015/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.js +154 -0
  163. package/esm2015/lib/shared/pipes/complex/ccd-tab-fields.pipe.js +31 -0
  164. package/esm2015/lib/shared/pipes/complex/cdd-page-fields.pipe.js +39 -0
  165. package/esm2015/lib/shared/pipes/complex/fields-filter.pipe.js +103 -0
  166. package/esm2015/lib/shared/pipes/complex/index.js +7 -0
  167. package/esm2015/lib/shared/pipes/index.js +3 -2
  168. package/esm2015/lib/shared/pipes/pipes.module.js +26 -9
  169. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +22295 -4295
  170. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  171. package/lib/shared/components/activity/activity-banner/activity-banner.component.d.ts +12 -0
  172. package/lib/shared/components/activity/activity-banner/activity-banner.component.d.ts.map +1 -0
  173. package/lib/shared/components/activity/activity-banner/index.d.ts +2 -0
  174. package/lib/shared/components/activity/activity-banner/index.d.ts.map +1 -0
  175. package/lib/shared/components/activity/activity-icon/activity-icon.component.d.ts +11 -0
  176. package/lib/shared/components/activity/activity-icon/activity-icon.component.d.ts.map +1 -0
  177. package/lib/shared/components/activity/activity-icon/index.d.ts +2 -0
  178. package/lib/shared/components/activity/activity-icon/index.d.ts.map +1 -0
  179. package/lib/shared/components/activity/activity.component.d.ts +32 -0
  180. package/lib/shared/components/activity/activity.component.d.ts.map +1 -0
  181. package/lib/shared/components/activity/activity.module.d.ts +12 -0
  182. package/lib/shared/components/activity/activity.module.d.ts.map +1 -0
  183. package/lib/shared/components/activity/index.d.ts +5 -0
  184. package/lib/shared/components/activity/index.d.ts.map +1 -0
  185. package/lib/shared/components/case-editor/case-create/case-create.component.d.ts +33 -0
  186. package/lib/shared/components/case-editor/case-create/case-create.component.d.ts.map +1 -0
  187. package/lib/shared/components/case-editor/case-create/index.d.ts +2 -0
  188. package/lib/shared/components/case-editor/case-create/index.d.ts.map +1 -0
  189. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +50 -0
  190. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -0
  191. package/lib/shared/components/case-editor/case-edit/index.d.ts +2 -0
  192. package/lib/shared/components/case-editor/case-edit/index.d.ts.map +1 -0
  193. package/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.d.ts +26 -0
  194. package/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.d.ts.map +1 -0
  195. package/lib/shared/components/case-editor/case-edit-confirm/index.d.ts +2 -0
  196. package/lib/shared/components/case-editor/case-edit-confirm/index.d.ts.map +1 -0
  197. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts +26 -0
  198. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts.map +1 -0
  199. package/lib/shared/components/case-editor/case-edit-form/index.d.ts +2 -0
  200. package/lib/shared/components/case-editor/case-edit-form/index.d.ts.map +1 -0
  201. package/lib/shared/components/case-editor/case-edit-page/case-edit-page-text.enum.d.ts +10 -0
  202. package/lib/shared/components/case-editor/case-edit-page/case-edit-page-text.enum.d.ts.map +1 -0
  203. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +100 -0
  204. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -0
  205. package/lib/shared/components/case-editor/case-edit-page/index.d.ts +2 -0
  206. package/lib/shared/components/case-editor/case-edit-page/index.d.ts.map +1 -0
  207. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +123 -0
  208. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -0
  209. package/lib/shared/components/case-editor/case-edit-submit/index.d.ts +2 -0
  210. package/lib/shared/components/case-editor/case-edit-submit/index.d.ts.map +1 -0
  211. package/lib/shared/components/case-editor/case-editor.module.d.ts +27 -0
  212. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -0
  213. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts +31 -0
  214. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts.map +1 -0
  215. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts +11 -0
  216. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -0
  217. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +32 -0
  218. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -0
  219. package/lib/shared/components/case-editor/case-event-completion/index.d.ts +4 -0
  220. package/lib/shared/components/case-editor/case-event-completion/index.d.ts.map +1 -0
  221. package/lib/shared/components/case-editor/case-progress/case-progress.component.d.ts +30 -0
  222. package/lib/shared/components/case-editor/case-progress/case-progress.component.d.ts.map +1 -0
  223. package/lib/shared/components/case-editor/case-progress/index.d.ts +2 -0
  224. package/lib/shared/components/case-editor/case-progress/index.d.ts.map +1 -0
  225. package/lib/shared/components/case-editor/domain/event-completion-params.model.d.ts +7 -0
  226. package/lib/shared/components/case-editor/domain/event-completion-params.model.d.ts.map +1 -0
  227. package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts +5 -0
  228. package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts.map +1 -0
  229. package/lib/shared/components/case-editor/editor.routing.d.ts +3 -0
  230. package/lib/shared/components/case-editor/editor.routing.d.ts.map +1 -0
  231. package/lib/shared/components/case-editor/index.d.ts +13 -0
  232. package/lib/shared/components/case-editor/index.d.ts.map +1 -0
  233. package/lib/shared/components/case-editor/services/case-edit-wizard.guard.d.ts +23 -0
  234. package/lib/shared/components/case-editor/services/case-edit-wizard.guard.d.ts.map +1 -0
  235. package/lib/shared/components/case-editor/services/case-worker.service.d.ts +16 -0
  236. package/lib/shared/components/case-editor/services/case-worker.service.d.ts.map +1 -0
  237. package/lib/shared/components/case-editor/services/convert-href-to-router.service.d.ts +14 -0
  238. package/lib/shared/components/case-editor/services/convert-href-to-router.service.d.ts.map +1 -0
  239. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts +33 -0
  240. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts.map +1 -0
  241. package/lib/shared/components/case-editor/services/event-trigger.service.d.ts +10 -0
  242. package/lib/shared/components/case-editor/services/event-trigger.service.d.ts.map +1 -0
  243. package/lib/shared/components/case-editor/services/index.d.ts +12 -0
  244. package/lib/shared/components/case-editor/services/index.d.ts.map +1 -0
  245. package/lib/shared/components/case-editor/services/judicial-worker.service.d.ts +16 -0
  246. package/lib/shared/components/case-editor/services/judicial-worker.service.d.ts.map +1 -0
  247. package/lib/shared/components/case-editor/services/page-validation.service.d.ts +17 -0
  248. package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -0
  249. package/lib/shared/components/case-editor/services/wizard-factory.service.d.ts +6 -0
  250. package/lib/shared/components/case-editor/services/wizard-factory.service.d.ts.map +1 -0
  251. package/lib/shared/components/case-header/case-header.component.d.ts +15 -0
  252. package/lib/shared/components/case-header/case-header.component.d.ts.map +1 -0
  253. package/lib/shared/components/case-header/case-header.module.d.ts +11 -0
  254. package/lib/shared/components/case-header/case-header.module.d.ts.map +1 -0
  255. package/lib/shared/components/case-header/index.d.ts +3 -0
  256. package/lib/shared/components/case-header/index.d.ts.map +1 -0
  257. package/lib/shared/components/case-history/case-history.component.d.ts +33 -0
  258. package/lib/shared/components/case-history/case-history.component.d.ts.map +1 -0
  259. package/lib/shared/components/case-history/case-history.module.d.ts +14 -0
  260. package/lib/shared/components/case-history/case-history.module.d.ts.map +1 -0
  261. package/lib/shared/components/case-history/domain/case-history.model.d.ts +16 -0
  262. package/lib/shared/components/case-history/domain/case-history.model.d.ts.map +1 -0
  263. package/lib/shared/components/case-history/index.d.ts +3 -0
  264. package/lib/shared/components/case-history/index.d.ts.map +1 -0
  265. package/lib/shared/components/case-history/services/case-history.service.d.ts +17 -0
  266. package/lib/shared/components/case-history/services/case-history.service.d.ts.map +1 -0
  267. package/lib/shared/components/case-list/case-list.component.d.ts +47 -0
  268. package/lib/shared/components/case-list/case-list.component.d.ts.map +1 -0
  269. package/lib/shared/components/case-list/case-list.module.d.ts +13 -0
  270. package/lib/shared/components/case-list/case-list.module.d.ts.map +1 -0
  271. package/lib/shared/components/case-list/index.d.ts +3 -0
  272. package/lib/shared/components/case-list/index.d.ts.map +1 -0
  273. package/lib/shared/components/case-list-filters/case-list-filters.component.d.ts +19 -0
  274. package/lib/shared/components/case-list-filters/case-list-filters.component.d.ts.map +1 -0
  275. package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts +13 -0
  276. package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts.map +1 -0
  277. package/lib/shared/components/case-list-filters/index.d.ts +3 -0
  278. package/lib/shared/components/case-list-filters/index.d.ts.map +1 -0
  279. package/lib/shared/components/case-timeline/case-timeline.component.d.ts +27 -0
  280. package/lib/shared/components/case-timeline/case-timeline.component.d.ts.map +1 -0
  281. package/lib/shared/components/case-timeline/case-timeline.module.d.ts +13 -0
  282. package/lib/shared/components/case-timeline/case-timeline.module.d.ts.map +1 -0
  283. package/lib/shared/components/case-timeline/index.d.ts +3 -0
  284. package/lib/shared/components/case-timeline/index.d.ts.map +1 -0
  285. package/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.d.ts +19 -0
  286. package/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.d.ts.map +1 -0
  287. package/lib/shared/components/case-viewer/case-basic-access-view/index.d.ts +2 -0
  288. package/lib/shared/components/case-viewer/case-basic-access-view/index.d.ts.map +1 -0
  289. package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts +40 -0
  290. package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts.map +1 -0
  291. package/lib/shared/components/case-viewer/case-challenged-access-request/index.d.ts +2 -0
  292. package/lib/shared/components/case-viewer/case-challenged-access-request/index.d.ts.map +1 -0
  293. package/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.d.ts +17 -0
  294. package/lib/shared/components/case-viewer/case-challenged-access-request/models/case-challenged-access-request.enum.d.ts.map +1 -0
  295. package/lib/shared/components/case-viewer/case-challenged-access-request/models/index.d.ts +2 -0
  296. package/lib/shared/components/case-viewer/case-challenged-access-request/models/index.d.ts.map +1 -0
  297. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts +12 -0
  298. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts.map +1 -0
  299. package/lib/shared/components/case-viewer/case-challenged-access-success/index.d.ts +2 -0
  300. package/lib/shared/components/case-viewer/case-challenged-access-success/index.d.ts.map +1 -0
  301. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +41 -0
  302. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -0
  303. package/lib/shared/components/case-viewer/case-event-trigger/index.d.ts +2 -0
  304. package/lib/shared/components/case-viewer/case-event-trigger/index.d.ts.map +1 -0
  305. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +90 -0
  306. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -0
  307. package/lib/shared/components/case-viewer/case-full-access-view/index.d.ts +2 -0
  308. package/lib/shared/components/case-viewer/case-full-access-view/index.d.ts.map +1 -0
  309. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts +14 -0
  310. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts.map +1 -0
  311. package/lib/shared/components/case-viewer/case-review-specific-access-reject/index.d.ts +2 -0
  312. package/lib/shared/components/case-viewer/case-review-specific-access-reject/index.d.ts.map +1 -0
  313. package/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts +49 -0
  314. package/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts.map +1 -0
  315. package/lib/shared/components/case-viewer/case-review-specific-access-request/index.d.ts +2 -0
  316. package/lib/shared/components/case-viewer/case-review-specific-access-request/index.d.ts.map +1 -0
  317. package/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.d.ts +15 -0
  318. package/lib/shared/components/case-viewer/case-review-specific-access-request/models/case-review-specific-access-request.enum.d.ts.map +1 -0
  319. package/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.d.ts +2 -0
  320. package/lib/shared/components/case-viewer/case-review-specific-access-request/models/index.d.ts.map +1 -0
  321. package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts +33 -0
  322. package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts.map +1 -0
  323. package/lib/shared/components/case-viewer/case-specific-access-request/index.d.ts +2 -0
  324. package/lib/shared/components/case-viewer/case-specific-access-request/index.d.ts.map +1 -0
  325. package/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.d.ts +9 -0
  326. package/lib/shared/components/case-viewer/case-specific-access-request/models/case-specific-access-request.enum.d.ts.map +1 -0
  327. package/lib/shared/components/case-viewer/case-specific-access-request/models/index.d.ts +2 -0
  328. package/lib/shared/components/case-viewer/case-specific-access-request/models/index.d.ts.map +1 -0
  329. package/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.d.ts +12 -0
  330. package/lib/shared/components/case-viewer/case-specific-access-success/case-specific-access-success.component.d.ts.map +1 -0
  331. package/lib/shared/components/case-viewer/case-specific-access-success/index.d.ts +2 -0
  332. package/lib/shared/components/case-viewer/case-specific-access-success/index.d.ts.map +1 -0
  333. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts +32 -0
  334. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts.map +1 -0
  335. package/lib/shared/components/case-viewer/case-view/index.d.ts +2 -0
  336. package/lib/shared/components/case-viewer/case-view/index.d.ts.map +1 -0
  337. package/lib/shared/components/case-viewer/case-viewer.component.d.ts +32 -0
  338. package/lib/shared/components/case-viewer/case-viewer.component.d.ts.map +1 -0
  339. package/lib/shared/components/case-viewer/case-viewer.module.d.ts +36 -0
  340. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -0
  341. package/lib/shared/components/case-viewer/index.d.ts +14 -0
  342. package/lib/shared/components/case-viewer/index.d.ts.map +1 -0
  343. package/lib/shared/components/case-viewer/printer/case-printer.component.d.ts +24 -0
  344. package/lib/shared/components/case-viewer/printer/case-printer.component.d.ts.map +1 -0
  345. package/lib/shared/components/case-viewer/printer/index.d.ts +4 -0
  346. package/lib/shared/components/case-viewer/printer/index.d.ts.map +1 -0
  347. package/lib/shared/components/case-viewer/printer/pipes/index.d.ts +2 -0
  348. package/lib/shared/components/case-viewer/printer/pipes/index.d.ts.map +1 -0
  349. package/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.d.ts +24 -0
  350. package/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.d.ts.map +1 -0
  351. package/lib/shared/components/case-viewer/services/case.resolver.d.ts +29 -0
  352. package/lib/shared/components/case-viewer/services/case.resolver.d.ts.map +1 -0
  353. package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts +26 -0
  354. package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts.map +1 -0
  355. package/lib/shared/components/case-viewer/services/index.d.ts +3 -0
  356. package/lib/shared/components/case-viewer/services/index.d.ts.map +1 -0
  357. package/lib/shared/components/case-viewer/viewer.routing.d.ts +3 -0
  358. package/lib/shared/components/case-viewer/viewer.routing.d.ts.map +1 -0
  359. package/lib/shared/components/create-case-filters/create-case-filters-selection.model.d.ts +7 -0
  360. package/lib/shared/components/create-case-filters/create-case-filters-selection.model.d.ts.map +1 -0
  361. package/lib/shared/components/create-case-filters/create-case-filters.component.d.ts +57 -0
  362. package/lib/shared/components/create-case-filters/create-case-filters.component.d.ts.map +1 -0
  363. package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts +12 -0
  364. package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts.map +1 -0
  365. package/lib/shared/components/create-case-filters/index.d.ts +4 -0
  366. package/lib/shared/components/create-case-filters/index.d.ts.map +1 -0
  367. package/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.d.ts +12 -0
  368. package/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.d.ts.map +1 -0
  369. package/lib/shared/components/dialogs/delete-or-cancel-dialog/index.d.ts +2 -0
  370. package/lib/shared/components/dialogs/delete-or-cancel-dialog/index.d.ts.map +1 -0
  371. package/lib/shared/components/dialogs/dialogs.module.d.ts +13 -0
  372. package/lib/shared/components/dialogs/dialogs.module.d.ts.map +1 -0
  373. package/lib/shared/components/dialogs/document-dialog/index.d.ts +2 -0
  374. package/lib/shared/components/dialogs/document-dialog/index.d.ts.map +1 -0
  375. package/lib/shared/components/dialogs/index.d.ts +6 -0
  376. package/lib/shared/components/dialogs/index.d.ts.map +1 -0
  377. package/lib/shared/components/dialogs/remove-dialog/index.d.ts +2 -0
  378. package/lib/shared/components/dialogs/remove-dialog/index.d.ts.map +1 -0
  379. package/lib/shared/components/dialogs/save-or-discard-dialog/index.d.ts +2 -0
  380. package/lib/shared/components/dialogs/save-or-discard-dialog/index.d.ts.map +1 -0
  381. package/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.d.ts +13 -0
  382. package/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.d.ts.map +1 -0
  383. package/lib/shared/components/error/callback-errors.component.d.ts +25 -0
  384. package/lib/shared/components/error/callback-errors.component.d.ts.map +1 -0
  385. package/lib/shared/components/error/domain/error-context.d.ts +5 -0
  386. package/lib/shared/components/error/domain/error-context.d.ts.map +1 -0
  387. package/lib/shared/components/error/domain/index.d.ts +2 -0
  388. package/lib/shared/components/error/domain/index.d.ts.map +1 -0
  389. package/lib/shared/components/error/errors.module.d.ts +10 -0
  390. package/lib/shared/components/error/errors.module.d.ts.map +1 -0
  391. package/lib/shared/components/error/index.d.ts +4 -0
  392. package/lib/shared/components/error/index.d.ts.map +1 -0
  393. package/lib/shared/components/error-message/error-message.component.d.ts +8 -0
  394. package/lib/shared/components/error-message/error-message.component.d.ts.map +1 -0
  395. package/lib/shared/components/error-message/error-message.module.d.ts +12 -0
  396. package/lib/shared/components/error-message/error-message.module.d.ts.map +1 -0
  397. package/lib/shared/components/error-message/index.d.ts +3 -0
  398. package/lib/shared/components/error-message/index.d.ts.map +1 -0
  399. package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts +10 -0
  400. package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts.map +1 -0
  401. package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts +10 -0
  402. package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts.map +1 -0
  403. package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts +23 -0
  404. package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts.map +1 -0
  405. package/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.d.ts +7 -0
  406. package/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.d.ts.map +1 -0
  407. package/lib/shared/components/event-start/components/task-conflict/task-conflict.component.d.ts +9 -0
  408. package/lib/shared/components/event-start/components/task-conflict/task-conflict.component.d.ts.map +1 -0
  409. package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts +10 -0
  410. package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts.map +1 -0
  411. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +20 -0
  412. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -0
  413. package/lib/shared/components/event-start/event-start.component.d.ts +20 -0
  414. package/lib/shared/components/event-start/event-start.component.d.ts.map +1 -0
  415. package/lib/shared/components/event-start/event-start.module.d.ts +17 -0
  416. package/lib/shared/components/event-start/event-start.module.d.ts.map +1 -0
  417. package/lib/shared/components/event-start/index.d.ts +10 -0
  418. package/lib/shared/components/event-start/index.d.ts.map +1 -0
  419. package/lib/shared/components/event-start/models/event-start-state-machine-context.model.d.ts +13 -0
  420. package/lib/shared/components/event-start/models/event-start-state-machine-context.model.d.ts.map +1 -0
  421. package/lib/shared/components/event-start/models/event-start-states-enum.model.d.ts +15 -0
  422. package/lib/shared/components/event-start/models/event-start-states-enum.model.d.ts.map +1 -0
  423. package/lib/shared/components/event-start/models/index.d.ts +3 -0
  424. package/lib/shared/components/event-start/models/index.d.ts.map +1 -0
  425. package/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.d.ts +15 -0
  426. package/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.d.ts.map +1 -0
  427. package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts +40 -0
  428. package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts.map +1 -0
  429. package/lib/shared/components/event-start/services/index.d.ts +2 -0
  430. package/lib/shared/components/event-start/services/index.d.ts.map +1 -0
  431. package/lib/shared/components/event-trigger/event-trigger.component.d.ts +24 -0
  432. package/lib/shared/components/event-trigger/event-trigger.component.d.ts.map +1 -0
  433. package/lib/shared/components/event-trigger/event-trigger.module.d.ts +11 -0
  434. package/lib/shared/components/event-trigger/event-trigger.module.d.ts.map +1 -0
  435. package/lib/shared/components/event-trigger/index.d.ts +3 -0
  436. package/lib/shared/components/event-trigger/index.d.ts.map +1 -0
  437. package/lib/shared/components/index.d.ts +20 -0
  438. package/lib/shared/components/index.d.ts.map +1 -0
  439. package/lib/shared/components/loading-spinner/index.d.ts +2 -0
  440. package/lib/shared/components/loading-spinner/index.d.ts.map +1 -0
  441. package/lib/shared/components/loading-spinner/loading-spinner.component.d.ts +7 -0
  442. package/lib/shared/components/loading-spinner/loading-spinner.component.d.ts.map +1 -0
  443. package/lib/shared/components/pagination/index.d.ts +3 -0
  444. package/lib/shared/components/pagination/index.d.ts.map +1 -0
  445. package/lib/shared/components/pagination/pagination.component.d.ts +26 -0
  446. package/lib/shared/components/pagination/pagination.component.d.ts.map +1 -0
  447. package/lib/shared/components/pagination/pagination.module.d.ts +10 -0
  448. package/lib/shared/components/pagination/pagination.module.d.ts.map +1 -0
  449. package/lib/shared/components/palette/address/index.d.ts +3 -0
  450. package/lib/shared/components/palette/address/index.d.ts.map +1 -0
  451. package/lib/shared/components/palette/case-link/index.d.ts +3 -0
  452. package/lib/shared/components/palette/case-link/index.d.ts.map +1 -0
  453. package/lib/shared/components/palette/complex/index.d.ts +0 -6
  454. package/lib/shared/components/palette/complex/index.d.ts.map +1 -1
  455. package/lib/shared/components/palette/complex/write-complex-field.component.d.ts.map +1 -1
  456. package/lib/shared/components/palette/index.d.ts +32 -0
  457. package/lib/shared/components/palette/index.d.ts.map +1 -0
  458. package/lib/shared/components/palette/palette.module.d.ts +87 -93
  459. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  460. package/lib/shared/components/search-result/index.d.ts +3 -0
  461. package/lib/shared/components/search-result/index.d.ts.map +1 -0
  462. package/lib/shared/components/search-result/search-result.component.d.ts +111 -0
  463. package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -0
  464. package/lib/shared/components/search-result/search-result.module.d.ts +16 -0
  465. package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -0
  466. package/lib/shared/components/workbasket-filters/index.d.ts +3 -0
  467. package/lib/shared/components/workbasket-filters/index.d.ts.map +1 -0
  468. package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts +85 -0
  469. package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts.map +1 -0
  470. package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts +12 -0
  471. package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts.map +1 -0
  472. package/lib/shared/domain/case-view/role-request.model.d.ts.map +1 -1
  473. package/lib/shared/domain/work-allocation/case-worker.model.d.ts +14 -0
  474. package/lib/shared/domain/work-allocation/case-worker.model.d.ts.map +1 -0
  475. package/lib/shared/domain/work-allocation/judicial-worker.model.d.ts +8 -0
  476. package/lib/shared/domain/work-allocation/judicial-worker.model.d.ts.map +1 -0
  477. package/lib/shared/index.d.ts +1 -0
  478. package/lib/shared/index.d.ts.map +1 -1
  479. package/lib/shared/{components/palette → pipes}/complex/ccd-collection-table-value-case-fields.pipe.d.ts +1 -1
  480. package/lib/shared/pipes/complex/ccd-collection-table-value-case-fields.pipe.d.ts.map +1 -0
  481. package/lib/shared/{components/palette → pipes}/complex/ccd-cyapage-label-filter.pipe.d.ts +1 -1
  482. package/lib/shared/pipes/complex/ccd-cyapage-label-filter.pipe.d.ts.map +1 -0
  483. package/lib/shared/{components/palette → pipes}/complex/ccd-read-fields-filter.pipe.d.ts +1 -1
  484. package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -0
  485. package/lib/shared/{components/palette → pipes}/complex/ccd-tab-fields.pipe.d.ts +2 -2
  486. package/lib/shared/pipes/complex/ccd-tab-fields.pipe.d.ts.map +1 -0
  487. package/lib/shared/{components/palette → pipes}/complex/cdd-page-fields.pipe.d.ts +2 -2
  488. package/lib/shared/pipes/complex/cdd-page-fields.pipe.d.ts.map +1 -0
  489. package/lib/shared/{components/palette → pipes}/complex/fields-filter.pipe.d.ts +1 -1
  490. package/lib/shared/pipes/complex/fields-filter.pipe.d.ts.map +1 -0
  491. package/lib/shared/pipes/complex/index.d.ts +7 -0
  492. package/lib/shared/pipes/complex/index.d.ts.map +1 -0
  493. package/lib/shared/pipes/index.d.ts +2 -1
  494. package/lib/shared/pipes/index.d.ts.map +1 -1
  495. package/lib/shared/pipes/pipes.module.d.ts +7 -2
  496. package/lib/shared/pipes/pipes.module.d.ts.map +1 -1
  497. package/package.json +1 -1
  498. package/esm2015/lib/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.js +0 -29
  499. package/esm2015/lib/shared/components/palette/complex/ccd-cyapage-label-filter.pipe.js +0 -29
  500. package/esm2015/lib/shared/components/palette/complex/ccd-read-fields-filter.pipe.js +0 -154
  501. package/esm2015/lib/shared/components/palette/complex/ccd-tab-fields.pipe.js +0 -31
  502. package/esm2015/lib/shared/components/palette/complex/cdd-page-fields.pipe.js +0 -39
  503. package/esm2015/lib/shared/components/palette/complex/fields-filter.pipe.js +0 -103
  504. package/lib/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.d.ts.map +0 -1
  505. package/lib/shared/components/palette/complex/ccd-cyapage-label-filter.pipe.d.ts.map +0 -1
  506. package/lib/shared/components/palette/complex/ccd-read-fields-filter.pipe.d.ts.map +0 -1
  507. package/lib/shared/components/palette/complex/ccd-tab-fields.pipe.d.ts.map +0 -1
  508. package/lib/shared/components/palette/complex/cdd-page-fields.pipe.d.ts.map +0 -1
  509. package/lib/shared/components/palette/complex/fields-filter.pipe.d.ts.map +0 -1
@@ -0,0 +1,654 @@
1
+ import { ChangeDetectorRef, Component } from '@angular/core';
2
+ import { MatDialog } from '@angular/material/dialog';
3
+ import { ActivatedRoute } from '@angular/router';
4
+ import { BehaviorSubject, Subject } from 'rxjs';
5
+ import { DRAFT_PREFIX } from '../../../domain/draft.model';
6
+ import { CaseFieldService } from '../../../services/case-fields/case-field.service';
7
+ import { FieldsUtils } from '../../../services/fields/fields.utils';
8
+ import { FormErrorService } from '../../../services/form/form-error.service';
9
+ import { FormValueService } from '../../../services/form/form-value.service';
10
+ import { SaveOrDiscardDialogComponent } from '../../dialogs/save-or-discard-dialog';
11
+ import { initDialog } from '../../helpers/init-dialog-helper';
12
+ import { CaseEditComponent } from '../case-edit/case-edit.component';
13
+ import { PageValidationService } from '../services/page-validation.service';
14
+ import { CaseEditPageText } from './case-edit-page-text.enum';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "../case-edit/case-edit.component";
17
+ import * as i2 from "@angular/router";
18
+ import * as i3 from "../../../services/form/form-value.service";
19
+ import * as i4 from "../../../services/form/form-error.service";
20
+ import * as i5 from "../services/page-validation.service";
21
+ import * as i6 from "@angular/material/dialog";
22
+ import * as i7 from "../../../services/case-fields/case-field.service";
23
+ import * as i8 from "@angular/common";
24
+ import * as i9 from "../../error/callback-errors.component";
25
+ import * as i10 from "../../loading-spinner/loading-spinner.component";
26
+ import * as i11 from "../../palette/markdown/markdown.component";
27
+ import * as i12 from "@angular/forms";
28
+ import * as i13 from "../case-edit-form/case-edit-form.component";
29
+ import * as i14 from "../../../pipes/case-title/ccd-case-title.pipe";
30
+ import * as i15 from "../../../pipes/case-reference/case-reference.pipe";
31
+ function CaseEditPageComponent_ccd_loading_spinner_0_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelement(0, "ccd-loading-spinner");
33
+ } }
34
+ function CaseEditPageComponent_ng_container_1_h1_1_Template(rf, ctx) { if (rf & 1) {
35
+ i0.ɵɵelementStart(0, "h1", 10);
36
+ i0.ɵɵtext(1);
37
+ i0.ɵɵelementEnd();
38
+ } if (rf & 2) {
39
+ const ctx_r11 = i0.ɵɵnextContext(2);
40
+ i0.ɵɵadvance(1);
41
+ i0.ɵɵtextInterpolate(ctx_r11.eventTrigger.name);
42
+ } }
43
+ function CaseEditPageComponent_ng_container_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
44
+ i0.ɵɵelementContainerStart(0);
45
+ i0.ɵɵelementStart(1, "span", 11);
46
+ i0.ɵɵtext(2);
47
+ i0.ɵɵelementEnd();
48
+ i0.ɵɵelementStart(3, "h1", 10);
49
+ i0.ɵɵtext(4);
50
+ i0.ɵɵelementEnd();
51
+ i0.ɵɵelementContainerEnd();
52
+ } if (rf & 2) {
53
+ const ctx_r12 = i0.ɵɵnextContext(2);
54
+ i0.ɵɵadvance(2);
55
+ i0.ɵɵtextInterpolate(ctx_r12.eventTrigger.name);
56
+ i0.ɵɵadvance(2);
57
+ i0.ɵɵtextInterpolate(ctx_r12.currentPage.label);
58
+ } }
59
+ function CaseEditPageComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
60
+ i0.ɵɵelementContainerStart(0);
61
+ i0.ɵɵtemplate(1, CaseEditPageComponent_ng_container_1_h1_1_Template, 2, 1, "h1", 9);
62
+ i0.ɵɵtemplate(2, CaseEditPageComponent_ng_container_1_ng_container_2_Template, 5, 2, "ng-container", 0);
63
+ i0.ɵɵelementContainerEnd();
64
+ } if (rf & 2) {
65
+ const ctx_r1 = i0.ɵɵnextContext();
66
+ i0.ɵɵadvance(1);
67
+ i0.ɵɵproperty("ngIf", !ctx_r1.currentPage.label);
68
+ i0.ɵɵadvance(1);
69
+ i0.ɵɵproperty("ngIf", ctx_r1.currentPage.label);
70
+ } }
71
+ function CaseEditPageComponent_div_2_Template(rf, ctx) { if (rf & 1) {
72
+ i0.ɵɵelement(0, "div");
73
+ } }
74
+ function CaseEditPageComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
75
+ i0.ɵɵelement(0, "ccd-markdown", 12);
76
+ i0.ɵɵpipe(1, "ccdCaseTitle");
77
+ } if (rf & 2) {
78
+ const ctx_r4 = i0.ɵɵnextContext();
79
+ i0.ɵɵproperty("content", i0.ɵɵpipeBind3(1, 1, ctx_r4.getCaseTitle(), ctx_r4.caseFields, ctx_r4.editForm.controls["data"]));
80
+ } }
81
+ function CaseEditPageComponent_ng_template_5_h2_0_Template(rf, ctx) { if (rf & 1) {
82
+ i0.ɵɵelementStart(0, "h2", 14);
83
+ i0.ɵɵtext(1);
84
+ i0.ɵɵpipe(2, "ccdCaseReference");
85
+ i0.ɵɵelementEnd();
86
+ } if (rf & 2) {
87
+ const ctx_r13 = i0.ɵɵnextContext(2);
88
+ i0.ɵɵadvance(1);
89
+ i0.ɵɵtextInterpolate1("#", i0.ɵɵpipeBind1(2, 1, ctx_r13.getCaseId()), "");
90
+ } }
91
+ function CaseEditPageComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
92
+ i0.ɵɵtemplate(0, CaseEditPageComponent_ng_template_5_h2_0_Template, 3, 3, "h2", 13);
93
+ } if (rf & 2) {
94
+ const ctx_r6 = i0.ɵɵnextContext();
95
+ i0.ɵɵproperty("ngIf", ctx_r6.getCaseId());
96
+ } }
97
+ function CaseEditPageComponent_div_7_div_3_Template(rf, ctx) { if (rf & 1) {
98
+ const _r17 = i0.ɵɵgetCurrentView();
99
+ i0.ɵɵelementStart(0, "div", 18);
100
+ i0.ɵɵelementStart(1, "ul", 19);
101
+ i0.ɵɵelementStart(2, "li");
102
+ i0.ɵɵelementStart(3, "a", 20);
103
+ i0.ɵɵlistener("click", function CaseEditPageComponent_div_7_div_3_Template_a_click_3_listener() { i0.ɵɵrestoreView(_r17); const validationError_r15 = ctx.$implicit; const ctx_r16 = i0.ɵɵnextContext(2); return ctx_r16.navigateToErrorElement(validationError_r15.id); });
104
+ i0.ɵɵtext(4);
105
+ i0.ɵɵelementEnd();
106
+ i0.ɵɵelementEnd();
107
+ i0.ɵɵelementEnd();
108
+ i0.ɵɵelementEnd();
109
+ } if (rf & 2) {
110
+ const validationError_r15 = ctx.$implicit;
111
+ i0.ɵɵadvance(4);
112
+ i0.ɵɵtextInterpolate(validationError_r15.message);
113
+ } }
114
+ function CaseEditPageComponent_div_7_Template(rf, ctx) { if (rf & 1) {
115
+ i0.ɵɵelementStart(0, "div", 15);
116
+ i0.ɵɵelementStart(1, "h2", 16);
117
+ i0.ɵɵtext(2, " There is a problem ");
118
+ i0.ɵɵelementEnd();
119
+ i0.ɵɵtemplate(3, CaseEditPageComponent_div_7_div_3_Template, 5, 1, "div", 17);
120
+ i0.ɵɵelementEnd();
121
+ } if (rf & 2) {
122
+ const ctx_r7 = i0.ɵɵnextContext();
123
+ i0.ɵɵadvance(3);
124
+ i0.ɵɵproperty("ngForOf", ctx_r7.validationErrors);
125
+ } }
126
+ function CaseEditPageComponent_div_8_Template(rf, ctx) { if (rf & 1) {
127
+ i0.ɵɵelementStart(0, "div", 21);
128
+ i0.ɵɵelementStart(1, "h1", 22);
129
+ i0.ɵɵtext(2, " Something went wrong ");
130
+ i0.ɵɵelementEnd();
131
+ i0.ɵɵelementStart(3, "div", 23);
132
+ i0.ɵɵelementStart(4, "p");
133
+ i0.ɵɵtext(5, "We're working to fix the problem. Try again shortly.");
134
+ i0.ɵɵelementEnd();
135
+ i0.ɵɵelementStart(6, "p");
136
+ i0.ɵɵelementStart(7, "a", 24);
137
+ i0.ɵɵtext(8, "Contact us");
138
+ i0.ɵɵelementEnd();
139
+ i0.ɵɵtext(9, " if you're still having problems.");
140
+ i0.ɵɵelementEnd();
141
+ i0.ɵɵelementEnd();
142
+ i0.ɵɵelementEnd();
143
+ } }
144
+ function CaseEditPageComponent_div_9_ul_5_li_1_Template(rf, ctx) { if (rf & 1) {
145
+ i0.ɵɵelementStart(0, "li", 29);
146
+ i0.ɵɵtext(1);
147
+ i0.ɵɵelementEnd();
148
+ } if (rf & 2) {
149
+ const fieldError_r20 = ctx.$implicit;
150
+ i0.ɵɵadvance(1);
151
+ i0.ɵɵtextInterpolate(fieldError_r20.message);
152
+ } }
153
+ function CaseEditPageComponent_div_9_ul_5_Template(rf, ctx) { if (rf & 1) {
154
+ i0.ɵɵelementStart(0, "ul", 27);
155
+ i0.ɵɵtemplate(1, CaseEditPageComponent_div_9_ul_5_li_1_Template, 2, 1, "li", 28);
156
+ i0.ɵɵelementEnd();
157
+ } if (rf & 2) {
158
+ const ctx_r18 = i0.ɵɵnextContext(2);
159
+ i0.ɵɵadvance(1);
160
+ i0.ɵɵproperty("ngForOf", ctx_r18.error.details.field_errors);
161
+ } }
162
+ function CaseEditPageComponent_div_9_Template(rf, ctx) { if (rf & 1) {
163
+ i0.ɵɵelementStart(0, "div", 21);
164
+ i0.ɵɵelementStart(1, "h3", 25);
165
+ i0.ɵɵtext(2, " The event could not be created ");
166
+ i0.ɵɵelementEnd();
167
+ i0.ɵɵelementStart(3, "p");
168
+ i0.ɵɵtext(4);
169
+ i0.ɵɵelementEnd();
170
+ i0.ɵɵtemplate(5, CaseEditPageComponent_div_9_ul_5_Template, 2, 1, "ul", 26);
171
+ i0.ɵɵelementEnd();
172
+ } if (rf & 2) {
173
+ const ctx_r9 = i0.ɵɵnextContext();
174
+ i0.ɵɵadvance(4);
175
+ i0.ɵɵtextInterpolate(ctx_r9.error.message);
176
+ i0.ɵɵadvance(1);
177
+ i0.ɵɵproperty("ngIf", ctx_r9.error.details == null ? null : ctx_r9.error.details.field_errors);
178
+ } }
179
+ function CaseEditPageComponent_form_12_ccd_case_edit_form_3_Template(rf, ctx) { if (rf & 1) {
180
+ const _r24 = i0.ɵɵgetCurrentView();
181
+ i0.ɵɵelementStart(0, "ccd-case-edit-form", 40);
182
+ i0.ɵɵlistener("valuesChanged", function CaseEditPageComponent_form_12_ccd_case_edit_form_3_Template_ccd_case_edit_form_valuesChanged_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return ctx_r23.applyValuesChanged($event); });
183
+ i0.ɵɵelementEnd();
184
+ } if (rf & 2) {
185
+ const ctx_r21 = i0.ɵɵnextContext(2);
186
+ i0.ɵɵproperty("fields", ctx_r21.currentPage.getCol1Fields())("formGroup", ctx_r21.editForm.controls["data"])("caseFields", ctx_r21.caseFields)("pageChangeSubject", ctx_r21.pageChangeSubject);
187
+ } }
188
+ function CaseEditPageComponent_form_12_div_4_Template(rf, ctx) { if (rf & 1) {
189
+ i0.ɵɵelementStart(0, "div", 41);
190
+ i0.ɵɵelementStart(1, "div", 42);
191
+ i0.ɵɵelement(2, "ccd-case-edit-form", 43);
192
+ i0.ɵɵelementEnd();
193
+ i0.ɵɵelementStart(3, "div", 44);
194
+ i0.ɵɵelement(4, "ccd-case-edit-form", 45);
195
+ i0.ɵɵelementEnd();
196
+ i0.ɵɵelementEnd();
197
+ } if (rf & 2) {
198
+ const ctx_r22 = i0.ɵɵnextContext(2);
199
+ i0.ɵɵadvance(2);
200
+ i0.ɵɵproperty("fields", ctx_r22.currentPage.getCol1Fields())("formGroup", ctx_r22.editForm.controls["data"])("caseFields", ctx_r22.caseFields);
201
+ i0.ɵɵadvance(2);
202
+ i0.ɵɵproperty("fields", ctx_r22.currentPage.getCol2Fields())("formGroup", ctx_r22.editForm.controls["data"])("caseFields", ctx_r22.caseFields);
203
+ } }
204
+ function CaseEditPageComponent_form_12_Template(rf, ctx) { if (rf & 1) {
205
+ const _r26 = i0.ɵɵgetCurrentView();
206
+ i0.ɵɵelementStart(0, "form", 30);
207
+ i0.ɵɵlistener("submit", function CaseEditPageComponent_form_12_Template_form_submit_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return ctx_r25.submit(); });
208
+ i0.ɵɵelementStart(1, "fieldset", 31);
209
+ i0.ɵɵelement(2, "legend", 32);
210
+ i0.ɵɵtemplate(3, CaseEditPageComponent_form_12_ccd_case_edit_form_3_Template, 1, 4, "ccd-case-edit-form", 33);
211
+ i0.ɵɵtemplate(4, CaseEditPageComponent_form_12_div_4_Template, 5, 6, "div", 34);
212
+ i0.ɵɵelementEnd();
213
+ i0.ɵɵelementStart(5, "div", 35);
214
+ i0.ɵɵelementStart(6, "button", 36);
215
+ i0.ɵɵlistener("click", function CaseEditPageComponent_form_12_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r26); const ctx_r27 = i0.ɵɵnextContext(); return ctx_r27.toPreviousPage(); });
216
+ i0.ɵɵpipe(7, "async");
217
+ i0.ɵɵtext(8, " Previous ");
218
+ i0.ɵɵelementEnd();
219
+ i0.ɵɵelementStart(9, "button", 37);
220
+ i0.ɵɵtext(10);
221
+ i0.ɵɵelementEnd();
222
+ i0.ɵɵelementEnd();
223
+ i0.ɵɵelementStart(11, "p", 38);
224
+ i0.ɵɵelementStart(12, "a", 39);
225
+ i0.ɵɵlistener("click", function CaseEditPageComponent_form_12_Template_a_click_12_listener() { i0.ɵɵrestoreView(_r26); const ctx_r28 = i0.ɵɵnextContext(); return ctx_r28.cancel(); });
226
+ i0.ɵɵtext(13);
227
+ i0.ɵɵelementEnd();
228
+ i0.ɵɵelementEnd();
229
+ i0.ɵɵelementEnd();
230
+ } if (rf & 2) {
231
+ const ctx_r10 = i0.ɵɵnextContext();
232
+ i0.ɵɵproperty("formGroup", ctx_r10.editForm);
233
+ i0.ɵɵadvance(3);
234
+ i0.ɵɵproperty("ngIf", !ctx_r10.currentPage.isMultiColumn());
235
+ i0.ɵɵadvance(1);
236
+ i0.ɵɵproperty("ngIf", ctx_r10.currentPage.isMultiColumn());
237
+ i0.ɵɵadvance(2);
238
+ i0.ɵɵproperty("disabled", !i0.ɵɵpipeBind1(7, 7, ctx_r10.hasPreviousPage$));
239
+ i0.ɵɵadvance(3);
240
+ i0.ɵɵproperty("disabled", ctx_r10.submitting());
241
+ i0.ɵɵadvance(1);
242
+ i0.ɵɵtextInterpolate(ctx_r10.triggerText);
243
+ i0.ɵɵadvance(3);
244
+ i0.ɵɵtextInterpolate(ctx_r10.getCancelText());
245
+ } }
246
+ export class CaseEditPageComponent {
247
+ constructor(caseEdit, route, formValueService, formErrorService, cdRef, pageValidationService, dialog, caseFieldService) {
248
+ this.caseEdit = caseEdit;
249
+ this.route = route;
250
+ this.formValueService = formValueService;
251
+ this.formErrorService = formErrorService;
252
+ this.cdRef = cdRef;
253
+ this.pageValidationService = pageValidationService;
254
+ this.dialog = dialog;
255
+ this.caseFieldService = caseFieldService;
256
+ this.callbackErrorsSubject = new Subject();
257
+ this.ignoreWarning = false;
258
+ this.triggerTextStart = CaseEditPageText.TRIGGER_TEXT_START;
259
+ this.triggerTextIgnoreWarnings = CaseEditPageText.TRIGGER_TEXT_CONTINUE;
260
+ this.isSubmitting = false;
261
+ this.formValuesChanged = false;
262
+ this.pageChangeSubject = new Subject();
263
+ this.validationErrors = [];
264
+ this.hasPreviousPage$ = new BehaviorSubject(false);
265
+ }
266
+ static scrollToTop() {
267
+ window.scrollTo(0, 0);
268
+ }
269
+ static setFocusToTop() {
270
+ const topContainer = document.getElementById('top');
271
+ if (topContainer) {
272
+ topContainer.focus();
273
+ }
274
+ }
275
+ ngOnInit() {
276
+ this.dialogConfig = initDialog();
277
+ this.eventTrigger = this.caseEdit.eventTrigger;
278
+ this.editForm = this.caseEdit.form;
279
+ this.wizard = this.caseEdit.wizard;
280
+ this.caseFields = this.getCaseFields();
281
+ this.triggerText = this.getTriggerText();
282
+ this.route.params
283
+ .subscribe(params => {
284
+ const pageId = params['page'];
285
+ if (!this.currentPage || pageId !== this.currentPage.id) {
286
+ const page = this.caseEdit.getPage(pageId);
287
+ if (page) {
288
+ this.currentPage = page;
289
+ }
290
+ else {
291
+ if (this.currentPage) {
292
+ return this.next();
293
+ }
294
+ else {
295
+ return this.first();
296
+ }
297
+ }
298
+ this.hasPreviousPage$.next(this.caseEdit.hasPrevious(this.currentPage.id));
299
+ }
300
+ });
301
+ CaseEditPageComponent.setFocusToTop();
302
+ }
303
+ ngAfterViewChecked() {
304
+ this.cdRef.detectChanges();
305
+ }
306
+ applyValuesChanged(valuesChanged) {
307
+ this.formValuesChanged = valuesChanged;
308
+ }
309
+ first() {
310
+ return this.caseEdit.first();
311
+ }
312
+ currentPageIsNotValid() {
313
+ return !this.pageValidationService.isPageValid(this.currentPage, this.editForm);
314
+ }
315
+ /**
316
+ * caseEventData.event_data contains all the values from the previous pages so we set caseEventData.data = caseEventData.event_data
317
+ * This builds the form with data from the previous pages
318
+ * EUI-3732 - Breathing space data not persisted on Previous button click with ExpUI Demo
319
+ */
320
+ toPreviousPage() {
321
+ this.validationErrors = [];
322
+ const caseEventData = this.buildCaseEventData();
323
+ caseEventData.data = caseEventData.event_data;
324
+ this.updateFormData(caseEventData);
325
+ this.previous();
326
+ CaseEditPageComponent.setFocusToTop();
327
+ }
328
+ // Adding validation message to show it as Error Summary
329
+ generateErrorMessage(fields = [], container, path) {
330
+ const group = container || this.editForm.controls['data'];
331
+ fields.filter(casefield => !this.caseFieldService.isReadOnly(casefield))
332
+ .filter(casefield => !this.pageValidationService.isHidden(casefield, this.editForm, path))
333
+ .forEach(casefield => {
334
+ const fieldElement = group.get(casefield.id);
335
+ if (fieldElement) {
336
+ const label = casefield.label || 'Field';
337
+ let id = casefield.id;
338
+ if (fieldElement['component'] && fieldElement['component'].parent) {
339
+ if (fieldElement['component'].idPrefix.indexOf('_' + id + '_') === -1) {
340
+ id = `${fieldElement['component'].idPrefix}${id}`;
341
+ }
342
+ else {
343
+ id = `${fieldElement['component'].idPrefix}`;
344
+ }
345
+ }
346
+ if (fieldElement.hasError('required')) {
347
+ this.validationErrors.push({ id, message: `${label} is required` });
348
+ fieldElement.markAsDirty();
349
+ }
350
+ else if (fieldElement.hasError('pattern')) {
351
+ this.validationErrors.push({ id, message: `${label} is not valid` });
352
+ fieldElement.markAsDirty();
353
+ }
354
+ else if (fieldElement.hasError('minlength')) {
355
+ this.validationErrors.push({ id, message: `${label} is below the minimum length` });
356
+ fieldElement.markAsDirty();
357
+ }
358
+ else if (fieldElement.hasError('maxlength')) {
359
+ this.validationErrors.push({ id, message: `${label} exceeds the maximum length` });
360
+ fieldElement.markAsDirty();
361
+ }
362
+ else if (fieldElement.invalid) {
363
+ if (casefield.isComplex()) {
364
+ this.generateErrorMessage(casefield.field_type.complex_fields, fieldElement, id);
365
+ }
366
+ else if (casefield.isCollection() && casefield.field_type.collection_field_type.type === 'Complex') {
367
+ const fieldArray = fieldElement;
368
+ if (fieldArray['component'] && fieldArray['component']['collItems'] && fieldArray['component']['collItems'].length > 0) {
369
+ fieldArray['component']['collItems'].forEach(element => {
370
+ id = `${element.prefix}`;
371
+ fieldArray.controls.forEach((control, index) => {
372
+ if (id.charAt(id.indexOf(index.toString())) === index.toString()) {
373
+ this.generateErrorMessage(casefield.field_type.collection_field_type.complex_fields, control.get('value'), id);
374
+ }
375
+ });
376
+ });
377
+ }
378
+ }
379
+ else {
380
+ this.validationErrors.push({ id, message: `Select or fill the required ${casefield.label} field` });
381
+ fieldElement.markAsDirty();
382
+ }
383
+ }
384
+ }
385
+ });
386
+ CaseEditPageComponent.scrollToTop();
387
+ }
388
+ navigateToErrorElement(elementId) {
389
+ if (elementId) {
390
+ const htmlElement = document.getElementById(elementId);
391
+ if (htmlElement) {
392
+ htmlElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
393
+ htmlElement.focus();
394
+ }
395
+ }
396
+ }
397
+ submit() {
398
+ this.validationErrors = [];
399
+ if (this.currentPageIsNotValid()) {
400
+ this.generateErrorMessage(this.currentPage.case_fields);
401
+ }
402
+ if (!this.isSubmitting && !this.currentPageIsNotValid()) {
403
+ this.isSubmitting = true;
404
+ this.error = null;
405
+ const caseEventData = this.buildCaseEventData();
406
+ this.showSpinner = true;
407
+ this.caseEdit.validate(caseEventData, this.currentPage.id)
408
+ .subscribe((jsonData) => {
409
+ if (jsonData) {
410
+ this.updateFormData(jsonData);
411
+ }
412
+ this.saveDraft();
413
+ this.showSpinner = false;
414
+ this.next();
415
+ }, error => {
416
+ this.showSpinner = false;
417
+ this.handleError(error);
418
+ });
419
+ CaseEditPageComponent.scrollToTop();
420
+ }
421
+ CaseEditPageComponent.setFocusToTop();
422
+ }
423
+ updateFormData(jsonData) {
424
+ for (const caseFieldId of Object.keys(jsonData.data)) {
425
+ if (this.pageWithFieldExists(caseFieldId)) {
426
+ this.updateEventTriggerCaseFields(caseFieldId, jsonData, this.caseEdit.eventTrigger);
427
+ this.updateFormControlsValue(this.editForm, caseFieldId, jsonData.data[caseFieldId]);
428
+ }
429
+ }
430
+ }
431
+ // we do the check, becasue the data comes from the external source
432
+ pageWithFieldExists(caseFieldId) {
433
+ return this.wizard.findWizardPage(caseFieldId);
434
+ }
435
+ updateEventTriggerCaseFields(caseFieldId, jsonData, eventTrigger) {
436
+ var _a;
437
+ if (eventTrigger.case_fields) {
438
+ (_a = eventTrigger.case_fields) === null || _a === void 0 ? void 0 : _a.filter(element => element.id === caseFieldId).forEach(element => element.value = jsonData.data[caseFieldId]);
439
+ }
440
+ }
441
+ updateFormControlsValue(formGroup, caseFieldId, value) {
442
+ const theControl = formGroup.controls['data'].get(caseFieldId);
443
+ if (theControl && theControl['status'] !== 'DISABLED') {
444
+ if (Array.isArray(theControl.value) && Array.isArray(value)
445
+ && theControl.value.length > value.length && theControl['caseField']
446
+ && theControl['caseField']['display_context'] && theControl['caseField']['display_context'] === 'OPTIONAL'
447
+ && theControl['caseField']['field_type'] && theControl['caseField']['field_type']['type'] === 'Collection') {
448
+ // do nothing
449
+ }
450
+ else {
451
+ theControl.patchValue(value);
452
+ }
453
+ }
454
+ }
455
+ callbackErrorsNotify(errorContext) {
456
+ this.ignoreWarning = errorContext.ignore_warning;
457
+ this.triggerText = errorContext.trigger_text;
458
+ }
459
+ next() {
460
+ this.resetErrors();
461
+ this.isSubmitting = false;
462
+ this.formValuesChanged = false;
463
+ this.pageChangeSubject.next(true);
464
+ return this.caseEdit.next(this.currentPage.id);
465
+ }
466
+ previous() {
467
+ this.resetErrors();
468
+ this.saveDraft();
469
+ this.formValuesChanged = false;
470
+ this.pageChangeSubject.next(true);
471
+ return this.caseEdit.previous(this.currentPage.id);
472
+ }
473
+ hasPrevious() {
474
+ return this.caseEdit.hasPrevious(this.currentPage.id);
475
+ }
476
+ cancel() {
477
+ var _a;
478
+ if ((_a = this.eventTrigger) === null || _a === void 0 ? void 0 : _a.can_save_draft) {
479
+ if (this.formValuesChanged) {
480
+ const dialogRef = this.dialog.open(SaveOrDiscardDialogComponent, this.dialogConfig);
481
+ dialogRef.afterClosed().subscribe(result => {
482
+ if (result === 'Discard') {
483
+ this.discard();
484
+ }
485
+ else if (result === 'Save') {
486
+ const draftCaseEventData = this.formValueService.sanitise(this.editForm.value);
487
+ if (this.route.snapshot.queryParamMap.get(CaseEditComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') {
488
+ this.caseEdit.cancelled.emit({ status: CaseEditPageText.RESUMED_FORM_SAVE, data: draftCaseEventData });
489
+ }
490
+ else {
491
+ this.caseEdit.cancelled.emit({ status: CaseEditPageText.NEW_FORM_SAVE, data: draftCaseEventData });
492
+ }
493
+ }
494
+ });
495
+ }
496
+ else {
497
+ this.discard();
498
+ }
499
+ }
500
+ else {
501
+ this.caseEdit.cancelled.emit();
502
+ }
503
+ }
504
+ submitting() {
505
+ return this.isSubmitting;
506
+ }
507
+ getCaseId() {
508
+ return (this.caseEdit.caseDetails ? this.caseEdit.caseDetails.case_id : '');
509
+ }
510
+ getCaseTitle() {
511
+ return (this.caseEdit.caseDetails && this.caseEdit.caseDetails.state &&
512
+ this.caseEdit.caseDetails.state.title_display ? this.caseEdit.caseDetails.state.title_display : '');
513
+ }
514
+ getCancelText() {
515
+ var _a;
516
+ return ((_a = this.eventTrigger) === null || _a === void 0 ? void 0 : _a.can_save_draft) ? 'Return to case list' : 'Cancel';
517
+ }
518
+ getTriggerText() {
519
+ var _a;
520
+ return ((_a = this.eventTrigger) === null || _a === void 0 ? void 0 : _a.can_save_draft) ? CaseEditPageText.TRIGGER_TEXT_SAVE
521
+ : CaseEditPageText.TRIGGER_TEXT_START;
522
+ }
523
+ discard() {
524
+ if (this.route.snapshot.queryParamMap.get(CaseEditComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') {
525
+ this.caseEdit.cancelled.emit({ status: CaseEditPageText.RESUMED_FORM_DISCARD });
526
+ }
527
+ else {
528
+ this.caseEdit.cancelled.emit({ status: CaseEditPageText.NEW_FORM_DISCARD });
529
+ }
530
+ }
531
+ handleError(error) {
532
+ this.isSubmitting = false;
533
+ this.error = error;
534
+ this.callbackErrorsSubject.next(this.error);
535
+ if (this.error.details) {
536
+ this.formErrorService
537
+ .mapFieldErrors(this.error.details.field_errors, this.editForm.controls['data'], 'validation');
538
+ }
539
+ }
540
+ resetErrors() {
541
+ this.error = null;
542
+ this.ignoreWarning = false;
543
+ this.triggerText = this.getTriggerText();
544
+ this.callbackErrorsSubject.next(null);
545
+ }
546
+ saveDraft() {
547
+ var _a;
548
+ if ((_a = this.eventTrigger) === null || _a === void 0 ? void 0 : _a.can_save_draft) {
549
+ const draftCaseEventData = this.formValueService.sanitise(this.editForm.value);
550
+ draftCaseEventData.event_token = this.eventTrigger.event_token;
551
+ draftCaseEventData.ignore_warning = this.ignoreWarning;
552
+ this.caseEdit.saveDraft(draftCaseEventData).subscribe((draft) => this.eventTrigger.case_id = DRAFT_PREFIX + draft.id, error => this.handleError(error));
553
+ }
554
+ }
555
+ getCaseFields() {
556
+ if (this.caseEdit.caseDetails) {
557
+ return FieldsUtils.getCaseFields(this.caseEdit.caseDetails);
558
+ }
559
+ return this.eventTrigger.case_fields;
560
+ }
561
+ getCaseFieldsFromCurrentAndPreviousPages() {
562
+ const result = [];
563
+ this.wizard.pages.forEach(page => {
564
+ if (page.order <= this.currentPage.order) {
565
+ page.case_fields.forEach(field => result.push(field));
566
+ }
567
+ });
568
+ return result;
569
+ }
570
+ buildCaseEventData() {
571
+ const formValue = this.editForm.value;
572
+ // Get the CaseEventData for the current page.
573
+ const pageFields = this.currentPage.case_fields;
574
+ const pageEventData = this.getFilteredCaseEventData(pageFields, formValue, true);
575
+ // Get the CaseEventData for the entire form (all pages).
576
+ const allCaseFields = this.getCaseFieldsFromCurrentAndPreviousPages();
577
+ const formEventData = this.getFilteredCaseEventData(allCaseFields, formValue, false, true);
578
+ // Now here's the key thing - the pageEventData has a property called `event_data` and
579
+ // we need THAT to be the value of the entire form: `formEventData.data`.
580
+ pageEventData.event_data = formEventData.data;
581
+ // Finalise the CaseEventData object.
582
+ pageEventData.event_token = this.eventTrigger.event_token;
583
+ pageEventData.ignore_warning = this.ignoreWarning;
584
+ // Finally, try to set up the case_reference.
585
+ if (this.caseEdit.caseDetails) {
586
+ pageEventData.case_reference = this.caseEdit.caseDetails.case_id;
587
+ }
588
+ // Return the now hopefully sane CaseEventData.
589
+ return pageEventData;
590
+ }
591
+ /**
592
+ * Abstracted this method from buildCaseEventData to remove duplication.
593
+ * @param caseFields The fields to filter the data by.
594
+ * @param formValue The original value of the form.
595
+ * @param clearEmpty Whether or not to clear out empty values.
596
+ * @param clearNonCase Whether or not to clear out fields that are not part of the case.
597
+ * @returns CaseEventData for the specified parameters.
598
+ */
599
+ getFilteredCaseEventData(caseFields, formValue, clearEmpty = false, clearNonCase = false) {
600
+ // Get the data for the fields specified.
601
+ const formFields = this.formValueService.filterCurrentPageFields(caseFields, formValue);
602
+ // Sort out the dynamic lists.
603
+ this.formValueService.sanitiseDynamicLists(caseFields, formFields);
604
+ // Get hold of the CaseEventData.
605
+ const caseEventData = this.formValueService.sanitise(formFields);
606
+ // Tidy it up before we return it.
607
+ this.formValueService.removeUnnecessaryFields(caseEventData.data, caseFields, clearEmpty, clearNonCase);
608
+ return caseEventData;
609
+ }
610
+ }
611
+ CaseEditPageComponent.ɵfac = function CaseEditPageComponent_Factory(t) { return new (t || CaseEditPageComponent)(i0.ɵɵdirectiveInject(i1.CaseEditComponent), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i3.FormValueService), i0.ɵɵdirectiveInject(i4.FormErrorService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i5.PageValidationService), i0.ɵɵdirectiveInject(i6.MatDialog), i0.ɵɵdirectiveInject(i7.CaseFieldService)); };
612
+ CaseEditPageComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseEditPageComponent, selectors: [["ccd-case-edit-page"]], decls: 13, vars: 12, consts: [[4, "ngIf"], [4, "ngIf", "ngIfThen", "ngIfElse"], ["titleBlock", ""], ["idBlock", ""], ["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], ["class", "error-summary", "role", "status", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 4, "ngIf"], [3, "triggerTextContinue", "triggerTextIgnore", "callbackErrorsSubject", "callbackErrorsContext"], [1, "width-50"], ["class", "form", 3, "formGroup", "submit", 4, "ngIf"], ["class", "govuk-heading-l", 4, "ngIf"], [1, "govuk-heading-l"], [1, "govuk-caption-l"], [3, "content"], ["class", "heading-h2", 4, "ngIf"], [1, "heading-h2"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], ["class", "govuk-error-summary__body", 4, "ngFor", "ngForOf"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [1, "validation-error", 3, "click"], ["role", "status", "aria-labelledby", "edit-case-event_error-summary-heading", "tabindex", "-1", 1, "error-summary"], ["id", "edit-case-event_error-summary-heading", 1, "heading-h1", "error-summary-heading"], ["id", "edit-case-event_error-summary-body", 1, "govuk-error-summary__body"], ["href", "get-help", "target", "_blank"], ["id", "edit-case-event_error-summary-heading-3", 1, "heading-h3", "error-summary-heading"], ["class", "error-summary-list", 4, "ngIf"], [1, "error-summary-list"], ["class", "ccd-error-summary-li", 4, "ngFor", "ngForOf"], [1, "ccd-error-summary-li"], [1, "form", 3, "formGroup", "submit"], ["id", "fieldset-case-data"], [2, "display", "none"], ["id", "caseEditForm", 3, "fields", "formGroup", "caseFields", "pageChangeSubject", "valuesChanged", 4, "ngIf"], ["class", "grid-row", 4, "ngIf"], [1, "form-group", "form-group-related"], ["type", "button", 1, "button", "button-secondary", 3, "disabled", "click"], ["type", "submit", 1, "button", 3, "disabled"], [1, "cancel"], ["href", "javascript:void(0)", 3, "click"], ["id", "caseEditForm", 3, "fields", "formGroup", "caseFields", "pageChangeSubject", "valuesChanged"], [1, "grid-row"], [1, "column-two-thirds", "rightBorderSeparator"], ["id", "caseEditForm1", 3, "fields", "formGroup", "caseFields"], [1, "column-one-third"], ["id", "caseEditForm2", 3, "fields", "formGroup", "caseFields"]], template: function CaseEditPageComponent_Template(rf, ctx) { if (rf & 1) {
613
+ i0.ɵɵtemplate(0, CaseEditPageComponent_ccd_loading_spinner_0_Template, 1, 0, "ccd-loading-spinner", 0);
614
+ i0.ɵɵtemplate(1, CaseEditPageComponent_ng_container_1_Template, 3, 2, "ng-container", 0);
615
+ i0.ɵɵtemplate(2, CaseEditPageComponent_div_2_Template, 1, 0, "div", 1);
616
+ i0.ɵɵtemplate(3, CaseEditPageComponent_ng_template_3_Template, 2, 5, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
617
+ i0.ɵɵtemplate(5, CaseEditPageComponent_ng_template_5_Template, 1, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
618
+ i0.ɵɵtemplate(7, CaseEditPageComponent_div_7_Template, 4, 1, "div", 4);
619
+ i0.ɵɵtemplate(8, CaseEditPageComponent_div_8_Template, 10, 0, "div", 5);
620
+ i0.ɵɵtemplate(9, CaseEditPageComponent_div_9_Template, 6, 2, "div", 5);
621
+ i0.ɵɵelementStart(10, "ccd-callback-errors", 6);
622
+ i0.ɵɵlistener("callbackErrorsContext", function CaseEditPageComponent_Template_ccd_callback_errors_callbackErrorsContext_10_listener($event) { return ctx.callbackErrorsNotify($event); });
623
+ i0.ɵɵelementEnd();
624
+ i0.ɵɵelementStart(11, "div", 7);
625
+ i0.ɵɵtemplate(12, CaseEditPageComponent_form_12_Template, 14, 9, "form", 8);
626
+ i0.ɵɵelementEnd();
627
+ } if (rf & 2) {
628
+ const _r3 = i0.ɵɵreference(4);
629
+ const _r5 = i0.ɵɵreference(6);
630
+ i0.ɵɵproperty("ngIf", ctx.showSpinner);
631
+ i0.ɵɵadvance(1);
632
+ i0.ɵɵproperty("ngIf", ctx.currentPage);
633
+ i0.ɵɵadvance(1);
634
+ i0.ɵɵproperty("ngIf", ctx.getCaseTitle())("ngIfThen", _r3)("ngIfElse", _r5);
635
+ i0.ɵɵadvance(5);
636
+ i0.ɵɵproperty("ngIf", ctx.validationErrors.length > 0);
637
+ i0.ɵɵadvance(1);
638
+ i0.ɵɵproperty("ngIf", ctx.error && !(ctx.error.callbackErrors || ctx.error.callbackWarnings || ctx.error.details));
639
+ i0.ɵɵadvance(1);
640
+ i0.ɵɵproperty("ngIf", ctx.error && ctx.error.details);
641
+ i0.ɵɵadvance(1);
642
+ i0.ɵɵproperty("triggerTextContinue", ctx.triggerTextStart)("triggerTextIgnore", ctx.triggerTextIgnoreWarnings)("callbackErrorsSubject", ctx.callbackErrorsSubject);
643
+ i0.ɵɵadvance(2);
644
+ i0.ɵɵproperty("ngIf", ctx.currentPage);
645
+ } }, directives: [i8.NgIf, i9.CallbackErrorsComponent, i10.LoadingSpinnerComponent, i11.MarkdownComponent, i8.NgForOf, i12.ɵangular_packages_forms_forms_ba, i12.NgControlStatusGroup, i12.FormGroupDirective, i13.CaseEditFormComponent], pipes: [i14.CcdCaseTitlePipe, i15.CaseReferencePipe, i8.AsyncPipe], styles: [".rightBorderSeparator[_ngcontent-%COMP%]{border-right:4px solid #ffcc02}.validation-error[_ngcontent-%COMP%]{cursor:pointer;text-decoration:underline;color:#d4351c}"] });
646
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditPageComponent, [{
647
+ type: Component,
648
+ args: [{
649
+ selector: 'ccd-case-edit-page',
650
+ templateUrl: 'case-edit-page.html',
651
+ styleUrls: ['./case-edit-page.scss']
652
+ }]
653
+ }], function () { return [{ type: i1.CaseEditComponent }, { type: i2.ActivatedRoute }, { type: i3.FormValueService }, { type: i4.FormErrorService }, { type: i0.ChangeDetectorRef }, { type: i5.PageValidationService }, { type: i6.MatDialog }, { type: i7.CaseFieldService }]; }, null); })();
654
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdC1wYWdlL2Nhc2UtZWRpdC1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtD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LHNDQUFpQjtRQUN6QixlQUFpQjtRQUFqQixzQ0FBaUI7UUFTMUIsZUFBc0I7UUFBdEIseUNBQXNCLGlCQUFBLGlCQUFBO1FBU3RCLGVBQWlDO1FBQWpDLHNEQUFpQztRQWNqQyxlQUFpRjtRQUFqRixrSEFBaUY7UUFZakYsZUFBNEI7UUFBNUIscURBQTRCO1FBV2hDLGVBQXdDO1FBQXhDLDBEQUF3QyxvREFBQSxvREFBQTtRQU1qQyxlQUFpQjtRQUFqQixzQ0FBaUI7O3VGRGxDYixxQkFBcUI7Y0FMakMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFdBQVcsRUFBRSxxQkFBcUI7Z0JBQ2xDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2FBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlRXZlbnREYXRhIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2UtZXZlbnQtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRXZlbnRUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2Utdmlldy9jYXNlLWV2ZW50LXRyaWdnZXIubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24nO1xuaW1wb3J0IHsgRFJBRlRfUFJFRklYIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RyYWZ0Lm1vZGVsJztcbmltcG9ydCB7IEh0dHBFcnJvciB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9odHRwL2h0dHAtZXJyb3IubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Nhc2UtZmllbGRzL2Nhc2UtZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuaW1wb3J0IHsgRm9ybUVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1WYWx1ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUuc2VydmljZSc7XG5pbXBvcnQgeyBTYXZlT3JEaXNjYXJkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9ncy9zYXZlLW9yLWRpc2NhcmQtZGlhbG9nJztcbmltcG9ydCB7IENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yL2RvbWFpbi9lcnJvci1jb250ZXh0JztcbmltcG9ydCB7IGluaXREaWFsb2cgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2luaXQtZGlhbG9nLWhlbHBlcic7XG5pbXBvcnQgeyBDYXNlRWRpdENvbXBvbmVudCB9IGZyb20gJy4uL2Nhc2UtZWRpdC9jYXNlLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpemFyZFBhZ2UgfSBmcm9tICcuLi9kb21haW4vd2l6YXJkLXBhZ2UubW9kZWwnO1xuaW1wb3J0IHsgV2l6YXJkIH0gZnJvbSAnLi4vZG9tYWluL3dpemFyZC5tb2RlbCc7XG5pbXBvcnQgeyBQYWdlVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wYWdlLXZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDYXNlRWRpdFBhZ2VUZXh0IH0gZnJvbSAnLi9jYXNlLWVkaXQtcGFnZS10ZXh0LmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1lZGl0LXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJ2Nhc2UtZWRpdC1wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWVkaXQtcGFnZS5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUVkaXRQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0OiBDYXNlRWRpdENvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZVNlcnZpY2U6IEZvcm1WYWx1ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRXJyb3JTZXJ2aWNlOiBGb3JtRXJyb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVZhbGlkYXRpb25TZXJ2aWNlOiBQYWdlVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGaWVsZFNlcnZpY2U6IENhc2VGaWVsZFNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyO1xuICBwdWJsaWMgZWRpdEZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIHdpemFyZDogV2l6YXJkO1xuICBwdWJsaWMgY3VycmVudFBhZ2U6IFdpemFyZFBhZ2U7XG4gIHB1YmxpYyBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZztcbiAgcHVibGljIGVycm9yOiBIdHRwRXJyb3I7XG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBpZ25vcmVXYXJuaW5nID0gZmFsc2U7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dFN0YXJ0ID0gQ2FzZUVkaXRQYWdlVGV4dC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzID0gQ2FzZUVkaXRQYWdlVGV4dC5UUklHR0VSX1RFWFRfQ09OVElOVUU7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gIHB1YmxpYyBmb3JtVmFsdWVzQ2hhbmdlZCA9IGZhbHNlO1xuICBwdWJsaWMgcGFnZUNoYW5nZVN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgY2FzZUZpZWxkczogQ2FzZUZpZWxkW107XG4gIHB1YmxpYyB2YWxpZGF0aW9uRXJyb3JzOiB7IGlkOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB9W10gPSBbXTtcbiAgcHVibGljIHNob3dTcGlubmVyOiBib29sZWFuO1xuXG4gIHB1YmxpYyBoYXNQcmV2aW91c1BhZ2UkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHN0YXRpYyBzY3JvbGxUb1RvcCgpOiB2b2lkIHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXRGb2N1c1RvVG9wKCkge1xuICAgIGNvbnN0IHRvcENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3AnKTtcbiAgICBpZiAodG9wQ29udGFpbmVyKSB7XG4gICAgICB0b3BDb250YWluZXIuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dDb25maWcgPSBpbml0RGlhbG9nKCk7XG4gICAgdGhpcy5ldmVudFRyaWdnZXIgPSB0aGlzLmNhc2VFZGl0LmV2ZW50VHJpZ2dlcjtcbiAgICB0aGlzLmVkaXRGb3JtID0gdGhpcy5jYXNlRWRpdC5mb3JtO1xuICAgIHRoaXMud2l6YXJkID0gdGhpcy5jYXNlRWRpdC53aXphcmQ7XG4gICAgdGhpcy5jYXNlRmllbGRzID0gdGhpcy5nZXRDYXNlRmllbGRzKCk7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IHRoaXMuZ2V0VHJpZ2dlclRleHQoKTtcblxuICAgIHRoaXMucm91dGUucGFyYW1zXG4gICAgICAuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2VJZCA9IHBhcmFtc1sncGFnZSddO1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFBhZ2UgfHwgcGFnZUlkICE9PSB0aGlzLmN1cnJlbnRQYWdlLmlkKSB7XG4gICAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuY2FzZUVkaXQuZ2V0UGFnZShwYWdlSWQpO1xuICAgICAgICAgIGlmIChwYWdlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5oYXNQcmV2aW91c1BhZ2UkLm5leHQodGhpcy5jYXNlRWRpdC5oYXNQcmV2aW91cyh0aGlzLmN1cnJlbnRQYWdlLmlkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudC5zZXRGb2N1c1RvVG9wKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGFwcGx5VmFsdWVzQ2hhbmdlZCh2YWx1ZXNDaGFuZ2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtVmFsdWVzQ2hhbmdlZCA9IHZhbHVlc0NoYW5nZWQ7XG4gIH1cblxuICBwdWJsaWMgZmlyc3QoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQuZmlyc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBjdXJyZW50UGFnZUlzTm90VmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnBhZ2VWYWxpZGF0aW9uU2VydmljZS5pc1BhZ2VWYWxpZCh0aGlzLmN1cnJlbnRQYWdlLCB0aGlzLmVkaXRGb3JtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYXNlRXZlbnREYXRhLmV2ZW50X2RhdGEgY29udGFpbnMgYWxsIHRoZSB2YWx1ZXMgZnJvbSB0aGUgcHJldmlvdXMgcGFnZXMgc28gd2Ugc2V0IGNhc2VFdmVudERhdGEuZGF0YSA9IGNhc2VFdmVudERhdGEuZXZlbnRfZGF0YVxuICAgKiBUaGlzIGJ1aWxkcyB0aGUgZm9ybSB3aXRoIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgcGFnZXNcbiAgICogRVVJLTM3MzIgLSBCcmVhdGhpbmcgc3BhY2UgZGF0YSBub3QgcGVyc2lzdGVkIG9uIFByZXZpb3VzIGJ1dHRvbiBjbGljayB3aXRoIEV4cFVJIERlbW9cbiAgICovXG4gIHB1YmxpYyB0b1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSBbXTtcbiAgICBjb25zdCBjYXNlRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0gdGhpcy5idWlsZENhc2VFdmVudERhdGEoKTtcbiAgICBjYXNlRXZlbnREYXRhLmRhdGEgPSBjYXNlRXZlbnREYXRhLmV2ZW50X2RhdGE7XG4gICAgdGhpcy51cGRhdGVGb3JtRGF0YShjYXNlRXZlbnREYXRhKTtcbiAgICB0aGlzLnByZXZpb3VzKCk7XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNldEZvY3VzVG9Ub3AoKTtcbiAgfVxuXG4gIC8vIEFkZGluZyB2YWxpZGF0aW9uIG1lc3NhZ2UgdG8gc2hvdyBpdCBhcyBFcnJvciBTdW1tYXJ5XG4gIHB1YmxpYyBnZW5lcmF0ZUVycm9yTWVzc2FnZShmaWVsZHM6IENhc2VGaWVsZFtdID0gW10sIGNvbnRhaW5lcj86IEFic3RyYWN0Q29udHJvbCwgcGF0aD86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGdyb3VwOiBBYnN0cmFjdENvbnRyb2wgPSBjb250YWluZXIgfHwgdGhpcy5lZGl0Rm9ybS5jb250cm9sc1snZGF0YSddO1xuICAgIGZpZWxkcy5maWx0ZXIoY2FzZWZpZWxkID0+ICF0aGlzLmNhc2VGaWVsZFNlcnZpY2UuaXNSZWFkT25seShjYXNlZmllbGQpKVxuICAgICAgLmZpbHRlcihjYXNlZmllbGQgPT4gIXRoaXMucGFnZVZhbGlkYXRpb25TZXJ2aWNlLmlzSGlkZGVuKGNhc2VmaWVsZCwgdGhpcy5lZGl0Rm9ybSwgcGF0aCkpXG4gICAgICAuZm9yRWFjaChjYXNlZmllbGQgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZEVsZW1lbnQgPSBncm91cC5nZXQoY2FzZWZpZWxkLmlkKTtcbiAgICAgICAgaWYgKGZpZWxkRWxlbWVudCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gY2FzZWZpZWxkLmxhYmVsIHx8ICdGaWVsZCc7XG4gICAgICAgICAgbGV0IGlkID0gY2FzZWZpZWxkLmlkO1xuICAgICAgICAgIGlmIChmaWVsZEVsZW1lbnRbJ2NvbXBvbmVudCddICYmIGZpZWxkRWxlbWVudFsnY29tcG9uZW50J10ucGFyZW50KSB7XG4gICAgICAgICAgICBpZiAoZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5pZFByZWZpeC5pbmRleE9mKCdfJyArIGlkICsgJ18nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgaWQgPSBgJHtmaWVsZEVsZW1lbnRbJ2NvbXBvbmVudCddLmlkUHJlZml4fSR7aWR9YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlkID0gYCR7ZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5pZFByZWZpeH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmllbGRFbGVtZW50Lmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGlkLCBtZXNzYWdlOiBgJHtsYWJlbH0gaXMgcmVxdWlyZWRgIH0pO1xuICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZEVsZW1lbnQuaGFzRXJyb3IoJ3BhdHRlcm4nKSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLnB1c2goeyBpZCwgbWVzc2FnZTogYCR7bGFiZWx9IGlzIG5vdCB2YWxpZGAgfSk7XG4gICAgICAgICAgICBmaWVsZEVsZW1lbnQubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkRWxlbWVudC5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5wdXNoKHsgaWQsIG1lc3NhZ2U6IGAke2xhYmVsfSBpcyBiZWxvdyB0aGUgbWluaW11bSBsZW5ndGhgIH0pO1xuICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZEVsZW1lbnQuaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGlkLCBtZXNzYWdlOiBgJHtsYWJlbH0gZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGhgIH0pO1xuICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZEVsZW1lbnQuaW52YWxpZCkge1xuICAgICAgICAgICAgaWYgKGNhc2VmaWVsZC5pc0NvbXBsZXgoKSkge1xuICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXJyb3JNZXNzYWdlKGNhc2VmaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLCBmaWVsZEVsZW1lbnQsIGlkKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FzZWZpZWxkLmlzQ29sbGVjdGlvbigpICYmIGNhc2VmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGRBcnJheSA9IGZpZWxkRWxlbWVudCBhcyBGb3JtQXJyYXk7XG4gICAgICAgICAgICAgIGlmIChmaWVsZEFycmF5Wydjb21wb25lbnQnXSAmJiBmaWVsZEFycmF5Wydjb21wb25lbnQnXVsnY29sbEl0ZW1zJ10gJiYgZmllbGRBcnJheVsnY29tcG9uZW50J11bJ2NvbGxJdGVtcyddLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmaWVsZEFycmF5Wydjb21wb25lbnQnXVsnY29sbEl0ZW1zJ10uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgIGlkID0gYCR7ZWxlbWVudC5wcmVmaXh9YDtcbiAgICAgICAgICAgICAgICAgIGZpZWxkQXJyYXkuY29udHJvbHMuZm9yRWFjaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWQuY2hhckF0KGlkLmluZGV4T2YoaW5kZXgudG9TdHJpbmcoKSkpID09PSBpbmRleC50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUVycm9yTWVzc2FnZShjYXNlZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGNvbnRyb2wuZ2V0KCd2YWx1ZScpLCBpZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGlkLCBtZXNzYWdlOiBgU2VsZWN0IG9yIGZpbGwgdGhlIHJlcXVpcmVkICR7Y2FzZWZpZWxkLmxhYmVsfSBmaWVsZGAgfSk7XG4gICAgICAgICAgICAgIGZpZWxkRWxlbWVudC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNjcm9sbFRvVG9wKCk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb0Vycm9yRWxlbWVudChlbGVtZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50SWQpIHtcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTtcbiAgICAgIGlmIChodG1sRWxlbWVudCkge1xuICAgICAgICBodG1sRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgICAgICBodG1sRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gW107XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJc05vdFZhbGlkKCkpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVFcnJvck1lc3NhZ2UodGhpcy5jdXJyZW50UGFnZS5jYXNlX2ZpZWxkcyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1N1Ym1pdHRpbmcgJiYgIXRoaXMuY3VycmVudFBhZ2VJc05vdFZhbGlkKCkpIHtcbiAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgICAgY29uc3QgY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuYnVpbGRDYXNlRXZlbnREYXRhKCk7XG4gICAgICB0aGlzLnNob3dTcGlubmVyID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2FzZUVkaXQudmFsaWRhdGUoY2FzZUV2ZW50RGF0YSwgdGhpcy5jdXJyZW50UGFnZS5pZClcbiAgICAgICAgLnN1YnNjcmliZSgoanNvbkRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoanNvbkRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybURhdGEoanNvbkRhdGEgYXMgQ2FzZUV2ZW50RGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2F2ZURyYWZ0KCk7XG4gICAgICAgICAgdGhpcy5zaG93U3Bpbm5lciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5zaG93U3Bpbm5lciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudC5zY3JvbGxUb1RvcCgpO1xuICAgIH1cbiAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2V0Rm9jdXNUb1RvcCgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZvcm1EYXRhKGpzb25EYXRhOiBDYXNlRXZlbnREYXRhKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBjYXNlRmllbGRJZCBvZiBPYmplY3Qua2V5cyhqc29uRGF0YS5kYXRhKSkge1xuICAgICAgaWYgKHRoaXMucGFnZVdpdGhGaWVsZEV4aXN0cyhjYXNlRmllbGRJZCkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVFdmVudFRyaWdnZXJDYXNlRmllbGRzKGNhc2VGaWVsZElkLCBqc29uRGF0YSwgdGhpcy5jYXNlRWRpdC5ldmVudFRyaWdnZXIpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sc1ZhbHVlKHRoaXMuZWRpdEZvcm0sIGNhc2VGaWVsZElkLCBqc29uRGF0YS5kYXRhW2Nhc2VGaWVsZElkXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gd2UgZG8gdGhlIGNoZWNrLCBiZWNhc3VlIHRoZSBkYXRhIGNvbWVzIGZyb20gdGhlIGV4dGVybmFsIHNvdXJjZVxuICBwdWJsaWMgcGFnZVdpdGhGaWVsZEV4aXN0cyhjYXNlRmllbGRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMud2l6YXJkLmZpbmRXaXphcmRQYWdlKGNhc2VGaWVsZElkKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVFdmVudFRyaWdnZXJDYXNlRmllbGRzKGNhc2VGaWVsZElkOiBzdHJpbmcsIGpzb25EYXRhOiBDYXNlRXZlbnREYXRhLCBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXIpIHtcbiAgICBpZiAoZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKSB7XG4gICAgICBldmVudFRyaWdnZXIuY2FzZV9maWVsZHM/LmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IGNhc2VGaWVsZElkKVxuICAgICAgICAuZm9yRWFjaChlbGVtZW50ID0+IGVsZW1lbnQudmFsdWUgPSBqc29uRGF0YS5kYXRhW2Nhc2VGaWVsZElkXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZvcm1Db250cm9sc1ZhbHVlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjYXNlRmllbGRJZDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdGhlQ29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddLmdldChjYXNlRmllbGRJZCk7XG4gICAgaWYgKHRoZUNvbnRyb2wgJiYgdGhlQ29udHJvbFsnc3RhdHVzJ10gIT09ICdESVNBQkxFRCcpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoZUNvbnRyb2wudmFsdWUpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICAgICYmIHRoZUNvbnRyb2wudmFsdWUubGVuZ3RoID4gdmFsdWUubGVuZ3RoICYmIHRoZUNvbnRyb2xbJ2Nhc2VGaWVsZCddXG4gICAgICAgICAgICAgICYmIHRoZUNvbnRyb2xbJ2Nhc2VGaWVsZCddWydkaXNwbGF5X2NvbnRleHQnXSAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVsnZGlzcGxheV9jb250ZXh0J10gPT09ICdPUFRJT05BTCdcbiAgICAgICAgICAgICAgJiYgdGhlQ29udHJvbFsnY2FzZUZpZWxkJ11bJ2ZpZWxkX3R5cGUnXSAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVsnZmllbGRfdHlwZSddWyd0eXBlJ10gPT09ICdDb2xsZWN0aW9uJykge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGVDb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShlcnJvckNvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCkge1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGVycm9yQ29udGV4dC5pZ25vcmVfd2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gZXJyb3JDb250ZXh0LnRyaWdnZXJfdGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBuZXh0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMucmVzZXRFcnJvcnMoKTtcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWQgPSBmYWxzZTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQubmV4dCh0aGlzLmN1cnJlbnRQYWdlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2aW91cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgdGhpcy5zYXZlRHJhZnQoKTtcbiAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgdGhpcy5wYWdlQ2hhbmdlU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0LnByZXZpb3VzKHRoaXMuY3VycmVudFBhZ2UuaWQpO1xuICB9XG5cbiAgcHVibGljIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0Lmhhc1ByZXZpb3VzKHRoaXMuY3VycmVudFBhZ2UuaWQpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXI/LmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICBpZiAodGhpcy5mb3JtVmFsdWVzQ2hhbmdlZCkge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVPckRpc2NhcmREaWFsb2dDb21wb25lbnQsIHRoaXMuZGlhbG9nQ29uZmlnKTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ0Rpc2NhcmQnKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2NhcmQoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gJ1NhdmUnKSB7XG4gICAgICAgICAgICBjb25zdCBkcmFmdENhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2UodGhpcy5lZGl0Rm9ybS52YWx1ZSkgYXMgQ2FzZUV2ZW50RGF0YTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KENhc2VFZGl0Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTSkgPT09ICd2aWV3RHJhZnQnKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZVRleHQuUkVTVU1FRF9GT1JNX1NBVkUsIGRhdGE6IGRyYWZ0Q2FzZUV2ZW50RGF0YSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZVRleHQuTkVXX0ZPUk1fU0FWRSwgZGF0YTogZHJhZnRDYXNlRXZlbnREYXRhIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc2NhcmQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXR0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzU3VibWl0dGluZztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLmNhc2VfaWQgOiAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzICYmIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUgJiZcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYW5jZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyPy5jYW5fc2F2ZV9kcmFmdCA/ICdSZXR1cm4gdG8gY2FzZSBsaXN0JyA6ICdDYW5jZWwnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmlnZ2VyVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlcj8uY2FuX3NhdmVfZHJhZnRcbiAgICAgID8gQ2FzZUVkaXRQYWdlVGV4dC5UUklHR0VSX1RFWFRfU0FWRVxuICAgICAgOiBDYXNlRWRpdFBhZ2VUZXh0LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgfVxuXG4gIHByaXZhdGUgZGlzY2FyZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChDYXNlRWRpdENvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU0pID09PSAndmlld0RyYWZ0Jykge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlVGV4dC5SRVNVTUVEX0ZPUk1fRElTQ0FSRCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlVGV4dC5ORVdfRk9STV9ESVNDQVJEIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3IpIHtcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBlcnJvcjtcbiAgICB0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdC5uZXh0KHRoaXMuZXJyb3IpO1xuICAgIGlmICh0aGlzLmVycm9yLmRldGFpbHMpIHtcbiAgICAgIHRoaXMuZm9ybUVycm9yU2VydmljZVxuICAgICAgICAubWFwRmllbGRFcnJvcnModGhpcy5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9ycywgdGhpcy5lZGl0Rm9ybS5jb250cm9sc1snZGF0YSddIGFzIEZvcm1Hcm91cCwgJ3ZhbGlkYXRpb24nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RXJyb3JzKCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSB0aGlzLmdldFRyaWdnZXJUZXh0KCk7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZURyYWZ0KCkge1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlcj8uY2FuX3NhdmVfZHJhZnQpIHtcbiAgICAgIGNvbnN0IGRyYWZ0Q2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZSh0aGlzLmVkaXRGb3JtLnZhbHVlKSBhcyBDYXNlRXZlbnREYXRhO1xuICAgICAgZHJhZnRDYXNlRXZlbnREYXRhLmV2ZW50X3Rva2VuID0gdGhpcy5ldmVudFRyaWdnZXIuZXZlbnRfdG9rZW47XG4gICAgICBkcmFmdENhc2VFdmVudERhdGEuaWdub3JlX3dhcm5pbmcgPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG4gICAgICB0aGlzLmNhc2VFZGl0LnNhdmVEcmFmdChkcmFmdENhc2VFdmVudERhdGEpLnN1YnNjcmliZShcbiAgICAgICAgKGRyYWZ0KSA9PiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2lkID0gRFJBRlRfUFJFRklYICsgZHJhZnQuaWQsIGVycm9yID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpIHtcbiAgICAgIHJldHVybiBGaWVsZHNVdGlscy5nZXRDYXNlRmllbGRzKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkc0Zyb21DdXJyZW50QW5kUHJldmlvdXNQYWdlcygpOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBDYXNlRmllbGRbXSA9IFtdO1xuICAgIHRoaXMud2l6YXJkLnBhZ2VzLmZvckVhY2gocGFnZSA9PiB7XG4gICAgICBpZiAocGFnZS5vcmRlciA8PSB0aGlzLmN1cnJlbnRQYWdlLm9yZGVyKSB7XG4gICAgICAgIHBhZ2UuY2FzZV9maWVsZHMuZm9yRWFjaChmaWVsZCA9PiByZXN1bHQucHVzaChmaWVsZCkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2FzZUV2ZW50RGF0YSgpOiBDYXNlRXZlbnREYXRhIHtcbiAgICBjb25zdCBmb3JtVmFsdWU6IG9iamVjdCA9IHRoaXMuZWRpdEZvcm0udmFsdWU7XG5cbiAgICAvLyBHZXQgdGhlIENhc2VFdmVudERhdGEgZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4gICAgY29uc3QgcGFnZUZpZWxkczogQ2FzZUZpZWxkW10gPSB0aGlzLmN1cnJlbnRQYWdlLmNhc2VfZmllbGRzO1xuICAgIGNvbnN0IHBhZ2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmdldEZpbHRlcmVkQ2FzZUV2ZW50RGF0YShwYWdlRmllbGRzLCBmb3JtVmFsdWUsIHRydWUpO1xuXG4gICAgLy8gR2V0IHRoZSBDYXNlRXZlbnREYXRhIGZvciB0aGUgZW50aXJlIGZvcm0gKGFsbCBwYWdlcykuXG4gICAgY29uc3QgYWxsQ2FzZUZpZWxkcyA9IHRoaXMuZ2V0Q2FzZUZpZWxkc0Zyb21DdXJyZW50QW5kUHJldmlvdXNQYWdlcygpO1xuICAgIGNvbnN0IGZvcm1FdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmdldEZpbHRlcmVkQ2FzZUV2ZW50RGF0YShhbGxDYXNlRmllbGRzLCBmb3JtVmFsdWUsIGZhbHNlLCB0cnVlKTtcblxuICAgIC8vIE5vdyBoZXJlJ3MgdGhlIGtleSB0aGluZyAtIHRoZSBwYWdlRXZlbnREYXRhIGhhcyBhIHByb3BlcnR5IGNhbGxlZCBgZXZlbnRfZGF0YWAgYW5kXG4gICAgLy8gd2UgbmVlZCBUSEFUIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgZW50aXJlIGZvcm06IGBmb3JtRXZlbnREYXRhLmRhdGFgLlxuICAgIHBhZ2VFdmVudERhdGEuZXZlbnRfZGF0YSA9IGZvcm1FdmVudERhdGEuZGF0YTtcblxuICAgIC8vIEZpbmFsaXNlIHRoZSBDYXNlRXZlbnREYXRhIG9iamVjdC5cbiAgICBwYWdlRXZlbnREYXRhLmV2ZW50X3Rva2VuID0gdGhpcy5ldmVudFRyaWdnZXIuZXZlbnRfdG9rZW47XG4gICAgcGFnZUV2ZW50RGF0YS5pZ25vcmVfd2FybmluZyA9IHRoaXMuaWdub3JlV2FybmluZztcblxuICAgIC8vIEZpbmFsbHksIHRyeSB0byBzZXQgdXAgdGhlIGNhc2VfcmVmZXJlbmNlLlxuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKSB7XG4gICAgICBwYWdlRXZlbnREYXRhLmNhc2VfcmVmZXJlbmNlID0gdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5jYXNlX2lkO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0aGUgbm93IGhvcGVmdWxseSBzYW5lIENhc2VFdmVudERhdGEuXG4gICAgcmV0dXJuIHBhZ2VFdmVudERhdGE7XG4gIH1cblxuICAvKipcbiAgICogQWJzdHJhY3RlZCB0aGlzIG1ldGhvZCBmcm9tIGJ1aWxkQ2FzZUV2ZW50RGF0YSB0byByZW1vdmUgZHVwbGljYXRpb24uXG4gICAqIEBwYXJhbSBjYXNlRmllbGRzIFRoZSBmaWVsZHMgdG8gZmlsdGVyIHRoZSBkYXRhIGJ5LlxuICAgKiBAcGFyYW0gZm9ybVZhbHVlIFRoZSBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgZm9ybS5cbiAgICogQHBhcmFtIGNsZWFyRW1wdHkgV2hldGhlciBvciBub3QgdG8gY2xlYXIgb3V0IGVtcHR5IHZhbHVlcy5cbiAgICogQHBhcmFtIGNsZWFyTm9uQ2FzZSBXaGV0aGVyIG9yIG5vdCB0byBjbGVhciBvdXQgZmllbGRzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBjYXNlLlxuICAgKiBAcmV0dXJucyBDYXNlRXZlbnREYXRhIGZvciB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwcml2YXRlIGdldEZpbHRlcmVkQ2FzZUV2ZW50RGF0YShjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgZm9ybVZhbHVlOiBvYmplY3QsIGNsZWFyRW1wdHkgPSBmYWxzZSwgY2xlYXJOb25DYXNlID0gZmFsc2UpOiBDYXNlRXZlbnREYXRhIHtcbiAgICAvLyBHZXQgdGhlIGRhdGEgZm9yIHRoZSBmaWVsZHMgc3BlY2lmaWVkLlxuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UuZmlsdGVyQ3VycmVudFBhZ2VGaWVsZHMoY2FzZUZpZWxkcywgZm9ybVZhbHVlKTtcblxuICAgIC8vIFNvcnQgb3V0IHRoZSBkeW5hbWljIGxpc3RzLlxuICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZUR5bmFtaWNMaXN0cyhjYXNlRmllbGRzLCBmb3JtRmllbGRzKTtcblxuICAgIC8vIEdldCBob2xkIG9mIHRoZSBDYXNlRXZlbnREYXRhLlxuICAgIGNvbnN0IGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2UoZm9ybUZpZWxkcykgYXMgQ2FzZUV2ZW50RGF0YTtcblxuICAgIC8vIFRpZHkgaXQgdXAgYmVmb3JlIHdlIHJldHVybiBpdC5cbiAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlVW5uZWNlc3NhcnlGaWVsZHMoY2FzZUV2ZW50RGF0YS5kYXRhLCBjYXNlRmllbGRzLCBjbGVhckVtcHR5LCBjbGVhck5vbkNhc2UpO1xuXG4gICAgcmV0dXJuIGNhc2VFdmVudERhdGE7XG4gIH1cbn1cbiIsIjxjY2QtbG9hZGluZy1zcGlubmVyICAqbmdJZj1cInNob3dTcGlubmVyXCI+PC9jY2QtbG9hZGluZy1zcGlubmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRQYWdlXCI+XG4gIDxoMSAqbmdJZj1cIiFjdXJyZW50UGFnZS5sYWJlbFwiIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+e3tldmVudFRyaWdnZXIubmFtZX19PC9oMT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRQYWdlLmxhYmVsXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1jYXB0aW9uLWxcIj57eyBldmVudFRyaWdnZXIubmFtZX19PC9zcGFuPlxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPnt7Y3VycmVudFBhZ2UubGFiZWx9fTwvaDE+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS1DYXNlIElEIG9yIFRpdGxlIC0tPlxuPGRpdiAqbmdJZj1cImdldENhc2VUaXRsZSgpOyB0aGVuIHRpdGxlQmxvY2s7IGVsc2UgaWRCbG9ja1wiPjwvZGl2PlxuPG5nLXRlbXBsYXRlICN0aXRsZUJsb2NrPlxuICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cImdldENhc2VUaXRsZSgpIHwgY2NkQ2FzZVRpdGxlOiBjYXNlRmllbGRzIDogZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiPjwvY2NkLW1hcmtkb3duPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaWRCbG9jaz5cbiAgPGgyICpuZ0lmPVwiZ2V0Q2FzZUlkKClcIiBjbGFzcz1cImhlYWRpbmctaDJcIj4je3sgZ2V0Q2FzZUlkKCkgfCBjY2RDYXNlUmVmZXJlbmNlIH19PC9oMj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRXJyb3IgbWVzc2FnZSBzdW1tYXJ5IC0tPlxuPGRpdiAqbmdJZj1cInZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiIGFyaWEtbGFiZWxsZWRieT1cImVycm9yLXN1bW1hcnktdGl0bGVcIiByb2xlPVwiYWxlcnRcIiB0YWJpbmRleD1cIi0xXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCI+XG4gIDxoMiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX3RpdGxlXCIgaWQ9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCI+XG4gICAgVGhlcmUgaXMgYSBwcm9ibGVtXG4gIDwvaDI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHZhbGlkYXRpb25FcnJvciBvZiB2YWxpZGF0aW9uRXJyb3JzXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCI+XG4gICAgPHVsIGNsYXNzPVwiZ292dWstbGlzdCBnb3Z1ay1lcnJvci1zdW1tYXJ5X19saXN0XCI+XG4gICAgICA8bGk+XG4gICAgICAgIDxhIChjbGljayk9XCJuYXZpZ2F0ZVRvRXJyb3JFbGVtZW50KHZhbGlkYXRpb25FcnJvci5pZClcIiBjbGFzcz1cInZhbGlkYXRpb24tZXJyb3JcIj57e3ZhbGlkYXRpb25FcnJvci5tZXNzYWdlfX08L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gR2VuZXJpYyBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjYWxsYmFjayBlcnJvcnMgb3Igd2FybmluZ3MsIG9yIG5vIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIShlcnJvci5jYWxsYmFja0Vycm9ycyB8fCBlcnJvci5jYWxsYmFja1dhcm5pbmdzIHx8IGVycm9yLmRldGFpbHMpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCJcbiAgICAgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG5cbiAgPGgxIGNsYXNzPVwiaGVhZGluZy1oMSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICBTb21ldGhpbmcgd2VudCB3cm9uZ1xuICA8L2gxPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktYm9keVwiPlxuICAgIDxwPldlJ3JlIHdvcmtpbmcgdG8gZml4IHRoZSBwcm9ibGVtLiBUcnkgYWdhaW4gc2hvcnRseS48L3A+XG4gICAgPHA+PGEgaHJlZj1cImdldC1oZWxwXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Q29udGFjdCB1czwvYT4gaWYgeW91J3JlIHN0aWxsIGhhdmluZyBwcm9ibGVtcy48L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIEV2ZW50IGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmIGVycm9yLmRldGFpbHNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwic3RhdHVzXCJcbiAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgPGgzIGNsYXNzPVwiaGVhZGluZy1oMyBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmctM1wiPlxuICAgIFRoZSBldmVudCBjb3VsZCBub3QgYmUgY3JlYXRlZFxuICA8L2gzPlxuICA8cD57e2Vycm9yLm1lc3NhZ2V9fTwvcD5cbiAgPHVsICpuZ0lmPVwiZXJyb3IuZGV0YWlscz8uZmllbGRfZXJyb3JzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5LWxpc3RcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGZpZWxkRXJyb3Igb2YgZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImNjZC1lcnJvci1zdW1tYXJ5LWxpXCI+e3tmaWVsZEVycm9yLm1lc3NhZ2V9fTwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbjxjY2QtY2FsbGJhY2stZXJyb3JzXG4gIFt0cmlnZ2VyVGV4dENvbnRpbnVlXT1cInRyaWdnZXJUZXh0U3RhcnRcIlxuICBbdHJpZ2dlclRleHRJZ25vcmVdPVwidHJpZ2dlclRleHRJZ25vcmVXYXJuaW5nc1wiXG4gIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgKGNhbGxiYWNrRXJyb3JzQ29udGV4dCk9XCJjYWxsYmFja0Vycm9yc05vdGlmeSgkZXZlbnQpXCI+XG48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG48ZGl2IGNsYXNzPVwid2lkdGgtNTBcIj5cbiAgPGZvcm0gKm5nSWY9XCJjdXJyZW50UGFnZVwiIGNsYXNzPVwiZm9ybVwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gICAgPGZpZWxkc2V0IGlkPVwiZmllbGRzZXQtY2FzZS1kYXRhXCI+XG4gICAgICA8bGVnZW5kIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L2xlZ2VuZD5cbiAgICAgIDwhLS0gc2luZ2xlIGNvbHVtbiAtLT5cbiAgICAgIDxjY2QtY2FzZS1lZGl0LWZvcm0gaWQ9J2Nhc2VFZGl0Rm9ybScgKm5nSWY9XCIhY3VycmVudFBhZ2UuaXNNdWx0aUNvbHVtbigpXCIgW2ZpZWxkc109XCJjdXJyZW50UGFnZS5nZXRDb2wxRmllbGRzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VDaGFuZ2VTdWJqZWN0XT1cInBhZ2VDaGFuZ2VTdWJqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlc0NoYW5nZWQpPVwiYXBwbHlWYWx1ZXNDaGFuZ2VkKCRldmVudClcIj48L2NjZC1jYXNlLWVkaXQtZm9ybT5cbiAgICAgIDwhLS0gdHdvIGNvbHVtbnMgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY3VycmVudFBhZ2UuaXNNdWx0aUNvbHVtbigpXCIgY2xhc3M9XCJncmlkLXJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXR3by10aGlyZHMgcmlnaHRCb3JkZXJTZXBhcmF0b3JcIj5cbiAgICAgICAgICA8Y2NkLWNhc2UtZWRpdC1mb3JtIGlkPSdjYXNlRWRpdEZvcm0xJyBbZmllbGRzXT1cImN1cnJlbnRQYWdlLmdldENvbDFGaWVsZHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCI+PC9jY2QtY2FzZS1lZGl0LWZvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLW9uZS10aGlyZFwiPlxuICAgICAgICAgIDxjY2QtY2FzZS1lZGl0LWZvcm0gaWQ9J2Nhc2VFZGl0Rm9ybTInIFtmaWVsZHNdPVwiY3VycmVudFBhZ2UuZ2V0Q29sMkZpZWxkcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRzXT1cImNhc2VGaWVsZHNcIj48L2NjZC1jYXNlLWVkaXQtZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1yZWxhdGVkXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiEoaGFzUHJldmlvdXNQYWdlJCB8IGFzeW5jKVwiIChjbGljayk9XCJ0b1ByZXZpb3VzUGFnZSgpXCI+XG4gICAgICAgIFByZXZpb3VzXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cInN1Ym1pdHRpbmcoKVwiPnt7dHJpZ2dlclRleHR9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPHAgY2xhc3M9XCJjYW5jZWxcIj48YSAoY2xpY2spPVwiY2FuY2VsKClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+e3tnZXRDYW5jZWxUZXh0KCl9fTwvYT48L3A+XG5cbiAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=