@hmcts/ccd-case-ui-toolkit 7.0.7-task-completion-error-message → 7.0.7-welsh-translation-fixes

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 (359) hide show
  1. package/esm2020/lib/components/banners/notification-banner/domain/notification-banner-config.model.mjs +1 -1
  2. package/esm2020/lib/components/banners/notification-banner/notification-banner.component.mjs +41 -30
  3. package/esm2020/lib/shared/commons/constants.mjs +1 -2
  4. package/esm2020/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +8 -18
  5. package/esm2020/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +2 -2
  6. package/esm2020/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.mjs +2 -2
  7. package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +2 -11
  8. package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.mjs +7 -0
  9. package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +166 -123
  10. package/esm2020/lib/shared/components/case-editor/case-editor.module.mjs +17 -22
  11. package/esm2020/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +2 -3
  12. package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +2 -2
  13. package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +2 -2
  14. package/esm2020/lib/shared/components/case-editor/services/case-flag-state.service.mjs +19 -0
  15. package/esm2020/lib/shared/components/case-editor/services/cases.service.mjs +6 -1
  16. package/esm2020/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +1 -1
  17. package/esm2020/lib/shared/components/case-editor/services/work-allocation.service.mjs +1 -1
  18. package/esm2020/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +12 -38
  19. package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +51 -24
  20. package/esm2020/lib/shared/components/case-viewer/case-viewer.module.mjs +8 -5
  21. package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +19 -20
  22. package/esm2020/lib/shared/components/palette/base-field/field-read.component.mjs +1 -1
  23. package/esm2020/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +70 -31
  24. package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +249 -46
  25. package/esm2020/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.mjs +140 -71
  26. package/esm2020/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +165 -0
  27. package/esm2020/lib/shared/components/palette/case-flag/components/index.mjs +4 -1
  28. package/esm2020/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +73 -78
  29. package/esm2020/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.mjs +6 -0
  30. package/esm2020/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +133 -99
  31. package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +22 -9
  32. package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +213 -112
  33. package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +267 -0
  34. package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +439 -104
  35. package/esm2020/lib/shared/components/palette/case-flag/domain/case-flag-state.model.mjs +1 -1
  36. package/esm2020/lib/shared/components/palette/case-flag/domain/case-flag.model.mjs +1 -1
  37. package/esm2020/lib/shared/components/palette/case-flag/domain/language.model.mjs +1 -1
  38. package/esm2020/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.mjs +2 -1
  39. package/esm2020/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.mjs +3 -1
  40. package/esm2020/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.mjs +12 -0
  41. package/esm2020/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.mjs +15 -0
  42. package/esm2020/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.mjs +13 -0
  43. package/esm2020/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.mjs +3 -2
  44. package/esm2020/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.mjs +11 -3
  45. package/esm2020/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.mjs +6 -0
  46. package/esm2020/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.mjs +6 -0
  47. package/esm2020/lib/shared/components/palette/case-flag/enums/index.mjs +9 -2
  48. package/esm2020/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.mjs +3 -2
  49. package/esm2020/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.mjs +4 -1
  50. package/esm2020/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.mjs +6 -0
  51. package/esm2020/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.mjs +6 -0
  52. package/esm2020/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.mjs +5 -1
  53. package/esm2020/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.mjs +7 -2
  54. package/esm2020/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.mjs +10 -7
  55. package/esm2020/lib/shared/components/palette/case-flag/index.mjs +2 -1
  56. package/esm2020/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.mjs +41 -0
  57. package/esm2020/lib/shared/components/palette/case-flag/pipes/index.mjs +5 -0
  58. package/esm2020/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.mjs +41 -0
  59. package/esm2020/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.mjs +109 -0
  60. package/esm2020/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.mjs +77 -0
  61. package/esm2020/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +156 -57
  62. package/esm2020/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +385 -172
  63. package/esm2020/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +8 -10
  64. package/esm2020/lib/shared/components/palette/collection/write-collection-field.component.mjs +49 -54
  65. package/esm2020/lib/shared/components/palette/complex/read-complex-field.component.mjs +12 -14
  66. package/esm2020/lib/shared/components/palette/complex/sort-order.mjs +7 -0
  67. package/esm2020/lib/shared/components/palette/complex/write-complex-field.component.mjs +5 -6
  68. package/esm2020/lib/shared/components/palette/date/write-date-field.component.mjs +8 -10
  69. package/esm2020/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +8 -10
  70. package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +23 -24
  71. package/esm2020/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.mjs +8 -10
  72. package/esm2020/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.mjs +8 -10
  73. package/esm2020/lib/shared/components/palette/email/write-email-field.component.mjs +8 -10
  74. package/esm2020/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.mjs +8 -10
  75. package/esm2020/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.mjs +8 -10
  76. package/esm2020/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +9 -7
  77. package/esm2020/lib/shared/components/palette/index.mjs +3 -1
  78. package/esm2020/lib/shared/components/palette/markdown/index.mjs +2 -1
  79. package/esm2020/lib/shared/components/palette/markdown/markdown-component.module.mjs +40 -0
  80. package/esm2020/lib/shared/components/palette/markdown/markdown.component.mjs +9 -7
  81. package/esm2020/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.mjs +8 -10
  82. package/esm2020/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.mjs +8 -10
  83. package/esm2020/lib/shared/components/palette/number/write-number-field.component.mjs +8 -10
  84. package/esm2020/lib/shared/components/palette/palette.module.mjs +148 -49
  85. package/esm2020/lib/shared/components/palette/palette.service.mjs +4 -2
  86. package/esm2020/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.mjs +8 -10
  87. package/esm2020/lib/shared/components/palette/query-management/__mocks__/index.mjs +210 -0
  88. package/esm2020/lib/shared/components/palette/query-management/components/index.mjs +13 -0
  89. package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +42 -0
  90. package/esm2020/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +144 -0
  91. package/esm2020/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.mjs +64 -0
  92. package/esm2020/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +60 -0
  93. package/esm2020/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +281 -0
  94. package/esm2020/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +327 -0
  95. package/esm2020/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.mjs +22 -0
  96. package/esm2020/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +164 -0
  97. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.mjs +74 -0
  98. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.mjs +107 -0
  99. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +201 -0
  100. package/esm2020/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +101 -0
  101. package/esm2020/lib/shared/components/palette/query-management/enums/index.mjs +6 -0
  102. package/esm2020/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.mjs +5 -0
  103. package/esm2020/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.mjs +6 -0
  104. package/esm2020/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.mjs +10 -0
  105. package/esm2020/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.mjs +6 -0
  106. package/esm2020/lib/shared/components/palette/query-management/index.mjs +7 -0
  107. package/esm2020/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +2 -0
  108. package/esm2020/lib/shared/components/palette/query-management/models/index.mjs +8 -0
  109. package/esm2020/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.mjs +2 -0
  110. package/esm2020/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.mjs +2 -0
  111. package/esm2020/lib/shared/components/palette/query-management/models/query-create-context.enum.mjs +9 -0
  112. package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.mjs +2 -0
  113. package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.mjs +21 -0
  114. package/esm2020/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +38 -0
  115. package/esm2020/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +121 -0
  116. package/esm2020/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +22 -0
  117. package/esm2020/lib/shared/components/palette/text/write-text-field.component.mjs +8 -10
  118. package/esm2020/lib/shared/components/palette/text-area/write-text-area-field.component.mjs +8 -10
  119. package/esm2020/lib/shared/components/palette/utils/field-label.pipe.mjs +14 -7
  120. package/esm2020/lib/shared/components/palette/utils/first-error.pipe.mjs +16 -9
  121. package/esm2020/lib/shared/components/palette/yes-no/read-yes-no-field.component.mjs +10 -5
  122. package/esm2020/lib/shared/components/palette/yes-no/write-yes-no-field.component.mjs +12 -13
  123. package/esm2020/lib/shared/components/search-filters/search-filters.component.mjs +24 -4
  124. package/esm2020/lib/shared/domain/case-flag/flag-type.model.mjs +16 -2
  125. package/esm2020/lib/shared/domain/case-view/case-view-event-ids.enum.mjs +6 -0
  126. package/esm2020/lib/shared/domain/case-view/case-view-trigger.model.mjs +1 -2
  127. package/esm2020/lib/shared/domain/definition/display-context-enum.model.mjs +3 -1
  128. package/esm2020/lib/shared/domain/work-allocation/task-response.model.mjs +1 -1
  129. package/esm2020/lib/shared/fixture/shared.test.fixture.mjs +2 -1
  130. package/esm2020/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.mjs +16 -0
  131. package/esm2020/lib/shared/pipes/generic/index.mjs +2 -0
  132. package/esm2020/lib/shared/pipes/index.mjs +3 -2
  133. package/esm2020/lib/shared/pipes/pipes.module.mjs +9 -5
  134. package/esm2020/lib/shared/services/alert/alert.service.mjs +1 -1
  135. package/esm2020/lib/shared/services/case-flag/case-flag-refdata.service.mjs +9 -3
  136. package/esm2020/lib/shared/services/fields/fields.utils.mjs +22 -4
  137. package/esm2020/lib/shared/services/form/form-value.service.mjs +14 -11
  138. package/esm2020/lib/shared/services/jurisdiction/jurisdiction.service.mjs +2 -1
  139. package/esm2020/lib/shared/services/request/request.options.builder.mjs +7 -1
  140. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +8805 -4294
  141. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  142. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +9786 -5695
  143. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  144. package/lib/components/banners/notification-banner/domain/notification-banner-config.model.d.ts +6 -5
  145. package/lib/components/banners/notification-banner/domain/notification-banner-config.model.d.ts.map +1 -1
  146. package/lib/shared/commons/constants.d.ts +0 -1
  147. package/lib/shared/commons/constants.d.ts.map +1 -1
  148. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +2 -3
  149. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  150. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  151. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.d.ts +6 -0
  152. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit-titles.enum.d.ts.map +1 -0
  153. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +1 -1
  154. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  155. package/lib/shared/components/case-editor/case-editor.module.d.ts +17 -20
  156. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  157. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -1
  158. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  159. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts +11 -0
  160. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts.map +1 -0
  161. package/lib/shared/components/case-editor/services/cases.service.d.ts +1 -0
  162. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  163. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts +2 -2
  164. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
  165. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +2 -5
  166. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  167. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +7 -3
  168. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  169. package/lib/shared/components/case-viewer/case-viewer.module.d.ts +4 -4
  170. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
  171. package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
  172. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +6 -2
  173. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
  174. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts +25 -8
  175. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts.map +1 -1
  176. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts +2 -1
  177. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts.map +1 -1
  178. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +28 -0
  179. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts.map +1 -0
  180. package/lib/shared/components/palette/case-flag/components/index.d.ts +3 -0
  181. package/lib/shared/components/palette/case-flag/components/index.d.ts.map +1 -1
  182. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +4 -8
  183. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  184. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.d.ts +5 -0
  185. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.d.ts.map +1 -0
  186. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +10 -8
  187. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
  188. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +2 -1
  189. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  190. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +16 -9
  191. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  192. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts +27 -0
  193. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts.map +1 -0
  194. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +26 -11
  195. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  196. package/lib/shared/components/palette/case-flag/domain/case-flag-state.model.d.ts +1 -10
  197. package/lib/shared/components/palette/case-flag/domain/case-flag-state.model.d.ts.map +1 -1
  198. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts +12 -1
  199. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts.map +1 -1
  200. package/lib/shared/components/palette/case-flag/domain/language.model.d.ts +1 -0
  201. package/lib/shared/components/palette/case-flag/domain/language.model.d.ts.map +1 -1
  202. package/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.d.ts +1 -0
  203. package/lib/shared/components/palette/case-flag/enums/add-comments-error-message.enum.d.ts.map +1 -1
  204. package/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.d.ts +3 -1
  205. package/lib/shared/components/palette/case-flag/enums/add-comments-step.enum.d.ts.map +1 -1
  206. package/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.d.ts +11 -0
  207. package/lib/shared/components/palette/case-flag/enums/case-flag-check-your-answers-step.enum.d.ts.map +1 -0
  208. package/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.d.ts +14 -0
  209. package/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.d.ts.map +1 -0
  210. package/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.d.ts +12 -0
  211. package/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.d.ts.map +1 -0
  212. package/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.d.ts +2 -1
  213. package/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.d.ts.map +1 -1
  214. package/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.d.ts +11 -3
  215. package/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.d.ts.map +1 -1
  216. package/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.d.ts +5 -0
  217. package/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.d.ts.map +1 -0
  218. package/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.d.ts +5 -0
  219. package/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.d.ts.map +1 -0
  220. package/lib/shared/components/palette/case-flag/enums/index.d.ts +8 -1
  221. package/lib/shared/components/palette/case-flag/enums/index.d.ts.map +1 -1
  222. package/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.d.ts +2 -1
  223. package/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.d.ts.map +1 -1
  224. package/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.d.ts +3 -0
  225. package/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.d.ts.map +1 -1
  226. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.d.ts +5 -0
  227. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.d.ts.map +1 -0
  228. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.d.ts +5 -0
  229. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.d.ts.map +1 -0
  230. package/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.d.ts +5 -1
  231. package/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.d.ts.map +1 -1
  232. package/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.d.ts +7 -2
  233. package/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.d.ts.map +1 -1
  234. package/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.d.ts +7 -4
  235. package/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.d.ts.map +1 -1
  236. package/lib/shared/components/palette/case-flag/index.d.ts +1 -0
  237. package/lib/shared/components/palette/case-flag/index.d.ts.map +1 -1
  238. package/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.d.ts +19 -0
  239. package/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.d.ts.map +1 -0
  240. package/lib/shared/components/palette/case-flag/pipes/index.d.ts +5 -0
  241. package/lib/shared/components/palette/case-flag/pipes/index.d.ts.map +1 -0
  242. package/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.d.ts +18 -0
  243. package/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.d.ts.map +1 -0
  244. package/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.d.ts +25 -0
  245. package/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.d.ts.map +1 -0
  246. package/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.d.ts +21 -0
  247. package/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.d.ts.map +1 -0
  248. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts +12 -8
  249. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
  250. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +52 -27
  251. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  252. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +3 -2
  253. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  254. package/lib/shared/components/palette/complex/read-complex-field.component.d.ts.map +1 -1
  255. package/lib/shared/components/palette/complex/sort-order.d.ts +6 -0
  256. package/lib/shared/components/palette/complex/sort-order.d.ts.map +1 -0
  257. package/lib/shared/components/palette/index.d.ts +2 -0
  258. package/lib/shared/components/palette/index.d.ts.map +1 -1
  259. package/lib/shared/components/palette/markdown/index.d.ts +1 -0
  260. package/lib/shared/components/palette/markdown/index.d.ts.map +1 -1
  261. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts +13 -0
  262. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts.map +1 -0
  263. package/lib/shared/components/palette/palette.module.d.ts +140 -118
  264. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  265. package/lib/shared/components/palette/palette.service.d.ts.map +1 -1
  266. package/lib/shared/components/palette/query-management/__mocks__/index.d.ts +11 -0
  267. package/lib/shared/components/palette/query-management/__mocks__/index.d.ts.map +1 -0
  268. package/lib/shared/components/palette/query-management/components/index.d.ts +13 -0
  269. package/lib/shared/components/palette/query-management/components/index.d.ts.map +1 -0
  270. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts +8 -0
  271. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts.map +1 -0
  272. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts +22 -0
  273. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts.map +1 -0
  274. package/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.d.ts +11 -0
  275. package/lib/shared/components/palette/query-management/components/query-attachments-read/query-attachments-read.component.d.ts.map +1 -0
  276. package/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.d.ts +10 -0
  277. package/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.d.ts.map +1 -0
  278. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +30 -0
  279. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -0
  280. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +16 -0
  281. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +1 -0
  282. package/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.d.ts +9 -0
  283. package/lib/shared/components/palette/query-management/components/query-event-completion/query-event-completion.component.d.ts.map +1 -0
  284. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts +18 -0
  285. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts.map +1 -0
  286. package/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.d.ts +20 -0
  287. package/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.d.ts.map +1 -0
  288. package/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.d.ts +20 -0
  289. package/lib/shared/components/palette/query-management/components/query-write/query-write-date-input/query-write-date-input.component.d.ts.map +1 -0
  290. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts +11 -0
  291. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts.map +1 -0
  292. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts +21 -0
  293. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts.map +1 -0
  294. package/lib/shared/components/palette/query-management/enums/index.d.ts +6 -0
  295. package/lib/shared/components/palette/query-management/enums/index.d.ts.map +1 -0
  296. package/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.d.ts +4 -0
  297. package/lib/shared/components/palette/query-management/enums/qualifying-questions-error-message.enum.d.ts.map +1 -0
  298. package/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.d.ts +5 -0
  299. package/lib/shared/components/palette/query-management/enums/query-item-response-status.enum.d.ts.map +1 -0
  300. package/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.d.ts +9 -0
  301. package/lib/shared/components/palette/query-management/enums/raise-query-error-message.enum.d.ts.map +1 -0
  302. package/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.d.ts +5 -0
  303. package/lib/shared/components/palette/query-management/enums/respond-to-query-error-messages.enum.d.ts.map +1 -0
  304. package/lib/shared/components/palette/query-management/index.d.ts +7 -0
  305. package/lib/shared/components/palette/query-management/index.d.ts.map +1 -0
  306. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts +27 -0
  307. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts.map +1 -0
  308. package/lib/shared/components/palette/query-management/models/index.d.ts +8 -0
  309. package/lib/shared/components/palette/query-management/models/index.d.ts.map +1 -0
  310. package/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.d.ts +5 -0
  311. package/lib/shared/components/palette/query-management/models/qualifying-questions/casetype-qualifying-questions.model.d.ts.map +1 -0
  312. package/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.d.ts +6 -0
  313. package/lib/shared/components/palette/query-management/models/qualifying-questions/qualifying-question.model.d.ts.map +1 -0
  314. package/lib/shared/components/palette/query-management/models/query-create-context.enum.d.ts +8 -0
  315. package/lib/shared/components/palette/query-management/models/query-create-context.enum.d.ts.map +1 -0
  316. package/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.d.ts +7 -0
  317. package/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.d.ts.map +1 -0
  318. package/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.d.ts +10 -0
  319. package/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.d.ts.map +1 -0
  320. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts +22 -0
  321. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts.map +1 -0
  322. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +18 -0
  323. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +1 -0
  324. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +12 -0
  325. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -0
  326. package/lib/shared/components/palette/utils/field-label.pipe.d.ts +3 -0
  327. package/lib/shared/components/palette/utils/field-label.pipe.d.ts.map +1 -1
  328. package/lib/shared/components/palette/utils/first-error.pipe.d.ts +8 -5
  329. package/lib/shared/components/palette/utils/first-error.pipe.d.ts.map +1 -1
  330. package/lib/shared/components/palette/yes-no/read-yes-no-field.component.d.ts.map +1 -1
  331. package/lib/shared/components/search-filters/search-filters.component.d.ts.map +1 -1
  332. package/lib/shared/domain/case-flag/flag-type.model.d.ts +6 -1
  333. package/lib/shared/domain/case-flag/flag-type.model.d.ts.map +1 -1
  334. package/lib/shared/domain/case-view/case-view-event-ids.enum.d.ts +5 -0
  335. package/lib/shared/domain/case-view/case-view-event-ids.enum.d.ts.map +1 -0
  336. package/lib/shared/domain/case-view/case-view-trigger.model.d.ts +0 -1
  337. package/lib/shared/domain/case-view/case-view-trigger.model.d.ts.map +1 -1
  338. package/lib/shared/domain/definition/display-context-enum.model.d.ts +3 -1
  339. package/lib/shared/domain/definition/display-context-enum.model.d.ts.map +1 -1
  340. package/lib/shared/domain/work-allocation/task-response.model.d.ts +1 -1
  341. package/lib/shared/domain/work-allocation/task-response.model.d.ts.map +1 -1
  342. package/lib/shared/fixture/shared.test.fixture.d.ts.map +1 -1
  343. package/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.d.ts +8 -0
  344. package/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.d.ts.map +1 -0
  345. package/lib/shared/pipes/generic/index.d.ts +2 -0
  346. package/lib/shared/pipes/generic/index.d.ts.map +1 -0
  347. package/lib/shared/pipes/index.d.ts +2 -1
  348. package/lib/shared/pipes/index.d.ts.map +1 -1
  349. package/lib/shared/pipes/pipes.module.d.ts +3 -2
  350. package/lib/shared/pipes/pipes.module.d.ts.map +1 -1
  351. package/lib/shared/services/alert/alert.service.d.ts.map +1 -1
  352. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts +3 -2
  353. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts.map +1 -1
  354. package/lib/shared/services/fields/fields.utils.d.ts +1 -0
  355. package/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
  356. package/lib/shared/services/form/form-value.service.d.ts.map +1 -1
  357. package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts.map +1 -1
  358. package/lib/shared/services/request/request.options.builder.d.ts.map +1 -1
  359. package/package.json +1 -1
@@ -1,91 +1,169 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { FormControl, FormGroup } from '@angular/forms';
3
3
  import { catchError, switchMap } from 'rxjs/operators';
4
+ import { FlagType } from '../../../../../domain/case-flag';
4
5
  import { CaseFlagRefdataService } from '../../../../../services';
5
6
  import { RefdataCaseFlagType } from '../../../../../services/case-flag/refdata-case-flag-type.enum';
6
- import { CaseFlagFieldState, CaseFlagWizardStepTitle, SelectFlagTypeErrorMessage } from '../../enums';
7
+ import { CaseFlagFieldState, CaseFlagFormFields, CaseFlagWizardStepTitle, SelectFlagTypeErrorMessage } from '../../enums';
8
+ import { SearchLanguageInterpreterControlNames } from '../search-language-interpreter/search-language-interpreter-control-names.enum';
7
9
  import * as i0 from "@angular/core";
8
10
  import * as i1 from "../../../../../services";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "@angular/forms";
11
- function SelectFlagTypeComponent_div_6_Template(rf, ctx) { if (rf & 1) {
12
- i0.ɵɵelementStart(0, "div", 10)(1, "span", 11);
13
- i0.ɵɵtext(2, "Error:");
11
+ function SelectFlagTypeComponent_ng_container_0_ng_container_5_Template(rf, ctx) { if (rf & 1) {
12
+ i0.ɵɵelementContainerStart(0);
13
+ i0.ɵɵtext(1);
14
+ i0.ɵɵpipe(2, "rpxTranslate");
15
+ i0.ɵɵpipe(3, "rpxTranslate");
16
+ i0.ɵɵelementContainerEnd();
17
+ } if (rf & 2) {
18
+ const ctx_r2 = i0.ɵɵnextContext(2);
19
+ i0.ɵɵadvance(1);
20
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.isDisplayContextParameterExternal ? i0.ɵɵpipeBind1(2, 1, ctx_r2.caseFlagWizardStepTitle.SELECT_CASE_FLAG_EXTERNAL) : i0.ɵɵpipeBind1(3, 3, ctx_r2.caseFlagWizardStepTitle.SELECT_CASE_FLAG), " ");
21
+ } }
22
+ function SelectFlagTypeComponent_ng_container_0_ng_template_6_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵtext(0);
24
+ i0.ɵɵpipe(1, "flagFieldDisplay");
25
+ } if (rf & 2) {
26
+ const ctx_r4 = i0.ɵɵnextContext(2);
27
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(1, 1, ctx_r4.cachedFlagType, "name"), " ");
28
+ } }
29
+ function SelectFlagTypeComponent_ng_container_0_div_8_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelementStart(0, "div", 13)(1, "span", 14);
31
+ i0.ɵɵtext(2);
32
+ i0.ɵɵpipe(3, "rpxTranslate");
14
33
  i0.ɵɵelementEnd();
15
- i0.ɵɵtext(3);
34
+ i0.ɵɵtext(4);
35
+ i0.ɵɵpipe(5, "rpxTranslate");
16
36
  i0.ɵɵelementEnd();
17
37
  } if (rf & 2) {
18
- const ctx_r0 = i0.ɵɵnextContext();
19
- i0.ɵɵadvance(3);
20
- i0.ɵɵtextInterpolate1(" ", ctx_r0.flagTypeNotSelectedErrorMessage, " ");
38
+ const ctx_r5 = i0.ɵɵnextContext(2);
39
+ i0.ɵɵadvance(2);
40
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
41
+ i0.ɵɵadvance(2);
42
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r5.flagTypeNotSelectedErrorMessage), " ");
21
43
  } }
22
- function SelectFlagTypeComponent_div_8_Template(rf, ctx) { if (rf & 1) {
23
- const _r7 = i0.ɵɵgetCurrentView();
24
- i0.ɵɵelementStart(0, "div", 12)(1, "input", 13);
25
- i0.ɵɵlistener("change", function SelectFlagTypeComponent_div_8_Template_input_change_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r7); const flagType_r4 = restoredCtx.$implicit; const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.onFlagTypeChanged(flagType_r4)); });
26
- i0.ɵɵelementEnd();
27
- i0.ɵɵelementStart(2, "label", 14);
44
+ function SelectFlagTypeComponent_ng_container_0_div_10_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelementStart(0, "div", 15);
46
+ i0.ɵɵelement(1, "input", 16);
47
+ i0.ɵɵelementStart(2, "label", 17);
28
48
  i0.ɵɵtext(3);
49
+ i0.ɵɵpipe(4, "flagFieldDisplay");
29
50
  i0.ɵɵelementEnd()();
30
51
  } if (rf & 2) {
31
- const flagType_r4 = ctx.$implicit;
32
- const i_r5 = ctx.index;
33
- const ctx_r1 = i0.ɵɵnextContext();
52
+ const flagType_r8 = ctx.$implicit;
53
+ const i_r9 = ctx.index;
54
+ const ctx_r6 = i0.ɵɵnextContext(2);
34
55
  i0.ɵɵadvance(1);
35
- i0.ɵɵpropertyInterpolate1("id", "flag-type-", i_r5, "");
36
- i0.ɵɵproperty("name", ctx_r1.flagTypeControlName)("value", flagType_r4.flagCode === "CATGRY" ? flagType_r4.flagCode + i_r5 : flagType_r4.flagCode)("formControlName", ctx_r1.flagTypeControlName);
56
+ i0.ɵɵpropertyInterpolate1("id", "flag-type-", i_r9, "");
57
+ i0.ɵɵproperty("name", ctx_r6.caseFlagFormField.FLAG_TYPE)("value", flagType_r8)("formControlName", ctx_r6.caseFlagFormField.FLAG_TYPE);
37
58
  i0.ɵɵadvance(1);
38
- i0.ɵɵpropertyInterpolate1("for", "flag-type-", i_r5, "");
59
+ i0.ɵɵpropertyInterpolate1("for", "flag-type-", i_r9, "");
39
60
  i0.ɵɵadvance(1);
40
- i0.ɵɵtextInterpolate(flagType_r4.name);
61
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 6, flagType_r8, "name"), " ");
41
62
  } }
42
- function SelectFlagTypeComponent_div_9_div_4_Template(rf, ctx) { if (rf & 1) {
43
- i0.ɵɵelementStart(0, "div", 19)(1, "span", 11);
44
- i0.ɵɵtext(2, "Error:");
63
+ function SelectFlagTypeComponent_ng_container_0_div_11_div_6_Template(rf, ctx) { if (rf & 1) {
64
+ i0.ɵɵelementStart(0, "div", 23)(1, "span", 14);
65
+ i0.ɵɵtext(2);
66
+ i0.ɵɵpipe(3, "rpxTranslate");
45
67
  i0.ɵɵelementEnd();
46
- i0.ɵɵtext(3);
68
+ i0.ɵɵtext(4);
69
+ i0.ɵɵpipe(5, "rpxTranslate");
47
70
  i0.ɵɵelementEnd();
48
71
  } if (rf & 2) {
49
- const ctx_r8 = i0.ɵɵnextContext(2);
50
- i0.ɵɵadvance(3);
51
- i0.ɵɵtextInterpolate1(" ", ctx_r8.flagTypeErrorMessage, " ");
72
+ const ctx_r10 = i0.ɵɵnextContext(3);
73
+ i0.ɵɵadvance(2);
74
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
75
+ i0.ɵɵadvance(2);
76
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r10.flagTypeErrorMessage), " ");
77
+ } }
78
+ function SelectFlagTypeComponent_ng_container_0_div_11_div_8_Template(rf, ctx) { if (rf & 1) {
79
+ i0.ɵɵelementStart(0, "div", 24);
80
+ i0.ɵɵelement(1, "input", 25);
81
+ i0.ɵɵelementStart(2, "label", 26);
82
+ i0.ɵɵtext(3);
83
+ i0.ɵɵpipe(4, "rpxTranslate");
84
+ i0.ɵɵelementEnd()();
85
+ } if (rf & 2) {
86
+ const ctx_r11 = i0.ɵɵnextContext(3);
87
+ i0.ɵɵadvance(1);
88
+ i0.ɵɵproperty("name", ctx_r11.caseFlagFormField.IS_VISIBLE_INTERNALLY_ONLY)("formControlName", ctx_r11.caseFlagFormField.IS_VISIBLE_INTERNALLY_ONLY);
89
+ i0.ɵɵadvance(2);
90
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 3, "This flag should only be visible to HMCTS Staff"), " ");
52
91
  } }
53
92
  const _c0 = function (a0) { return { "form-group-error": a0 }; };
54
93
  const _c1 = function (a0) { return { "govuk-input--error": a0 }; };
55
- function SelectFlagTypeComponent_div_9_Template(rf, ctx) { if (rf & 1) {
56
- i0.ɵɵelementStart(0, "div", 15)(1, "div", 1)(2, "label", 16);
57
- i0.ɵɵtext(3, "Enter a flag type");
94
+ function SelectFlagTypeComponent_ng_container_0_div_11_Template(rf, ctx) { if (rf & 1) {
95
+ i0.ɵɵelementStart(0, "div", 18)(1, "div", 3)(2, "label", 19);
96
+ i0.ɵɵtext(3);
97
+ i0.ɵɵpipe(4, "rpxTranslate");
98
+ i0.ɵɵpipe(5, "rpxTranslate");
58
99
  i0.ɵɵelementEnd();
59
- i0.ɵɵtemplate(4, SelectFlagTypeComponent_div_9_div_4_Template, 4, 1, "div", 17);
60
- i0.ɵɵelement(5, "input", 18);
100
+ i0.ɵɵtemplate(6, SelectFlagTypeComponent_ng_container_0_div_11_div_6_Template, 6, 6, "div", 20);
101
+ i0.ɵɵelement(7, "input", 21);
102
+ i0.ɵɵtemplate(8, SelectFlagTypeComponent_ng_container_0_div_11_div_8_Template, 5, 5, "div", 22);
61
103
  i0.ɵɵelementEnd()();
62
104
  } if (rf & 2) {
63
- const ctx_r2 = i0.ɵɵnextContext();
105
+ const ctx_r7 = i0.ɵɵnextContext(2);
64
106
  i0.ɵɵadvance(1);
65
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(5, _c0, ctx_r2.flagTypeErrorMessage.length > 0));
107
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(11, _c0, ctx_r7.flagTypeErrorMessage.length > 0));
108
+ i0.ɵɵadvance(2);
109
+ i0.ɵɵtextInterpolate1(" ", ctx_r7.isDisplayContextParameterExternal ? i0.ɵɵpipeBind1(4, 7, ctx_r7.caseFlagWizardStepTitle.OTHER_FLAG_TYPE_DESCRIPTION_EXTERNAL) : i0.ɵɵpipeBind1(5, 9, ctx_r7.caseFlagWizardStepTitle.OTHER_FLAG_TYPE_DESCRIPTION), " ");
66
110
  i0.ɵɵadvance(3);
67
- i0.ɵɵproperty("ngIf", ctx_r2.flagTypeErrorMessage.length > 0);
111
+ i0.ɵɵproperty("ngIf", ctx_r7.flagTypeErrorMessage.length > 0);
68
112
  i0.ɵɵadvance(1);
69
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1, ctx_r2.flagTypeErrorMessage.length > 0))("name", ctx_r2.descriptionControlName)("formControlName", ctx_r2.descriptionControlName);
113
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(13, _c1, ctx_r7.flagTypeErrorMessage.length > 0))("name", ctx_r7.caseFlagFormField.OTHER_FLAG_DESCRIPTION)("formControlName", ctx_r7.caseFlagFormField.OTHER_FLAG_DESCRIPTION);
114
+ i0.ɵɵadvance(1);
115
+ i0.ɵɵproperty("ngIf", !ctx_r7.isDisplayContextParameterExternal && !ctx_r7.isCaseLevelFlag && ctx_r7.isDisplayContextParameter2Point1Enabled);
70
116
  } }
71
- function SelectFlagTypeComponent_div_10_Template(rf, ctx) { if (rf & 1) {
72
- const _r10 = i0.ɵɵgetCurrentView();
73
- i0.ɵɵelementStart(0, "div", 20)(1, "button", 21);
74
- i0.ɵɵlistener("click", function SelectFlagTypeComponent_div_10_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.onNext()); });
75
- i0.ɵɵtext(2, "Next");
117
+ function SelectFlagTypeComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
118
+ i0.ɵɵelementContainerStart(0, 2);
119
+ i0.ɵɵelementStart(1, "div", 3)(2, "fieldset", 4)(3, "legend", 5)(4, "h1", 6);
120
+ i0.ɵɵtemplate(5, SelectFlagTypeComponent_ng_container_0_ng_container_5_Template, 4, 5, "ng-container", 7);
121
+ i0.ɵɵtemplate(6, SelectFlagTypeComponent_ng_container_0_ng_template_6_Template, 2, 4, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
76
122
  i0.ɵɵelementEnd()();
123
+ i0.ɵɵtemplate(8, SelectFlagTypeComponent_ng_container_0_div_8_Template, 6, 6, "div", 9);
124
+ i0.ɵɵelementStart(9, "div", 10);
125
+ i0.ɵɵtemplate(10, SelectFlagTypeComponent_ng_container_0_div_10_Template, 5, 9, "div", 11);
126
+ i0.ɵɵtemplate(11, SelectFlagTypeComponent_ng_container_0_div_11_Template, 9, 15, "div", 12);
127
+ i0.ɵɵelementEnd()()();
128
+ i0.ɵɵelementContainerEnd();
129
+ } if (rf & 2) {
130
+ const _r3 = i0.ɵɵreference(7);
131
+ const ctx_r0 = i0.ɵɵnextContext();
132
+ i0.ɵɵproperty("formGroup", ctx_r0.formGroup);
133
+ i0.ɵɵadvance(1);
134
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c0, ctx_r0.flagTypeNotSelectedErrorMessage.length > 0));
135
+ i0.ɵɵadvance(4);
136
+ i0.ɵɵproperty("ngIf", !ctx_r0.cachedFlagType)("ngIfElse", _r3);
137
+ i0.ɵɵadvance(3);
138
+ i0.ɵɵproperty("ngIf", ctx_r0.flagTypeNotSelectedErrorMessage.length > 0);
139
+ i0.ɵɵadvance(2);
140
+ i0.ɵɵproperty("ngForOf", ctx_r0.flagTypes)("ngForTrackBy", ctx_r0.identifyFlagType);
141
+ i0.ɵɵadvance(1);
142
+ i0.ɵɵproperty("ngIf", ctx_r0.otherFlagTypeSelected);
143
+ } }
144
+ function SelectFlagTypeComponent_div_1_Template(rf, ctx) { if (rf & 1) {
145
+ const _r13 = i0.ɵɵgetCurrentView();
146
+ i0.ɵɵelementStart(0, "div", 27)(1, "button", 28);
147
+ i0.ɵɵlistener("click", function SelectFlagTypeComponent_div_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onNext()); });
148
+ i0.ɵɵtext(2);
149
+ i0.ɵɵpipe(3, "rpxTranslate");
150
+ i0.ɵɵelementEnd()();
151
+ } if (rf & 2) {
152
+ i0.ɵɵadvance(2);
153
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, "Next"));
77
154
  } }
78
155
  export class SelectFlagTypeComponent {
79
156
  constructor(caseFlagRefdataService) {
80
157
  this.caseFlagRefdataService = caseFlagRefdataService;
158
+ this.isDisplayContextParameterExternal = false;
159
+ this.isDisplayContextParameter2Point1Enabled = false;
81
160
  this.caseFlagStateEmitter = new EventEmitter();
82
161
  this.flagCommentsOptionalEmitter = new EventEmitter();
83
162
  this.flagTypeNotSelectedErrorMessage = '';
84
163
  this.flagTypeErrorMessage = '';
85
- this.otherFlagTypeSelected = false;
86
164
  this.refdataError = false;
87
- this.flagTypeControlName = 'flagType';
88
- this.descriptionControlName = 'otherFlagTypeDescription';
165
+ this.caseFlagFormField = CaseFlagFormFields;
166
+ this.isCaseLevelFlag = false;
89
167
  this.maxCharactersForOtherFlagType = 80;
90
168
  // Code for "Other" flag type as defined in Reference Data
91
169
  this.otherFlagTypeCode = 'OT0001';
@@ -94,21 +172,37 @@ export class SelectFlagTypeComponent {
94
172
  get caseFlagWizardStepTitle() {
95
173
  return CaseFlagWizardStepTitle;
96
174
  }
175
+ get selectedFlagType() {
176
+ return this.formGroup.get(CaseFlagFormFields.FLAG_TYPE)?.value;
177
+ }
178
+ get otherFlagTypeSelected() {
179
+ return this.formGroup.get(CaseFlagFormFields.FLAG_TYPE)?.value?.flagCode === this.otherFlagTypeCode;
180
+ }
97
181
  ngOnInit() {
182
+ this.isCaseLevelFlag = this.selectedFlagsLocation?.flags?.flagsCaseFieldId === this.caseLevelCaseFlagsFieldId;
98
183
  this.flagTypes = [];
99
- this.formGroup.addControl(this.flagTypeControlName, new FormControl(''));
100
- this.formGroup.addControl(this.descriptionControlName, new FormControl(''));
101
- const flagType = this.formGroup['caseField']
102
- && this.formGroup['caseField'].id
103
- && this.formGroup['caseField'].id === this.caseLevelCaseFlagsFieldId
104
- ? RefdataCaseFlagType.CASE
105
- : RefdataCaseFlagType.PARTY;
184
+ const flagType = this.isCaseLevelFlag ? RefdataCaseFlagType.CASE : RefdataCaseFlagType.PARTY;
185
+ this.formGroup.addControl(CaseFlagFormFields.FLAG_TYPE, new FormControl(''));
186
+ this.formGroup.addControl(CaseFlagFormFields.OTHER_FLAG_DESCRIPTION, new FormControl(''));
187
+ // FormControl is linked to a checkbox input element, so initial value should be false
188
+ this.formGroup.addControl(CaseFlagFormFields.IS_VISIBLE_INTERNALLY_ONLY, new FormControl(false));
189
+ // Should clear descriptionControlName if flagTypeControlName is changed
190
+ this.flagTypeControlChangesSubscription = this.formGroup.get(CaseFlagFormFields.FLAG_TYPE)?.valueChanges
191
+ .subscribe(_ => {
192
+ this.formGroup.get(CaseFlagFormFields.OTHER_FLAG_DESCRIPTION)?.setValue('');
193
+ this.cachedPath = [];
194
+ // required to clear language interpreter
195
+ this.formGroup.patchValue({
196
+ [SearchLanguageInterpreterControlNames.LANGUAGE_SEARCH_TERM]: '',
197
+ [SearchLanguageInterpreterControlNames.MANUAL_LANGUAGE_ENTRY]: ''
198
+ });
199
+ });
106
200
  // If hmctsServiceId is present, use this to retrieve the relevant list of flag types
107
201
  if (this.hmctsServiceId) {
108
- this.flagRefdata$ = this.caseFlagRefdataService.getCaseFlagsRefdata(this.hmctsServiceId, flagType)
202
+ this.flagRefdata$ = this.caseFlagRefdataService
203
+ .getCaseFlagsRefdata(this.hmctsServiceId, flagType, true, this.isDisplayContextParameterExternal)
109
204
  .subscribe({
110
- // First (and only) object in the returned array should be the top-level "Party" flag type
111
- next: flagTypes => this.flagTypes = flagTypes[0].childFlags,
205
+ next: flagTypes => this.processFlagTypes(flagTypes),
112
206
  error: error => this.onRefdataError(error)
113
207
  });
114
208
  }
@@ -120,23 +214,16 @@ export class SelectFlagTypeComponent {
120
214
  catchError(_ => this.caseFlagRefdataService.getHmctsServiceDetailsByServiceName(this.jurisdiction)),
121
215
  // Use switchMap to return an inner Observable of the flag types data, having received the service details
122
216
  // including service_code. This avoids having nested `subscribe`s, which is an anti-pattern!
123
- switchMap(serviceDetails => this.caseFlagRefdataService.getCaseFlagsRefdata(serviceDetails[0].service_code, flagType)))
217
+ switchMap(serviceDetails => this.caseFlagRefdataService.getCaseFlagsRefdata(serviceDetails[0].service_code, flagType, true, this.isDisplayContextParameterExternal)))
124
218
  .subscribe({
125
- // First (and only) object in the returned array should be the top-level "Party" flag type
126
- next: flagTypes => this.flagTypes = flagTypes[0].childFlags,
219
+ next: flagTypes => this.processFlagTypes(flagTypes),
127
220
  error: error => this.onRefdataError(error)
128
221
  });
129
222
  }
130
223
  }
131
224
  ngOnDestroy() {
132
- if (this.flagRefdata$) {
133
- this.flagRefdata$.unsubscribe();
134
- }
135
- }
136
- onFlagTypeChanged(flagType) {
137
- this.selectedFlagType = flagType;
138
- // Display description textbox if 'Other' flag type is selected
139
- this.otherFlagTypeSelected = this.selectedFlagType.flagCode === this.otherFlagTypeCode;
225
+ this.flagRefdata$?.unsubscribe();
226
+ this.flagTypeControlChangesSubscription?.unsubscribe();
140
227
  }
141
228
  onNext() {
142
229
  // Validate form
@@ -146,40 +233,51 @@ export class SelectFlagTypeComponent {
146
233
  this.caseFlagStateEmitter.emit({
147
234
  currentCaseFlagFieldState: CaseFlagFieldState.FLAG_TYPE,
148
235
  isParentFlagType: this.selectedFlagType ? this.selectedFlagType.isParent : null,
149
- errorMessages: this.errorMessages,
150
- flagName: this.selectedFlagType ? this.selectedFlagType.name : null,
151
- flagPath: this.selectedFlagType ? this.selectedFlagType.Path.map(pathValue => Object.assign({ id: null, value: pathValue })) : null,
152
- hearingRelevantFlag: this.selectedFlagType ? this.selectedFlagType.hearingRelevant : null,
153
- flagCode: this.selectedFlagType ? this.selectedFlagType.flagCode : null,
154
- // Include the "list of values" (if any); currently applicable to language flag types
155
- listOfValues: this.selectedFlagType && this.selectedFlagType.listOfValues && this.selectedFlagType.listOfValues.length > 0
156
- ? this.selectedFlagType.listOfValues
157
- : null
236
+ errorMessages: this.errorMessages
158
237
  });
159
- // Emit "flag comments optional" event if the user selects a flag type where comments are not mandatory
160
- if (this.selectedFlagType && !this.selectedFlagType.flagComment) {
238
+ // Emit "flag comments optional" event if the user selects a child flag type where comments are not mandatory
239
+ if (this.selectedFlagType && !this.selectedFlagType.isParent && !this.selectedFlagType.flagComment) {
161
240
  this.flagCommentsOptionalEmitter.emit(null);
162
241
  }
163
242
  // If the selected flag type is a parent, load the list of child flag types and reset the current selection
164
- if (this.selectedFlagType && this.selectedFlagType.isParent) {
243
+ if (this.selectedFlagType?.isParent) {
244
+ // Cache the current flag type selection before it is reset - this is needed for displaying its name as the title
245
+ // when displaying the next set of child flags
246
+ this.cachedFlagType = this.selectedFlagType;
165
247
  this.flagTypes = this.selectedFlagType.childFlags;
166
- this.formGroup.get(this.flagTypeControlName).setValue('');
167
- this.selectedFlagType = null;
248
+ this.cachedPath?.shift();
249
+ this.formGroup.get(CaseFlagFormFields.FLAG_TYPE)?.setValue(this.cachedPath?.length ? this.cachedPath[0] : null, { emitEvent: false });
168
250
  }
169
251
  }
252
+ // Identity function for trackBy use by *ngFor for flagTypes in HTML template
253
+ identifyFlagType(_, flagType) {
254
+ return `${flagType.flagCode}_${flagType.name}_${flagType.name_cy}`;
255
+ }
170
256
  validateForm() {
171
257
  this.flagTypeNotSelectedErrorMessage = '';
172
258
  this.flagTypeErrorMessage = '';
173
259
  this.errorMessages = [];
174
260
  if (!this.selectedFlagType) {
175
- this.flagTypeNotSelectedErrorMessage = SelectFlagTypeErrorMessage.FLAG_TYPE_NOT_SELECTED;
176
- this.errorMessages.push({ title: '', description: `${SelectFlagTypeErrorMessage.FLAG_TYPE_NOT_SELECTED}`, fieldId: 'conditional-radios-list' });
261
+ // If there is any prior flag type selection then the message will differ
262
+ let errorMessage = '';
263
+ if (this.cachedFlagType) {
264
+ errorMessage = SelectFlagTypeErrorMessage.FLAG_TYPE_OPTION_NOT_SELECTED;
265
+ }
266
+ else {
267
+ errorMessage = this.isDisplayContextParameterExternal
268
+ ? SelectFlagTypeErrorMessage.FLAG_TYPE_NOT_SELECTED_EXTERNAL
269
+ : SelectFlagTypeErrorMessage.FLAG_TYPE_NOT_SELECTED;
270
+ }
271
+ this.flagTypeNotSelectedErrorMessage = errorMessage;
272
+ this.errorMessages.push({ title: '', description: errorMessage, fieldId: 'conditional-radios-list' });
177
273
  }
178
274
  if (this.otherFlagTypeSelected) {
179
- const otherFlagTypeDescription = this.formGroup.get(this.descriptionControlName).value;
275
+ const otherFlagTypeDescription = this.formGroup.get(CaseFlagFormFields.OTHER_FLAG_DESCRIPTION)?.value;
180
276
  if (!otherFlagTypeDescription) {
181
- this.flagTypeErrorMessage = SelectFlagTypeErrorMessage.FLAG_TYPE_NOT_ENTERED;
182
- this.errorMessages.push({ title: '', description: `${SelectFlagTypeErrorMessage.FLAG_TYPE_NOT_ENTERED}`, fieldId: 'other-flag-type-description' });
277
+ this.flagTypeErrorMessage = this.isDisplayContextParameterExternal
278
+ ? SelectFlagTypeErrorMessage.FLAG_TYPE_NOT_ENTERED_EXTERNAL
279
+ : SelectFlagTypeErrorMessage.FLAG_TYPE_NOT_ENTERED;
280
+ this.errorMessages.push({ title: '', description: `${this.flagTypeErrorMessage}`, fieldId: 'other-flag-type-description' });
183
281
  }
184
282
  if (otherFlagTypeDescription.length > this.maxCharactersForOtherFlagType) {
185
283
  this.flagTypeErrorMessage = SelectFlagTypeErrorMessage.FLAG_TYPE_LIMIT_EXCEEDED;
@@ -187,6 +285,21 @@ export class SelectFlagTypeComponent {
187
285
  }
188
286
  }
189
287
  }
288
+ processFlagTypes(flagTypes) {
289
+ // First (and only) object in the returned array should be the top-level "Party" flag type
290
+ // The "Other" flag type should be removed from the top level if the user is external
291
+ this.flagTypes = flagTypes[0].childFlags.filter((flag) => this.isDisplayContextParameterExternal ? flag.flagCode !== this.otherFlagTypeCode : true);
292
+ const formControl = this.formGroup.get(CaseFlagFormFields.FLAG_TYPE);
293
+ if (formControl?.value) {
294
+ // Cache Path based on existing flagCode -- needed for nested choices
295
+ const [foundFlagType, path] = FlagType.searchPathByFlagTypeObject(formControl.value, this.flagTypes);
296
+ this.cachedPath = [
297
+ ...path,
298
+ foundFlagType
299
+ ];
300
+ formControl.setValue(this.cachedPath[0], { emitEvent: false });
301
+ }
302
+ }
190
303
  onRefdataError(error) {
191
304
  // Set error flag on component to remove the "Next" button (user cannot proceed with flag creation)
192
305
  this.refdataError = true;
@@ -197,35 +310,17 @@ export class SelectFlagTypeComponent {
197
310
  }
198
311
  }
199
312
  SelectFlagTypeComponent.ɵfac = function SelectFlagTypeComponent_Factory(t) { return new (t || SelectFlagTypeComponent)(i0.ɵɵdirectiveInject(i1.CaseFlagRefdataService)); };
200
- SelectFlagTypeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectFlagTypeComponent, selectors: [["ccd-select-flag-type"]], inputs: { formGroup: "formGroup", jurisdiction: "jurisdiction", caseTypeId: "caseTypeId", hmctsServiceId: "hmctsServiceId" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter", flagCommentsOptionalEmitter: "flagCommentsOptionalEmitter" }, decls: 11, vars: 9, consts: [[1, "form-group", 3, "formGroup"], [1, "govuk-form-group", 3, "ngClass"], ["aria-describedby", "flag-type-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--l"], ["id", "flag-type-heading", 1, "govuk-fieldset__heading"], ["id", "flag-type-not-selected-error-message", "class", "govuk-error-message", 4, "ngIf"], ["data-module", "govuk-radios", "id", "conditional-radios-list", 1, "govuk-radios", "govuk-radios--conditional"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf"], ["class", "govuk-radios__conditional", "id", "conditional-flagType", 4, "ngIf"], ["class", "govuk-button-group", 4, "ngIf"], ["id", "flag-type-not-selected-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "id", "name", "value", "formControlName", "change"], [1, "govuk-label", "govuk-radios__label", 3, "for"], ["id", "conditional-flagType", 1, "govuk-radios__conditional"], ["for", "other-flag-type-description", 1, "govuk-label"], ["id", "flag-type-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "other-flag-type-description", "type", "text", 1, "govuk-input", "govuk-!-width-one-half", 3, "ngClass", "name", "formControlName"], ["id", "flag-type-error-message", 1, "govuk-error-message"], [1, "govuk-button-group"], ["type", "button", 1, "button", "button-primary", 3, "click"]], template: function SelectFlagTypeComponent_Template(rf, ctx) { if (rf & 1) {
201
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "fieldset", 2)(3, "legend", 3)(4, "h1", 4);
202
- i0.ɵɵtext(5);
203
- i0.ɵɵelementEnd()();
204
- i0.ɵɵtemplate(6, SelectFlagTypeComponent_div_6_Template, 4, 1, "div", 5);
205
- i0.ɵɵelementStart(7, "div", 6);
206
- i0.ɵɵtemplate(8, SelectFlagTypeComponent_div_8_Template, 4, 6, "div", 7);
207
- i0.ɵɵtemplate(9, SelectFlagTypeComponent_div_9_Template, 6, 9, "div", 8);
208
- i0.ɵɵelementEnd()()();
209
- i0.ɵɵtemplate(10, SelectFlagTypeComponent_div_10_Template, 3, 0, "div", 9);
210
- i0.ɵɵelementEnd();
313
+ SelectFlagTypeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectFlagTypeComponent, selectors: [["ccd-select-flag-type"]], inputs: { formGroup: "formGroup", jurisdiction: "jurisdiction", caseTypeId: "caseTypeId", hmctsServiceId: "hmctsServiceId", isDisplayContextParameterExternal: "isDisplayContextParameterExternal", isDisplayContextParameter2Point1Enabled: "isDisplayContextParameter2Point1Enabled", selectedFlagsLocation: "selectedFlagsLocation" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter", flagCommentsOptionalEmitter: "flagCommentsOptionalEmitter" }, decls: 2, vars: 2, consts: [[3, "formGroup", 4, "ngIf"], ["class", "govuk-button-group", 4, "ngIf"], [3, "formGroup"], [1, "govuk-form-group", 3, "ngClass"], ["aria-describedby", "flag-type-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--m"], ["id", "flag-type-heading", 1, "govuk-fieldset__heading", "govuk-!-margin-bottom-1"], [4, "ngIf", "ngIfElse"], ["priorFlagTypeSelected", ""], ["id", "flag-type-not-selected-error-message", "class", "govuk-error-message", 4, "ngIf"], ["data-module", "govuk-radios", "id", "conditional-radios-list", 1, "govuk-radios", "govuk-radios--conditional"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "govuk-radios__conditional", "id", "conditional-flagType", 4, "ngIf"], ["id", "flag-type-not-selected-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "id", "name", "value", "formControlName"], [1, "govuk-label", "govuk-radios__label", 3, "for"], ["id", "conditional-flagType", 1, "govuk-radios__conditional"], ["for", "other-flag-type-description", 1, "govuk-label"], ["id", "flag-type-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "other-flag-type-description", "type", "text", 1, "govuk-input", "govuk-!-width-one-half", 3, "ngClass", "name", "formControlName"], ["class", "govuk-checkboxes__item govuk-!-margin-top-4", 4, "ngIf"], ["id", "flag-type-error-message", 1, "govuk-error-message"], [1, "govuk-checkboxes__item", "govuk-!-margin-top-4"], ["id", "is-visible-externally", "type", "checkbox", 1, "govuk-checkboxes__input", 3, "name", "formControlName"], ["for", "is-visible-externally", 1, "govuk-label", "govuk-checkboxes__label"], [1, "govuk-button-group"], ["type", "button", 1, "button", "button-primary", 3, "click"]], template: function SelectFlagTypeComponent_Template(rf, ctx) { if (rf & 1) {
314
+ i0.ɵɵtemplate(0, SelectFlagTypeComponent_ng_container_0_Template, 12, 10, "ng-container", 0);
315
+ i0.ɵɵtemplate(1, SelectFlagTypeComponent_div_1_Template, 4, 3, "div", 1);
211
316
  } if (rf & 2) {
212
- i0.ɵɵproperty("formGroup", ctx.formGroup);
213
- i0.ɵɵadvance(1);
214
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c0, ctx.flagTypeNotSelectedErrorMessage.length > 0));
215
- i0.ɵɵadvance(4);
216
- i0.ɵɵtextInterpolate1(" ", ctx.caseFlagWizardStepTitle.SELECT_CASE_FLAG, " ");
217
- i0.ɵɵadvance(1);
218
- i0.ɵɵproperty("ngIf", ctx.flagTypeNotSelectedErrorMessage.length > 0);
219
- i0.ɵɵadvance(2);
220
- i0.ɵɵproperty("ngForOf", ctx.flagTypes);
221
- i0.ɵɵadvance(1);
222
- i0.ɵɵproperty("ngIf", ctx.otherFlagTypeSelected);
317
+ i0.ɵɵproperty("ngIf", ctx.flagTypes == null ? null : ctx.flagTypes.length);
223
318
  i0.ɵɵadvance(1);
224
319
  i0.ɵɵproperty("ngIf", !ctx.refdataError);
225
- } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i3.DefaultValueAccessor, i3.RadioControlValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.FormGroupDirective, i3.FormControlName], styles: [".hidden[_ngcontent-%COMP%]{display:none}.validation-error[_ngcontent-%COMP%]{cursor:pointer;text-decoration:underline;color:#d4351c}"] });
320
+ } }, styles: [".hidden[_ngcontent-%COMP%]{display:none}.validation-error[_ngcontent-%COMP%]{cursor:pointer;text-decoration:underline;color:#d4351c}"] });
226
321
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SelectFlagTypeComponent, [{
227
322
  type: Component,
228
- args: [{ selector: 'ccd-select-flag-type', template: "<div class=\"form-group\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngClass]=\"{'form-group-error': flagTypeNotSelectedErrorMessage.length > 0}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"flag-type-heading\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 id=\"flag-type-heading\" class=\"govuk-fieldset__heading\">\n {{caseFlagWizardStepTitle.SELECT_CASE_FLAG}}\n </h1>\n </legend>\n <div id=\"flag-type-not-selected-error-message\" class=\"govuk-error-message\"\n *ngIf=\"flagTypeNotSelectedErrorMessage.length > 0\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{flagTypeNotSelectedErrorMessage}}\n </div>\n <div class=\"govuk-radios govuk-radios--conditional\" data-module=\"govuk-radios\" id=\"conditional-radios-list\">\n <div class=\"govuk-radios__item\" *ngFor=\"let flagType of flagTypes; index as i\">\n <!-- All parent flag types have the same flagCode of \"CATGRY\", so each radio button value needs to be made\n unique by appending the index - radio buttons shouldn't share the same value.\n It is OK to amend flagCode this way because parent flag types cannot be selected as a final value -->\n <input class=\"govuk-radios__input\" id=\"flag-type-{{i}}\" [name]=\"flagTypeControlName\"\n type=\"radio\" [value]=\"flagType.flagCode === 'CATGRY' ? flagType.flagCode + i : flagType.flagCode\"\n [formControlName]=\"flagTypeControlName\" (change)=\"onFlagTypeChanged(flagType)\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"flag-type-{{i}}\">{{flagType.name}}</label>\n </div>\n <div class=\"govuk-radios__conditional\" *ngIf=\"otherFlagTypeSelected\" id=\"conditional-flagType\">\n <div class=\"govuk-form-group\" [ngClass]=\"{'form-group-error': flagTypeErrorMessage.length > 0}\">\n <label class=\"govuk-label\" for=\"other-flag-type-description\">Enter a flag type</label>\n <div id=\"flag-type-error-message\" class=\"govuk-error-message\" *ngIf=\"flagTypeErrorMessage.length > 0\">\n <span class=\"govuk-visually-hidden\">Error:</span> {{flagTypeErrorMessage}}\n </div>\n <input class=\"govuk-input govuk-!-width-one-half\"\n [ngClass]=\"{'govuk-input--error': flagTypeErrorMessage.length > 0}\"\n id=\"other-flag-type-description\" [name]=\"descriptionControlName\" type=\"text\"\n [formControlName]=\"descriptionControlName\"/>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n <div class=\"govuk-button-group\" *ngIf=\"!refdataError\">\n <button class=\"button button-primary\" type=\"button\" (click)=\"onNext()\">Next</button>\n </div>\n</div>\n", styles: [".hidden{display:none}.validation-error{cursor:pointer;text-decoration:underline;color:#d4351c}\n"] }]
323
+ args: [{ selector: 'ccd-select-flag-type', template: "<ng-container *ngIf=\"flagTypes?.length\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngClass]=\"{'form-group-error': flagTypeNotSelectedErrorMessage.length > 0}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"flag-type-heading\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 id=\"flag-type-heading\" class=\"govuk-fieldset__heading govuk-!-margin-bottom-1\">\n <ng-container *ngIf=\"!cachedFlagType; else priorFlagTypeSelected\">\n {{\n isDisplayContextParameterExternal\n ? (caseFlagWizardStepTitle.SELECT_CASE_FLAG_EXTERNAL | rpxTranslate)\n : (caseFlagWizardStepTitle.SELECT_CASE_FLAG | rpxTranslate)\n }}\n </ng-container>\n <ng-template #priorFlagTypeSelected>\n {{cachedFlagType | flagFieldDisplay:'name'}}\n </ng-template>\n </h1>\n </legend>\n <div id=\"flag-type-not-selected-error-message\" class=\"govuk-error-message\"\n *ngIf=\"flagTypeNotSelectedErrorMessage.length > 0\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{flagTypeNotSelectedErrorMessage | rpxTranslate}}\n </div>\n <div class=\"govuk-radios govuk-radios--conditional\" data-module=\"govuk-radios\" id=\"conditional-radios-list\">\n <div class=\"govuk-radios__item\" *ngFor=\"let flagType of flagTypes; index as i; trackBy: identifyFlagType\">\n <input class=\"govuk-radios__input\" id=\"flag-type-{{i}}\" [name]=\"caseFlagFormField.FLAG_TYPE\"\n type=\"radio\" [value]=\"flagType\"\n [formControlName]=\"caseFlagFormField.FLAG_TYPE\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"flag-type-{{i}}\">\n {{flagType | flagFieldDisplay:'name'}}\n </label>\n </div>\n <div class=\"govuk-radios__conditional\" *ngIf=\"otherFlagTypeSelected\" id=\"conditional-flagType\">\n <div class=\"govuk-form-group\" [ngClass]=\"{'form-group-error': flagTypeErrorMessage.length > 0}\">\n <label class=\"govuk-label\" for=\"other-flag-type-description\">\n {{\n isDisplayContextParameterExternal\n ? (caseFlagWizardStepTitle.OTHER_FLAG_TYPE_DESCRIPTION_EXTERNAL | rpxTranslate)\n : (caseFlagWizardStepTitle.OTHER_FLAG_TYPE_DESCRIPTION | rpxTranslate)\n }}\n </label>\n <div id=\"flag-type-error-message\" class=\"govuk-error-message\" *ngIf=\"flagTypeErrorMessage.length > 0\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{flagTypeErrorMessage | rpxTranslate}}\n </div>\n <input class=\"govuk-input govuk-!-width-one-half\"\n [ngClass]=\"{'govuk-input--error': flagTypeErrorMessage.length > 0}\"\n id=\"other-flag-type-description\" [name]=\"caseFlagFormField.OTHER_FLAG_DESCRIPTION\" type=\"text\"\n [formControlName]=\"caseFlagFormField.OTHER_FLAG_DESCRIPTION\"/>\n <div class=\"govuk-checkboxes__item govuk-!-margin-top-4\"\n *ngIf=\"!isDisplayContextParameterExternal && !isCaseLevelFlag && isDisplayContextParameter2Point1Enabled\">\n <input class=\"govuk-checkboxes__input\" id=\"is-visible-externally\" type=\"checkbox\"\n [name]=\"caseFlagFormField.IS_VISIBLE_INTERNALLY_ONLY\" [formControlName]=\"caseFlagFormField.IS_VISIBLE_INTERNALLY_ONLY\">\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"is-visible-externally\">\n {{'This flag should only be visible to HMCTS Staff' | rpxTranslate}}\n </label>\n </div>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n</ng-container>\n\n<div class=\"govuk-button-group\" *ngIf=\"!refdataError\">\n <button class=\"button button-primary\" type=\"button\" (click)=\"onNext()\">{{'Next' | rpxTranslate}}</button>\n</div>\n", styles: [".hidden{display:none}.validation-error{cursor:pointer;text-decoration:underline;color:#d4351c}\n"] }]
229
324
  }], function () { return [{ type: i1.CaseFlagRefdataService }]; }, { formGroup: [{
230
325
  type: Input
231
326
  }], jurisdiction: [{
@@ -234,9 +329,15 @@ SelectFlagTypeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sel
234
329
  type: Input
235
330
  }], hmctsServiceId: [{
236
331
  type: Input
332
+ }], isDisplayContextParameterExternal: [{
333
+ type: Input
334
+ }], isDisplayContextParameter2Point1Enabled: [{
335
+ type: Input
336
+ }], selectedFlagsLocation: [{
337
+ type: Input
237
338
  }], caseFlagStateEmitter: [{
238
339
  type: Output
239
340
  }], flagCommentsOptionalEmitter: [{
240
341
  type: Output
241
342
  }] }); })();
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZsYWctdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZsYWcvY29tcG9uZW50cy9zZWxlY3QtZmxhZy10eXBlL3NlbGVjdC1mbGFnLXR5cGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvc2VsZWN0LWZsYWctdHlwZS9zZWxlY3QtZmxhZy10eXBlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUVwRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztJQ0RoRywrQkFDcUQsZUFBQTtJQUNmLHNCQUFNO0lBQUEsaUJBQU87SUFBQyxZQUNwRDtJQUFBLGlCQUFNOzs7SUFEOEMsZUFDcEQ7SUFEb0QsdUVBQ3BEOzs7O0lBRUUsK0JBQStFLGdCQUFBO0lBTW5DLG9PQUFVLGVBQUEscUNB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RkF0SlUsdUJBQXVCOzBFQUF2Qix1QkFBdUI7UUNoQnBDLDhCQUFnRCxhQUFBLGtCQUFBLGdCQUFBLFlBQUE7UUFLdEMsWUFDRjtRQUFBLGlCQUFLLEVBQUE7UUFFUCx3RUFHTTtRQUNOLDhCQUE0RztRQUMxRyx3RUFRTTtRQUNOLHdFQVdNO1FBQ1IsaUJBQU0sRUFBQSxFQUFBO1FBR1YsMEVBRU07UUFDUixpQkFBTTs7UUF4Q2tCLHlDQUF1QjtRQUNmLGVBQTRFO1FBQTVFLG9HQUE0RTtRQUlsRyxlQUNGO1FBREUsNkVBQ0Y7UUFHQyxlQUFnRDtRQUFoRCxxRUFBZ0Q7UUFJSSxlQUFjO1FBQWQsdUNBQWM7UUFTM0IsZUFBMkI7UUFBM0IsZ0RBQTJCO1FBZXhDLGVBQW1CO1FBQW5CLHdDQUFtQjs7dUZEckJ6Qyx1QkFBdUI7Y0FMbkMsU0FBUzsyQkFDRSxzQkFBc0I7eUVBT3pCLFNBQVM7a0JBRGYsS0FBSztZQUlDLFlBQVk7a0JBRGxCLEtBQUs7WUFJQyxVQUFVO2tCQURoQixLQUFLO1lBSUMsY0FBYztrQkFEcEIsS0FBSztZQUlDLG9CQUFvQjtrQkFEMUIsTUFBTTtZQUlBLDJCQUEyQjtrQkFEakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZsYWdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluL2Nhc2UtZmxhZyc7XG5pbXBvcnQgeyBDYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgUmVmZGF0YUNhc2VGbGFnVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2Nhc2UtZmxhZy9yZWZkYXRhLWNhc2UtZmxhZy10eXBlLmVudW0nO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZSB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmxhZ0ZpZWxkU3RhdGUsIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLCBTZWxlY3RGbGFnVHlwZUVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL2VudW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXNlbGVjdC1mbGFnLXR5cGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWZsYWctdHlwZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC1mbGFnLXR5cGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RGbGFnVHlwZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGp1cmlzZGljdGlvbjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYXNlVHlwZUlkOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhtY3RzU2VydmljZUlkOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYXNlRmxhZ1N0YXRlRW1pdHRlcjogRXZlbnRFbWl0dGVyPENhc2VGbGFnU3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYXNlRmxhZ1N0YXRlPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmxhZ0NvbW1lbnRzT3B0aW9uYWxFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgZmxhZ1R5cGVzOiBGbGFnVHlwZVtdO1xuICBwdWJsaWMgc2VsZWN0ZWRGbGFnVHlwZTogRmxhZ1R5cGU7XG4gIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBFcnJvck1lc3NhZ2VbXTtcbiAgcHVibGljIGZsYWdUeXBlTm90U2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSAnJztcbiAgcHVibGljIGZsYWdUeXBlRXJyb3JNZXNzYWdlID0gJyc7XG4gIHB1YmxpYyBmbGFnUmVmZGF0YSQ6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIG90aGVyRmxhZ1R5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICBwdWJsaWMgcmVmZGF0YUVycm9yID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZsYWdUeXBlQ29udHJvbE5hbWUgPSAnZmxhZ1R5cGUnO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb25Db250cm9sTmFtZSA9ICdvdGhlckZsYWdUeXBlRGVzY3JpcHRpb24nO1xuICBwcml2YXRlIHJlYWRvbmx5IG1heENoYXJhY3RlcnNGb3JPdGhlckZsYWdUeXBlID0gODA7XG4gIC8vIENvZGUgZm9yIFwiT3RoZXJcIiBmbGFnIHR5cGUgYXMgZGVmaW5lZCBpbiBSZWZlcmVuY2UgRGF0YVxuICBwcml2YXRlIHJlYWRvbmx5IG90aGVyRmxhZ1R5cGVDb2RlID0gJ09UMDAwMSc7XG4gIHB1YmxpYyByZWFkb25seSBjYXNlTGV2ZWxDYXNlRmxhZ3NGaWVsZElkID0gJ2Nhc2VGbGFncyc7XG5cbiAgcHVibGljIGdldCBjYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZSgpOiB0eXBlb2YgQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUge1xuICAgIHJldHVybiBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2FzZUZsYWdSZWZkYXRhU2VydmljZTogQ2FzZUZsYWdSZWZkYXRhU2VydmljZSkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmxhZ1R5cGVzID0gW107XG4gICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLmZsYWdUeXBlQ29udHJvbE5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2wodGhpcy5kZXNjcmlwdGlvbkNvbnRyb2xOYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcblxuICAgIGNvbnN0IGZsYWdUeXBlID0gdGhpcy5mb3JtR3JvdXBbJ2Nhc2VGaWVsZCddXG4gICAgICAmJiB0aGlzLmZvcm1Hcm91cFsnY2FzZUZpZWxkJ10uaWRcbiAgICAgICYmIHRoaXMuZm9ybUdyb3VwWydjYXNlRmllbGQnXS5pZCA9PT0gdGhpcy5jYXNlTGV2ZWxDYXNlRmxhZ3NGaWVsZElkXG4gICAgICA/IFJlZmRhdGFDYXNlRmxhZ1R5cGUuQ0FTRVxuICAgICAgOiBSZWZkYXRhQ2FzZUZsYWdUeXBlLlBBUlRZO1xuXG4gICAgLy8gSWYgaG1jdHNTZXJ2aWNlSWQgaXMgcHJlc2VudCwgdXNlIHRoaXMgdG8gcmV0cmlldmUgdGhlIHJlbGV2YW50IGxpc3Qgb2YgZmxhZyB0eXBlc1xuICAgIGlmICh0aGlzLmhtY3RzU2VydmljZUlkKSB7XG4gICAgICB0aGlzLmZsYWdSZWZkYXRhJCA9IHRoaXMuY2FzZUZsYWdSZWZkYXRhU2VydmljZS5nZXRDYXNlRmxhZ3NSZWZkYXRhKHRoaXMuaG1jdHNTZXJ2aWNlSWQsIGZsYWdUeXBlKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAvLyBGaXJzdCAoYW5kIG9ubHkpIG9iamVjdCBpbiB0aGUgcmV0dXJuZWQgYXJyYXkgc2hvdWxkIGJlIHRoZSB0b3AtbGV2ZWwgXCJQYXJ0eVwiIGZsYWcgdHlwZVxuICAgICAgICAgIG5leHQ6IGZsYWdUeXBlcyA9PiB0aGlzLmZsYWdUeXBlcyA9IGZsYWdUeXBlc1swXS5jaGlsZEZsYWdzLFxuICAgICAgICAgIGVycm9yOiBlcnJvciA9PiB0aGlzLm9uUmVmZGF0YUVycm9yKGVycm9yKVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRWxzZSwgSE1DVFMgc2VydmljZSBjb2RlIGlzIHJlcXVpcmVkIHRvIHJldHJpZXZlIHRoZSByZWxldmFudCBsaXN0IG9mIGZsYWcgdHlwZXM7IGF0dGVtcHQgdG8gb2J0YWluIGl0IGJ5IGNhc2UgdHlwZSBJRCBmaXJzdFxuICAgICAgdGhpcy5mbGFnUmVmZGF0YSQgPSB0aGlzLmNhc2VGbGFnUmVmZGF0YVNlcnZpY2UuZ2V0SG1jdHNTZXJ2aWNlRGV0YWlsc0J5Q2FzZVR5cGUodGhpcy5jYXNlVHlwZUlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAvLyBJZiBhbiBlcnJvciBvY2N1cnMgcmV0cmlldmluZyBITUNUUyBzZXJ2aWNlIGRldGFpbHMgYnkgY2FzZSB0eXBlIElELCB0cnkgYnkgc2VydmljZSBuYW1lIGluc3RlYWRcbiAgICAgICAgICBjYXRjaEVycm9yKF8gPT4gdGhpcy5jYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlLmdldEhtY3RzU2VydmljZURldGFpbHNCeVNlcnZpY2VOYW1lKHRoaXMuanVyaXNkaWN0aW9uKSksXG4gICAgICAgICAgLy8gVXNlIHN3aXRjaE1hcCB0byByZXR1cm4gYW4gaW5uZXIgT2JzZXJ2YWJsZSBvZiB0aGUgZmxhZyB0eXBlcyBkYXRhLCBoYXZpbmcgcmVjZWl2ZWQgdGhlIHNlcnZpY2UgZGV0YWlsc1xuICAgICAgICAgIC8vIGluY2x1ZGluZyBzZXJ2aWNlX2NvZGUuIFRoaXMgYXZvaWRzIGhhdmluZyBuZXN0ZWQgYHN1YnNjcmliZWBzLCB3aGljaCBpcyBhbiBhbnRpLXBhdHRlcm4hXG4gICAgICAgICAgc3dpdGNoTWFwKHNlcnZpY2VEZXRhaWxzID0+IHRoaXMuY2FzZUZsYWdSZWZkYXRhU2VydmljZS5nZXRDYXNlRmxhZ3NSZWZkYXRhKHNlcnZpY2VEZXRhaWxzWzBdLnNlcnZpY2VfY29kZSwgZmxhZ1R5cGUpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIC8vIEZpcnN0IChhbmQgb25seSkgb2JqZWN0IGluIHRoZSByZXR1cm5lZCBhcnJheSBzaG91bGQgYmUgdGhlIHRvcC1sZXZlbCBcIlBhcnR5XCIgZmxhZyB0eXBlXG4gICAgICAgICAgbmV4dDogZmxhZ1R5cGVzID0+IHRoaXMuZmxhZ1R5cGVzID0gZmxhZ1R5cGVzWzBdLmNoaWxkRmxhZ3MsXG4gICAgICAgICAgZXJyb3I6IGVycm9yID0+IHRoaXMub25SZWZkYXRhRXJyb3IoZXJyb3IpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mbGFnUmVmZGF0YSQpIHtcbiAgICAgIHRoaXMuZmxhZ1JlZmRhdGEkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRmxhZ1R5cGVDaGFuZ2VkKGZsYWdUeXBlOiBGbGFnVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSA9IGZsYWdUeXBlO1xuICAgIC8vIERpc3BsYXkgZGVzY3JpcHRpb24gdGV4dGJveCBpZiAnT3RoZXInIGZsYWcgdHlwZSBpcyBzZWxlY3RlZFxuICAgIHRoaXMub3RoZXJGbGFnVHlwZVNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmZsYWdDb2RlID09PSB0aGlzLm90aGVyRmxhZ1R5cGVDb2RlO1xuICB9XG5cbiAgcHVibGljIG9uTmV4dCgpOiB2b2lkIHtcbiAgICAvLyBWYWxpZGF0ZSBmb3JtXG4gICAgdGhpcy52YWxpZGF0ZUZvcm0oKTtcbiAgICAvLyBSZXR1cm4gY2FzZSBmbGFnIGZpZWxkIHN0YXRlLCB3aGV0aGVyIHRoZSBzZWxlY3RlZCBmbGFnIHR5cGUgKGlmIGFueSkgaXMgYSBwYXJlbnQgb3Igbm90LCBlcnJvciBtZXNzYWdlcyxcbiAgICAvLyBmbGFnIG5hbWUsIHBhdGgsIGhlYXJpbmcgcmVsZXZhbnQgaW5kaWNhdG9yLCBjb2RlLCBhbmQgXCJsaXN0IG9mIHZhbHVlc1wiIChpZiBhbnkpIHRvIHRoZSBwYXJlbnRcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVFbWl0dGVyLmVtaXQoe1xuICAgICAgY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZTogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSxcbiAgICAgIGlzUGFyZW50RmxhZ1R5cGU6IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSA/IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5pc1BhcmVudCA6IG51bGwsXG4gICAgICBlcnJvck1lc3NhZ2VzOiB0aGlzLmVycm9yTWVzc2FnZXMsXG4gICAgICBmbGFnTmFtZTogdGhpcy5zZWxlY3RlZEZsYWdUeXBlID8gdGhpcy5zZWxlY3RlZEZsYWdUeXBlLm5hbWUgOiBudWxsLFxuICAgICAgZmxhZ1BhdGg6IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSA/IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5QYXRoLm1hcChwYXRoVmFsdWUgPT4gT2JqZWN0LmFzc2lnbih7IGlkOiBudWxsLCB2YWx1ZTogcGF0aFZhbHVlIH0pKSA6IG51bGwsXG4gICAgICBoZWFyaW5nUmVsZXZhbnRGbGFnOiB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUgPyB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUuaGVhcmluZ1JlbGV2YW50IDogbnVsbCxcbiAgICAgIGZsYWdDb2RlOiB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUgPyB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUuZmxhZ0NvZGUgOiBudWxsLFxuICAgICAgLy8gSW5jbHVkZSB0aGUgXCJsaXN0IG9mIHZhbHVlc1wiIChpZiBhbnkpOyBjdXJyZW50bHkgYXBwbGljYWJsZSB0byBsYW5ndWFnZSBmbGFnIHR5cGVzXG4gICAgICBsaXN0T2ZWYWx1ZXM6IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSAmJiB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUubGlzdE9mVmFsdWVzICYmIHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5saXN0T2ZWYWx1ZXMubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5saXN0T2ZWYWx1ZXNcbiAgICAgICAgOiBudWxsXG4gICAgfSk7XG4gICAgLy8gRW1pdCBcImZsYWcgY29tbWVudHMgb3B0aW9uYWxcIiBldmVudCBpZiB0aGUgdXNlciBzZWxlY3RzIGEgZmxhZyB0eXBlIHdoZXJlIGNvbW1lbnRzIGFyZSBub3QgbWFuZGF0b3J5XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSAmJiAhdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmZsYWdDb21tZW50KSB7XG4gICAgICB0aGlzLmZsYWdDb21tZW50c09wdGlvbmFsRW1pdHRlci5lbWl0KG51bGwpO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgZmxhZyB0eXBlIGlzIGEgcGFyZW50LCBsb2FkIHRoZSBsaXN0IG9mIGNoaWxkIGZsYWcgdHlwZXMgYW5kIHJlc2V0IHRoZSBjdXJyZW50IHNlbGVjdGlvblxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmxhZ1R5cGUgJiYgdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmlzUGFyZW50KSB7XG4gICAgICB0aGlzLmZsYWdUeXBlcyA9IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5jaGlsZEZsYWdzO1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuZmxhZ1R5cGVDb250cm9sTmFtZSkuc2V0VmFsdWUoJycpO1xuICAgICAgdGhpcy5zZWxlY3RlZEZsYWdUeXBlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmZsYWdUeXBlTm90U2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSAnJztcbiAgICB0aGlzLmZsYWdUeXBlRXJyb3JNZXNzYWdlID0gJyc7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW107XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGbGFnVHlwZSkge1xuICAgICAgdGhpcy5mbGFnVHlwZU5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlID0gU2VsZWN0RmxhZ1R5cGVFcnJvck1lc3NhZ2UuRkxBR19UWVBFX05PVF9TRUxFQ1RFRDtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHsgdGl0bGU6ICcnLCBkZXNjcmlwdGlvbjogYCR7U2VsZWN0RmxhZ1R5cGVFcnJvck1lc3NhZ2UuRkxBR19UWVBFX05PVF9TRUxFQ1RFRH1gLCBmaWVsZElkOiAnY29uZGl0aW9uYWwtcmFkaW9zLWxpc3QnIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5vdGhlckZsYWdUeXBlU2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IG90aGVyRmxhZ1R5cGVEZXNjcmlwdGlvbiA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmRlc2NyaXB0aW9uQ29udHJvbE5hbWUpLnZhbHVlO1xuICAgICAgaWYgKCFvdGhlckZsYWdUeXBlRGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5mbGFnVHlwZUVycm9yTWVzc2FnZSA9IFNlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9OT1RfRU5URVJFRDtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goeyB0aXRsZTogJycsIGRlc2NyaXB0aW9uOiBgJHtTZWxlY3RGbGFnVHlwZUVycm9yTWVzc2FnZS5GTEFHX1RZUEVfTk9UX0VOVEVSRUR9YCwgZmllbGRJZDogJ290aGVyLWZsYWctdHlwZS1kZXNjcmlwdGlvbicgfSk7XG4gICAgICB9XG4gICAgICBpZiAob3RoZXJGbGFnVHlwZURlc2NyaXB0aW9uLmxlbmd0aCA+IHRoaXMubWF4Q2hhcmFjdGVyc0Zvck90aGVyRmxhZ1R5cGUpIHtcbiAgICAgICAgdGhpcy5mbGFnVHlwZUVycm9yTWVzc2FnZSA9IFNlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9MSU1JVF9FWENFRURFRDtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goeyB0aXRsZTogJycsIGRlc2NyaXB0aW9uOiBgJHtTZWxlY3RGbGFnVHlwZUVycm9yTWVzc2FnZS5GTEFHX1RZUEVfTElNSVRfRVhDRUVERUR9YCwgZmllbGRJZDogJ290aGVyLWZsYWctdHlwZS1kZXNjcmlwdGlvbicgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvblJlZmRhdGFFcnJvcihlcnJvcjogYW55KTogdm9pZCB7XG4gICAgLy8gU2V0IGVycm9yIGZsYWcgb24gY29tcG9uZW50IHRvIHJlbW92ZSB0aGUgXCJOZXh0XCIgYnV0dG9uICh1c2VyIGNhbm5vdCBwcm9jZWVkIHdpdGggZmxhZyBjcmVhdGlvbilcbiAgICB0aGlzLnJlZmRhdGFFcnJvciA9IHRydWU7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW107XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goeyB0aXRsZTogJycsIGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLCBmaWVsZElkOiAnY29uZGl0aW9uYWwtcmFkaW9zLWxpc3QnIH0pO1xuICAgIC8vIFJldHVybiBjYXNlIGZsYWcgZmllbGQgc3RhdGUgYW5kIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBwYXJlbnRcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVFbWl0dGVyLmVtaXQoeyBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFLCBlcnJvck1lc3NhZ2VzOiB0aGlzLmVycm9yTWVzc2FnZXMgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiBmbGFnVHlwZU5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlLmxlbmd0aCA+IDB9XCI+XG4gICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiZmxhZy10eXBlLWhlYWRpbmdcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLWxcIj5cbiAgICAgICAgPGgxIGlkPVwiZmxhZy10eXBlLWhlYWRpbmdcIiBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19oZWFkaW5nXCI+XG4gICAgICAgICAge3tjYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5TRUxFQ1RfQ0FTRV9GTEFHfX1cbiAgICAgICAgPC9oMT5cbiAgICAgIDwvbGVnZW5kPlxuICAgICAgPGRpdiBpZD1cImZsYWctdHlwZS1ub3Qtc2VsZWN0ZWQtZXJyb3ItbWVzc2FnZVwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICpuZ0lmPVwiZmxhZ1R5cGVOb3RTZWxlY3RlZEVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+RXJyb3I6PC9zcGFuPiB7e2ZsYWdUeXBlTm90U2VsZWN0ZWRFcnJvck1lc3NhZ2V9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zIGdvdnVrLXJhZGlvcy0tY29uZGl0aW9uYWxcIiBkYXRhLW1vZHVsZT1cImdvdnVrLXJhZGlvc1wiIGlkPVwiY29uZGl0aW9uYWwtcmFkaW9zLWxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCBmbGFnVHlwZSBvZiBmbGFnVHlwZXM7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICA8IS0tIEFsbCBwYXJlbnQgZmxhZyB0eXBlcyBoYXZlIHRoZSBzYW1lIGZsYWdDb2RlIG9mIFwiQ0FUR1JZXCIsIHNvIGVhY2ggcmFkaW8gYnV0dG9uIHZhbHVlIG5lZWRzIHRvIGJlIG1hZGVcbiAgICAgICAgICAgIHVuaXF1ZSBieSBhcHBlbmRpbmcgdGhlIGluZGV4IC0gcmFkaW8gYnV0dG9ucyBzaG91bGRuJ3Qgc2hhcmUgdGhlIHNhbWUgdmFsdWUuXG4gICAgICAgICAgICBJdCBpcyBPSyB0byBhbWVuZCBmbGFnQ29kZSB0aGlzIHdheSBiZWNhdXNlIHBhcmVudCBmbGFnIHR5cGVzIGNhbm5vdCBiZSBzZWxlY3RlZCBhcyBhIGZpbmFsIHZhbHVlIC0tPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIiBpZD1cImZsYWctdHlwZS17e2l9fVwiIFtuYW1lXT1cImZsYWdUeXBlQ29udHJvbE5hbWVcIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgW3ZhbHVlXT1cImZsYWdUeXBlLmZsYWdDb2RlID09PSAnQ0FUR1JZJyA/IGZsYWdUeXBlLmZsYWdDb2RlICsgaSA6IGZsYWdUeXBlLmZsYWdDb2RlXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmxhZ1R5cGVDb250cm9sTmFtZVwiIChjaGFuZ2UpPVwib25GbGFnVHlwZUNoYW5nZWQoZmxhZ1R5cGUpXCIvPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBmb3I9XCJmbGFnLXR5cGUte3tpfX1cIj57e2ZsYWdUeXBlLm5hbWV9fTwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19jb25kaXRpb25hbFwiICpuZ0lmPVwib3RoZXJGbGFnVHlwZVNlbGVjdGVkXCIgaWQ9XCJjb25kaXRpb25hbC1mbGFnVHlwZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZmxhZ1R5cGVFcnJvck1lc3NhZ2UubGVuZ3RoID4gMH1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsXCIgZm9yPVwib3RoZXItZmxhZy10eXBlLWRlc2NyaXB0aW9uXCI+RW50ZXIgYSBmbGFnIHR5cGU8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cImZsYWctdHlwZS1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJmbGFnVHlwZUVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+RXJyb3I6PC9zcGFuPiB7e2ZsYWdUeXBlRXJyb3JNZXNzYWdlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstaW5wdXQgZ292dWstIS13aWR0aC1vbmUtaGFsZlwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogZmxhZ1R5cGVFcnJvck1lc3NhZ2UubGVuZ3RoID4gMH1cIlxuICAgICAgICAgICAgICBpZD1cIm90aGVyLWZsYWctdHlwZS1kZXNjcmlwdGlvblwiIFtuYW1lXT1cImRlc2NyaXB0aW9uQ29udHJvbE5hbWVcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGVzY3JpcHRpb25Db250cm9sTmFtZVwiLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiICpuZ0lmPVwiIXJlZmRhdGFFcnJvclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uTmV4dCgpXCI+TmV4dDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZsYWctdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZsYWcvY29tcG9uZW50cy9zZWxlY3QtZmxhZy10eXBlL3NlbGVjdC1mbGFnLXR5cGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvc2VsZWN0LWZsYWctdHlwZS9zZWxlY3QtZmxhZy10eXBlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFcEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFILE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLCtFQUErRSxDQUFDOzs7O0lDTDVILDZCQUFrRTtJQUNoRSxZQUtGOzs7SUFBQSww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QUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNqSSxDQUFDOzs4RkEzTVUsdUJBQXVCOzBFQUF2Qix1QkFBdUI7UUNqQnBDLDRGQTJEZTtRQUVmLHdFQUVNOztRQS9EUywwRUFBdUI7UUE2REwsZUFBbUI7UUFBbkIsd0NBQW1COzt1RkQ1Q3ZDLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLHNCQUFzQjt5RUFNekIsU0FBUztrQkFEZixLQUFLO1lBSUMsWUFBWTtrQkFEbEIsS0FBSztZQUlDLFVBQVU7a0JBRGhCLEtBQUs7WUFJQyxjQUFjO2tCQURwQixLQUFLO1lBSUMsaUNBQWlDO2tCQUR2QyxLQUFLO1lBSUMsdUNBQXVDO2tCQUQ3QyxLQUFLO1lBSUMscUJBQXFCO2tCQUQzQixLQUFLO1lBSUMsb0JBQW9CO2tCQUQxQixNQUFNO1lBSUEsMkJBQTJCO2tCQURqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRmxhZ1R5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4vY2FzZS1mbGFnJztcbmltcG9ydCB7IENhc2VGbGFnUmVmZGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZWZkYXRhQ2FzZUZsYWdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvY2FzZS1mbGFnL3JlZmRhdGEtY2FzZS1mbGFnLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBDYXNlRmxhZ1N0YXRlLCBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGbGFnRmllbGRTdGF0ZSwgQ2FzZUZsYWdGb3JtRmllbGRzLCBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZSwgU2VsZWN0RmxhZ1R5cGVFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBTZWFyY2hMYW5ndWFnZUludGVycHJldGVyQ29udHJvbE5hbWVzIH0gZnJvbSAnLi4vc2VhcmNoLWxhbmd1YWdlLWludGVycHJldGVyL3NlYXJjaC1sYW5ndWFnZS1pbnRlcnByZXRlci1jb250cm9sLW5hbWVzLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtc2VsZWN0LWZsYWctdHlwZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtZmxhZy10eXBlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWZsYWctdHlwZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEZsYWdUeXBlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGp1cmlzZGljdGlvbjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYXNlVHlwZUlkOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhtY3RzU2VydmljZUlkOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRGbGFnc0xvY2F0aW9uOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2FzZUZsYWdTdGF0ZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxDYXNlRmxhZ1N0YXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZsYWdDb21tZW50c09wdGlvbmFsRW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIGZsYWdUeXBlczogRmxhZ1R5cGVbXTtcbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdO1xuICBwdWJsaWMgZmxhZ1R5cGVOb3RTZWxlY3RlZEVycm9yTWVzc2FnZSA9ICcnO1xuICBwdWJsaWMgZmxhZ1R5cGVFcnJvck1lc3NhZ2UgPSAnJztcbiAgcHVibGljIGZsYWdSZWZkYXRhJDogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgcmVmZGF0YUVycm9yID0gZmFsc2U7XG4gIHB1YmxpYyBjYWNoZWRQYXRoOiAoRmxhZ1R5cGUgfCBmYWxzZSlbXTtcbiAgcHVibGljIGNhY2hlZEZsYWdUeXBlOiBGbGFnVHlwZTtcbiAgcHVibGljIGZsYWdUeXBlQ29udHJvbENoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VGbGFnRm9ybUZpZWxkID0gQ2FzZUZsYWdGb3JtRmllbGRzO1xuICBwdWJsaWMgaXNDYXNlTGV2ZWxGbGFnID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtYXhDaGFyYWN0ZXJzRm9yT3RoZXJGbGFnVHlwZSA9IDgwO1xuICAvLyBDb2RlIGZvciBcIk90aGVyXCIgZmxhZyB0eXBlIGFzIGRlZmluZWQgaW4gUmVmZXJlbmNlIERhdGFcbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckZsYWdUeXBlQ29kZSA9ICdPVDAwMDEnO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhc2VMZXZlbENhc2VGbGFnc0ZpZWxkSWQgPSAnY2FzZUZsYWdzJztcblxuICBwdWJsaWMgZ2V0IGNhc2VGbGFnV2l6YXJkU3RlcFRpdGxlKCk6IHR5cGVvZiBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZSB7XG4gICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZEZsYWdUeXBlKCk6IEZsYWdUeXBlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuRkxBR19UWVBFKT8udmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG90aGVyRmxhZ1R5cGVTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5GTEFHX1RZUEUpPy52YWx1ZT8uZmxhZ0NvZGUgPT09IHRoaXMub3RoZXJGbGFnVHlwZUNvZGU7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNhc2VGbGFnUmVmZGF0YVNlcnZpY2U6IENhc2VGbGFnUmVmZGF0YVNlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ2FzZUxldmVsRmxhZyA9IHRoaXMuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uPy5mbGFncz8uZmxhZ3NDYXNlRmllbGRJZCA9PT0gdGhpcy5jYXNlTGV2ZWxDYXNlRmxhZ3NGaWVsZElkO1xuICAgIHRoaXMuZmxhZ1R5cGVzID0gW107XG4gICAgY29uc3QgZmxhZ1R5cGUgPSB0aGlzLmlzQ2FzZUxldmVsRmxhZyA/IFJlZmRhdGFDYXNlRmxhZ1R5cGUuQ0FTRSA6IFJlZmRhdGFDYXNlRmxhZ1R5cGUuUEFSVFk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKENhc2VGbGFnRm9ybUZpZWxkcy5GTEFHX1RZUEUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woQ2FzZUZsYWdGb3JtRmllbGRzLk9USEVSX0ZMQUdfREVTQ1JJUFRJT04sIG5ldyBGb3JtQ29udHJvbCgnJykpO1xuICAgIC8vIEZvcm1Db250cm9sIGlzIGxpbmtlZCB0byBhIGNoZWNrYm94IGlucHV0IGVsZW1lbnQsIHNvIGluaXRpYWwgdmFsdWUgc2hvdWxkIGJlIGZhbHNlXG4gICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChDYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfVklTSUJMRV9JTlRFUk5BTExZX09OTFksIG5ldyBGb3JtQ29udHJvbChmYWxzZSkpO1xuXG4gICAgLy8gU2hvdWxkIGNsZWFyIGRlc2NyaXB0aW9uQ29udHJvbE5hbWUgaWYgZmxhZ1R5cGVDb250cm9sTmFtZSBpcyBjaGFuZ2VkXG4gICAgdGhpcy5mbGFnVHlwZUNvbnRyb2xDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5GTEFHX1RZUEUpPy52YWx1ZUNoYW5nZXNcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuT1RIRVJfRkxBR19ERVNDUklQVElPTik/LnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5jYWNoZWRQYXRoID0gW107XG5cbiAgICAgICAgLy8gcmVxdWlyZWQgdG8gY2xlYXIgbGFuZ3VhZ2UgaW50ZXJwcmV0ZXJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgW1NlYXJjaExhbmd1YWdlSW50ZXJwcmV0ZXJDb250cm9sTmFtZXMuTEFOR1VBR0VfU0VBUkNIX1RFUk1dOiAnJyxcbiAgICAgICAgICBbU2VhcmNoTGFuZ3VhZ2VJbnRlcnByZXRlckNvbnRyb2xOYW1lcy5NQU5VQUxfTEFOR1VBR0VfRU5UUlldOiAnJ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gSWYgaG1jdHNTZXJ2aWNlSWQgaXMgcHJlc2VudCwgdXNlIHRoaXMgdG8gcmV0cmlldmUgdGhlIHJlbGV2YW50IGxpc3Qgb2YgZmxhZyB0eXBlc1xuICAgIGlmICh0aGlzLmhtY3RzU2VydmljZUlkKSB7XG4gICAgICB0aGlzLmZsYWdSZWZkYXRhJCA9IHRoaXMuY2FzZUZsYWdSZWZkYXRhU2VydmljZVxuICAgICAgICAuZ2V0Q2FzZUZsYWdzUmVmZGF0YSh0aGlzLmhtY3RzU2VydmljZUlkLCBmbGFnVHlwZSwgdHJ1ZSwgdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWwpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IGZsYWdUeXBlcyA9PiB0aGlzLnByb2Nlc3NGbGFnVHlwZXMoZmxhZ1R5cGVzKSxcbiAgICAgICAgICBlcnJvcjogZXJyb3IgPT4gdGhpcy5vblJlZmRhdGFFcnJvcihlcnJvcilcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVsc2UsIEhNQ1RTIHNlcnZpY2UgY29kZSBpcyByZXF1aXJlZCB0byByZXRyaWV2ZSB0aGUgcmVsZXZhbnQgbGlzdCBvZiBmbGFnIHR5cGVzOyBhdHRlbXB0IHRvIG9idGFpbiBpdCBieSBjYXNlIHR5cGUgSUQgZmlyc3RcbiAgICAgIHRoaXMuZmxhZ1JlZmRhdGEkID0gdGhpcy5jYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlLmdldEhtY3RzU2VydmljZURldGFpbHNCeUNhc2VUeXBlKHRoaXMuY2FzZVR5cGVJZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgLy8gSWYgYW4gZXJyb3Igb2NjdXJzIHJldHJpZXZpbmcgSE1DVFMgc2VydmljZSBkZXRhaWxzIGJ5IGNhc2UgdHlwZSBJRCwgdHJ5IGJ5IHNlcnZpY2UgbmFtZSBpbnN0ZWFkXG4gICAgICAgICAgY2F0Y2hFcnJvcihfID0+IHRoaXMuY2FzZUZsYWdSZWZkYXRhU2VydmljZS5nZXRIbWN0c1NlcnZpY2VEZXRhaWxzQnlTZXJ2aWNlTmFtZSh0aGlzLmp1cmlzZGljdGlvbikpLFxuICAgICAgICAgIC8vIFVzZSBzd2l0Y2hNYXAgdG8gcmV0dXJuIGFuIGlubmVyIE9ic2VydmFibGUgb2YgdGhlIGZsYWcgdHlwZXMgZGF0YSwgaGF2aW5nIHJlY2VpdmVkIHRoZSBzZXJ2aWNlIGRldGFpbHNcbiAgICAgICAgICAvLyBpbmNsdWRpbmcgc2VydmljZV9jb2RlLiBUaGlzIGF2b2lkcyBoYXZpbmcgbmVzdGVkIGBzdWJzY3JpYmVgcywgd2hpY2ggaXMgYW4gYW50aS1wYXR0ZXJuIVxuICAgICAgICAgIHN3aXRjaE1hcChzZXJ2aWNlRGV0YWlscyA9PiB0aGlzLmNhc2VGbGFnUmVmZGF0YVNlcnZpY2UuZ2V0Q2FzZUZsYWdzUmVmZGF0YShzZXJ2aWNlRGV0YWlsc1swXS5zZXJ2aWNlX2NvZGUsIGZsYWdUeXBlLFxuICAgICAgICAgICAgdHJ1ZSwgdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWwpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IGZsYWdUeXBlcyA9PiB0aGlzLnByb2Nlc3NGbGFnVHlwZXMoZmxhZ1R5cGVzKSxcbiAgICAgICAgICBlcnJvcjogZXJyb3IgPT4gdGhpcy5vblJlZmRhdGFFcnJvcihlcnJvcilcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZmxhZ1JlZmRhdGEkPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZmxhZ1R5cGVDb250cm9sQ2hhbmdlc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5leHQoKTogdm9pZCB7XG4gICAgLy8gVmFsaWRhdGUgZm9ybVxuICAgIHRoaXMudmFsaWRhdGVGb3JtKCk7XG4gICAgLy8gUmV0dXJuIGNhc2UgZmxhZyBmaWVsZCBzdGF0ZSwgd2hldGhlciB0aGUgc2VsZWN0ZWQgZmxhZyB0eXBlIChpZiBhbnkpIGlzIGEgcGFyZW50IG9yIG5vdCwgZXJyb3IgbWVzc2FnZXMsXG4gICAgLy8gZmxhZyBuYW1lLCBwYXRoLCBoZWFyaW5nIHJlbGV2YW50IGluZGljYXRvciwgY29kZSwgYW5kIFwibGlzdCBvZiB2YWx1ZXNcIiAoaWYgYW55KSB0byB0aGUgcGFyZW50XG4gICAgdGhpcy5jYXNlRmxhZ1N0YXRlRW1pdHRlci5lbWl0KHtcbiAgICAgIGN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGU6IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEUsXG4gICAgICBpc1BhcmVudEZsYWdUeXBlOiB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUgPyB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUuaXNQYXJlbnQgOiBudWxsLFxuICAgICAgZXJyb3JNZXNzYWdlczogdGhpcy5lcnJvck1lc3NhZ2VzXG4gICAgfSk7XG4gICAgLy8gRW1pdCBcImZsYWcgY29tbWVudHMgb3B0aW9uYWxcIiBldmVudCBpZiB0aGUgdXNlciBzZWxlY3RzIGEgY2hpbGQgZmxhZyB0eXBlIHdoZXJlIGNvbW1lbnRzIGFyZSBub3QgbWFuZGF0b3J5XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSAmJiAhdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmlzUGFyZW50ICYmICF0aGlzLnNlbGVjdGVkRmxhZ1R5cGUuZmxhZ0NvbW1lbnQpIHtcbiAgICAgIHRoaXMuZmxhZ0NvbW1lbnRzT3B0aW9uYWxFbWl0dGVyLmVtaXQobnVsbCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHNlbGVjdGVkIGZsYWcgdHlwZSBpcyBhIHBhcmVudCwgbG9hZCB0aGUgbGlzdCBvZiBjaGlsZCBmbGFnIHR5cGVzIGFuZCByZXNldCB0aGUgY3VycmVudCBzZWxlY3Rpb25cbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsYWdUeXBlPy5pc1BhcmVudCkge1xuICAgICAgLy8gQ2FjaGUgdGhlIGN1cnJlbnQgZmxhZyB0eXBlIHNlbGVjdGlvbiBiZWZvcmUgaXQgaXMgcmVzZXQgLSB0aGlzIGlzIG5lZWRlZCBmb3IgZGlzcGxheWluZyBpdHMgbmFtZSBhcyB0aGUgdGl0bGVcbiAgICAgIC8vIHdoZW4gZGlzcGxheWluZyB0aGUgbmV4dCBzZXQgb2YgY2hpbGQgZmxhZ3NcbiAgICAgIHRoaXMuY2FjaGVkRmxhZ1R5cGUgPSB0aGlzLnNlbGVjdGVkRmxhZ1R5cGU7XG4gICAgICB0aGlzLmZsYWdUeXBlcyA9IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5jaGlsZEZsYWdzO1xuICAgICAgdGhpcy5jYWNoZWRQYXRoPy5zaGlmdCgpO1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5GTEFHX1RZUEUpPy5zZXRWYWx1ZSh0aGlzLmNhY2hlZFBhdGg/Lmxlbmd0aCA/IHRoaXMuY2FjaGVkUGF0aFswXSA6IG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBJZGVudGl0eSBmdW5jdGlvbiBmb3IgdHJhY2tCeSB1c2UgYnkgKm5nRm9yIGZvciBmbGFnVHlwZXMgaW4gSFRNTCB0ZW1wbGF0ZVxuICBwdWJsaWMgaWRlbnRpZnlGbGFnVHlwZShfOiBudW1iZXIsIGZsYWdUeXBlOiBGbGFnVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2ZsYWdUeXBlLmZsYWdDb2RlfV8ke2ZsYWdUeXBlLm5hbWV9XyR7ZmxhZ1R5cGUubmFtZV9jeX1gO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5mbGFnVHlwZU5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlID0gJyc7XG4gICAgdGhpcy5mbGFnVHlwZUVycm9yTWVzc2FnZSA9ICcnO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xuXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRmxhZ1R5cGUpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGFueSBwcmlvciBmbGFnIHR5cGUgc2VsZWN0aW9uIHRoZW4gdGhlIG1lc3NhZ2Ugd2lsbCBkaWZmZXJcbiAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgIGlmICh0aGlzLmNhY2hlZEZsYWdUeXBlKSB7XG4gICAgICAgIGVycm9yTWVzc2FnZSA9IFNlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9PUFRJT05fTk9UX1NFTEVDVEVEO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3JNZXNzYWdlICA9IHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsXG4gICAgICAgID8gU2VsZWN0RmxhZ1R5cGVFcnJvck1lc3NhZ2UuRkxBR19UWVBFX05PVF9TRUxFQ1RFRF9FWFRFUk5BTFxuICAgICAgICA6IFNlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9OT1RfU0VMRUNURUQ7XG4gICAgICB9XG4gICAgICB0aGlzLmZsYWdUeXBlTm90U2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7IHRpdGxlOiAnJywgZGVzY3JpcHRpb246IGVycm9yTWVzc2FnZSwgZmllbGRJZDogJ2NvbmRpdGlvbmFsLXJhZGlvcy1saXN0JyB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3RoZXJGbGFnVHlwZVNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBvdGhlckZsYWdUeXBlRGVzY3JpcHRpb24gPSB0aGlzLmZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLk9USEVSX0ZMQUdfREVTQ1JJUFRJT04pPy52YWx1ZTtcbiAgICAgIGlmICghb3RoZXJGbGFnVHlwZURlc2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMuZmxhZ1R5cGVFcnJvck1lc3NhZ2UgPSB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbFxuICAgICAgICAgID8gU2VsZWN0RmxhZ1R5cGVFcnJvck1lc3NhZ2UuRkxBR19UWVBFX05PVF9FTlRFUkVEX0VYVEVSTkFMXG4gICAgICAgICAgOiBTZWxlY3RGbGFnVHlwZUVycm9yTWVzc2FnZS5GTEFHX1RZUEVfTk9UX0VOVEVSRUQ7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHsgdGl0bGU6ICcnLCBkZXNjcmlwdGlvbjogYCR7dGhpcy5mbGFnVHlwZUVycm9yTWVzc2FnZX1gLCBmaWVsZElkOiAnb3RoZXItZmxhZy10eXBlLWRlc2NyaXB0aW9uJyB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChvdGhlckZsYWdUeXBlRGVzY3JpcHRpb24ubGVuZ3RoID4gdGhpcy5tYXhDaGFyYWN0ZXJzRm9yT3RoZXJGbGFnVHlwZSkge1xuICAgICAgICB0aGlzLmZsYWdUeXBlRXJyb3JNZXNzYWdlID0gU2VsZWN0RmxhZ1R5cGVFcnJvck1lc3NhZ2UuRkxBR19UWVBFX0xJTUlUX0VYQ0VFREVEO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7IHRpdGxlOiAnJywgZGVzY3JpcHRpb246IGAke1NlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9MSU1JVF9FWENFRURFRH1gLCBmaWVsZElkOiAnb3RoZXItZmxhZy10eXBlLWRlc2NyaXB0aW9uJyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NGbGFnVHlwZXMoZmxhZ1R5cGVzOiBGbGFnVHlwZVtdKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgKGFuZCBvbmx5KSBvYmplY3QgaW4gdGhlIHJldHVybmVkIGFycmF5IHNob3VsZCBiZSB0aGUgdG9wLWxldmVsIFwiUGFydHlcIiBmbGFnIHR5cGVcbiAgICAvLyBUaGUgXCJPdGhlclwiIGZsYWcgdHlwZSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSB0b3AgbGV2ZWwgaWYgdGhlIHVzZXIgaXMgZXh0ZXJuYWxcbiAgICB0aGlzLmZsYWdUeXBlcyA9IGZsYWdUeXBlc1swXS5jaGlsZEZsYWdzLmZpbHRlcigoZmxhZykgPT5cbiAgICAgIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsID8gZmxhZy5mbGFnQ29kZSAhPT0gdGhpcy5vdGhlckZsYWdUeXBlQ29kZSA6IHRydWUpO1xuXG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLkZMQUdfVFlQRSk7XG4gICAgaWYgKGZvcm1Db250cm9sPy52YWx1ZSkge1xuICAgICAgLy8gQ2FjaGUgUGF0aCBiYXNlZCBvbiBleGlzdGluZyBmbGFnQ29kZSAtLSBuZWVkZWQgZm9yIG5lc3RlZCBjaG9pY2VzXG4gICAgICBjb25zdCBbZm91bmRGbGFnVHlwZSwgcGF0aF0gPSBGbGFnVHlwZS5zZWFyY2hQYXRoQnlGbGFnVHlwZU9iamVjdChmb3JtQ29udHJvbC52YWx1ZSBhcyBGbGFnVHlwZSwgdGhpcy5mbGFnVHlwZXMpO1xuICAgICAgdGhpcy5jYWNoZWRQYXRoID0gW1xuICAgICAgICAuLi5wYXRoLFxuICAgICAgICBmb3VuZEZsYWdUeXBlXG4gICAgICBdO1xuICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5jYWNoZWRQYXRoWzBdLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvblJlZmRhdGFFcnJvcihlcnJvcjogYW55KTogdm9pZCB7XG4gICAgLy8gU2V0IGVycm9yIGZsYWcgb24gY29tcG9uZW50IHRvIHJlbW92ZSB0aGUgXCJOZXh0XCIgYnV0dG9uICh1c2VyIGNhbm5vdCBwcm9jZWVkIHdpdGggZmxhZyBjcmVhdGlvbilcbiAgICB0aGlzLnJlZmRhdGFFcnJvciA9IHRydWU7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW107XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goeyB0aXRsZTogJycsIGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLCBmaWVsZElkOiAnY29uZGl0aW9uYWwtcmFkaW9zLWxpc3QnIH0pO1xuICAgIC8vIFJldHVybiBjYXNlIGZsYWcgZmllbGQgc3RhdGUgYW5kIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBwYXJlbnRcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVFbWl0dGVyLmVtaXQoeyBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFLCBlcnJvck1lc3NhZ2VzOiB0aGlzLmVycm9yTWVzc2FnZXMgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmbGFnVHlwZXM/Lmxlbmd0aFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZmxhZ1R5cGVOb3RTZWxlY3RlZEVycm9yTWVzc2FnZS5sZW5ndGggPiAwfVwiPlxuICAgIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCIgYXJpYS1kZXNjcmliZWRieT1cImZsYWctdHlwZS1oZWFkaW5nXCI+XG4gICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1tXCI+XG4gICAgICAgIDxoMSBpZD1cImZsYWctdHlwZS1oZWFkaW5nXCIgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9faGVhZGluZyBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2FjaGVkRmxhZ1R5cGU7IGVsc2UgcHJpb3JGbGFnVHlwZVNlbGVjdGVkXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWxcbiAgICAgICAgICAgICAgICA/IChjYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5TRUxFQ1RfQ0FTRV9GTEFHX0VYVEVSTkFMIHwgcnB4VHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIDogKGNhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLlNFTEVDVF9DQVNFX0ZMQUcgfCBycHhUcmFuc2xhdGUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcHJpb3JGbGFnVHlwZVNlbGVjdGVkPlxuICAgICAgICAgICAge3tjYWNoZWRGbGFnVHlwZSB8IGZsYWdGaWVsZERpc3BsYXk6J25hbWUnfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2gxPlxuICAgICAgPC9sZWdlbmQ+XG4gICAgICA8ZGl2IGlkPVwiZmxhZy10eXBlLW5vdC1zZWxlY3RlZC1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgKm5nSWY9XCJmbGFnVHlwZU5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj57eydFcnJvcjonIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+IHt7ZmxhZ1R5cGVOb3RTZWxlY3RlZEVycm9yTWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3MgZ292dWstcmFkaW9zLS1jb25kaXRpb25hbFwiIGRhdGEtbW9kdWxlPVwiZ292dWstcmFkaW9zXCIgaWQ9XCJjb25kaXRpb25hbC1yYWRpb3MtbGlzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCIgKm5nRm9yPVwibGV0IGZsYWdUeXBlIG9mIGZsYWdUeXBlczsgaW5kZXggYXMgaTsgdHJhY2tCeTogaWRlbnRpZnlGbGFnVHlwZVwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIiBpZD1cImZsYWctdHlwZS17e2l9fVwiIFtuYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkLkZMQUdfVFlQRVwiXG4gICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBbdmFsdWVdPVwiZmxhZ1R5cGVcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjYXNlRmxhZ0Zvcm1GaWVsZC5GTEFHX1RZUEVcIi8+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbFwiIGZvcj1cImZsYWctdHlwZS17e2l9fVwiPlxuICAgICAgICAgICAge3tmbGFnVHlwZSB8IGZsYWdGaWVsZERpc3BsYXk6J25hbWUnfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19fY29uZGl0aW9uYWxcIiAqbmdJZj1cIm90aGVyRmxhZ1R5cGVTZWxlY3RlZFwiIGlkPVwiY29uZGl0aW9uYWwtZmxhZ1R5cGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6IGZsYWdUeXBlRXJyb3JNZXNzYWdlLmxlbmd0aCA+IDB9XCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbFwiIGZvcj1cIm90aGVyLWZsYWctdHlwZS1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbFxuICAgICAgICAgICAgICAgICAgPyAoY2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuT1RIRVJfRkxBR19UWVBFX0RFU0NSSVBUSU9OX0VYVEVSTkFMIHwgcnB4VHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgOiAoY2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuT1RIRVJfRkxBR19UWVBFX0RFU0NSSVBUSU9OIHwgcnB4VHJhbnNsYXRlKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJmbGFnLXR5cGUtZXJyb3ItbWVzc2FnZVwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZmxhZ1R5cGVFcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7J0Vycm9yOicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj4ge3tmbGFnVHlwZUVycm9yTWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLWlucHV0IGdvdnVrLSEtd2lkdGgtb25lLWhhbGZcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWlucHV0LS1lcnJvcic6IGZsYWdUeXBlRXJyb3JNZXNzYWdlLmxlbmd0aCA+IDB9XCJcbiAgICAgICAgICAgICAgaWQ9XCJvdGhlci1mbGFnLXR5cGUtZGVzY3JpcHRpb25cIiBbbmFtZV09XCJjYXNlRmxhZ0Zvcm1GaWVsZC5PVEhFUl9GTEFHX0RFU0NSSVBUSU9OXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkLk9USEVSX0ZMQUdfREVTQ1JJUFRJT05cIi8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbSBnb3Z1ay0hLW1hcmdpbi10b3AtNFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbCAmJiAhaXNDYXNlTGV2ZWxGbGFnICYmIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZFwiPlxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pbnB1dFwiIGlkPVwiaXMtdmlzaWJsZS1leHRlcm5hbGx5XCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJjYXNlRmxhZ0Zvcm1GaWVsZC5JU19WSVNJQkxFX0lOVEVSTkFMTFlfT05MWVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY2FzZUZsYWdGb3JtRmllbGQuSVNfVklTSUJMRV9JTlRFUk5BTExZX09OTFlcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstY2hlY2tib3hlc19fbGFiZWxcIiBmb3I9XCJpcy12aXNpYmxlLWV4dGVybmFsbHlcIj5cbiAgICAgICAgICAgICAgICB7eydUaGlzIGZsYWcgc2hvdWxkIG9ubHkgYmUgdmlzaWJsZSB0byBITUNUUyBTdGFmZicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiICpuZ0lmPVwiIXJlZmRhdGFFcnJvclwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbk5leHQoKVwiPnt7J05leHQnIHwgcnB4VHJhbnNsYXRlfX08L2J1dHRvbj5cbjwvZGl2PlxuIl19