@hmcts/ccd-case-ui-toolkit 6.18.2 → 6.18.3-ConsoleLogs.1

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 (243) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +4459 -3171
  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 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/app.config.js +1 -7
  6. package/esm2015/lib/components/banners/alert/alert.component.js +7 -5
  7. package/esm2015/lib/components/banners/alert/alert.module.js +12 -4
  8. package/esm2015/lib/components/footer/footer.component.js +55 -30
  9. package/esm2015/lib/components/footer/footers.module.js +12 -4
  10. package/esm2015/lib/components/form/date-input/date-input.component.js +56 -37
  11. package/esm2015/lib/components/form/form.module.js +8 -4
  12. package/esm2015/lib/components/header/header-bar/header-bar.component.js +32 -19
  13. package/esm2015/lib/components/header/headers.module.js +6 -4
  14. package/esm2015/lib/components/header/navigation/navigation-item.component.js +9 -7
  15. package/esm2015/lib/components/header/phase/phase.component.js +20 -9
  16. package/esm2015/lib/components/tabs/tabs.component.js +8 -5
  17. package/esm2015/lib/components/tabs/tabs.module.js +6 -2
  18. package/esm2015/lib/shared/commons/case-edit-data/case-edit-validation.model.js +1 -1
  19. package/esm2015/lib/shared/components/activity/activity-banner/activity-banner.component.js +12 -9
  20. package/esm2015/lib/shared/components/activity/activity-icon/activity-icon.component.js +11 -8
  21. package/esm2015/lib/shared/components/activity/activity.component.js +15 -10
  22. package/esm2015/lib/shared/components/activity/activity.module.js +6 -2
  23. package/esm2015/lib/shared/components/case-editor/case-create/case-create.component.js +2 -2
  24. package/esm2015/lib/shared/components/case-editor/case-edit/case-edit.component.js +1 -1
  25. package/esm2015/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.js +29 -25
  26. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +58 -34
  27. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +27 -22
  28. package/esm2015/lib/shared/components/case-editor/case-editor.module.js +30 -26
  29. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.js +51 -26
  30. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.js +51 -28
  31. package/esm2015/lib/shared/components/case-editor/case-progress/case-progress.component.js +2 -2
  32. package/esm2015/lib/shared/components/case-editor/services/case-edit-wizard.guard.js +3 -2
  33. package/esm2015/lib/shared/components/case-editor/services/case.notifier.js +8 -1
  34. package/esm2015/lib/shared/components/case-editor/services/cases.service.js +16 -2
  35. package/esm2015/lib/shared/components/case-editor/services/page-validation.service.js +5 -2
  36. package/esm2015/lib/shared/components/case-editor/services/work-allocation.service.js +2 -2
  37. package/esm2015/lib/shared/components/case-history/case-history.component.js +89 -63
  38. package/esm2015/lib/shared/components/case-history/case-history.module.js +18 -14
  39. package/esm2015/lib/shared/components/case-list/case-list.component.js +56 -49
  40. package/esm2015/lib/shared/components/case-list/case-list.module.js +8 -4
  41. package/esm2015/lib/shared/components/case-list-filters/case-list-filters.module.js +11 -7
  42. package/esm2015/lib/shared/components/case-timeline/case-timeline.component.js +9 -6
  43. package/esm2015/lib/shared/components/case-timeline/case-timeline.module.js +12 -8
  44. package/esm2015/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.js +106 -61
  45. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.js +90 -69
  46. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.js +45 -23
  47. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +12 -4
  48. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +105 -78
  49. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.js +32 -20
  50. package/esm2015/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.js +107 -79
  51. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +79 -49
  52. package/esm2015/lib/shared/components/case-viewer/case-view/case-view.component.js +4 -3
  53. package/esm2015/lib/shared/components/case-viewer/case-viewer.component.js +5 -1
  54. package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +34 -27
  55. package/esm2015/lib/shared/components/case-viewer/printer/case-printer.component.js +36 -22
  56. package/esm2015/lib/shared/components/case-viewer/services/case.resolver.js +11 -4
  57. package/esm2015/lib/shared/components/create-case-filters/create-case-filters.component.js +63 -40
  58. package/esm2015/lib/shared/components/create-case-filters/create-case-filters.module.js +6 -2
  59. package/esm2015/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.js +28 -14
  60. package/esm2015/lib/shared/components/dialogs/dialogs.module.js +6 -2
  61. package/esm2015/lib/shared/components/dialogs/document-dialog/document-dialog.component.js +28 -14
  62. package/esm2015/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.js +28 -14
  63. package/esm2015/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.js +28 -14
  64. package/esm2015/lib/shared/components/error/callback-errors.component.js +34 -23
  65. package/esm2015/lib/shared/components/error/errors.module.js +6 -2
  66. package/esm2015/lib/shared/components/error-message/error-message.component.js +14 -11
  67. package/esm2015/lib/shared/components/error-message/error-message.module.js +8 -4
  68. package/esm2015/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.js +39 -20
  69. package/esm2015/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.js +34 -18
  70. package/esm2015/lib/shared/components/event-start/components/task-assigned/task-assigned.component.js +34 -19
  71. package/esm2015/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.js +50 -25
  72. package/esm2015/lib/shared/components/event-start/components/task-conflict/task-conflict.component.js +39 -20
  73. package/esm2015/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.js +34 -18
  74. package/esm2015/lib/shared/components/event-start/event-start.module.js +8 -4
  75. package/esm2015/lib/shared/components/event-trigger/event-trigger.component.js +27 -17
  76. package/esm2015/lib/shared/components/event-trigger/event-trigger.module.js +6 -2
  77. package/esm2015/lib/shared/components/loading-spinner/loading-spinner.component.js +7 -5
  78. package/esm2015/lib/shared/components/loading-spinner/loading-spinner.module.js +6 -2
  79. package/esm2015/lib/shared/components/pagination/pagination.component.js +84 -67
  80. package/esm2015/lib/shared/components/pagination/pagination.module.js +8 -4
  81. package/esm2015/lib/shared/components/palette/address/write-address-field.component.js +50 -31
  82. package/esm2015/lib/shared/components/palette/base-field/abstract-field-read.component.js +1 -1
  83. package/esm2015/lib/shared/components/palette/base-field/field-read-label.component.js +10 -8
  84. package/esm2015/lib/shared/components/palette/base-field/field-read.component.js +5 -1
  85. package/esm2015/lib/shared/components/palette/base-field/field-write.component.js +1 -1
  86. package/esm2015/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.js +54 -35
  87. package/esm2015/lib/shared/components/palette/case-flag/components/index.js +5 -5
  88. package/esm2015/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.js +29 -19
  89. package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.js +41 -29
  90. package/esm2015/lib/shared/components/palette/case-flag/index.js +1 -1
  91. package/esm2015/lib/shared/components/palette/case-flag/write-case-flag-field.component.js +29 -24
  92. package/esm2015/lib/shared/components/palette/case-link/write-case-link-field.component.js +16 -12
  93. package/esm2015/lib/shared/components/palette/collection/write-collection-field.component.js +45 -32
  94. package/esm2015/lib/shared/components/palette/complex/read-complex-field-collection-table.component.js +50 -46
  95. package/esm2015/lib/shared/components/palette/complex/read-complex-field-raw.component.js +7 -6
  96. package/esm2015/lib/shared/components/palette/complex/read-complex-field-table.component.js +22 -20
  97. package/esm2015/lib/shared/components/palette/complex/write-complex-field.component.js +5 -4
  98. package/esm2015/lib/shared/components/palette/date/write-date-field.component.js +16 -12
  99. package/esm2015/lib/shared/components/palette/datetime-picker/datetime-picker.component.js +29 -17
  100. package/esm2015/lib/shared/components/palette/document/write-document-field.component.js +31 -25
  101. package/esm2015/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.js +9 -7
  102. package/esm2015/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.js +32 -20
  103. package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.js +12 -7
  104. package/esm2015/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.js +9 -7
  105. package/esm2015/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.js +26 -17
  106. package/esm2015/lib/shared/components/palette/email/write-email-field.component.js +16 -12
  107. package/esm2015/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.js +9 -7
  108. package/esm2015/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.js +19 -14
  109. package/esm2015/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.js +9 -7
  110. package/esm2015/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.js +20 -15
  111. package/esm2015/lib/shared/components/palette/history/event-log/event-log-details.component.js +87 -65
  112. package/esm2015/lib/shared/components/palette/history/event-log/event-log-table.component.js +60 -46
  113. package/esm2015/lib/shared/components/palette/index.js +2 -2
  114. package/esm2015/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.js +150 -63
  115. package/esm2015/lib/shared/components/palette/label/label-field.component.js +24 -5
  116. package/esm2015/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.js +1 -1
  117. package/esm2015/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.js +16 -12
  118. package/esm2015/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.js +15 -11
  119. package/esm2015/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.js +19 -14
  120. package/esm2015/lib/shared/components/palette/number/write-number-field.component.js +16 -12
  121. package/esm2015/lib/shared/components/palette/order-summary/read-order-summary-field.component.js +43 -25
  122. package/esm2015/lib/shared/components/palette/order-summary/read-order-summary-row.component.js +7 -6
  123. package/esm2015/lib/shared/components/palette/organisation/read-organisation-field-raw.component.js +41 -29
  124. package/esm2015/lib/shared/components/palette/organisation/read-organisation-field-table.component.js +48 -35
  125. package/esm2015/lib/shared/components/palette/organisation/write-organisation-field.component.js +88 -50
  126. package/esm2015/lib/shared/components/palette/palette.module.js +95 -65
  127. package/esm2015/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.js +16 -12
  128. package/esm2015/lib/shared/components/palette/text/read-text-field.component.js +7 -5
  129. package/esm2015/lib/shared/components/palette/text/write-text-field.component.js +16 -12
  130. package/esm2015/lib/shared/components/palette/text-area/read-text-area-field.component.js +7 -5
  131. package/esm2015/lib/shared/components/palette/text-area/write-text-area-field.component.js +16 -12
  132. package/esm2015/lib/shared/components/palette/utils/first-error.pipe.js +22 -11
  133. package/esm2015/lib/shared/components/palette/utils/utils.module.js +12 -6
  134. package/esm2015/lib/shared/components/palette/yes-no/read-yes-no-field.component.js +1 -1
  135. package/esm2015/lib/shared/components/palette/yes-no/write-yes-no-field.component.js +16 -12
  136. package/esm2015/lib/shared/components/search-filters/search-filters.component.js +60 -35
  137. package/esm2015/lib/shared/components/search-filters/search-filters.module.js +14 -10
  138. package/esm2015/lib/shared/components/search-result/search-result.component.js +132 -95
  139. package/esm2015/lib/shared/components/search-result/search-result.module.js +16 -13
  140. package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.component.js +90 -52
  141. package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.module.js +13 -9
  142. package/esm2015/lib/shared/domain/alert/alert-status-params.model.js +2 -0
  143. package/esm2015/lib/shared/domain/definition/field-type-enum.model.js +1 -1
  144. package/esm2015/lib/shared/services/alert/alert.service.js +28 -8
  145. package/esm2015/lib/shared/services/fields/fields.utils.js +2 -2
  146. package/esm2015/lib/shared/services/form/form-validators.service.js +2 -2
  147. package/esm2015/lib/shared/services/http/http-error.service.js +3 -1
  148. package/esm2015/lib/shared/services/loading/loading.service.js +5 -1
  149. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +4116 -2865
  150. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  151. package/lib/app.config.d.ts +2 -2
  152. package/lib/app.config.d.ts.map +1 -1
  153. package/lib/components/banners/alert/alert.module.d.ts +2 -1
  154. package/lib/components/banners/alert/alert.module.d.ts.map +1 -1
  155. package/lib/components/footer/footers.module.d.ts +2 -1
  156. package/lib/components/footer/footers.module.d.ts.map +1 -1
  157. package/lib/components/form/form.module.d.ts +2 -1
  158. package/lib/components/form/form.module.d.ts.map +1 -1
  159. package/lib/components/header/headers.module.d.ts +2 -1
  160. package/lib/components/header/headers.module.d.ts.map +1 -1
  161. package/lib/components/tabs/tabs.component.d.ts.map +1 -1
  162. package/lib/components/tabs/tabs.module.d.ts +2 -1
  163. package/lib/components/tabs/tabs.module.d.ts.map +1 -1
  164. package/lib/shared/commons/case-edit-data/case-edit-validation.model.d.ts +1 -0
  165. package/lib/shared/commons/case-edit-data/case-edit-validation.model.d.ts.map +1 -1
  166. package/lib/shared/components/activity/activity.module.d.ts +2 -1
  167. package/lib/shared/components/activity/activity.module.d.ts.map +1 -1
  168. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  169. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +5 -5
  170. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  171. package/lib/shared/components/case-editor/case-editor.module.d.ts +3 -2
  172. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  173. package/lib/shared/components/case-editor/services/case-edit-wizard.guard.d.ts.map +1 -1
  174. package/lib/shared/components/case-editor/services/case.notifier.d.ts.map +1 -1
  175. package/lib/shared/components/case-editor/services/cases.service.d.ts +2 -0
  176. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  177. package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -1
  178. package/lib/shared/components/case-history/case-history.module.d.ts +2 -1
  179. package/lib/shared/components/case-history/case-history.module.d.ts.map +1 -1
  180. package/lib/shared/components/case-list/case-list.module.d.ts +2 -1
  181. package/lib/shared/components/case-list/case-list.module.d.ts.map +1 -1
  182. package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts +2 -1
  183. package/lib/shared/components/case-list-filters/case-list-filters.module.d.ts.map +1 -1
  184. package/lib/shared/components/case-timeline/case-timeline.module.d.ts +2 -1
  185. package/lib/shared/components/case-timeline/case-timeline.module.d.ts.map +1 -1
  186. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  187. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts +1 -1
  188. package/lib/shared/components/case-viewer/case-view/case-view.component.d.ts.map +1 -1
  189. package/lib/shared/components/case-viewer/case-viewer.component.d.ts.map +1 -1
  190. package/lib/shared/components/case-viewer/case-viewer.module.d.ts +7 -5
  191. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
  192. package/lib/shared/components/case-viewer/services/case.resolver.d.ts +1 -1
  193. package/lib/shared/components/case-viewer/services/case.resolver.d.ts.map +1 -1
  194. package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts +2 -1
  195. package/lib/shared/components/create-case-filters/create-case-filters.module.d.ts.map +1 -1
  196. package/lib/shared/components/dialogs/dialogs.module.d.ts +2 -1
  197. package/lib/shared/components/dialogs/dialogs.module.d.ts.map +1 -1
  198. package/lib/shared/components/error/errors.module.d.ts +2 -1
  199. package/lib/shared/components/error/errors.module.d.ts.map +1 -1
  200. package/lib/shared/components/error-message/error-message.module.d.ts +2 -1
  201. package/lib/shared/components/error-message/error-message.module.d.ts.map +1 -1
  202. package/lib/shared/components/event-start/event-start.module.d.ts +2 -1
  203. package/lib/shared/components/event-start/event-start.module.d.ts.map +1 -1
  204. package/lib/shared/components/event-trigger/event-trigger.module.d.ts +2 -1
  205. package/lib/shared/components/event-trigger/event-trigger.module.d.ts.map +1 -1
  206. package/lib/shared/components/loading-spinner/loading-spinner.module.d.ts +2 -1
  207. package/lib/shared/components/loading-spinner/loading-spinner.module.d.ts.map +1 -1
  208. package/lib/shared/components/pagination/pagination.module.d.ts +2 -1
  209. package/lib/shared/components/pagination/pagination.module.d.ts.map +1 -1
  210. package/lib/shared/components/palette/base-field/abstract-field-read.component.d.ts.map +1 -1
  211. package/lib/shared/components/palette/base-field/field-read.component.d.ts +1 -0
  212. package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
  213. package/lib/shared/components/palette/case-flag/components/index.d.ts +4 -4
  214. package/lib/shared/components/palette/case-flag/components/index.d.ts.map +1 -1
  215. package/lib/shared/components/palette/index.d.ts +1 -1
  216. package/lib/shared/components/palette/index.d.ts.map +1 -1
  217. package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts +22 -17
  218. package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts.map +1 -1
  219. package/lib/shared/components/palette/label/label-field.component.d.ts +2 -1
  220. package/lib/shared/components/palette/label/label-field.component.d.ts.map +1 -1
  221. package/lib/shared/components/palette/palette.module.d.ts +88 -87
  222. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  223. package/lib/shared/components/palette/utils/first-error.pipe.d.ts +3 -0
  224. package/lib/shared/components/palette/utils/first-error.pipe.d.ts.map +1 -1
  225. package/lib/shared/components/palette/utils/utils.module.d.ts +2 -1
  226. package/lib/shared/components/palette/utils/utils.module.d.ts.map +1 -1
  227. package/lib/shared/components/palette/yes-no/read-yes-no-field.component.d.ts.map +1 -1
  228. package/lib/shared/components/palette/yes-no/write-yes-no-field.component.d.ts.map +1 -1
  229. package/lib/shared/components/search-filters/search-filters.module.d.ts +2 -1
  230. package/lib/shared/components/search-filters/search-filters.module.d.ts.map +1 -1
  231. package/lib/shared/components/search-result/search-result.module.d.ts +3 -2
  232. package/lib/shared/components/search-result/search-result.module.d.ts.map +1 -1
  233. package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts +2 -1
  234. package/lib/shared/components/workbasket-filters/workbasket-filters.module.d.ts.map +1 -1
  235. package/lib/shared/domain/alert/alert-status-params.model.d.ts +6 -0
  236. package/lib/shared/domain/alert/alert-status-params.model.d.ts.map +1 -0
  237. package/lib/shared/domain/definition/field-type-enum.model.d.ts +1 -1
  238. package/lib/shared/domain/definition/field-type-enum.model.d.ts.map +1 -1
  239. package/lib/shared/services/alert/alert.service.d.ts +8 -4
  240. package/lib/shared/services/alert/alert.service.d.ts.map +1 -1
  241. package/lib/shared/services/http/http-error.service.d.ts.map +1 -1
  242. package/lib/shared/services/loading/loading.service.d.ts.map +1 -1
  243. package/package.json +1 -1
@@ -1,17 +1,22 @@
1
1
  import { Component } from '@angular/core';
2
- import { FormControl, FormGroup } from '@angular/forms';
3
- import { catchError, debounceTime, filter, switchMap, tap } from 'rxjs/operators';
4
- import { CaseFlagRefdataService, JurisdictionService, SessionStorageService } from '../../../services';
5
- import { AbstractFieldWriteComponent } from '../base-field';
2
+ import { FormControl, Validators } from '@angular/forms';
3
+ import { of } from 'rxjs';
4
+ import { catchError, debounceTime, filter, map, switchMap, take, tap } from 'rxjs/operators';
5
+ import { Constants } from '../../../commons/constants';
6
+ import { CaseFlagRefdataService, FieldsUtils, FormValidatorsService, JurisdictionService, SessionStorageService } from '../../../services';
7
+ import { WriteComplexFieldComponent } from '../complex/write-complex-field.component';
8
+ import { IsCompoundPipe } from '../utils/is-compound.pipe';
6
9
  import * as i0 from "@angular/core";
7
10
  import * as i1 from "../../../services";
8
- import * as i2 from "@angular/forms";
9
- import * as i3 from "@angular/common";
10
- import * as i4 from "@angular/material/autocomplete";
11
- import * as i5 from "@angular/material/core";
12
- import * as i6 from "../utils/field-label.pipe";
11
+ import * as i2 from "../utils/is-compound.pipe";
12
+ import * as i3 from "@angular/forms";
13
+ import * as i4 from "@angular/common";
14
+ import * as i5 from "@angular/material/autocomplete";
15
+ import * as i6 from "@angular/material/core";
16
+ import * as i7 from "../utils/field-label.pipe";
17
+ import * as i8 from "../utils/first-error.pipe";
13
18
  function WriteJudicialUserFieldComponent_span_2_Template(rf, ctx) { if (rf & 1) {
14
- i0.ɵɵelementStart(0, "span", 9);
19
+ i0.ɵɵelementStart(0, "span", 10);
15
20
  i0.ɵɵtext(1);
16
21
  i0.ɵɵpipe(2, "ccdFieldLabel");
17
22
  i0.ɵɵelementEnd();
@@ -21,7 +26,7 @@ function WriteJudicialUserFieldComponent_span_2_Template(rf, ctx) { if (rf & 1)
21
26
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r0.caseField), " ");
22
27
  } }
23
28
  function WriteJudicialUserFieldComponent_span_3_Template(rf, ctx) { if (rf & 1) {
24
- i0.ɵɵelementStart(0, "span", 10);
29
+ i0.ɵɵelementStart(0, "span", 11);
25
30
  i0.ɵɵtext(1);
26
31
  i0.ɵɵelementEnd();
27
32
  } if (rf & 2) {
@@ -29,48 +34,79 @@ function WriteJudicialUserFieldComponent_span_3_Template(rf, ctx) { if (rf & 1)
29
34
  i0.ɵɵadvance(1);
30
35
  i0.ɵɵtextInterpolate1(" ", ctx_r1.caseField.hint_text, " ");
31
36
  } }
32
- const _c0 = function (a0) { return { "hide-autocomplete": a0 }; };
33
- function WriteJudicialUserFieldComponent_mat_option_7_Template(rf, ctx) { if (rf & 1) {
34
- const _r7 = i0.ɵɵgetCurrentView();
35
- i0.ɵɵelementStart(0, "mat-option", 11);
36
- i0.ɵɵlistener("onSelectionChange", function WriteJudicialUserFieldComponent_mat_option_7_Template_mat_option_onSelectionChange_0_listener() { i0.ɵɵrestoreView(_r7); const judicialUser_r5 = ctx.$implicit; const ctx_r6 = i0.ɵɵnextContext(); return ctx_r6.onSelectionChange(judicialUser_r5); });
37
+ function WriteJudicialUserFieldComponent_span_4_Template(rf, ctx) { if (rf & 1) {
38
+ i0.ɵɵelementStart(0, "span", 12);
37
39
  i0.ɵɵtext(1);
40
+ i0.ɵɵpipe(2, "ccdFirstError");
38
41
  i0.ɵɵelementEnd();
39
42
  } if (rf & 2) {
40
- const judicialUser_r5 = ctx.$implicit;
41
- const ctx_r3 = i0.ɵɵnextContext();
42
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c0, !ctx_r3.showAutocomplete))("value", judicialUser_r5.idamId);
43
+ const ctx_r2 = i0.ɵɵnextContext();
43
44
  i0.ɵɵadvance(1);
44
- i0.ɵɵtextInterpolate2(" ", judicialUser_r5.fullName, " (", judicialUser_r5.emailId, ") ");
45
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r2.errors, ctx_r2.caseField.label), " ");
45
46
  } }
47
+ const _c0 = function (a0) { return { "hide-autocomplete": a0 }; };
46
48
  function WriteJudicialUserFieldComponent_mat_option_8_Template(rf, ctx) { if (rf & 1) {
47
- i0.ɵɵelementStart(0, "mat-option", 12);
49
+ const _r9 = i0.ɵɵgetCurrentView();
50
+ i0.ɵɵelementStart(0, "mat-option", 13);
51
+ i0.ɵɵlistener("onSelectionChange", function WriteJudicialUserFieldComponent_mat_option_8_Template_mat_option_onSelectionChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return ctx_r8.onSelectionChange($event); });
52
+ i0.ɵɵtext(1);
53
+ i0.ɵɵelementEnd();
54
+ } if (rf & 2) {
55
+ const judicialUser_r7 = ctx.$implicit;
56
+ const ctx_r4 = i0.ɵɵnextContext();
57
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c0, !ctx_r4.showAutocomplete))("value", judicialUser_r7);
58
+ i0.ɵɵadvance(1);
59
+ i0.ɵɵtextInterpolate2(" ", (judicialUser_r7 == null ? null : judicialUser_r7.fullName) ? judicialUser_r7.fullName : "", "", (judicialUser_r7 == null ? null : judicialUser_r7.emailId) ? " (" + judicialUser_r7.emailId + ")" : "", " ");
60
+ } }
61
+ function WriteJudicialUserFieldComponent_mat_option_10_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵelementStart(0, "mat-option", 14);
48
63
  i0.ɵɵtext(1, " No results found ");
49
64
  i0.ɵɵelementEnd();
50
65
  } }
51
- export class WriteJudicialUserFieldComponent extends AbstractFieldWriteComponent {
52
- constructor(jurisdictionService, sessionStorageService, caseFlagRefDataService) {
53
- super();
66
+ function WriteJudicialUserFieldComponent_mat_option_11_Template(rf, ctx) { if (rf & 1) {
67
+ i0.ɵɵelementStart(0, "mat-option", 14);
68
+ i0.ɵɵtext(1, " Invalid search term ");
69
+ i0.ɵɵelementEnd();
70
+ } }
71
+ const _c1 = function (a0) { return { "form-group-error": a0 }; };
72
+ export class WriteJudicialUserFieldComponent extends WriteComplexFieldComponent {
73
+ constructor(jurisdictionService, sessionStorageService, caseFlagRefDataService, compoundPipe, validatorsService) {
74
+ super(compoundPipe, validatorsService);
54
75
  this.jurisdictionService = jurisdictionService;
55
76
  this.sessionStorageService = sessionStorageService;
56
77
  this.caseFlagRefDataService = caseFlagRefDataService;
57
- this.MINIMUM_SEARCH_CHARACTERS = 2;
58
- this.IDAM_ID = 'idamId';
59
- this.PERSONAL_CODE = 'personalCode';
60
- this.filteredJudicialUsers = [];
78
+ this.compoundPipe = compoundPipe;
79
+ this.validatorsService = validatorsService;
80
+ this.minSearchCharacters = 2;
61
81
  this.showAutocomplete = false;
82
+ this.searchTerm = '';
83
+ this.noResults = false;
84
+ this.invalidSearchTerm = false;
85
+ this.judicialUserSelected = false;
62
86
  }
63
87
  ngOnInit() {
64
88
  var _a;
65
- this.judicialUserFormGroup = this.registerControl(new FormGroup({}), true);
66
- this.idamIdFormControl = new FormControl('');
67
- this.judicialUserFormGroup.addControl(this.IDAM_ID, this.idamIdFormControl);
68
- this.personalCodeFormControl = new FormControl('');
69
- this.judicialUserFormGroup.addControl(this.PERSONAL_CODE, this.personalCodeFormControl);
89
+ super.ngOnInit();
90
+ this.judicialUserControl = new FormControl(this.caseField.value);
91
+ // FormControl needs to be added to the main FormGroup so it can be picked up by the PageValidationService when
92
+ // checking if the page is valid. FormGroup.setControl() is used here to ensure any existing JudicialUser
93
+ // FormControl is replaced when the component is re-initialised, for example, if the user navigates away then
94
+ // back to the page containing the JudicialUser field
95
+ this.formGroup.setControl(`${this.caseField.id}_judicialUserControl`, this.judicialUserControl);
96
+ // Ensure that this FormControl has links to the JudicialUser case field and this component
97
+ FieldsUtils.addCaseFieldAndComponentReferences(this.judicialUserControl, this.caseField, this);
98
+ this.setupValidation();
70
99
  this.setJurisdictionAndCaseType();
71
- this.sub = this.idamIdFormControl.valueChanges.pipe(tap(() => this.showAutocomplete = false), tap(() => this.filteredJudicialUsers = []), debounceTime(300), filter((searchTerm) => searchTerm && searchTerm.length > this.MINIMUM_SEARCH_CHARACTERS), switchMap((searchTerm) => this.filterJudicialUsers(searchTerm).pipe(tap(() => this.showAutocomplete = true), catchError(() => this.filteredJudicialUsers = [])))).subscribe((judicialUsers) => {
72
- this.filteredJudicialUsers = judicialUsers;
73
- });
100
+ this.filteredJudicialUsers$ = this.judicialUserControl.valueChanges.pipe(tap(() => this.showAutocomplete = false), debounceTime(300),
101
+ // Need to check type of input because it changes to object (i.e. JudicialUser) when a value is selected from the
102
+ // autocomplete panel, instead of string when a value is being typed in
103
+ map(input => typeof input === 'string' ? input : input === null || input === void 0 ? void 0 : input.fullName), tap(searchTerm => {
104
+ this.searchTerm = searchTerm;
105
+ this.invalidSearchTerm = false;
106
+ }), filter((searchTerm) => searchTerm && searchTerm.length > this.minSearchCharacters), switchMap((searchTerm) => this.filterJudicialUsers(searchTerm).pipe(tap((judicialUsers) => {
107
+ this.showAutocomplete = true;
108
+ this.noResults = !this.invalidSearchTerm && judicialUsers.length === 0;
109
+ }))));
74
110
  if ((_a = this.caseField.value) === null || _a === void 0 ? void 0 : _a.personalCode) {
75
111
  this.loadJudicialUser(this.caseField.value.personalCode);
76
112
  }
@@ -79,16 +115,21 @@ export class WriteJudicialUserFieldComponent extends AbstractFieldWriteComponent
79
115
  return this.caseFlagRefDataService.getHmctsServiceDetailsByCaseType(this.caseType).pipe(
80
116
  // If an error occurs retrieving HMCTS service details by case type ID, try by service name instead
81
117
  catchError(_ => this.caseFlagRefDataService.getHmctsServiceDetailsByServiceName(this.jurisdiction)),
82
- // Use switchMap to return an inner Observable of the flag types data, having received the service details
118
+ // Use switchMap to return an inner Observable of the judicial users data, having received the service details
83
119
  // including service_code. This avoids having nested `subscribe`s, which is an anti-pattern!
84
- switchMap(serviceDetails => this.jurisdictionService.searchJudicialUsers(searchTerm, serviceDetails[0].service_code)));
120
+ switchMap(serviceDetails => {
121
+ return this.jurisdictionService.searchJudicialUsers(searchTerm, serviceDetails[0].service_code).pipe(
122
+ // Handle any errors here rather than outside of the function, so that the outer Observable is kept live
123
+ catchError(_ => {
124
+ this.invalidSearchTerm = true;
125
+ return of(undefined);
126
+ }));
127
+ }));
85
128
  }
86
129
  loadJudicialUser(personalCode) {
87
130
  if (personalCode) {
88
- this.jurisdictionService.searchJudicialUsersByPersonalCodes([personalCode]).subscribe(judicialUsers => {
89
- const judicialUser = judicialUsers[0];
90
- this.idamIdFormControl.setValue(`${judicialUser.fullName} (${judicialUser.emailId})`);
91
- this.personalCodeFormControl.setValue(judicialUser.personalCode);
131
+ this.jurisdictionService.searchJudicialUsersByPersonalCodes([personalCode]).pipe(take(1)).subscribe(judicialUsers => {
132
+ this.judicialUserControl.setValue(judicialUsers[0]);
92
133
  });
93
134
  }
94
135
  }
@@ -100,32 +141,72 @@ export class WriteJudicialUserFieldComponent extends AbstractFieldWriteComponent
100
141
  this.caseType = caseInfo === null || caseInfo === void 0 ? void 0 : caseInfo.caseType;
101
142
  }
102
143
  }
103
- onSelectionChange(judicialUser) {
104
- this.idamIdFormControl.setValue(`${judicialUser.fullName} (${judicialUser.emailId})`);
105
- this.personalCodeFormControl.setValue(judicialUser.personalCode);
144
+ displayJudicialUser(judicialUser) {
145
+ return judicialUser
146
+ ? `${judicialUser.fullName ? judicialUser.fullName : ''}${judicialUser.emailId ? ` (${judicialUser.emailId})` : ''}`
147
+ : undefined;
148
+ }
149
+ onSelectionChange(event) {
150
+ var _a, _b;
151
+ // The event.source.value property is a JudicialUserModel object instance; use this to update both the caseField
152
+ // value and the values of the two FormControls for the idamId and personalCode properties of the JudicialUser
153
+ // complex field type (these values will appear in the data payload for validation and submission)
154
+ this.caseField.value = {
155
+ idamId: event.source.value.idamId,
156
+ personalCode: event.source.value.personalCode
157
+ };
158
+ (_a = this.complexGroup.get('idamId')) === null || _a === void 0 ? void 0 : _a.setValue(this.caseField.value.idamId);
159
+ (_b = this.complexGroup.get('personalCode')) === null || _b === void 0 ? void 0 : _b.setValue(this.caseField.value.personalCode);
160
+ this.judicialUserSelected = true;
106
161
  }
107
- ngOnDestroy() {
108
- if (this.sub) {
109
- this.sub.unsubscribe();
162
+ onBlur(event) {
163
+ var _a, _b, _c;
164
+ // If the user types into the JudicialUser field but doesn't select a value from the autocomplete list, reset the
165
+ // FormControl value to null to ensure it fails validation (can check the event.relatedTarget property)
166
+ if (((_a = event.relatedTarget) === null || _a === void 0 ? void 0 : _a.role) !== 'option' && !this.judicialUserSelected) {
167
+ // If relatedTarget.role is not "option", it means the user didn't select a value
168
+ this.judicialUserControl.setValue(null);
169
+ }
170
+ if (!this.judicialUserControl.value) {
171
+ // If the user deletes the field value, set the caseField value and the values of the two FormControls for
172
+ // idamId and personalCode to null. This is to avoid judicial user data being present in the data payload
173
+ // unintentionally
174
+ this.caseField.value = null;
175
+ (_b = this.complexGroup.get('idamId')) === null || _b === void 0 ? void 0 : _b.setValue(null);
176
+ (_c = this.complexGroup.get('personalCode')) === null || _c === void 0 ? void 0 : _c.setValue(null);
177
+ }
178
+ }
179
+ setupValidation() {
180
+ // Need to remove validators from the two FormControls, idamId and personalCode, for the JudicialUser complex
181
+ // field type. This prevents these hidden fields being listed in an error message if there are validation errors
182
+ this.complexGroup.get('idamId').clearValidators();
183
+ this.complexGroup.get('personalCode').clearValidators();
184
+ if (this.caseField.display_context === Constants.MANDATORY) {
185
+ this.judicialUserControl.setValidators(Validators.required);
110
186
  }
111
187
  }
112
188
  }
113
- WriteJudicialUserFieldComponent.ɵfac = function WriteJudicialUserFieldComponent_Factory(t) { return new (t || WriteJudicialUserFieldComponent)(i0.ɵɵdirectiveInject(i1.JurisdictionService), i0.ɵɵdirectiveInject(i1.SessionStorageService), i0.ɵɵdirectiveInject(i1.CaseFlagRefdataService)); };
114
- WriteJudicialUserFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteJudicialUserFieldComponent, selectors: [["ccd-write-judicial-user-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 9, vars: 9, consts: [[1, "form-group", 3, "formGroup"], [3, "for"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], [1, "form-control", "bottom-30", 3, "id", "formControl", "matAutocomplete"], ["autoActiveFirstOption", ""], ["autoComplete", "matAutocomplete"], ["class", "select-option", 3, "ngClass", "value", "onSelectionChange", 4, "ngFor", "ngForOf"], ["class", "select-option", 4, "ngIf"], [1, "form-label"], [1, "form-hint"], [1, "select-option", 3, "ngClass", "value", "onSelectionChange"], [1, "select-option"]], template: function WriteJudicialUserFieldComponent_Template(rf, ctx) { if (rf & 1) {
189
+ WriteJudicialUserFieldComponent.ɵfac = function WriteJudicialUserFieldComponent_Factory(t) { return new (t || WriteJudicialUserFieldComponent)(i0.ɵɵdirectiveInject(i1.JurisdictionService), i0.ɵɵdirectiveInject(i1.SessionStorageService), i0.ɵɵdirectiveInject(i1.CaseFlagRefdataService), i0.ɵɵdirectiveInject(i2.IsCompoundPipe), i0.ɵɵdirectiveInject(i1.FormValidatorsService)); };
190
+ WriteJudicialUserFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteJudicialUserFieldComponent, selectors: [["ccd-write-judicial-user-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 17, consts: [[1, "form-group", 3, "formGroup", "ngClass"], [3, "for"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [1, "form-control", "bottom-30", 3, "id", "formControl", "matAutocomplete", "blur"], ["autoActiveFirstOption", "", 3, "displayWith"], ["autoComplete", "matAutocomplete"], ["class", "select-option", 3, "ngClass", "value", "onSelectionChange", 4, "ngFor", "ngForOf"], ["class", "select-option", "disabled", "", 4, "ngIf"], [1, "form-label"], [1, "form-hint"], [1, "error-message"], [1, "select-option", 3, "ngClass", "value", "onSelectionChange"], ["disabled", "", 1, "select-option"]], template: function WriteJudicialUserFieldComponent_Template(rf, ctx) { if (rf & 1) {
115
191
  i0.ɵɵelementStart(0, "div", 0);
116
192
  i0.ɵɵelementStart(1, "label", 1);
117
193
  i0.ɵɵtemplate(2, WriteJudicialUserFieldComponent_span_2_Template, 3, 3, "span", 2);
118
194
  i0.ɵɵelementEnd();
119
195
  i0.ɵɵtemplate(3, WriteJudicialUserFieldComponent_span_3_Template, 2, 1, "span", 3);
120
- i0.ɵɵelement(4, "input", 4);
121
- i0.ɵɵelementStart(5, "mat-autocomplete", 5, 6);
122
- i0.ɵɵtemplate(7, WriteJudicialUserFieldComponent_mat_option_7_Template, 2, 6, "mat-option", 7);
123
- i0.ɵɵtemplate(8, WriteJudicialUserFieldComponent_mat_option_8_Template, 2, 0, "mat-option", 8);
196
+ i0.ɵɵtemplate(4, WriteJudicialUserFieldComponent_span_4_Template, 3, 4, "span", 4);
197
+ i0.ɵɵelementStart(5, "input", 5);
198
+ i0.ɵɵlistener("blur", function WriteJudicialUserFieldComponent_Template_input_blur_5_listener($event) { return ctx.onBlur($event); });
199
+ i0.ɵɵelementEnd();
200
+ i0.ɵɵelementStart(6, "mat-autocomplete", 6, 7);
201
+ i0.ɵɵtemplate(8, WriteJudicialUserFieldComponent_mat_option_8_Template, 2, 6, "mat-option", 8);
202
+ i0.ɵɵpipe(9, "async");
203
+ i0.ɵɵtemplate(10, WriteJudicialUserFieldComponent_mat_option_10_Template, 2, 0, "mat-option", 9);
204
+ i0.ɵɵtemplate(11, WriteJudicialUserFieldComponent_mat_option_11_Template, 2, 0, "mat-option", 9);
124
205
  i0.ɵɵelementEnd();
125
206
  i0.ɵɵelementEnd();
126
207
  } if (rf & 2) {
127
- const _r2 = i0.ɵɵreference(6);
128
- i0.ɵɵproperty("formGroup", ctx.judicialUserFormGroup);
208
+ const _r3 = i0.ɵɵreference(7);
209
+ i0.ɵɵproperty("formGroup", ctx.formGroup)("ngClass", i0.ɵɵpureFunction1(15, _c1, !!ctx.judicialUserControl && ctx.errors));
129
210
  i0.ɵɵadvance(1);
130
211
  i0.ɵɵproperty("for", ctx.id());
131
212
  i0.ɵɵadvance(1);
@@ -133,12 +214,18 @@ WriteJudicialUserFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteJudi
133
214
  i0.ɵɵadvance(1);
134
215
  i0.ɵɵproperty("ngIf", ctx.caseField.hint_text);
135
216
  i0.ɵɵadvance(1);
136
- i0.ɵɵproperty("id", ctx.id())("formControl", ctx.idamIdFormControl)("matAutocomplete", _r2);
137
- i0.ɵɵadvance(3);
138
- i0.ɵɵproperty("ngForOf", ctx.filteredJudicialUsers);
217
+ i0.ɵɵproperty("ngIf", ctx.errors);
218
+ i0.ɵɵadvance(1);
219
+ i0.ɵɵproperty("id", ctx.id())("formControl", ctx.judicialUserControl)("matAutocomplete", _r3);
220
+ i0.ɵɵadvance(1);
221
+ i0.ɵɵproperty("displayWith", ctx.displayJudicialUser);
222
+ i0.ɵɵadvance(2);
223
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(9, 13, ctx.filteredJudicialUsers$));
224
+ i0.ɵɵadvance(2);
225
+ i0.ɵɵproperty("ngIf", ctx.noResults && ctx.searchTerm && ctx.searchTerm.length > ctx.minSearchCharacters && ctx.showAutocomplete);
139
226
  i0.ɵɵadvance(1);
140
- i0.ɵɵproperty("ngIf", !(ctx.filteredJudicialUsers == null ? null : ctx.filteredJudicialUsers.length) && ctx.showAutocomplete);
141
- } }, directives: [i2.NgControlStatusGroup, i2.FormGroupDirective, i3.NgIf, i2.DefaultValueAccessor, i4.MatAutocompleteTrigger, i2.NgControlStatus, i2.FormControlDirective, i4.MatAutocomplete, i3.NgForOf, i5.MatOption, i3.NgClass], pipes: [i6.FieldLabelPipe], styles: [".mat-option[_ngcontent-%COMP%]:hover{background:#2596be}.mat-option.select-option[_ngcontent-%COMP%]:hover{background:#1d70b8;color:#fff}.hide-autocomplete[_ngcontent-%COMP%]{display:none}"] });
227
+ i0.ɵɵproperty("ngIf", ctx.invalidSearchTerm);
228
+ } }, directives: [i3.NgControlStatusGroup, i3.FormGroupDirective, i4.NgClass, i4.NgIf, i3.DefaultValueAccessor, i5.MatAutocompleteTrigger, i3.NgControlStatus, i3.FormControlDirective, i5.MatAutocomplete, i4.NgForOf, i6.MatOption], pipes: [i4.AsyncPipe, i7.FieldLabelPipe, i8.FirstErrorPipe], styles: [".mat-option[_ngcontent-%COMP%]:hover{background:#2596be}.mat-option.select-option[_ngcontent-%COMP%]:hover{background:#1d70b8;color:#fff}.hide-autocomplete[_ngcontent-%COMP%]{display:none}"] });
142
229
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteJudicialUserFieldComponent, [{
143
230
  type: Component,
144
231
  args: [{
@@ -146,5 +233,5 @@ WriteJudicialUserFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteJudi
146
233
  styleUrls: ['./write-judicial-user-field.component.scss'],
147
234
  templateUrl: './write-judicial-user-field.component.html'
148
235
  }]
149
- }], function () { return [{ type: i1.JurisdictionService }, { type: i1.SessionStorageService }, { type: i1.CaseFlagRefdataService }]; }, null); })();
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtanVkaWNpYWwtdXNlci1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9qdWRpY2lhbC11c2VyL3dyaXRlLWp1ZGljaWFsLXVzZXItZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvanVkaWNpYWwtdXNlci93cml0ZS1qdWRpY2lhbC11c2VyLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztJQ0Z4RCwrQkFHQztJQUNDLFlBQ0Y7O0lBQUEsaUJBQU87OztJQURMLGVBQ0Y7SUFERSx1RUFDRjs7O0lBRUYsZ0NBR0M7SUFDQyxZQUNGO0lBQUEsaUJBQU87OztJQURMLGVBQ0Y7SUFERSwyREFDRjs7Ozs7SUFXRSxzQ0FNQztJQURDLG1TQUFxRDtJQUVyRCxZQUNGO0lBQUEsaUJBQWE7Ozs7SUFMWCw4RUFBb0QsaUNBQUE7SUFJcEQsZUFDRjtJQURFLHlGQUNG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LENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDOzs4R0F0RlUsK0JBQStCO29FQUEvQiwrQkFBK0I7UUNiNUMsOEJBQTREO1FBQzFELGdDQUVDO1FBQ0Msa0ZBS087UUFDVCxpQkFBUTtRQUNSLGtGQUtPO1FBQ1AsMkJBS0M7UUFDRCw4Q0FHQztRQUNDLDhGQVFhO1FBQ2IsOEZBS2E7UUFDZixpQkFBbUI7UUFDckIsaUJBQU07OztRQTNDa0IscURBQW1DO1FBRXZELGVBQVk7UUFBWiw4QkFBWTtRQUdULGVBQXFCO1FBQXJCLDBDQUFxQjtRQU92QixlQUF5QjtRQUF6Qiw4Q0FBeUI7UUFPMUIsZUFBVztRQUFYLDZCQUFXLHNDQUFBLHdCQUFBO1FBU2dCLGVBQXdCO1FBQXhCLG1EQUF3QjtRQVNoRCxlQUF3RDtRQUF4RCw2SEFBd0Q7O3VGRHhCbEQsK0JBQStCO2NBTDNDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsK0JBQStCO2dCQUN6QyxTQUFTLEVBQUUsQ0FBQyw0Q0FBNEMsQ0FBQztnQkFDekQsV0FBVyxFQUFFLDRDQUE0QzthQUMxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEp1ZGljaWFsVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2p1cmlzZGljdGlvbic7XG5pbXBvcnQgeyBDYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlLCBKdXJpc2RpY3Rpb25TZXJ2aWNlLCBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWZpZWxkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWp1ZGljaWFsLXVzZXItZmllbGQnLFxuICBzdHlsZVVybHM6IFsnLi93cml0ZS1qdWRpY2lhbC11c2VyLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1qdWRpY2lhbC11c2VyLWZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXcml0ZUp1ZGljaWFsVXNlckZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgTUlOSU1VTV9TRUFSQ0hfQ0hBUkFDVEVSUyA9IDI7XG4gIHByaXZhdGUgcmVhZG9ubHkgSURBTV9JRCA9ICdpZGFtSWQnO1xuICBwcml2YXRlIHJlYWRvbmx5IFBFUlNPTkFMX0NPREUgPSAncGVyc29uYWxDb2RlJztcblxuICBwdWJsaWMganVkaWNpYWxVc2VyRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBpZGFtSWRGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBwZXJzb25hbENvZGVGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBqdXJpc2RpY3Rpb246IHN0cmluZztcbiAgcHVibGljIGNhc2VUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBmaWx0ZXJlZEp1ZGljaWFsVXNlcnM6IEp1ZGljaWFsVXNlck1vZGVsW10gPSBbXTtcbiAgcHVibGljIHNob3dBdXRvY29tcGxldGUgPSBmYWxzZTtcbiAgcHVibGljIHN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkganVyaXNkaWN0aW9uU2VydmljZTogSnVyaXNkaWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRmxhZ1JlZkRhdGFTZXJ2aWNlOiBDYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmp1ZGljaWFsVXNlckZvcm1Hcm91cCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtR3JvdXAoe30pLCB0cnVlKSBhcyBGb3JtR3JvdXA7XG4gICAgdGhpcy5pZGFtSWRGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgdGhpcy5qdWRpY2lhbFVzZXJGb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLklEQU1fSUQsIHRoaXMuaWRhbUlkRm9ybUNvbnRyb2wpO1xuICAgIHRoaXMucGVyc29uYWxDb2RlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIHRoaXMuanVkaWNpYWxVc2VyRm9ybUdyb3VwLmFkZENvbnRyb2wodGhpcy5QRVJTT05BTF9DT0RFLCB0aGlzLnBlcnNvbmFsQ29kZUZvcm1Db250cm9sKTtcblxuICAgIHRoaXMuc2V0SnVyaXNkaWN0aW9uQW5kQ2FzZVR5cGUoKTtcblxuICAgIHRoaXMuc3ViID0gdGhpcy5pZGFtSWRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnNob3dBdXRvY29tcGxldGUgPSBmYWxzZSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5maWx0ZXJlZEp1ZGljaWFsVXNlcnMgPSBbXSksXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgIGZpbHRlcigoc2VhcmNoVGVybTogc3RyaW5nKSA9PiBzZWFyY2hUZXJtICYmIHNlYXJjaFRlcm0ubGVuZ3RoID4gdGhpcy5NSU5JTVVNX1NFQVJDSF9DSEFSQUNURVJTKSxcbiAgICAgIHN3aXRjaE1hcCgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB0aGlzLmZpbHRlckp1ZGljaWFsVXNlcnMoc2VhcmNoVGVybSkucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9IHRydWUpLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHRoaXMuZmlsdGVyZWRKdWRpY2lhbFVzZXJzID0gW10pXG4gICAgICApKVxuICAgICkuc3Vic2NyaWJlKChqdWRpY2lhbFVzZXJzOiBKdWRpY2lhbFVzZXJNb2RlbFtdKSA9PiB7XG4gICAgICB0aGlzLmZpbHRlcmVkSnVkaWNpYWxVc2VycyA9IGp1ZGljaWFsVXNlcnM7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5jYXNlRmllbGQudmFsdWU/LnBlcnNvbmFsQ29kZSkge1xuICAgICAgdGhpcy5sb2FkSnVkaWNpYWxVc2VyKHRoaXMuY2FzZUZpZWxkLnZhbHVlLnBlcnNvbmFsQ29kZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbHRlckp1ZGljaWFsVXNlcnMoc2VhcmNoVGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxKdWRpY2lhbFVzZXJNb2RlbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUZsYWdSZWZEYXRhU2VydmljZS5nZXRIbWN0c1NlcnZpY2VEZXRhaWxzQnlDYXNlVHlwZSh0aGlzLmNhc2VUeXBlKS5waXBlKFxuICAgICAgLy8gSWYgYW4gZXJyb3Igb2NjdXJzIHJldHJpZXZpbmcgSE1DVFMgc2VydmljZSBkZXRhaWxzIGJ5IGNhc2UgdHlwZSBJRCwgdHJ5IGJ5IHNlcnZpY2UgbmFtZSBpbnN0ZWFkXG4gICAgICBjYXRjaEVycm9yKF8gPT4gdGhpcy5jYXNlRmxhZ1JlZkRhdGFTZXJ2aWNlLmdldEhtY3RzU2VydmljZURldGFpbHNCeVNlcnZpY2VOYW1lKHRoaXMuanVyaXNkaWN0aW9uKSksXG4gICAgICAvLyBVc2Ugc3dpdGNoTWFwIHRvIHJldHVybiBhbiBpbm5lciBPYnNlcnZhYmxlIG9mIHRoZSBmbGFnIHR5cGVzIGRhdGEsIGhhdmluZyByZWNlaXZlZCB0aGUgc2VydmljZSBkZXRhaWxzXG4gICAgICAvLyBpbmNsdWRpbmcgc2VydmljZV9jb2RlLiBUaGlzIGF2b2lkcyBoYXZpbmcgbmVzdGVkIGBzdWJzY3JpYmVgcywgd2hpY2ggaXMgYW4gYW50aS1wYXR0ZXJuIVxuICAgICAgc3dpdGNoTWFwKHNlcnZpY2VEZXRhaWxzID0+IHRoaXMuanVyaXNkaWN0aW9uU2VydmljZS5zZWFyY2hKdWRpY2lhbFVzZXJzKHNlYXJjaFRlcm0sIHNlcnZpY2VEZXRhaWxzWzBdLnNlcnZpY2VfY29kZSkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkSnVkaWNpYWxVc2VyKHBlcnNvbmFsQ29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHBlcnNvbmFsQ29kZSkge1xuICAgICAgdGhpcy5qdXJpc2RpY3Rpb25TZXJ2aWNlLnNlYXJjaEp1ZGljaWFsVXNlcnNCeVBlcnNvbmFsQ29kZXMoW3BlcnNvbmFsQ29kZV0pLnN1YnNjcmliZShqdWRpY2lhbFVzZXJzID0+IHtcbiAgICAgICAgY29uc3QganVkaWNpYWxVc2VyID0ganVkaWNpYWxVc2Vyc1swXTtcbiAgICAgICAgdGhpcy5pZGFtSWRGb3JtQ29udHJvbC5zZXRWYWx1ZShgJHtqdWRpY2lhbFVzZXIuZnVsbE5hbWV9ICgke2p1ZGljaWFsVXNlci5lbWFpbElkfSlgKTtcbiAgICAgICAgdGhpcy5wZXJzb25hbENvZGVGb3JtQ29udHJvbC5zZXRWYWx1ZShqdWRpY2lhbFVzZXIucGVyc29uYWxDb2RlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRKdXJpc2RpY3Rpb25BbmRDYXNlVHlwZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjYXNlSW5mb1N0ciA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Nhc2VJbmZvJyk7XG4gICAgaWYgKGNhc2VJbmZvU3RyKSB7XG4gICAgICBjb25zdCBjYXNlSW5mbyA9IEpTT04ucGFyc2UoY2FzZUluZm9TdHIpO1xuICAgICAgdGhpcy5qdXJpc2RpY3Rpb24gPSBjYXNlSW5mbz8uanVyaXNkaWN0aW9uO1xuICAgICAgdGhpcy5jYXNlVHlwZSA9IGNhc2VJbmZvPy5jYXNlVHlwZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2UoanVkaWNpYWxVc2VyOiBKdWRpY2lhbFVzZXJNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuaWRhbUlkRm9ybUNvbnRyb2wuc2V0VmFsdWUoYCR7anVkaWNpYWxVc2VyLmZ1bGxOYW1lfSAoJHtqdWRpY2lhbFVzZXIuZW1haWxJZH0pYCk7XG4gICAgdGhpcy5wZXJzb25hbENvZGVGb3JtQ29udHJvbC5zZXRWYWx1ZShqdWRpY2lhbFVzZXIucGVyc29uYWxDb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWIpIHtcbiAgICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtmb3JtR3JvdXBdPVwianVkaWNpYWxVc2VyRm9ybUdyb3VwXCI+XG4gIDxsYWJlbFxuICAgIFtmb3JdPVwiaWQoKVwiXG4gID5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJjYXNlRmllbGQubGFiZWxcIlxuICAgICAgY2xhc3M9XCJmb3JtLWxhYmVsXCJcbiAgICA+XG4gICAgICB7e2Nhc2VGaWVsZCB8IGNjZEZpZWxkTGFiZWx9fVxuICAgIDwvc3Bhbj5cbiAgPC9sYWJlbD5cbiAgPHNwYW5cbiAgICAqbmdJZj1cImNhc2VGaWVsZC5oaW50X3RleHRcIlxuICAgIGNsYXNzPVwiZm9ybS1oaW50XCJcbiAgPlxuICAgIHt7Y2FzZUZpZWxkLmhpbnRfdGV4dH19XG4gIDwvc3Bhbj5cbiAgPGlucHV0XG4gICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm90dG9tLTMwXCJcbiAgICBbaWRdPVwiaWQoKVwiXG4gICAgW2Zvcm1Db250cm9sXT1cImlkYW1JZEZvcm1Db250cm9sXCJcbiAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9Db21wbGV0ZVwiXG4gID5cbiAgPG1hdC1hdXRvY29tcGxldGVcbiAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cbiAgICAjYXV0b0NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgPlxuICAgIDxtYXQtb3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQganVkaWNpYWxVc2VyIG9mIGZpbHRlcmVkSnVkaWNpYWxVc2Vyc1wiXG4gICAgICBjbGFzcz1cInNlbGVjdC1vcHRpb25cIlxuICAgICAgW25nQ2xhc3NdPVwieydoaWRlLWF1dG9jb21wbGV0ZSc6ICFzaG93QXV0b2NvbXBsZXRlfVwiXG4gICAgICBbdmFsdWVdPVwianVkaWNpYWxVc2VyLmlkYW1JZFwiXG4gICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoanVkaWNpYWxVc2VyKVwiXG4gICAgPlxuICAgICAge3sganVkaWNpYWxVc2VyLmZ1bGxOYW1lIH19ICh7eyBqdWRpY2lhbFVzZXIuZW1haWxJZCB9fSlcbiAgICA8L21hdC1vcHRpb24+XG4gICAgPG1hdC1vcHRpb25cbiAgICAgICpuZ0lmPVwiIWZpbHRlcmVkSnVkaWNpYWxVc2Vycz8ubGVuZ3RoICYmIHNob3dBdXRvY29tcGxldGVcIlxuICAgICAgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCJcbiAgICA+XG4gICAgICBObyByZXN1bHRzIGZvdW5kXG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L21hdC1hdXRvY29tcGxldGU+XG48L2Rpdj5cbiJdfQ==
236
+ }], function () { return [{ type: i1.JurisdictionService }, { type: i1.SessionStorageService }, { type: i1.CaseFlagRefdataService }, { type: i2.IsCompoundPipe }, { type: i1.FormValidatorsService }]; }, null); })();
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtanVkaWNpYWwtdXNlci1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9qdWRpY2lhbC11c2VyL3dyaXRlLWp1ZGljaWFsLXVzZXItZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvanVkaWNpYWwtdXNlci93cml0ZS1qdWRpY2lhbC11c2VyLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFtQixXQUFXLEVBQW9CLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0ksT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7OztJQ052RCxnQ0FBaUQ7SUFDL0MsWUFDRjs7SUFBQSxp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QUFXLEVBQUUsNENBQTRDO2FBQzFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi8uLi9jb21tb25zL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBKdWRpY2lhbFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9qdXJpc2RpY3Rpb24nO1xuaW1wb3J0IHsgQ2FzZUZsYWdSZWZkYXRhU2VydmljZSwgRmllbGRzVXRpbHMsIEZvcm1WYWxpZGF0b3JzU2VydmljZSwgSnVyaXNkaWN0aW9uU2VydmljZSwgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgV3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9jb21wbGV4L3dyaXRlLWNvbXBsZXgtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IElzQ29tcG91bmRQaXBlIH0gZnJvbSAnLi4vdXRpbHMvaXMtY29tcG91bmQucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC13cml0ZS1qdWRpY2lhbC11c2VyLWZpZWxkJyxcbiAgc3R5bGVVcmxzOiBbJy4vd3JpdGUtanVkaWNpYWwtdXNlci1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JpdGUtanVkaWNpYWwtdXNlci1maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV3JpdGVKdWRpY2lhbFVzZXJGaWVsZENvbXBvbmVudCBleHRlbmRzIFdyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgbWluU2VhcmNoQ2hhcmFjdGVycyA9IDI7XG5cbiAgcHVibGljIGp1ZGljaWFsVXNlckNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcbiAgcHVibGljIGp1cmlzZGljdGlvbjogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVR5cGU6IHN0cmluZztcbiAgcHVibGljIHNob3dBdXRvY29tcGxldGUgPSBmYWxzZTtcbiAgcHVibGljIGZpbHRlcmVkSnVkaWNpYWxVc2VycyQ6IE9ic2VydmFibGU8SnVkaWNpYWxVc2VyTW9kZWxbXT47XG4gIHB1YmxpYyBzZWFyY2hUZXJtID0gJyc7XG4gIHB1YmxpYyBub1Jlc3VsdHMgPSBmYWxzZTtcbiAgcHVibGljIGVycm9yczogVmFsaWRhdGlvbkVycm9ycztcbiAgcHVibGljIGludmFsaWRTZWFyY2hUZXJtID0gZmFsc2U7XG4gIHB1YmxpYyBqdWRpY2lhbFVzZXJTZWxlY3RlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkganVyaXNkaWN0aW9uU2VydmljZTogSnVyaXNkaWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRmxhZ1JlZkRhdGFTZXJ2aWNlOiBDYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvdW5kUGlwZTogSXNDb21wb3VuZFBpcGUsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRhdG9yc1NlcnZpY2U6IEZvcm1WYWxpZGF0b3JzU2VydmljZSkge1xuICAgIHN1cGVyKGNvbXBvdW5kUGlwZSwgdmFsaWRhdG9yc1NlcnZpY2UpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5qdWRpY2lhbFVzZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMuY2FzZUZpZWxkLnZhbHVlKTtcbiAgICAvLyBGb3JtQ29udHJvbCBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgbWFpbiBGb3JtR3JvdXAgc28gaXQgY2FuIGJlIHBpY2tlZCB1cCBieSB0aGUgUGFnZVZhbGlkYXRpb25TZXJ2aWNlIHdoZW5cbiAgICAvLyBjaGVja2luZyBpZiB0aGUgcGFnZSBpcyB2YWxpZC4gRm9ybUdyb3VwLnNldENvbnRyb2woKSBpcyB1c2VkIGhlcmUgdG8gZW5zdXJlIGFueSBleGlzdGluZyBKdWRpY2lhbFVzZXJcbiAgICAvLyBGb3JtQ29udHJvbCBpcyByZXBsYWNlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgcmUtaW5pdGlhbGlzZWQsIGZvciBleGFtcGxlLCBpZiB0aGUgdXNlciBuYXZpZ2F0ZXMgYXdheSB0aGVuXG4gICAgLy8gYmFjayB0byB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBKdWRpY2lhbFVzZXIgZmllbGRcbiAgICB0aGlzLmZvcm1Hcm91cC5zZXRDb250cm9sKGAke3RoaXMuY2FzZUZpZWxkLmlkfV9qdWRpY2lhbFVzZXJDb250cm9sYCwgdGhpcy5qdWRpY2lhbFVzZXJDb250cm9sKTtcbiAgICAvLyBFbnN1cmUgdGhhdCB0aGlzIEZvcm1Db250cm9sIGhhcyBsaW5rcyB0byB0aGUgSnVkaWNpYWxVc2VyIGNhc2UgZmllbGQgYW5kIHRoaXMgY29tcG9uZW50XG4gICAgRmllbGRzVXRpbHMuYWRkQ2FzZUZpZWxkQW5kQ29tcG9uZW50UmVmZXJlbmNlcyh0aGlzLmp1ZGljaWFsVXNlckNvbnRyb2wsIHRoaXMuY2FzZUZpZWxkLCB0aGlzKTtcbiAgICB0aGlzLnNldHVwVmFsaWRhdGlvbigpO1xuXG4gICAgdGhpcy5zZXRKdXJpc2RpY3Rpb25BbmRDYXNlVHlwZSgpO1xuXG4gICAgdGhpcy5maWx0ZXJlZEp1ZGljaWFsVXNlcnMkID0gdGhpcy5qdWRpY2lhbFVzZXJDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9IGZhbHNlKSxcbiAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgLy8gTmVlZCB0byBjaGVjayB0eXBlIG9mIGlucHV0IGJlY2F1c2UgaXQgY2hhbmdlcyB0byBvYmplY3QgKGkuZS4gSnVkaWNpYWxVc2VyKSB3aGVuIGEgdmFsdWUgaXMgc2VsZWN0ZWQgZnJvbSB0aGVcbiAgICAgIC8vIGF1dG9jb21wbGV0ZSBwYW5lbCwgaW5zdGVhZCBvZiBzdHJpbmcgd2hlbiBhIHZhbHVlIGlzIGJlaW5nIHR5cGVkIGluXG4gICAgICBtYXAoaW5wdXQgPT4gdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyA/IGlucHV0IDogaW5wdXQ/LmZ1bGxOYW1lKSxcbiAgICAgIHRhcChzZWFyY2hUZXJtID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gc2VhcmNoVGVybTtcbiAgICAgICAgdGhpcy5pbnZhbGlkU2VhcmNoVGVybSA9IGZhbHNlO1xuICAgICAgfSksXG4gICAgICBmaWx0ZXIoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyksXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdGhpcy5maWx0ZXJKdWRpY2lhbFVzZXJzKHNlYXJjaFRlcm0pLnBpcGUoXG4gICAgICAgIHRhcCgoanVkaWNpYWxVc2VycykgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5ub1Jlc3VsdHMgPSAhdGhpcy5pbnZhbGlkU2VhcmNoVGVybSAmJiBqdWRpY2lhbFVzZXJzLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgfSlcbiAgICAgICkpXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmNhc2VGaWVsZC52YWx1ZT8ucGVyc29uYWxDb2RlKSB7XG4gICAgICB0aGlzLmxvYWRKdWRpY2lhbFVzZXIodGhpcy5jYXNlRmllbGQudmFsdWUucGVyc29uYWxDb2RlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsdGVySnVkaWNpYWxVc2VycyhzZWFyY2hUZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEp1ZGljaWFsVXNlck1vZGVsW10+IHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRmxhZ1JlZkRhdGFTZXJ2aWNlLmdldEhtY3RzU2VydmljZURldGFpbHNCeUNhc2VUeXBlKHRoaXMuY2FzZVR5cGUpLnBpcGUoXG4gICAgICAvLyBJZiBhbiBlcnJvciBvY2N1cnMgcmV0cmlldmluZyBITUNUUyBzZXJ2aWNlIGRldGFpbHMgYnkgY2FzZSB0eXBlIElELCB0cnkgYnkgc2VydmljZSBuYW1lIGluc3RlYWRcbiAgICAgIGNhdGNoRXJyb3IoXyA9PiB0aGlzLmNhc2VGbGFnUmVmRGF0YVNlcnZpY2UuZ2V0SG1jdHNTZXJ2aWNlRGV0YWlsc0J5U2VydmljZU5hbWUodGhpcy5qdXJpc2RpY3Rpb24pKSxcbiAgICAgIC8vIFVzZSBzd2l0Y2hNYXAgdG8gcmV0dXJuIGFuIGlubmVyIE9ic2VydmFibGUgb2YgdGhlIGp1ZGljaWFsIHVzZXJzIGRhdGEsIGhhdmluZyByZWNlaXZlZCB0aGUgc2VydmljZSBkZXRhaWxzXG4gICAgICAvLyBpbmNsdWRpbmcgc2VydmljZV9jb2RlLiBUaGlzIGF2b2lkcyBoYXZpbmcgbmVzdGVkIGBzdWJzY3JpYmVgcywgd2hpY2ggaXMgYW4gYW50aS1wYXR0ZXJuIVxuICAgICAgc3dpdGNoTWFwKHNlcnZpY2VEZXRhaWxzID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuanVyaXNkaWN0aW9uU2VydmljZS5zZWFyY2hKdWRpY2lhbFVzZXJzKHNlYXJjaFRlcm0sIHNlcnZpY2VEZXRhaWxzWzBdLnNlcnZpY2VfY29kZSkucGlwZShcbiAgICAgICAgICAvLyBIYW5kbGUgYW55IGVycm9ycyBoZXJlIHJhdGhlciB0aGFuIG91dHNpZGUgb2YgdGhlIGZ1bmN0aW9uLCBzbyB0aGF0IHRoZSBvdXRlciBPYnNlcnZhYmxlIGlzIGtlcHQgbGl2ZVxuICAgICAgICAgIGNhdGNoRXJyb3IoXyA9PiB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRTZWFyY2hUZXJtID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbG9hZEp1ZGljaWFsVXNlcihwZXJzb25hbENvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChwZXJzb25hbENvZGUpIHtcbiAgICAgIHRoaXMuanVyaXNkaWN0aW9uU2VydmljZS5zZWFyY2hKdWRpY2lhbFVzZXJzQnlQZXJzb25hbENvZGVzKFtwZXJzb25hbENvZGVdKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShqdWRpY2lhbFVzZXJzID0+IHtcbiAgICAgICAgdGhpcy5qdWRpY2lhbFVzZXJDb250cm9sLnNldFZhbHVlKGp1ZGljaWFsVXNlcnNbMF0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEp1cmlzZGljdGlvbkFuZENhc2VUeXBlKCk6IHZvaWQge1xuICAgIGNvbnN0IGNhc2VJbmZvU3RyID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnY2FzZUluZm8nKTtcbiAgICBpZiAoY2FzZUluZm9TdHIpIHtcbiAgICAgIGNvbnN0IGNhc2VJbmZvID0gSlNPTi5wYXJzZShjYXNlSW5mb1N0cik7XG4gICAgICB0aGlzLmp1cmlzZGljdGlvbiA9IGNhc2VJbmZvPy5qdXJpc2RpY3Rpb247XG4gICAgICB0aGlzLmNhc2VUeXBlID0gY2FzZUluZm8/LmNhc2VUeXBlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNwbGF5SnVkaWNpYWxVc2VyKGp1ZGljaWFsVXNlcj86IEp1ZGljaWFsVXNlck1vZGVsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4ganVkaWNpYWxVc2VyXG4gICAgICA/IGAke2p1ZGljaWFsVXNlci5mdWxsTmFtZSA/IGp1ZGljaWFsVXNlci5mdWxsTmFtZSA6ICcnfSR7anVkaWNpYWxVc2VyLmVtYWlsSWQgPyBgICgke2p1ZGljaWFsVXNlci5lbWFpbElkfSlgIDogJyd9YFxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8vIFRoZSBldmVudC5zb3VyY2UudmFsdWUgcHJvcGVydHkgaXMgYSBKdWRpY2lhbFVzZXJNb2RlbCBvYmplY3QgaW5zdGFuY2U7IHVzZSB0aGlzIHRvIHVwZGF0ZSBib3RoIHRoZSBjYXNlRmllbGRcbiAgICAvLyB2YWx1ZSBhbmQgdGhlIHZhbHVlcyBvZiB0aGUgdHdvIEZvcm1Db250cm9scyBmb3IgdGhlIGlkYW1JZCBhbmQgcGVyc29uYWxDb2RlIHByb3BlcnRpZXMgb2YgdGhlIEp1ZGljaWFsVXNlclxuICAgIC8vIGNvbXBsZXggZmllbGQgdHlwZSAodGhlc2UgdmFsdWVzIHdpbGwgYXBwZWFyIGluIHRoZSBkYXRhIHBheWxvYWQgZm9yIHZhbGlkYXRpb24gYW5kIHN1Ym1pc3Npb24pXG4gICAgdGhpcy5jYXNlRmllbGQudmFsdWUgPSB7XG4gICAgICBpZGFtSWQ6IGV2ZW50LnNvdXJjZS52YWx1ZS5pZGFtSWQsXG4gICAgICBwZXJzb25hbENvZGU6IGV2ZW50LnNvdXJjZS52YWx1ZS5wZXJzb25hbENvZGVcbiAgICB9O1xuICAgIHRoaXMuY29tcGxleEdyb3VwLmdldCgnaWRhbUlkJyk/LnNldFZhbHVlKHRoaXMuY2FzZUZpZWxkLnZhbHVlLmlkYW1JZCk7XG4gICAgdGhpcy5jb21wbGV4R3JvdXAuZ2V0KCdwZXJzb25hbENvZGUnKT8uc2V0VmFsdWUodGhpcy5jYXNlRmllbGQudmFsdWUucGVyc29uYWxDb2RlKTtcbiAgICB0aGlzLmp1ZGljaWFsVXNlclNlbGVjdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8vIElmIHRoZSB1c2VyIHR5cGVzIGludG8gdGhlIEp1ZGljaWFsVXNlciBmaWVsZCBidXQgZG9lc24ndCBzZWxlY3QgYSB2YWx1ZSBmcm9tIHRoZSBhdXRvY29tcGxldGUgbGlzdCwgcmVzZXQgdGhlXG4gICAgLy8gRm9ybUNvbnRyb2wgdmFsdWUgdG8gbnVsbCB0byBlbnN1cmUgaXQgZmFpbHMgdmFsaWRhdGlvbiAoY2FuIGNoZWNrIHRoZSBldmVudC5yZWxhdGVkVGFyZ2V0IHByb3BlcnR5KVxuICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0Py5yb2xlICE9PSAnb3B0aW9uJyAmJiAhdGhpcy5qdWRpY2lhbFVzZXJTZWxlY3RlZCkge1xuICAgICAgLy8gSWYgcmVsYXRlZFRhcmdldC5yb2xlIGlzIG5vdCBcIm9wdGlvblwiLCBpdCBtZWFucyB0aGUgdXNlciBkaWRuJ3Qgc2VsZWN0IGEgdmFsdWVcbiAgICAgIHRoaXMuanVkaWNpYWxVc2VyQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuanVkaWNpYWxVc2VyQ29udHJvbC52YWx1ZSkge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgZGVsZXRlcyB0aGUgZmllbGQgdmFsdWUsIHNldCB0aGUgY2FzZUZpZWxkIHZhbHVlIGFuZCB0aGUgdmFsdWVzIG9mIHRoZSB0d28gRm9ybUNvbnRyb2xzIGZvclxuICAgICAgLy8gaWRhbUlkIGFuZCBwZXJzb25hbENvZGUgdG8gbnVsbC4gVGhpcyBpcyB0byBhdm9pZCBqdWRpY2lhbCB1c2VyIGRhdGEgYmVpbmcgcHJlc2VudCBpbiB0aGUgZGF0YSBwYXlsb2FkXG4gICAgICAvLyB1bmludGVudGlvbmFsbHlcbiAgICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuY29tcGxleEdyb3VwLmdldCgnaWRhbUlkJyk/LnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb21wbGV4R3JvdXAuZ2V0KCdwZXJzb25hbENvZGUnKT8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldHVwVmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICAvLyBOZWVkIHRvIHJlbW92ZSB2YWxpZGF0b3JzIGZyb20gdGhlIHR3byBGb3JtQ29udHJvbHMsIGlkYW1JZCBhbmQgcGVyc29uYWxDb2RlLCBmb3IgdGhlIEp1ZGljaWFsVXNlciBjb21wbGV4XG4gICAgLy8gZmllbGQgdHlwZS4gVGhpcyBwcmV2ZW50cyB0aGVzZSBoaWRkZW4gZmllbGRzIGJlaW5nIGxpc3RlZCBpbiBhbiBlcnJvciBtZXNzYWdlIGlmIHRoZXJlIGFyZSB2YWxpZGF0aW9uIGVycm9yc1xuICAgIHRoaXMuY29tcGxleEdyb3VwLmdldCgnaWRhbUlkJykuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgdGhpcy5jb21wbGV4R3JvdXAuZ2V0KCdwZXJzb25hbENvZGUnKS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICBpZiAodGhpcy5jYXNlRmllbGQuZGlzcGxheV9jb250ZXh0ID09PSBDb25zdGFudHMuTUFOREFUT1JZKSB7XG4gICAgICB0aGlzLmp1ZGljaWFsVXNlckNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiAhIWp1ZGljaWFsVXNlckNvbnRyb2wgJiYgZXJyb3JzfVwiPlxuICA8bGFiZWwgW2Zvcl09XCJpZCgpXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJjYXNlRmllbGQubGFiZWxcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cbiAgICAgIHt7Y2FzZUZpZWxkIHwgY2NkRmllbGRMYWJlbH19XG4gICAgPC9zcGFuPlxuICA8L2xhYmVsPlxuICA8c3BhbiAqbmdJZj1cImNhc2VGaWVsZC5oaW50X3RleHRcIiBjbGFzcz1cImZvcm0taGludFwiPlxuICAgIHt7Y2FzZUZpZWxkLmhpbnRfdGV4dH19XG4gIDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJlcnJvcnNcIj5cbiAgICB7e2Vycm9ycyB8IGNjZEZpcnN0RXJyb3I6Y2FzZUZpZWxkLmxhYmVsfX1cbiAgPC9zcGFuPlxuICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm90dG9tLTMwXCIgW2lkXT1cImlkKClcIlxuICAgIFtmb3JtQ29udHJvbF09XCJqdWRpY2lhbFVzZXJDb250cm9sXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGVcIiAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiPlxuICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG9Db21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5SnVkaWNpYWxVc2VyXCI+XG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGp1ZGljaWFsVXNlciBvZiBmaWx0ZXJlZEp1ZGljaWFsVXNlcnMkIHwgYXN5bmNcIlxuICAgICAgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgW25nQ2xhc3NdPVwieydoaWRlLWF1dG9jb21wbGV0ZSc6ICFzaG93QXV0b2NvbXBsZXRlfVwiXG4gICAgICBbdmFsdWVdPVwianVkaWNpYWxVc2VyXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIHt7anVkaWNpYWxVc2VyPy5mdWxsTmFtZSA/IGp1ZGljaWFsVXNlci5mdWxsTmFtZSA6ICcnfX17e2p1ZGljaWFsVXNlcj8uZW1haWxJZCA/ICcgKCcgKyBqdWRpY2lhbFVzZXIuZW1haWxJZCArICcpJyA6ICcnfX1cbiAgICA8L21hdC1vcHRpb24+XG4gICAgPG1hdC1vcHRpb24gKm5nSWY9XCJub1Jlc3VsdHMgJiYgc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+IG1pblNlYXJjaENoYXJhY3RlcnMgJiYgc2hvd0F1dG9jb21wbGV0ZVwiIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiIGRpc2FibGVkPlxuICAgICAgTm8gcmVzdWx0cyBmb3VuZFxuICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImludmFsaWRTZWFyY2hUZXJtXCIgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgZGlzYWJsZWQ+XG4gICAgICBJbnZhbGlkIHNlYXJjaCB0ZXJtXG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L21hdC1hdXRvY29tcGxldGU+XG48L2Rpdj5cbiJdfQ==
@@ -1,23 +1,40 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import { CaseField } from '../../../domain/definition/case-field.model';
3
3
  import * as i0 from "@angular/core";
4
+ function LabelFieldComponent_ccd_markdown_2_Template(rf, ctx) { if (rf & 1) {
5
+ i0.ɵɵelement(0, "ccd-markdown", 2);
6
+ i0.ɵɵpipe(1, "rpxTranslate");
7
+ } if (rf & 2) {
8
+ const ctx_r0 = i0.ɵɵnextContext();
9
+ i0.ɵɵproperty("content", i0.ɵɵpipeBind1(1, 2, ctx_r0.caseField.label))("markdownUseHrefAsRouterLink", ctx_r0.markdownUseHrefAsRouterLink);
10
+ } }
11
+ function LabelFieldComponent_ccd_markdown_3_Template(rf, ctx) { if (rf & 1) {
12
+ i0.ɵɵelement(0, "ccd-markdown", 2);
13
+ } if (rf & 2) {
14
+ const ctx_r1 = i0.ɵɵnextContext();
15
+ i0.ɵɵproperty("content", ctx_r1.caseField.value || ctx_r1.caseField.label)("markdownUseHrefAsRouterLink", ctx_r1.markdownUseHrefAsRouterLink);
16
+ } }
4
17
  export class LabelFieldComponent {
5
18
  constructor() {
6
19
  this.caseFields = [];
20
+ this.labelCanBeTranslated = false;
7
21
  }
8
22
  }
9
23
  LabelFieldComponent.ɵfac = function LabelFieldComponent_Factory(t) { return new (t || LabelFieldComponent)(); };
10
- LabelFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: LabelFieldComponent, selectors: [["ccd-label-field"]], inputs: { caseField: "caseField", caseFields: "caseFields", markdownUseHrefAsRouterLink: "markdownUseHrefAsRouterLink" }, decls: 4, vars: 6, consts: [["ccdLabelSubstitutor", "", 1, "case-field", 3, "hidden", "caseField", "contextFields", "id"], [3, "content", "markdownUseHrefAsRouterLink"]], template: function LabelFieldComponent_Template(rf, ctx) { if (rf & 1) {
24
+ LabelFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: LabelFieldComponent, selectors: [["ccd-label-field"]], inputs: { caseField: "caseField", caseFields: "caseFields", labelCanBeTranslated: "labelCanBeTranslated", markdownUseHrefAsRouterLink: "markdownUseHrefAsRouterLink" }, decls: 5, vars: 6, consts: [["ccdLabelSubstitutor", "", 1, "case-field", 3, "hidden", "caseField", "contextFields", "id"], [3, "content", "markdownUseHrefAsRouterLink", 4, "ngIf"], [3, "content", "markdownUseHrefAsRouterLink"]], template: function LabelFieldComponent_Template(rf, ctx) { if (rf & 1) {
11
25
  i0.ɵɵelementStart(0, "dl", 0);
12
26
  i0.ɵɵelementStart(1, "dt");
13
- i0.ɵɵelement(2, "ccd-markdown", 1);
27
+ i0.ɵɵtemplate(2, LabelFieldComponent_ccd_markdown_2_Template, 2, 4, "ccd-markdown", 1);
28
+ i0.ɵɵtemplate(3, LabelFieldComponent_ccd_markdown_3_Template, 1, 2, "ccd-markdown", 1);
14
29
  i0.ɵɵelementEnd();
15
- i0.ɵɵelement(3, "dd");
30
+ i0.ɵɵelement(4, "dd");
16
31
  i0.ɵɵelementEnd();
17
32
  } if (rf & 2) {
18
33
  i0.ɵɵproperty("hidden", ctx.caseField.hidden)("caseField", ctx.caseField)("contextFields", ctx.caseFields)("id", ctx.caseField.id);
19
34
  i0.ɵɵadvance(2);
20
- i0.ɵɵproperty("content", ctx.caseField.value || ctx.caseField.label)("markdownUseHrefAsRouterLink", ctx.markdownUseHrefAsRouterLink);
35
+ i0.ɵɵproperty("ngIf", ctx.labelCanBeTranslated);
36
+ i0.ɵɵadvance(1);
37
+ i0.ɵɵproperty("ngIf", !ctx.labelCanBeTranslated);
21
38
  } }, encapsulation: 2 });
22
39
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LabelFieldComponent, [{
23
40
  type: Component,
@@ -29,7 +46,9 @@ LabelFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: LabelFieldComponent,
29
46
  type: Input
30
47
  }], caseFields: [{
31
48
  type: Input
49
+ }], labelCanBeTranslated: [{
50
+ type: Input
32
51
  }], markdownUseHrefAsRouterLink: [{
33
52
  type: Input
34
53
  }] }); })();
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGFiZWwvbGFiZWwtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGFiZWwvbGFiZWwtZmllbGQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBTXhFLE1BQU0sT0FBTyxtQkFBbUI7SUFKaEM7UUFTUyxlQUFVLEdBQWdCLEVBQUUsQ0FBQztLQUlyQzs7c0ZBVFksbUJBQW1CO3dEQUFuQixtQkFBbUI7UUNQaEMsNkJBQWdKO1FBQzlJLDBCQUFJO1FBQ0Ysa0NBQ2U7UUFDakIsaUJBQUs7UUFDTCxxQkFBUztRQUNYLGlCQUFLOztRQU5ELDZDQUEyQiw0QkFBQSxpQ0FBQSx3QkFBQTtRQUViLGVBQThDO1FBQTlDLG9FQUE4QyxnRUFBQTs7dUZES25ELG1CQUFtQjtjQUovQixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsV0FBVyxFQUFFLG9CQUFvQjthQUNsQztnQkFHUSxTQUFTO2tCQURmLEtBQUs7WUFJQyxVQUFVO2tCQURoQixLQUFLO1lBSUMsMkJBQTJCO2tCQURqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1sYWJlbC1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYWJlbC1maWVsZC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBMYWJlbEZpZWxkQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VGaWVsZDogQ2FzZUZpZWxkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbms/OiBib29sZWFuO1xufVxuIiwiPGRsIFtoaWRkZW5dPVwiY2FzZUZpZWxkLmhpZGRlblwiIGNsYXNzPVwiY2FzZS1maWVsZFwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJjYXNlRmllbGRcIiBbY29udGV4dEZpZWxkc109XCJjYXNlRmllbGRzXCIgW2lkXT1cImNhc2VGaWVsZC5pZFwiPlxuICA8ZHQ+XG4gICAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJjYXNlRmllbGQudmFsdWUgfHwgY2FzZUZpZWxkLmxhYmVsXCIgW21hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua109XCJtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmtcIj5cbiAgICA8L2NjZC1tYXJrZG93bj5cbiAgPC9kdD5cbiAgPGRkPjwvZGQ+XG48L2RsPlxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGFiZWwvbGFiZWwtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGFiZWwvbGFiZWwtZmllbGQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7OztJQ0NwRSxrQ0FDZTs7OztJQUQ0QixzRUFBMEMsbUVBQUE7OztJQUdyRixrQ0FDZTs7O0lBRDZCLDBFQUE4QyxtRUFBQTs7QURFOUYsTUFBTSxPQUFPLG1CQUFtQjtJQUpoQztRQVNTLGVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBRzdCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztLQUlyQzs7c0ZBWlksbUJBQW1CO3dEQUFuQixtQkFBbUI7UUNQaEMsNkJBQWdKO1FBQzlJLDBCQUFJO1FBQ0Ysc0ZBQ2U7UUFFZixzRkFDZTtRQUNqQixpQkFBSztRQUNMLHFCQUFTO1FBQ1gsaUJBQUs7O1FBVEQsNkNBQTJCLDRCQUFBLGlDQUFBLHdCQUFBO1FBRVosZUFBMEI7UUFBMUIsK0NBQTBCO1FBRzFCLGVBQTJCO1FBQTNCLGdEQUEyQjs7dUZERWpDLG1CQUFtQjtjQUovQixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsV0FBVyxFQUFFLG9CQUFvQjthQUNsQztnQkFHUSxTQUFTO2tCQURmLEtBQUs7WUFJQyxVQUFVO2tCQURoQixLQUFLO1lBSUMsb0JBQW9CO2tCQUQxQixLQUFLO1lBSUMsMkJBQTJCO2tCQURqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1sYWJlbC1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYWJlbC1maWVsZC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBMYWJlbEZpZWxkQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VGaWVsZDogQ2FzZUZpZWxkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbENhbkJlVHJhbnNsYXRlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbms/OiBib29sZWFuO1xufVxuIiwiPGRsIFtoaWRkZW5dPVwiY2FzZUZpZWxkLmhpZGRlblwiIGNsYXNzPVwiY2FzZS1maWVsZFwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJjYXNlRmllbGRcIiBbY29udGV4dEZpZWxkc109XCJjYXNlRmllbGRzXCIgW2lkXT1cImNhc2VGaWVsZC5pZFwiPlxuICA8ZHQ+XG4gICAgPGNjZC1tYXJrZG93biAqbmdJZj1cImxhYmVsQ2FuQmVUcmFuc2xhdGVkXCIgW2NvbnRlbnRdPVwiY2FzZUZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCIgW21hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua109XCJtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmtcIj5cbiAgICA8L2NjZC1tYXJrZG93bj5cblxuICAgIDxjY2QtbWFya2Rvd24gKm5nSWY9XCIhbGFiZWxDYW5CZVRyYW5zbGF0ZWRcIiBbY29udGVudF09XCJjYXNlRmllbGQudmFsdWUgfHwgY2FzZUZpZWxkLmxhYmVsXCIgW21hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua109XCJtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmtcIj5cbiAgICA8L2NjZC1tYXJrZG93bj5cbiAgPC9kdD5cbiAgPGRkPjwvZGQ+XG48L2RsPlxuIl19
@@ -306,4 +306,4 @@ LinkedCasesToTableComponent.ɵcmp = i0.ɵɵdefineComponent({ type: LinkedCasesTo
306
306
  }], notifyAPIFailure: [{
307
307
  type: Output
308
308
  }] }); })();
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWNhc2VzLXRvLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2xpbmtlZC1jYXNlcy9jb21wb25lbnRzL2xpbmtlZC1jYXNlcy10YWJsZS9saW5rZWQtY2FzZXMtdG8tdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGlua2VkLWNhc2VzL2NvbXBvbmVudHMvbGlua2VkLWNhc2VzLXRhYmxlL2xpbmtlZC1jYXNlcy10by10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLGtDQUFrQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUU5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0lDa0JVLDZCQUVXO0lBQUEsWUFBMkM7SUFBQSxpQkFBSTs7OztJQUR0RyxxR0FBa0Q7SUFDSyxlQUEyQztJQUEzQyx1RUFBMkM7OztJQUN0RyxxQkFBc0I7OztJQUp4Qiw0QkFBNEU7SUFDMUUsWUFBMEM7O0lBQUEsNEJBQU07SUFBQSxvR0FFMEQ7SUFBQSxpQkFBTztJ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SSxJQUFJLEVBQUU7WUFDN0MsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFO1lBQy9ELE9BQU8sUUFBRSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsS0FBSywwQ0FBRSxhQUFhO1NBQ2pCLENBQUM7SUFDM0IsQ0FBQzs7QUE1SnVCLHlEQUE2QixHQUFHLFNBQVMsQ0FBQztBQUMxQyxxREFBeUIsR0FBRyxTQUFTLENBQUM7c0dBSG5ELDJCQUEyQjtnRUFBM0IsMkJBQTJCO1FDekJ4Qyw4QkFBb0Q7UUFDbEQsOEJBQW9DO1FBQ2xDLGlGQW9DUTtRQUNWLGlCQUFNO1FBQ1IsaUJBQU07O1FBdENNLGVBQTZCO1FBQTdCLGtEQUE2Qjs7dUZEdUI1QiwyQkFBMkI7Y0FMdkMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLFdBQVcsRUFBRSx3Q0FBd0M7Z0JBQ3JELFNBQVMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2FBQ3REOzZIQU9RLFNBQVM7a0JBRGYsS0FBSztZQUlDLGdCQUFnQjtrQkFEdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmllbGQsIEp1cmlzZGljdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uJztcbmltcG9ydCB7IENhc2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2Nhc2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FzZUxpbmssIExpbmtSZWFzb24gfSBmcm9tICcuLi8uLi9kb21haW4vbGlua2VkLWNhc2VzLm1vZGVsJztcbmltcG9ydCB7IExpbmtlZENhc2VzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuaW50ZXJmYWNlIExpbmtlZENhc2VzUmVzcG9uc2Uge1xuICBjYXNlUmVmZXJlbmNlOiBzdHJpbmc7XG4gIGNhc2VOYW1lOiBzdHJpbmc7XG4gIGNhc2VUeXBlOiBzdHJpbmc7XG4gIGNhc2VUeXBlRGVzY3JpcHRpb246IHN0cmluZztcbiAgc2VydmljZTogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBzdGF0ZURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJlYXNvbnM6IHN0cmluZ1tdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtbGlua2VkLWNhc2VzLXRvLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpbmtlZC1jYXNlcy10by10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmtlZC1jYXNlcy10by10YWJsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIExpbmtlZENhc2VzVG9UYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQ0FTRV9DT05TT0xJREFURURfUkVBU09OX0NPREUgPSAnQ0xSQzAxNSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENBU0VfUFJPR1JFU1NfUkVBU09OX0NPREUgPSAnQ0xSQzAxNic7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VGaWVsZDogQ2FzZUZpZWxkO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbm90aWZ5QVBJRmFpbHVyZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcihmYWxzZSk7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIHB1YmxpYyBpc0xvYWRlZDogYm9vbGVhbjtcbiAgcHVibGljIGxpbmtlZENhc2VzRnJvbVJlc3BvbnNlOiBMaW5rZWRDYXNlc1Jlc3BvbnNlW10gPSBbXTtcbiAgcHVibGljIGNhc2VJZDogc3RyaW5nO1xuICBwdWJsaWMgaXNTZXJ2ZXJFcnJvciA9IGZhbHNlO1xuICBwdWJsaWMgaXNTZXJ2ZXJSZWFzb25Db2RlRXJyb3IgPSBmYWxzZTtcbiAgcHVibGljIGp1cmlzZGljdGlvbnNSZXNwb25zZTogSnVyaXNkaWN0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpbmtlZENhc2VzU2VydmljZTogTGlua2VkQ2FzZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgbGV0IGxhYmVsRmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnb3Z1ay1oZWFkaW5nLWwnKTtcbiAgICBpZiAobGFiZWxGaWVsZCAmJiBsYWJlbEZpZWxkLmxlbmd0aCkge1xuICAgICAgbGFiZWxGaWVsZFswXS5yZXBsYWNlV2l0aCgnJyk7XG4gICAgfVxuICAgIGxhYmVsRmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWFkaW5nLWgyJyk7XG4gICAgaWYgKGxhYmVsRmllbGQgJiYgbGFiZWxGaWVsZC5sZW5ndGgpIHtcbiAgICAgIGxhYmVsRmllbGRbMF0ucmVwbGFjZVdpdGgoJycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhICYmIHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfaWQ7XG4gICAgdGhpcy5nZXRBbGxMaW5rZWRDYXNlSW5mb3JtYXRpb24oKTtcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UpIHtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VEZXRhaWxzID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2U7XG4gICAgfVxuICAgIHRoaXMuaXNTZXJ2ZXJSZWFzb25Db2RlRXJyb3IgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pc1NlcnZlclJlYXNvbkNvZGVFcnJvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlUmVmZXJlbmVMaW5rKGNhc2VSZWY6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhc2VSZWYuc2xpY2UodGhpcy5jYXNlSWQubGVuZ3RoIC0gNCk7XG4gIH1cblxuICBwdWJsaWMgc29ydExpbmtlZENhc2VzQnlSZWFzb25Db2RlKHNlYXJjaENhc2VzUmVzcG9uc2UpOiBMaW5rZWRDYXNlc1Jlc3BvbnNlW10ge1xuICAgIGNvbnN0IHRvcExldmVscmVzdWx0QXJyYXkgPSBbXTtcbiAgICBsZXQgc2Vjb25kTGV2ZWxyZXN1bHRBcnJheSA9IFtdO1xuICAgIHNlYXJjaENhc2VzUmVzcG9uc2UuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBjb25zdCByZWFzb25zID0gaXRlbSAmJiBpdGVtLnJlYXNvbnMgfHwgW107XG4gICAgICBjb25zdCBjb25zb2xpZGF0ZWRTdGF0ZVJlYXNvbiA9IHJlYXNvbnMubWFwKHggPT4geCkuZmluZChcbiAgICAgICAgcmVhc29uID0+IHJlYXNvbiA9PT0gTGlua2VkQ2FzZXNUb1RhYmxlQ29tcG9uZW50LkNBU0VfQ09OU09MSURBVEVEX1JFQVNPTl9DT0RFXG4gICAgICApO1xuICAgICAgY29uc3QgcHJvZ3Jlc3NlZFN0YXRlUmVhc29uID0gcmVhc29ucy5tYXAoeCA9PiB4KS5maW5kKFxuICAgICAgICByZWFzb24gPT4gcmVhc29uID09PSBMaW5rZWRDYXNlc1RvVGFibGVDb21wb25lbnQuQ0FTRV9QUk9HUkVTU19SRUFTT05fQ09ERVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGFycmF5SXRlbSA9IHsgLi4uaXRlbSB9O1xuICAgICAgaWYgKHByb2dyZXNzZWRTdGF0ZVJlYXNvbikge1xuICAgICAgICB0b3BMZXZlbHJlc3VsdEFycmF5LnB1c2goYXJyYXlJdGVtKTtcbiAgICAgIH0gZWxzZSBpZiAoY29uc29saWRhdGVkU3RhdGVSZWFzb24pIHtcbiAgICAgICAgc2Vjb25kTGV2ZWxyZXN1bHRBcnJheSA9IFt7IC4uLml0ZW0gfSwgLi4uc2Vjb25kTGV2ZWxyZXN1bHRBcnJheV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWNvbmRMZXZlbHJlc3VsdEFycmF5LnB1c2goeyAuLi5pdGVtIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0b3BMZXZlbHJlc3VsdEFycmF5LmNvbmNhdChzZWNvbmRMZXZlbHJlc3VsdEFycmF5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxMaW5rZWRDYXNlSW5mb3JtYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3Qgc2VhcmNoQ2FzZXNSZXNwb25zZSA9IFtdO1xuICAgIGNvbnN0IGNhc2VGaWVsZFZhbHVlID0gdGhpcy5jYXNlRmllbGQgJiYgdGhpcy5jYXNlRmllbGQuaWQgPT09ICdjYXNlTGlua3MnID8gdGhpcy5jYXNlRmllbGQudmFsdWUgOiBbXTtcbiAgICAvLyBHZW5lcmF0ZSB0aGUgbGlzdCBvZiBvYnNlcnZhYmxlc1xuICAgIGNhc2VGaWVsZFZhbHVlLmZvckVhY2goZmllbGRWYWx1ZSA9PiB7XG4gICAgICBpZiAoZmllbGRWYWx1ZSAmJiBmaWVsZFZhbHVlLmlkKSB7XG4gICAgICAgIHNlYXJjaENhc2VzUmVzcG9uc2UucHVzaCh0aGlzLmNhc2VzU2VydmljZS5nZXRDYXNlVmlld1YyKGZpZWxkVmFsdWUuaWQpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoc2VhcmNoQ2FzZXNSZXNwb25zZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VhcmNoQ2FzZXNCeUNhc2VJZHMoc2VhcmNoQ2FzZXNSZXNwb25zZSkuc3Vic2NyaWJlKChzZWFyY2hDYXNlczogYW55KSA9PiB7XG4gICAgICAgIGxldCBjYXNlc1Jlc3BvbnNlID0gW107XG4gICAgICAgIHNlYXJjaENhc2VzLmZvckVhY2gocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGNhc2VzUmVzcG9uc2UucHVzaCh0aGlzLm1hcFJlc3BvbnNlKHJlc3BvbnNlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYXNlc1Jlc3BvbnNlID0gdGhpcy5zb3J0UmVhc29uQ29kZXMoY2FzZXNSZXNwb25zZSk7XG4gICAgICAgIHRoaXMubGlua2VkQ2FzZXNGcm9tUmVzcG9uc2UgPSB0aGlzLnNvcnRMaW5rZWRDYXNlc0J5UmVhc29uQ29kZShjYXNlc1Jlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGNhc2VMaW5rcyA9IHRoaXMubGlua2VkQ2FzZXNGcm9tUmVzcG9uc2UubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjYXNlUmVmZXJlbmNlOiBpdGVtLmNhc2VSZWZlcmVuY2UsXG4gICAgICAgICAgICBjYXNlTmFtZTogaXRlbS5jYXNlTmFtZSxcbiAgICAgICAgICAgIGNhc2VTZXJ2aWNlOiBpdGVtLnNlcnZpY2UsXG4gICAgICAgICAgICBjYXNlVHlwZTogaXRlbS5jYXNlVHlwZSxcbiAgICAgICAgICAgIHVubGluazogZmFsc2UsXG4gICAgICAgICAgICByZWFzb25zOiBpdGVtLnJlYXNvbnMgJiYgaXRlbS5yZWFzb25zLm1hcChyZWFzb24gPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIFJlYXNvbjogcmVhc29uXG4gICAgICAgICAgICAgIH0gYXMgTGlua1JlYXNvbjtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0gYXMgQ2FzZUxpbms7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pbml0aWFsQ2FzZUxpbmtzID0gY2FzZUxpbmtzO1xuICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5saW5rZWRDYXNlcyA9IGNhc2VMaW5rcztcbiAgICAgICAgdGhpcy5pc1NlcnZlckVycm9yID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgICB0aGlzLmlzU2VydmVyRXJyb3IgPSB0cnVlO1xuICAgICAgICAgIHRoaXMubm90aWZ5QVBJRmFpbHVyZS5lbWl0KHRydWUpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzb3J0UmVhc29uQ29kZXMoc2VhcmNoQ2FzZXNSZXNwb25zZSk6IExpbmtlZENhc2VzUmVzcG9uc2VbXSB7XG4gICAgc2VhcmNoQ2FzZXNSZXNwb25zZS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmIChpdGVtPy5yZWFzb25zPy5sZW5ndGgpIHtcbiAgICAgICAgaXRlbS5yZWFzb25zLmZvckVhY2goKHJlYXNvbikgPT4ge1xuICAgICAgICAgIHJlYXNvbi5zb3J0T3JkZXIgPSB0aGlzLmdldFJlYXNvblNvcnRPcmRlcihyZWFzb24udmFsdWUuUmVhc29uKVxuICAgICAgICB9KTtcbiAgICAgICAgaXRlbS5yZWFzb25zID0gaXRlbS5yZWFzb25zLnNvcnQoKGEsIGIpID0+IGEuc29ydE9yZGVyIC0gYi5zb3J0T3JkZXIpO1xuICAgICAgICBpdGVtLnNvcnRPcmRlciA9IGl0ZW0ucmVhc29uc1swXS5zb3J0T3JkZXI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2VhcmNoQ2FzZXNSZXNwb25zZSA9IHNlYXJjaENhc2VzUmVzcG9uc2U/LnNvcnQoKGEsIGIpID0+IGEuc29ydE9yZGVyIC0gYi5zb3J0T3JkZXIpXG4gICAgcmV0dXJuIHNlYXJjaENhc2VzUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVhc29uU29ydE9yZGVyKHJlYXNvbkNvZGU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKHJlYXNvbkNvZGUgPT09IExpbmtlZENhc2VzVG9UYWJsZUNvbXBvbmVudC5DQVNFX1BST0dSRVNTX1JFQVNPTl9DT0RFKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKHJlYXNvbkNvZGUgPT09IExpbmtlZENhc2VzVG9UYWJsZUNvbXBvbmVudC5DQVNFX0NPTlNPTElEQVRFRF9SRUFTT05fQ09ERSkge1xuICAgICAgcmV0dXJuIDI7XG4gICAgfVxuICAgIHJldHVybiAzO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaENhc2VzQnlDYXNlSWRzKHNlYXJjaENhc2VzUmVzcG9uc2U6IGFueVtdKTogT2JzZXJ2YWJsZTx1bmtub3duW10+IHtcbiAgICByZXR1cm4gZm9ya0pvaW4oc2VhcmNoQ2FzZXNSZXNwb25zZSk7XG4gIH1cblxuICBwdWJsaWMgaGFzTGVhZENhc2VPckNvbnNvbGlkYXRlZChyZWFzb25Db2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVhc29uQ29kZSA9PT0gTGlua2VkQ2FzZXNUb1RhYmxlQ29tcG9uZW50LkNBU0VfUFJPR1JFU1NfUkVBU09OX0NPREUgfHxcbiAgICAgIHJlYXNvbkNvZGUgPT09IExpbmtlZENhc2VzVG9UYWJsZUNvbXBvbmVudC5DQVNFX0NPTlNPTElEQVRFRF9SRUFTT05fQ09ERTtcbiAgfVxuXG4gIHB1YmxpYyBtYXBSZXNwb25zZShlc1NlYXJjaENhc2VzUmVzcG9uc2UpOiBMaW5rZWRDYXNlc1Jlc3BvbnNlIHtcbiAgICBjb25zdCBjYXNlSW5mbyA9IHRoaXMuY2FzZUZpZWxkLnZhbHVlLmZpbmQoaXRlbSA9PiBpdGVtLnZhbHVlICYmIGl0ZW0udmFsdWUuQ2FzZVJlZmVyZW5jZSA9PT0gZXNTZWFyY2hDYXNlc1Jlc3BvbnNlLmNhc2VfaWQpO1xuICAgIHJldHVybiBjYXNlSW5mbyAmJiB7XG4gICAgICBjYXNlUmVmZXJlbmNlOiBlc1NlYXJjaENhc2VzUmVzcG9uc2UuY2FzZV9pZCxcbiAgICAgIGNhc2VOYW1lOiB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5nZXRDYXNlTmFtZShlc1NlYXJjaENhc2VzUmVzcG9uc2UpLFxuICAgICAgY2FzZVR5cGU6IGVzU2VhcmNoQ2FzZXNSZXNwb25zZS5jYXNlX3R5cGUubmFtZSB8fCAnJyxcbiAgICAgIGNhc2VUeXBlRGVzY3JpcHRpb246IGVzU2VhcmNoQ2FzZXNSZXNwb25zZS5jYXNlX3R5cGUuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICBzZXJ2aWNlOiBlc1NlYXJjaENhc2VzUmVzcG9uc2UuY2FzZV90eXBlICYmIGVzU2VhcmNoQ2FzZXNSZXNwb25zZS5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgc3RhdGU6IGVzU2VhcmNoQ2FzZXNSZXNwb25zZS5zdGF0ZS5uYW1lIHx8ICcnLFxuICAgICAgc3RhdGVEZXNjcmlwdGlvbjogZXNTZWFyY2hDYXNlc1Jlc3BvbnNlLnN0YXRlLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgcmVhc29uczogY2FzZUluZm8/LnZhbHVlPy5SZWFzb25Gb3JMaW5rXG4gICAgfSBhcyBMaW5rZWRDYXNlc1Jlc3BvbnNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3cgZ292dWstIS1tYXJnaW4tYm90dG9tLTJcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLWZ1bGxcIj5cbiAgICA8dGFibGUgKm5nSWY9XCJsaW5rZWRDYXNlc0Zyb21SZXNwb25zZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJ0YWJsZSB0byBkaXNwbGF5IGNhc2VzIGxpbmtlZCBUT1wiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNhc2UtdGFibGUtY29sdW1uXCIgd2lkdGg9XCIyMCVcIj5DYXNlIG5hbWUgYW5kIG51bWJlcjwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNhc2UtdGFibGUtY29sdW1uXCIgd2lkdGg9XCIyMCVcIj5DYXNlIHR5cGUgPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY2FzZS10YWJsZS1jb2x1bW5cIiB3aWR0aD1cIjIwJVwiPlNlcnZpY2U8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjYXNlLXRhYmxlLWNvbHVtblwiIHdpZHRoPVwiMjAlXCI+U3RhdGU8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjYXNlLXRhYmxlLWNvbHVtblwiIHdpZHRoPVwiMjAlXCI+UmVhc29ucyBmb3IgY2FzZSBsaW5rPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nRm9yPVwibGV0IGNhc2Ugb2YgbGlua2VkQ2FzZXNGcm9tUmVzcG9uc2VcIj5cbiAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHlcIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiY2FzZXMvY2FzZS1kZXRhaWxzL3t7Y2FzZS5jYXNlUmVmZXJlbmNlfX1cIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyXCI+PHNwYW4gY2xhc3M9XCJnb3Z1ay1saW5rXCI+e3tjYXNlLmNhc2VOYW1lfX0gPGJyPlxuICAgICAgICAgICAgICAgICAge3tjYXNlLmNhc2VSZWZlcmVuY2UgfCBjY2RDYXNlUmVmZXJlbmNlfX08L3NwYW4+PC9hPjwvcD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZD48c3BhbiBbdGl0bGVdPVwiY2FzZS5jYXNlVHlwZURlc2NyaXB0aW9uXCI+e3tjYXNlLmNhc2VUeXBlfX08L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+e3tjYXNlLnNlcnZpY2V9fTwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3BhbiBbdGl0bGVdPVwiY2FzZS5zdGF0ZURlc2NyaXB0aW9uXCI+e3tjYXNlLnN0YXRlfX08L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgKm5nSWY9XCJjYXNlICYmIGNhc2UucmVhc29uc1wiPlxuICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHJlYXNvbiBvZiBjYXNlLnJlYXNvbnM7IGxldCBpID0gaW5kZXg7IGxldCBpc0xhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICAgIHt7cmVhc29uLnZhbHVlIHwgY2NkTGlua0Nhc2VzUmVhc29uVmFsdWV9fTxzcGFuPjxhIGNsYXNzPVwiZ292dWstIS1wYWRkaW5nLWxlZnQtMVwiXG4gICAgICAgICAgICAgICAgICBocmVmPVwiY2FzZXMvY2FzZS1kZXRhaWxzL3t7IGNhc2UuY2FzZVJlZmVyZW5jZSB9fVwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0xlYWRDYXNlT3JDb25zb2xpZGF0ZWQocmVhc29uLnZhbHVlLlJlYXNvbilcIj57e2dldENhc2VSZWZlcmVuZUxpbmsoY2FzZS5jYXNlUmVmZXJlbmNlKX19PC9hPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJyICpuZ0lmPVwiIWlzTGFzdFwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0lmPVwibGlua2VkQ2FzZXNGcm9tUmVzcG9uc2UubGVuZ3RoID09PSAwICYmICghaXNTZXJ2ZXJFcnJvciAmJiAhaXNTZXJ2ZXJSZWFzb25Db2RlRXJyb3IpXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiBjb2xzcGFuPVwiNVwiPlxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWNhc2VzLXRvLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2xpbmtlZC1jYXNlcy9jb21wb25lbnRzL2xpbmtlZC1jYXNlcy10YWJsZS9saW5rZWQtY2FzZXMtdG8tdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGlua2VkLWNhc2VzL2NvbXBvbmVudHMvbGlua2VkLWNhc2VzLXRhYmxlL2xpbmtlZC1jYXNlcy10by10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLGtDQUFrQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUU5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0lDa0JVLDZCQUVXO0lBQUEsWUFBMkM7SUFBQSxpQkFBSTs7OztJQUR0RyxxR0FBa0Q7SUFDSyxlQUEyQztJQUEzQyx1RUFBMkM7OztJQUN0RyxxQkFBc0I7OztJQUp4Qiw0QkFBNEU7SUFDMUUsWUFBMEM7O0lBQUEsNEJBQU07SUFBQSxvR0FFMEQ7SUFBQSxpQkFBTztJ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SSxJQUFJLEVBQUU7WUFDN0MsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFO1lBQy9ELE9BQU8sUUFBRSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsS0FBSywwQ0FBRSxhQUFhO1NBQ2pCLENBQUM7SUFDM0IsQ0FBQzs7QUE1SnVCLHlEQUE2QixHQUFHLFNBQVMsQ0FBQztBQUMxQyxxREFBeUIsR0FBRyxTQUFTLENBQUM7c0dBSG5ELDJCQUEyQjtnRUFBM0IsMkJBQTJCO1FDekJ4Qyw4QkFBb0Q7UUFDbEQsOEJBQW9DO1FBQ2xDLGlGQW9DUTtRQUNWLGlCQUFNO1FBQ1IsaUJBQU07O1FBdENNLGVBQTZCO1FBQTdCLGtEQUE2Qjs7dUZEdUI1QiwyQkFBMkI7Y0FMdkMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLFdBQVcsRUFBRSx3Q0FBd0M7Z0JBQ3JELFNBQVMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2FBQ3REOzZIQU9RLFNBQVM7a0JBRGYsS0FBSztZQUlDLGdCQUFnQjtrQkFEdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlVmlldyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmllbGQsIEp1cmlzZGljdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uJztcbmltcG9ydCB7IENhc2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2Nhc2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FzZUxpbmssIExpbmtSZWFzb24gfSBmcm9tICcuLi8uLi9kb21haW4vbGlua2VkLWNhc2VzLm1vZGVsJztcbmltcG9ydCB7IExpbmtlZENhc2VzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuaW50ZXJmYWNlIExpbmtlZENhc2VzUmVzcG9uc2Uge1xuICBjYXNlUmVmZXJlbmNlOiBzdHJpbmc7XG4gIGNhc2VOYW1lOiBzdHJpbmc7XG4gIGNhc2VUeXBlOiBzdHJpbmc7XG4gIGNhc2VUeXBlRGVzY3JpcHRpb246IHN0cmluZztcbiAgc2VydmljZTogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBzdGF0ZURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJlYXNvbnM6IHN0cmluZ1tdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtbGlua2VkLWNhc2VzLXRvLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpbmtlZC1jYXNlcy10by10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmtlZC1jYXNlcy10by10YWJsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIExpbmtlZENhc2VzVG9UYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQ0FTRV9DT05TT0xJREFURURfUkVBU09OX0NPREUgPSAnQ0xSQzAxNSc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENBU0VfUFJPR1JFU1NfUkVBU09OX0NPREUgPSAnQ0xSQzAxNic7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VGaWVsZDogQ2FzZUZpZWxkO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbm90aWZ5QVBJRmFpbHVyZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcihmYWxzZSk7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIHB1YmxpYyBpc0xvYWRlZDogYm9vbGVhbjtcbiAgcHVibGljIGxpbmtlZENhc2VzRnJvbVJlc3BvbnNlOiBMaW5rZWRDYXNlc1Jlc3BvbnNlW10gPSBbXTtcbiAgcHVibGljIGNhc2VJZDogc3RyaW5nO1xuICBwdWJsaWMgaXNTZXJ2ZXJFcnJvciA9IGZhbHNlO1xuICBwdWJsaWMgaXNTZXJ2ZXJSZWFzb25Db2RlRXJyb3IgPSBmYWxzZTtcbiAgcHVibGljIGp1cmlzZGljdGlvbnNSZXNwb25zZTogSnVyaXNkaWN0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpbmtlZENhc2VzU2VydmljZTogTGlua2VkQ2FzZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgbGV0IGxhYmVsRmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnb3Z1ay1oZWFkaW5nLWwnKTtcbiAgICBpZiAobGFiZWxGaWVsZCAmJiBsYWJlbEZpZWxkLmxlbmd0aCkge1xuICAgICAgbGFiZWxGaWVsZFswXS5yZXBsYWNlV2l0aCgnJyk7XG4gICAgfVxuICAgIGxhYmVsRmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWFkaW5nLWgyJyk7XG4gICAgaWYgKGxhYmVsRmllbGQgJiYgbGFiZWxGaWVsZC5sZW5ndGgpIHtcbiAgICAgIGxhYmVsRmllbGRbMF0ucmVwbGFjZVdpdGgoJycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhICYmIHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfaWQ7XG4gICAgdGhpcy5nZXRBbGxMaW5rZWRDYXNlSW5mb3JtYXRpb24oKTtcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UpIHtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VEZXRhaWxzID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2U7XG4gICAgfVxuICAgIHRoaXMuaXNTZXJ2ZXJSZWFzb25Db2RlRXJyb3IgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pc1NlcnZlclJlYXNvbkNvZGVFcnJvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlUmVmZXJlbmVMaW5rKGNhc2VSZWY6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhc2VSZWYuc2xpY2UodGhpcy5jYXNlSWQubGVuZ3RoIC0gNCk7XG4gIH1cblxuICBwdWJsaWMgc29ydExpbmtlZENhc2VzQnlSZWFzb25Db2RlKHNlYXJjaENhc2VzUmVzcG9uc2UpOiBMaW5rZWRDYXNlc1Jlc3BvbnNlW10ge1xuICAgIGNvbnN0IHRvcExldmVscmVzdWx0QXJyYXkgPSBbXTtcbiAgICBsZXQgc2Vjb25kTGV2ZWxyZXN1bHRBcnJheSA9IFtdO1xuICAgIHNlYXJjaENhc2VzUmVzcG9uc2UuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBjb25zdCByZWFzb25zID0gaXRlbSAmJiBpdGVtLnJlYXNvbnMgfHwgW107XG4gICAgICBjb25zdCBjb25zb2xpZGF0ZWRTdGF0ZVJlYXNvbiA9IHJlYXNvbnMubWFwKHggPT4geCkuZmluZChcbiAgICAgICAgcmVhc29uID0+IHJlYXNvbiA9PT0gTGlua2VkQ2FzZXNUb1RhYmxlQ29tcG9uZW50LkNBU0VfQ09OU09MSURBVEVEX1JFQVNPTl9DT0RFXG4gICAgICApO1xuICAgICAgY29uc3QgcHJvZ3Jlc3NlZFN0YXRlUmVhc29uID0gcmVhc29ucy5tYXAoeCA9PiB4KS5maW5kKFxuICAgICAgICByZWFzb24gPT4gcmVhc29uID09PSBMaW5rZWRDYXNlc1RvVGFibGVDb21wb25lbnQuQ0FTRV9QUk9HUkVTU19SRUFTT05fQ09ERVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGFycmF5SXRlbSA9IHsgLi4uaXRlbSB9O1xuICAgICAgaWYgKHByb2dyZXNzZWRTdGF0ZVJlYXNvbikge1xuICAgICAgICB0b3BMZXZlbHJlc3VsdEFycmF5LnB1c2goYXJyYXlJdGVtKTtcbiAgICAgIH0gZWxzZSBpZiAoY29uc29saWRhdGVkU3RhdGVSZWFzb24pIHtcbiAgICAgICAgc2Vjb25kTGV2ZWxyZXN1bHRBcnJheSA9IFt7IC4uLml0ZW0gfSwgLi4uc2Vjb25kTGV2ZWxyZXN1bHRBcnJheV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWNvbmRMZXZlbHJlc3VsdEFycmF5LnB1c2goeyAuLi5pdGVtIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0b3BMZXZlbHJlc3VsdEFycmF5LmNvbmNhdChzZWNvbmRMZXZlbHJlc3VsdEFycmF5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxMaW5rZWRDYXNlSW5mb3JtYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3Qgc2VhcmNoQ2FzZXNSZXNwb25zZSA9IFtdO1xuICAgIGNvbnN0IGNhc2VGaWVsZFZhbHVlID0gdGhpcy5jYXNlRmllbGQgJiYgdGhpcy5jYXNlRmllbGQuaWQgPT09ICdjYXNlTGlua3MnID8gdGhpcy5jYXNlRmllbGQudmFsdWUgOiBbXTtcbiAgICAvLyBHZW5lcmF0ZSB0aGUgbGlzdCBvZiBvYnNlcnZhYmxlc1xuICAgIGNhc2VGaWVsZFZhbHVlLmZvckVhY2goZmllbGRWYWx1ZSA9PiB7XG4gICAgICBpZiAoZmllbGRWYWx1ZSAmJiBmaWVsZFZhbHVlLmlkKSB7XG4gICAgICAgIHNlYXJjaENhc2VzUmVzcG9uc2UucHVzaCh0aGlzLmNhc2VzU2VydmljZS5nZXRDYXNlVmlld1YyKGZpZWxkVmFsdWUuaWQpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoc2VhcmNoQ2FzZXNSZXNwb25zZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VhcmNoQ2FzZXNCeUNhc2VJZHMoc2VhcmNoQ2FzZXNSZXNwb25zZSkuc3Vic2NyaWJlKChzZWFyY2hDYXNlczogYW55KSA9PiB7XG4gICAgICAgIGxldCBjYXNlc1Jlc3BvbnNlID0gW107XG4gICAgICAgIHNlYXJjaENhc2VzLmZvckVhY2gocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGNhc2VzUmVzcG9uc2UucHVzaCh0aGlzLm1hcFJlc3BvbnNlKHJlc3BvbnNlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYXNlc1Jlc3BvbnNlID0gdGhpcy5zb3J0UmVhc29uQ29kZXMoY2FzZXNSZXNwb25zZSk7XG4gICAgICAgIHRoaXMubGlua2VkQ2FzZXNGcm9tUmVzcG9uc2UgPSB0aGlzLnNvcnRMaW5rZWRDYXNlc0J5UmVhc29uQ29kZShjYXNlc1Jlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGNhc2VMaW5rcyA9IHRoaXMubGlua2VkQ2FzZXNGcm9tUmVzcG9uc2UubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjYXNlUmVmZXJlbmNlOiBpdGVtLmNhc2VSZWZlcmVuY2UsXG4gICAgICAgICAgICBjYXNlTmFtZTogaXRlbS5jYXNlTmFtZSxcbiAgICAgICAgICAgIGNhc2VTZXJ2aWNlOiBpdGVtLnNlcnZpY2UsXG4gICAgICAgICAgICBjYXNlVHlwZTogaXRlbS5jYXNlVHlwZSxcbiAgICAgICAgICAgIHVubGluazogZmFsc2UsXG4gICAgICAgICAgICByZWFzb25zOiBpdGVtLnJlYXNvbnMgJiYgaXRlbS5yZWFzb25zLm1hcChyZWFzb24gPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIFJlYXNvbjogcmVhc29uXG4gICAgICAgICAgICAgIH0gYXMgTGlua1JlYXNvbjtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0gYXMgQ2FzZUxpbms7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pbml0aWFsQ2FzZUxpbmtzID0gY2FzZUxpbmtzO1xuICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5saW5rZWRDYXNlcyA9IGNhc2VMaW5rcztcbiAgICAgICAgdGhpcy5pc1NlcnZlckVycm9yID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgICB0aGlzLmlzU2VydmVyRXJyb3IgPSB0cnVlO1xuICAgICAgICAgIHRoaXMubm90aWZ5QVBJRmFpbHVyZS5lbWl0KHRydWUpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzb3J0UmVhc29uQ29kZXMoc2VhcmNoQ2FzZXNSZXNwb25zZSk6IExpbmtlZENhc2VzUmVzcG9uc2VbXSB7XG4gICAgc2VhcmNoQ2FzZXNSZXNwb25zZS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmIChpdGVtPy5yZWFzb25zPy5sZW5ndGgpIHtcbiAgICAgICAgaXRlbS5yZWFzb25zLmZvckVhY2goKHJlYXNvbikgPT4ge1xuICAgICAgICAgIHJlYXNvbi5zb3J0T3JkZXIgPSB0aGlzLmdldFJlYXNvblNvcnRPcmRlcihyZWFzb24udmFsdWUuUmVhc29uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0ZW0ucmVhc29ucyA9IGl0ZW0ucmVhc29ucy5zb3J0KChhLCBiKSA9PiBhLnNvcnRPcmRlciAtIGIuc29ydE9yZGVyKTtcbiAgICAgICAgaXRlbS5zb3J0T3JkZXIgPSBpdGVtLnJlYXNvbnNbMF0uc29ydE9yZGVyO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNlYXJjaENhc2VzUmVzcG9uc2UgPSBzZWFyY2hDYXNlc1Jlc3BvbnNlPy5zb3J0KChhLCBiKSA9PiBhLnNvcnRPcmRlciAtIGIuc29ydE9yZGVyKTtcbiAgICByZXR1cm4gc2VhcmNoQ2FzZXNSZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWFzb25Tb3J0T3JkZXIocmVhc29uQ29kZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAocmVhc29uQ29kZSA9PT0gTGlua2VkQ2FzZXNUb1RhYmxlQ29tcG9uZW50LkNBU0VfUFJPR1JFU1NfUkVBU09OX0NPREUpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSBpZiAocmVhc29uQ29kZSA9PT0gTGlua2VkQ2FzZXNUb1RhYmxlQ29tcG9uZW50LkNBU0VfQ09OU09MSURBVEVEX1JFQVNPTl9DT0RFKSB7XG4gICAgICByZXR1cm4gMjtcbiAgICB9XG4gICAgcmV0dXJuIDM7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoQ2FzZXNCeUNhc2VJZHMoc2VhcmNoQ2FzZXNSZXNwb25zZTogYW55W10pOiBPYnNlcnZhYmxlPHVua25vd25bXT4ge1xuICAgIHJldHVybiBmb3JrSm9pbihzZWFyY2hDYXNlc1Jlc3BvbnNlKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNMZWFkQ2FzZU9yQ29uc29saWRhdGVkKHJlYXNvbkNvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZWFzb25Db2RlID09PSBMaW5rZWRDYXNlc1RvVGFibGVDb21wb25lbnQuQ0FTRV9QUk9HUkVTU19SRUFTT05fQ09ERSB8fFxuICAgICAgcmVhc29uQ29kZSA9PT0gTGlua2VkQ2FzZXNUb1RhYmxlQ29tcG9uZW50LkNBU0VfQ09OU09MSURBVEVEX1JFQVNPTl9DT0RFO1xuICB9XG5cbiAgcHVibGljIG1hcFJlc3BvbnNlKGVzU2VhcmNoQ2FzZXNSZXNwb25zZSk6IExpbmtlZENhc2VzUmVzcG9uc2Uge1xuICAgIGNvbnN0IGNhc2VJbmZvID0gdGhpcy5jYXNlRmllbGQudmFsdWUuZmluZChpdGVtID0+IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5DYXNlUmVmZXJlbmNlID09PSBlc1NlYXJjaENhc2VzUmVzcG9uc2UuY2FzZV9pZCk7XG4gICAgcmV0dXJuIGNhc2VJbmZvICYmIHtcbiAgICAgIGNhc2VSZWZlcmVuY2U6IGVzU2VhcmNoQ2FzZXNSZXNwb25zZS5jYXNlX2lkLFxuICAgICAgY2FzZU5hbWU6IHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmdldENhc2VOYW1lKGVzU2VhcmNoQ2FzZXNSZXNwb25zZSksXG4gICAgICBjYXNlVHlwZTogZXNTZWFyY2hDYXNlc1Jlc3BvbnNlLmNhc2VfdHlwZS5uYW1lIHx8ICcnLFxuICAgICAgY2FzZVR5cGVEZXNjcmlwdGlvbjogZXNTZWFyY2hDYXNlc1Jlc3BvbnNlLmNhc2VfdHlwZS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIHNlcnZpY2U6IGVzU2VhcmNoQ2FzZXNSZXNwb25zZS5jYXNlX3R5cGUgJiYgZXNTZWFyY2hDYXNlc1Jlc3BvbnNlLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICBzdGF0ZTogZXNTZWFyY2hDYXNlc1Jlc3BvbnNlLnN0YXRlLm5hbWUgfHwgJycsXG4gICAgICBzdGF0ZURlc2NyaXB0aW9uOiBlc1NlYXJjaENhc2VzUmVzcG9uc2Uuc3RhdGUuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICByZWFzb25zOiBjYXNlSW5mbz8udmFsdWU/LlJlYXNvbkZvckxpbmtcbiAgICB9IGFzIExpbmtlZENhc2VzUmVzcG9uc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvdyBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMlwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbFwiPlxuICAgIDx0YWJsZSAqbmdJZj1cImxpbmtlZENhc2VzRnJvbVJlc3BvbnNlXCIgYXJpYS1kZXNjcmliZWRieT1cInRhYmxlIHRvIGRpc3BsYXkgY2FzZXMgbGlua2VkIFRPXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY2FzZS10YWJsZS1jb2x1bW5cIiB3aWR0aD1cIjIwJVwiPkNhc2UgbmFtZSBhbmQgbnVtYmVyPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgY2FzZS10YWJsZS1jb2x1bW5cIiB3aWR0aD1cIjIwJVwiPkNhc2UgdHlwZSA8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBjYXNlLXRhYmxlLWNvbHVtblwiIHdpZHRoPVwiMjAlXCI+U2VydmljZTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNhc2UtdGFibGUtY29sdW1uXCIgd2lkdGg9XCIyMCVcIj5TdGF0ZTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGNhc2UtdGFibGUtY29sdW1uXCIgd2lkdGg9XCIyMCVcIj5SZWFzb25zIGZvciBjYXNlIGxpbms8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCI+XG4gICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdGb3I9XCJsZXQgY2FzZSBvZiBsaW5rZWRDYXNlc0Zyb21SZXNwb25zZVwiPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZ292dWstYm9keVwiPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJjYXNlcy9jYXNlLWRldGFpbHMve3tjYXNlLmNhc2VSZWZlcmVuY2V9fVwiXG4gICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXJcIj48c3BhbiBjbGFzcz1cImdvdnVrLWxpbmtcIj57e2Nhc2UuY2FzZU5hbWV9fSA8YnI+XG4gICAgICAgICAgICAgICAgICB7e2Nhc2UuY2FzZVJlZmVyZW5jZSB8IGNjZENhc2VSZWZlcmVuY2V9fTwvc3Bhbj48L2E+PC9wPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuIFt0aXRsZV09XCJjYXNlLmNhc2VUeXBlRGVzY3JpcHRpb25cIj57e2Nhc2UuY2FzZVR5cGV9fTwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj57e2Nhc2Uuc2VydmljZX19PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuIFt0aXRsZV09XCJjYXNlLnN0YXRlRGVzY3JpcHRpb25cIj57e2Nhc2Uuc3RhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCAqbmdJZj1cImNhc2UgJiYgY2FzZS5yZWFzb25zXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgcmVhc29uIG9mIGNhc2UucmVhc29uczsgbGV0IGkgPSBpbmRleDsgbGV0IGlzTGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgICAge3tyZWFzb24udmFsdWUgfCBjY2RMaW5rQ2FzZXNSZWFzb25WYWx1ZX19PHNwYW4+PGEgY2xhc3M9XCJnb3Z1ay0hLXBhZGRpbmctbGVmdC0xXCJcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCJjYXNlcy9jYXNlLWRldGFpbHMve3sgY2FzZS5jYXNlUmVmZXJlbmNlIH19XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzTGVhZENhc2VPckNvbnNvbGlkYXRlZChyZWFzb24udmFsdWUuUmVhc29uKVwiPnt7Z2V0Q2FzZVJlZmVyZW5lTGluayhjYXNlLmNhc2VSZWZlcmVuY2UpfX08L2E+PC9zcGFuPlxuICAgICAgICAgICAgICA8YnIgKm5nSWY9XCIhaXNMYXN0XCIgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nSWY9XCJsaW5rZWRDYXNlc0Zyb21SZXNwb25zZS5sZW5ndGggPT09IDAgJiYgKCFpc1NlcnZlckVycm9yICYmICFpc1NlcnZlclJlYXNvbkNvZGVFcnJvcilcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiIGNvbHNwYW49XCI1XCI+XG4gICAgICAgICAgICBOb25lXG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==