@hmcts/ccd-case-ui-toolkit 6.18.0-welsh-release → 6.18.0-welsh-release-v2

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 (269) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +4149 -7328
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/shared/components/case-editor/case-edit/case-edit.component.js +1 -1
  6. package/esm2015/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.js +2 -2
  7. package/esm2015/lib/shared/components/case-editor/case-edit-generic-errors/case-edit-generic-errors.component.js +2 -2
  8. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +25 -13
  9. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +78 -101
  10. package/esm2015/lib/shared/components/case-editor/case-editor.module.js +4 -7
  11. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.js +2 -2
  12. package/esm2015/lib/shared/components/case-list/case-list.component.js +2 -2
  13. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.js +70 -69
  14. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +10 -5
  15. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +41 -53
  16. package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +2 -5
  17. package/esm2015/lib/shared/components/dialogs/delete-or-cancel-dialog/delete-or-cancel-dialog.component.js +3 -3
  18. package/esm2015/lib/shared/components/dialogs/document-dialog/document-dialog.component.js +3 -3
  19. package/esm2015/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.js +3 -3
  20. package/esm2015/lib/shared/components/dialogs/save-or-discard-dialog/save-or-discard-dialog.component.js +2 -2
  21. package/esm2015/lib/shared/components/event-start/components/task-cancelled/task-cancelled.component.js +3 -3
  22. package/esm2015/lib/shared/components/palette/base-field/field-read.component.js +1 -1
  23. package/esm2015/lib/shared/components/palette/base-field/field-write.component.js +1 -1
  24. package/esm2015/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.js +4 -10
  25. package/esm2015/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.js +42 -246
  26. package/esm2015/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.js +73 -144
  27. package/esm2015/lib/shared/components/palette/case-flag/components/index.js +5 -7
  28. package/esm2015/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.js +71 -36
  29. package/esm2015/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.js +101 -133
  30. package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.js +7 -15
  31. package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.js +113 -186
  32. package/esm2015/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.js +99 -286
  33. package/esm2015/lib/shared/components/palette/case-flag/domain/case-flag-state.model.js +1 -1
  34. package/esm2015/lib/shared/components/palette/case-flag/domain/case-flag.model.js +1 -1
  35. package/esm2015/lib/shared/components/palette/case-flag/domain/language.model.js +1 -1
  36. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.js +2 -3
  37. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.js +3 -8
  38. package/esm2015/lib/shared/components/palette/case-flag/enums/index.js +2 -8
  39. package/esm2015/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.js +2 -3
  40. package/esm2015/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.js +1 -2
  41. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.js +1 -3
  42. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.js +2 -3
  43. package/esm2015/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.js +4 -8
  44. package/esm2015/lib/shared/components/palette/case-flag/index.js +1 -2
  45. package/esm2015/lib/shared/components/palette/case-flag/read-case-flag-field.component.js +50 -121
  46. package/esm2015/lib/shared/components/palette/case-flag/write-case-flag-field.component.js +130 -234
  47. package/esm2015/lib/shared/components/palette/case-link/write-case-link-field.component.js +2 -2
  48. package/esm2015/lib/shared/components/palette/collection/write-collection-field.component.js +33 -31
  49. package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.js +2 -2
  50. package/esm2015/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.js +2 -2
  51. package/esm2015/lib/shared/components/palette/index.js +1 -2
  52. package/esm2015/lib/shared/components/palette/markdown/index.js +1 -2
  53. package/esm2015/lib/shared/components/palette/markdown/markdown.component.js +4 -4
  54. package/esm2015/lib/shared/components/palette/organisation/write-organisation-field.component.js +2 -2
  55. package/esm2015/lib/shared/components/palette/palette.module.js +55 -122
  56. package/esm2015/lib/shared/components/palette/palette.service.js +2 -5
  57. package/esm2015/lib/shared/domain/case-flag/flag-type.model.js +2 -17
  58. package/esm2015/lib/shared/domain/case-view/case-view-trigger.model.js +2 -1
  59. package/esm2015/lib/shared/domain/definition/display-context-enum.model.js +1 -3
  60. package/esm2015/lib/shared/fixture/shared.test.fixture.js +1 -2
  61. package/esm2015/lib/shared/pipes/index.js +2 -3
  62. package/esm2015/lib/shared/pipes/pipes.module.js +5 -9
  63. package/esm2015/lib/shared/services/case-flag/case-flag-refdata.service.js +3 -9
  64. package/esm2015/lib/shared/services/request/request.options.builder.js +1 -7
  65. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +5068 -7876
  66. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  67. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +12 -4
  68. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  69. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  70. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  71. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +1 -3
  72. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  73. package/lib/shared/components/case-viewer/case-viewer.module.d.ts +4 -4
  74. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
  75. package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
  76. package/lib/shared/components/palette/base-field/field-write.component.d.ts.map +1 -1
  77. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +1 -2
  78. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
  79. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts +5 -20
  80. package/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.d.ts.map +1 -1
  81. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts +1 -2
  82. package/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.d.ts.map +1 -1
  83. package/lib/shared/components/palette/case-flag/components/index.d.ts +4 -6
  84. package/lib/shared/components/palette/case-flag/components/index.d.ts.map +1 -1
  85. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +8 -4
  86. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  87. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +8 -10
  88. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
  89. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +1 -2
  90. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  91. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +8 -12
  92. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  93. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +9 -19
  94. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  95. package/lib/shared/components/palette/case-flag/domain/case-flag-state.model.d.ts +10 -1
  96. package/lib/shared/components/palette/case-flag/domain/case-flag-state.model.d.ts.map +1 -1
  97. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts +0 -6
  98. package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts.map +1 -1
  99. package/lib/shared/components/palette/case-flag/domain/language.model.d.ts +0 -1
  100. package/lib/shared/components/palette/case-flag/domain/language.model.d.ts.map +1 -1
  101. package/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.d.ts +1 -2
  102. package/lib/shared/components/palette/case-flag/enums/case-flag-status.enum.d.ts.map +1 -1
  103. package/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.d.ts +3 -8
  104. package/lib/shared/components/palette/case-flag/enums/case-flag-wizard-step-title.enum.d.ts.map +1 -1
  105. package/lib/shared/components/palette/case-flag/enums/index.d.ts +1 -7
  106. package/lib/shared/components/palette/case-flag/enums/index.d.ts.map +1 -1
  107. package/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.d.ts +1 -2
  108. package/lib/shared/components/palette/case-flag/enums/select-flag-error-message.enum.d.ts.map +1 -1
  109. package/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.d.ts +0 -1
  110. package/lib/shared/components/palette/case-flag/enums/select-flag-type-error-message.enum.d.ts.map +1 -1
  111. package/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.d.ts +1 -3
  112. package/lib/shared/components/palette/case-flag/enums/update-flag-error-message.enum.d.ts.map +1 -1
  113. package/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.d.ts +2 -3
  114. package/lib/shared/components/palette/case-flag/enums/update-flag-step.enum.d.ts.map +1 -1
  115. package/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.d.ts +3 -7
  116. package/lib/shared/components/palette/case-flag/enums/write-case-flag-field.enum.d.ts.map +1 -1
  117. package/lib/shared/components/palette/case-flag/index.d.ts +0 -1
  118. package/lib/shared/components/palette/case-flag/index.d.ts.map +1 -1
  119. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts +8 -11
  120. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
  121. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +24 -23
  122. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  123. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +2 -3
  124. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  125. package/lib/shared/components/palette/index.d.ts +0 -1
  126. package/lib/shared/components/palette/index.d.ts.map +1 -1
  127. package/lib/shared/components/palette/markdown/index.d.ts +0 -1
  128. package/lib/shared/components/palette/markdown/index.d.ts.map +1 -1
  129. package/lib/shared/components/palette/markdown/markdown.component.d.ts +3 -3
  130. package/lib/shared/components/palette/markdown/markdown.component.d.ts.map +1 -1
  131. package/lib/shared/components/palette/palette.module.d.ts +118 -134
  132. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  133. package/lib/shared/components/palette/palette.service.d.ts.map +1 -1
  134. package/lib/shared/components/search-result/search-result.component.d.ts +1 -1
  135. package/lib/shared/domain/case-flag/flag-type.model.d.ts +1 -6
  136. package/lib/shared/domain/case-flag/flag-type.model.d.ts.map +1 -1
  137. package/lib/shared/domain/case-view/case-view-trigger.model.d.ts +1 -0
  138. package/lib/shared/domain/case-view/case-view-trigger.model.d.ts.map +1 -1
  139. package/lib/shared/domain/definition/display-context-enum.model.d.ts +1 -3
  140. package/lib/shared/domain/definition/display-context-enum.model.d.ts.map +1 -1
  141. package/lib/shared/fixture/shared.test.fixture.d.ts.map +1 -1
  142. package/lib/shared/pipes/index.d.ts +1 -2
  143. package/lib/shared/pipes/index.d.ts.map +1 -1
  144. package/lib/shared/pipes/pipes.module.d.ts +2 -3
  145. package/lib/shared/pipes/pipes.module.d.ts.map +1 -1
  146. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts +2 -3
  147. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts.map +1 -1
  148. package/lib/shared/services/request/request.options.builder.d.ts.map +1 -1
  149. package/package.json +1 -1
  150. package/esm2015/lib/shared/components/case-editor/services/case-flag-state.service.js +0 -19
  151. package/esm2015/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.js +0 -181
  152. package/esm2015/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.js +0 -6
  153. package/esm2015/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.js +0 -292
  154. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.js +0 -9
  155. package/esm2015/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.js +0 -12
  156. package/esm2015/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.js +0 -6
  157. package/esm2015/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.js +0 -6
  158. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.js +0 -6
  159. package/esm2015/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.js +0 -6
  160. package/esm2015/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.js +0 -41
  161. package/esm2015/lib/shared/components/palette/case-flag/pipes/index.js +0 -5
  162. package/esm2015/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.js +0 -41
  163. package/esm2015/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.js +0 -109
  164. package/esm2015/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.js +0 -77
  165. package/esm2015/lib/shared/components/palette/markdown/markdown-component.module.js +0 -42
  166. package/esm2015/lib/shared/components/palette/query-management/__mocks__/index.js +0 -120
  167. package/esm2015/lib/shared/components/palette/query-management/components/index.js +0 -9
  168. package/esm2015/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.js +0 -64
  169. package/esm2015/lib/shared/components/palette/query-management/components/query-create/query-create.component.js +0 -18
  170. package/esm2015/lib/shared/components/palette/query-management/components/query-details/query-details.component.js +0 -56
  171. package/esm2015/lib/shared/components/palette/query-management/components/query-details-table/query-details-table.component.js +0 -150
  172. package/esm2015/lib/shared/components/palette/query-management/components/query-list/query-list.component.js +0 -175
  173. package/esm2015/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.js +0 -67
  174. package/esm2015/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.js +0 -214
  175. package/esm2015/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.js +0 -108
  176. package/esm2015/lib/shared/components/palette/query-management/index.js +0 -6
  177. package/esm2015/lib/shared/components/palette/query-management/models/index.js +0 -7
  178. package/esm2015/lib/shared/components/palette/query-management/models/party-messages/party-message.model.js +0 -2
  179. package/esm2015/lib/shared/components/palette/query-management/models/party-messages/party-messages-group.model.js +0 -2
  180. package/esm2015/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.js +0 -2
  181. package/esm2015/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.js +0 -18
  182. package/esm2015/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.js +0 -35
  183. package/esm2015/lib/shared/components/palette/query-management/models/query-list/query-list-response-status.enum.js +0 -6
  184. package/esm2015/lib/shared/components/palette/query-management/read-query-management-field.component.js +0 -83
  185. package/esm2015/lib/shared/components/palette/query-management/utils/query-management.utils.js +0 -12
  186. package/esm2015/lib/shared/components/palette/query-management/write-query-management-field.component.js +0 -45
  187. package/esm2015/lib/shared/domain/case-view/case-view-event-ids.enum.js +0 -6
  188. package/esm2015/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.js +0 -16
  189. package/esm2015/lib/shared/pipes/generic/index.js +0 -2
  190. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts +0 -11
  191. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts.map +0 -1
  192. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +0 -28
  193. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts.map +0 -1
  194. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.d.ts +0 -5
  195. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter-control-names.enum.d.ts.map +0 -1
  196. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts +0 -27
  197. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts.map +0 -1
  198. package/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.d.ts +0 -8
  199. package/lib/shared/components/palette/case-flag/enums/case-flag-display-context-parameter.enum.d.ts.map +0 -1
  200. package/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.d.ts +0 -11
  201. package/lib/shared/components/palette/case-flag/enums/case-flag-form-fields.enum.d.ts.map +0 -1
  202. package/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.d.ts +0 -5
  203. package/lib/shared/components/palette/case-flag/enums/confirm-status-error-message.enum.d.ts.map +0 -1
  204. package/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.d.ts +0 -5
  205. package/lib/shared/components/palette/case-flag/enums/confirm-status-step.enum.d.ts.map +0 -1
  206. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.d.ts +0 -5
  207. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-error-message.enum.d.ts.map +0 -1
  208. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.d.ts +0 -5
  209. package/lib/shared/components/palette/case-flag/enums/update-flag-add-translation-step.enum.d.ts.map +0 -1
  210. package/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.d.ts +0 -19
  211. package/lib/shared/components/palette/case-flag/pipes/flag-field-display.pipe.d.ts.map +0 -1
  212. package/lib/shared/components/palette/case-flag/pipes/index.d.ts +0 -5
  213. package/lib/shared/components/palette/case-flag/pipes/index.d.ts.map +0 -1
  214. package/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.d.ts +0 -18
  215. package/lib/shared/components/palette/case-flag/pipes/language-interpreter-display.pipe.d.ts.map +0 -1
  216. package/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.d.ts +0 -25
  217. package/lib/shared/components/palette/case-flag/pipes/manage-case-flags-label-display.pipe.d.ts.map +0 -1
  218. package/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.d.ts +0 -21
  219. package/lib/shared/components/palette/case-flag/pipes/update-flag-title-display.pipe.d.ts.map +0 -1
  220. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts +0 -13
  221. package/lib/shared/components/palette/markdown/markdown-component.module.d.ts.map +0 -1
  222. package/lib/shared/components/palette/query-management/__mocks__/index.d.ts +0 -3
  223. package/lib/shared/components/palette/query-management/__mocks__/index.d.ts.map +0 -1
  224. package/lib/shared/components/palette/query-management/components/index.d.ts +0 -9
  225. package/lib/shared/components/palette/query-management/components/index.d.ts.map +0 -1
  226. package/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.d.ts +0 -10
  227. package/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.d.ts.map +0 -1
  228. package/lib/shared/components/palette/query-management/components/query-create/query-create.component.d.ts +0 -9
  229. package/lib/shared/components/palette/query-management/components/query-create/query-create.component.d.ts.map +0 -1
  230. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +0 -11
  231. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +0 -1
  232. package/lib/shared/components/palette/query-management/components/query-details-table/query-details-table.component.d.ts +0 -8
  233. package/lib/shared/components/palette/query-management/components/query-details-table/query-details-table.component.d.ts.map +0 -1
  234. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts +0 -18
  235. package/lib/shared/components/palette/query-management/components/query-list/query-list.component.d.ts.map +0 -1
  236. package/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.d.ts +0 -17
  237. package/lib/shared/components/palette/query-management/components/query-write/query-write-add-documents/query-write-add-documents.component.d.ts.map +0 -1
  238. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts +0 -8
  239. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts.map +0 -1
  240. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts +0 -10
  241. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts.map +0 -1
  242. package/lib/shared/components/palette/query-management/index.d.ts +0 -6
  243. package/lib/shared/components/palette/query-management/index.d.ts.map +0 -1
  244. package/lib/shared/components/palette/query-management/models/index.d.ts +0 -7
  245. package/lib/shared/components/palette/query-management/models/index.d.ts.map +0 -1
  246. package/lib/shared/components/palette/query-management/models/party-messages/party-message.model.d.ts +0 -14
  247. package/lib/shared/components/palette/query-management/models/party-messages/party-message.model.d.ts.map +0 -1
  248. package/lib/shared/components/palette/query-management/models/party-messages/party-messages-group.model.d.ts +0 -7
  249. package/lib/shared/components/palette/query-management/models/party-messages/party-messages-group.model.d.ts.map +0 -1
  250. package/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.d.ts +0 -7
  251. package/lib/shared/components/palette/query-management/models/query-list/query-list-column/query-list-column.model.d.ts.map +0 -1
  252. package/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.d.ts +0 -10
  253. package/lib/shared/components/palette/query-management/models/query-list/query-list-data/query-list-data.model.d.ts.map +0 -1
  254. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts +0 -21
  255. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts.map +0 -1
  256. package/lib/shared/components/palette/query-management/models/query-list/query-list-response-status.enum.d.ts +0 -5
  257. package/lib/shared/components/palette/query-management/models/query-list/query-list-response-status.enum.d.ts.map +0 -1
  258. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +0 -17
  259. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +0 -1
  260. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +0 -7
  261. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +0 -1
  262. package/lib/shared/components/palette/query-management/write-query-management-field.component.d.ts +0 -12
  263. package/lib/shared/components/palette/query-management/write-query-management-field.component.d.ts.map +0 -1
  264. package/lib/shared/domain/case-view/case-view-event-ids.enum.d.ts +0 -5
  265. package/lib/shared/domain/case-view/case-view-event-ids.enum.d.ts.map +0 -1
  266. package/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.d.ts +0 -8
  267. package/lib/shared/pipes/generic/enum-display-description/enum-display-description.pipe.d.ts.map +0 -1
  268. package/lib/shared/pipes/generic/index.d.ts +0 -2
  269. package/lib/shared/pipes/generic/index.d.ts.map +0 -1
@@ -216,7 +216,7 @@ function WriteOrganisationFieldComponent_fieldset_3_Template(rf, ctx) { if (rf &
216
216
  i0.ɵɵadvance(4);
217
217
  i0.ɵɵproperty("caseField", ctx_r1.caseField)("formGroup", ctx_r1.formGroup)("selectedOrg$", ctx_r1.selectedOrg$);
218
218
  i0.ɵɵadvance(4);
219
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 20, "Can\u2019t find the organisation you are looking for ?"), " ");
219
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 20, "Can\u2019t find the organisation you are looking for?"), " ");
220
220
  i0.ɵɵadvance(3);
221
221
  i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(29, 22, "If you know that the solicitor is already registered with MyHMCTS, check that you have entered their details correctly."), " ", i0.ɵɵpipeBind1(30, 24, "Remember that organisations can only register one office address. This means that the details could be slightly different from what you're expecting. Contact the solicitor directly if you have any concerns."), " ");
222
222
  } }
@@ -425,4 +425,4 @@ WriteOrganisationFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteOrga
425
425
  styleUrls: ['./organisation-field.scss']
426
426
  }]
427
427
  }], function () { return [{ type: i1.OrganisationService }, { type: i2.OrganisationConverter }, { type: i3.WindowService }]; }, null); })();
428
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtb3JnYW5pc2F0aW9uLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL29yZ2FuaXNhdGlvbi93cml0ZS1vcmdhbmlzYXRpb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvb3JnYW5pc2F0aW9uL3dyaXRlLW9yZ2FuaXNhdGlvbi1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU1RixPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0scURBQXFELENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7SUNUekYsbUNBQWdGO0lBQzlFLDRCQUF3QztJQUN4Qyw4QkFBMEI7SUFDeEIsbUJBQXdLO0lBQXhLLDhCQUF3SztJQUN0SywwQkFDd0c7SUFBQSxpQkFBTTtJQUNoSCxvQkFBbUM7SUFBbkMsOEJBQW1DO0lBQ2pDLCtCQUFzQztJQUFBLFlB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QUFDO1FBQ25FLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxlQUFlLEVBQUU7WUFDOUMsSUFBSSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUMzRSxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7SUFDSCxDQUFDOztBQXBOdUIsZ0RBQWdCLEdBQTRCLEVBQUMsc0JBQXNCLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBQyxDQUFDO0FBQ2hHLGdEQUFnQixHQUFXLEdBQUcsQ0FBQztBQUMvQiwrQ0FBZSxHQUFXLGdCQUFnQixDQUFDO0FBQzNDLGlEQUFpQixHQUFXLGtCQUFrQixDQUFDO0FBQy9DLGtFQUFrQyxHQUFXLGdDQUFnQyxDQUFDO0FBQzlFLG9EQUFvQixHQUFXLHFCQUFxQixDQUFDO0FBQ3JELG1DQUFHLEdBQVcsS0FBSyxDQUFDO0FBQ3BCLHlDQUFTLEdBQVcsV0FBVyxDQUFDOzhHQVQ3QywrQkFBK0I7b0VBQS9CLCtCQUErQjtRQ2pCNUMsOEJBQTREO1FBQzFELDJGQWdCVzs7UUFDWCw0RkE2RVc7O1FBQ2IsaUJBQU07Ozs7UUFoR2tCLHFEQUFtQztRQUM5QyxlQUE0QztRQUE1QyxtSEFBNEM7UUFpQjVDLGVBQTBDO1FBQTFDLGlIQUEwQzs7dUZERDFDLCtCQUErQjtjQUwzQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsV0FBVyxFQUFFLDJDQUEyQztnQkFDeEQsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUM7YUFDekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBPcmdhbmlzYXRpb25Db252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vb3JnYW5pc2F0aW9uL29yZ2FuaXNhdGlvbi1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgU2ltcGxlT3JnYW5pc2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vb3JnYW5pc2F0aW9uL3NpbXBsZS1vcmdhbmlzYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgT3JnYW5pc2F0aW9uU2VydmljZSwgT3JnYW5pc2F0aW9uVm0gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmdhbmlzYXRpb24vb3JnYW5pc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2luZG93U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dpbmRvdy93aW5kb3cuc2VydmljZSc7XG5cbmltcG9ydCB7IEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtd3JpdGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLW9yZ2FuaXNhdGlvbi1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1vcmdhbmlzYXRpb24tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vcmdhbmlzYXRpb24tZmllbGQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEVNUFRZX1NJTVBMRV9PUkc6IFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsID0ge29yZ2FuaXNhdGlvbklkZW50aWZpZXI6ICcnLCBuYW1lOiAnJywgYWRkcmVzczogJyd9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNQVhfUkVTVUxUX0NPVU5UOiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE9SR0FOSVNBVElPTl9JRDogc3RyaW5nID0gJ09yZ2FuaXNhdGlvbklEJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgT1JHQU5JU0FUSU9OX05BTUU6IHN0cmluZyA9ICdPcmdhbmlzYXRpb25OYW1lJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTjogc3RyaW5nID0gJ1ByZXBvcHVsYXRlVG9Vc2Vyc09yZ2FuaXNhdGlvbic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE9SR0FOSVNBVElPTl9ERVRBSUxTOiBzdHJpbmcgPSAnb3JnYW5pc2F0aW9uRGV0YWlscyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFlFUzogc3RyaW5nID0gJ1lFUyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1BTkRBVE9SWTogc3RyaW5nID0gJ01BTkRBVE9SWSc7XG4gIHB1YmxpYyBkZWZhdWx0T3JnOiBhbnk7XG5cbiAgcHVibGljIG9yZ2FuaXNhdGlvbkZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgc2VhcmNoT3JnVGV4dEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIG9yZ2FuaXNhdGlvbklERm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgb3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBwdWJsaWMgb3JnYW5pc2F0aW9ucyQ6IE9ic2VydmFibGU8T3JnYW5pc2F0aW9uVm1bXT47XG4gIHB1YmxpYyBzZWFyY2hPcmdWYWx1ZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIHNpbXBsZU9yZ2FuaXNhdGlvbnMkOiBPYnNlcnZhYmxlPFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsW10+O1xuICBwdWJsaWMgc2VsZWN0ZWRPcmckOiBPYnNlcnZhYmxlPFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG9yZ2FuaXNhdGlvblNlcnZpY2U6IE9yZ2FuaXNhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3JnYW5pc2F0aW9uQ29udmVydGVyOiBPcmdhbmlzYXRpb25Db252ZXJ0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93U2VydmljZTogV2luZG93U2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kZWZhdWx0T3JnID0gSlNPTi5wYXJzZSh0aGlzLndpbmRvd1NlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5PUkdBTklTQVRJT05fREVUQUlMUykpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3JnYW5pc2F0aW9ucyQgPSB0aGlzLm9yZ2FuaXNhdGlvblNlcnZpY2UuZ2V0QWN0aXZlT3JnYW5pc2F0aW9ucygpO1xuXG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIHRoaXMuc2VhcmNoT3JnVmFsdWUkID0gdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzO1xuICAgIHRoaXMuc2VhcmNoT3JnVmFsdWUkLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLm9uU2VhcmNoT3JnKHZhbHVlKSk7XG5cbiAgICB0aGlzLm9yZ2FuaXNhdGlvbkZvcm1Hcm91cCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtR3JvdXAoe30pLCB0cnVlKSBhcyBGb3JtR3JvdXA7XG4gICAgaWYgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmNvbnRyb2xzICYmIHRoaXMucGFyZW50LmNvbnRyb2xzLmhhc093blByb3BlcnR5KFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTilcbiAgICAgICYmIHRoaXMucGFyZW50LmNvbnRyb2xzW1dyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTl0udmFsdWVcbiAgICAgICYmIHRoaXMucGFyZW50LmNvbnRyb2xzW1dyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTl0udmFsdWUudG9VcHBlckNhc2UoKVxuICAgICAgPT09IFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuWUVTKSB7XG4gICAgICBpZiAodGhpcy5jYXNlRmllbGQgJiYgIXRoaXMuY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0ge1xuICAgICAgICAgIE9yZ2FuaXNhdGlvbklEOiB0aGlzLmRlZmF1bHRPcmcgPyB0aGlzLmRlZmF1bHRPcmcub3JnYW5pc2F0aW9uSWRlbnRpZmllciA6IG51bGwsXG4gICAgICAgICAgT3JnYW5pc2F0aW9uTmFtZTogdGhpcy5kZWZhdWx0T3JnID8gdGhpcy5kZWZhdWx0T3JnLm5hbWUgOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLnByZVNlbGVjdERlZmF1bHRPcmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY2FzZUZpZWxkICYmIHRoaXMuY2FzZUZpZWxkLnZhbHVlICYmIHRoaXMuY2FzZUZpZWxkLnZhbHVlLk9yZ2FuaXNhdGlvbklEKSB7XG4gICAgICAgIHRoaXMucHJlU2VsZWN0RGVmYXVsdE9yZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcmVTZWxlY3RFbXB0eU9yZygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGF0IGFsbCBzdWItZmllbGRzIGluaGVyaXQgdGhlIHNhbWUgdmFsdWUgZm9yIHJldGFpbl9oaWRkZW5fdmFsdWUgYXMgdGhpcyBwYXJlbnQ7IGFsdGhvdWdoIGFuXG4gICAgLy8gT3JnYW5pc2F0aW9uIGZpZWxkIHVzZXMgdGhlIENvbXBsZXggdHlwZSwgaXQgaXMgbWVhbnQgdG8gYmUgdHJlYXRlZCBhcyBvbmUgZmllbGRcbiAgICBpZiAodGhpcy5jYXNlRmllbGQgJiYgdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgIGZvciAoY29uc3Qgb3JnYW5pc2F0aW9uU3ViRmllbGQgb2YgdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICBvcmdhbmlzYXRpb25TdWJGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlID0gdGhpcy5jYXNlRmllbGQucmV0YWluX2hpZGRlbl92YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWFyY2hPcmcob3JnU2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG9yZ1NlYXJjaFRleHQgJiYgb3JnU2VhcmNoVGV4dC5sZW5ndGggPj0gMikge1xuICAgICAgY29uc3QgbG93ZXJPcmdTZWFyY2hUZXh0ID0gb3JnU2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5zaW1wbGVPcmdhbmlzYXRpb25zJCA9IHRoaXMub3JnYW5pc2F0aW9ucyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKG9yZ2FuaXNhdGlvbnMgPT4gb2YoXG4gICAgICAgICAgdGhpcy5zZWFyY2hPcmcob3JnYW5pc2F0aW9ucywgbG93ZXJPcmdTZWFyY2hUZXh0KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaW1wbGVPcmdhbmlzYXRpb25zJCA9IG9mKFtdKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGUgd2F5IHRoZSBzZWFyY2ggd29ya3MgZGl2aWRlIGludG8gdHdvIHBoYXNlc1xuICAvLyAxLiBnbyB0aHJvdWdoIGNvbGxlY3Rpb24gb2Ygb3JnIGl0ZW1zIG9uZSBieSBvbmUgYnkgZG9pbmcgdGhlIGNvbXBhcnNpb24gb2Ygc2VhcmNoIHN0cmluZyB1c2luZyBpbmNsdWRlcyB0byBhbGwgdGhlIGFkZHJlc3MgZmllbGRzXG4gIC8vIDIuIHNwbGl0IHRoZSBzZWFyY2ggc3RyaW5nIGludG8gYXJyYXlzIGFuZCBhcHBseSB0aGUgZWFjaCBhcnJheSBpdGVtIGludG8gdGhlIGFkZHJlc3MgZmllbGRzXG4gIC8vIDMuIGJvdGggc3RlcCAxLCAyIHdpbGwgZ28gdW50aWwgbWF4IGNvdW50IHJlc3VsdCByZWFjaGVzLCBhbmQgZmluYWxseSBjb21iaW5lIGJvdGggcmVzdWx0IHNldHMgaW50byBmaW5hbCBjb2xsZWN0aW9uXG4gIHB1YmxpYyBzZWFyY2hPcmcob3JnYW5pc2F0aW9uczogT3JnYW5pc2F0aW9uVm1bXSwgbG93ZXJPcmdTZWFyY2hUZXh0OiBzdHJpbmcpOiBTaW1wbGVPcmdhbmlzYXRpb25Nb2RlbFtdIHtcbiAgICBjb25zdCBwYXJ0TWF0Y2hpbmdSZXN1bHRTZXQgPSBbXTtcbiAgICBjb25zdCB3aXRoU3BhY2VNYXRjaGluZ1Jlc3VsdFNldCA9IFtdO1xuICAgIGNvbnN0IE1BWF9SRVNVTFRfQ09VTlQgPSBXcml0ZU9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50Lk1BWF9SRVNVTFRfQ09VTlQ7XG4gICAgb3JnYW5pc2F0aW9ucy5mb3JFYWNoKChvcmdhbmlzYXRpb24pID0+IHtcbiAgICAgIGlmICggcGFydE1hdGNoaW5nUmVzdWx0U2V0Lmxlbmd0aCA8IE1BWF9SRVNVTFRfQ09VTlQgJiYgdGhpcy5zZWFyY2hDcml0ZXJpYShvcmdhbmlzYXRpb24sIGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgICAgcGFydE1hdGNoaW5nUmVzdWx0U2V0LnB1c2gob3JnYW5pc2F0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9yZ2FuaXNhdGlvbnMuZm9yRWFjaCgob3JnKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHRTZXQgPSBbLi4ucGFydE1hdGNoaW5nUmVzdWx0U2V0LCAuLi53aXRoU3BhY2VNYXRjaGluZ1Jlc3VsdFNldF07XG4gICAgICBjb25zdCBoYXNNYXRjaGluZ09yZ2FuaXNhdGlvbiA9IHJlc3VsdFNldC5maW5kKGl0ZW0gPT4gaXRlbS5vcmdhbmlzYXRpb25JZGVudGlmaWVyID09PSBvcmcub3JnYW5pc2F0aW9uSWRlbnRpZmllcik7XG4gICAgICBjb25zdCBzZWFyY2hIYXNTcGFjZSA9IHRoaXMuc2VhcmNoV2l0aFNwYWNlKG9yZywgbG93ZXJPcmdTZWFyY2hUZXh0KTtcbiAgICAgIGNvbnN0IGhhc1Jlc3VsdFNldEJlbG93TWF4Q291bnQgPSByZXN1bHRTZXQubGVuZ3RoIDwgTUFYX1JFU1VMVF9DT1VOVDtcblxuICAgICAgaWYgKCFoYXNNYXRjaGluZ09yZ2FuaXNhdGlvbiAmJiBwYXJ0TWF0Y2hpbmdSZXN1bHRTZXQubGVuZ3RoID09PSAwICYmIGhhc1Jlc3VsdFNldEJlbG93TWF4Q291bnQgJiYgc2VhcmNoSGFzU3BhY2UpIHtcbiAgICAgICAgd2l0aFNwYWNlTWF0Y2hpbmdSZXN1bHRTZXQucHVzaChvcmcpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBbLi4ucGFydE1hdGNoaW5nUmVzdWx0U2V0LCAuLi53aXRoU3BhY2VNYXRjaGluZ1Jlc3VsdFNldF0ubWFwKChvcmdhbmlzYXRpb24pID0+XG4gICAgICB0aGlzLm9yZ2FuaXNhdGlvbkNvbnZlcnRlci50b1NpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsKG9yZ2FuaXNhdGlvbilcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHRyaW1BbGwob2xkVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb2xkVGV4dC5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RPcmcoc2VsZWN0ZWRPcmc6IFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25JREZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkT3JnLm9yZ2FuaXNhdGlvbklkZW50aWZpZXIpO1xuICAgIHRoaXMub3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkT3JnLm5hbWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcmckID0gb2Yoc2VsZWN0ZWRPcmcpO1xuICAgIHRoaXMuc2ltcGxlT3JnYW5pc2F0aW9ucyQgPSBvZihbLi4uW10sIHNlbGVjdGVkT3JnXSk7XG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuc2VhcmNoT3JnVGV4dEZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZSA9IHtcbiAgICAgIE9yZ2FuaXNhdGlvbklEOiBzZWxlY3RlZE9yZy5vcmdhbmlzYXRpb25JZGVudGlmaWVyLFxuICAgICAgT3JnYW5pc2F0aW9uTmFtZTogc2VsZWN0ZWRPcmcubmFtZVxuICAgIH07XG4gICAgdGhpcy5vcmdhbmlzYXRpb25Gb3JtR3JvdXAuc2V0VmFsdWUodGhpcy5jYXNlRmllbGQudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGRlU2VsZWN0T3JnKCk6IHZvaWQge1xuICAgIHRoaXMub3JnYW5pc2F0aW9uSURGb3JtQ29udHJvbC5yZXNldCgpO1xuICAgIHRoaXMub3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sLnJlc2V0KCk7XG4gICAgdGhpcy5zZWxlY3RlZE9yZyQgPSBvZihXcml0ZU9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50LkVNUFRZX1NJTVBMRV9PUkcpO1xuICAgIHRoaXMuc2ltcGxlT3JnYW5pc2F0aW9ucyQgPSBvZihbXSk7XG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuc2VhcmNoT3JnVGV4dEZvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0ge09yZ2FuaXNhdGlvbklEOiBudWxsLCBPcmdhbmlzYXRpb25OYW1lOiBudWxsfTtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbkZvcm1Hcm91cC5zZXRWYWx1ZSh0aGlzLmNhc2VGaWVsZC52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHByZVNlbGVjdERlZmF1bHRPcmcoKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW50aWF0ZU9yZ2FuaXNhdGlvbkZvcm1Hcm91cCh0aGlzLmNhc2VGaWVsZC52YWx1ZS5PcmdhbmlzYXRpb25JRCwgdGhpcy5jYXNlRmllbGQudmFsdWUuT3JnYW5pc2F0aW9uTmFtZSk7XG4gICAgdGhpcy5zZWxlY3RlZE9yZyQgPSB0aGlzLm9yZ2FuaXNhdGlvbnMkLnBpcGUoXG4gICAgICBtYXAob3JnYW5pc2F0aW9ucyA9PlxuICAgICAgICBvcmdhbmlzYXRpb25zLmZpbHRlcihmaW5kT3JnID0+IHtcbiAgICAgICAgICByZXR1cm4gZmluZE9yZy5vcmdhbmlzYXRpb25JZGVudGlmaWVyID09PSB0aGlzLmNhc2VGaWVsZC52YWx1ZS5PcmdhbmlzYXRpb25JRDtcbiAgICAgICAgfSlcbiAgICAgICAgICAubWFwKG9yZ2FuaXNhdGlvbiA9PiB0aGlzLm9yZ2FuaXNhdGlvbkNvbnZlcnRlci50b1NpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsKG9yZ2FuaXNhdGlvbikpWzBdKSxcbiAgICApO1xuICAgIGlmICh0aGlzLmNhc2VGaWVsZC52YWx1ZSAmJiB0aGlzLmNhc2VGaWVsZC52YWx1ZS5PcmdhbmlzYXRpb25JRCkge1xuICAgICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJlU2VsZWN0RW1wdHlPcmcoKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW50aWF0ZU9yZ2FuaXNhdGlvbkZvcm1Hcm91cChudWxsLCBudWxsKTtcbiAgICB0aGlzLnNlbGVjdGVkT3JnJCA9IG9mKFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuRU1QVFlfU0lNUExFX09SRyk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbnRpYXRlT3JnYW5pc2F0aW9uRm9ybUdyb3VwKG9yZ0lEU3RhdGU6IGFueSwgb3JnTmFtZVN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbklERm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wob3JnSURTdGF0ZSk7XG4gICAgdGhpcy5hZGRPcmdhbmlzYXRpb25WYWxpZGF0b3JzKHRoaXMuY2FzZUZpZWxkLCB0aGlzLm9yZ2FuaXNhdGlvbklERm9ybUNvbnRyb2wpO1xuICAgIHRoaXMub3JnYW5pc2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5PUkdBTklTQVRJT05fSUQsIHRoaXMub3JnYW5pc2F0aW9uSURGb3JtQ29udHJvbCk7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25OYW1lRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wob3JnTmFtZVN0YXRlKTtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuT1JHQU5JU0FUSU9OX05BTUUsIHRoaXMub3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT3JnYW5pc2F0aW9uVmFsaWRhdG9ycyhjYXNlRmllbGQ6IENhc2VGaWVsZCwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgaWYgKGNhc2VGaWVsZC5maWVsZF90eXBlICYmIGNhc2VGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKSB7XG4gICAgICBjb25zdCBvcmdhbmlzYXRpb25JZEZpZWxkID0gY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHNcbiAgICAgICAgLmZpbmQoZmllbGQgPT4gZmllbGQuaWQgPT09IFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuT1JHQU5JU0FUSU9OX0lEKTtcbiAgICAgIHRoaXMuYWRkVmFsaWRhdG9ycyhvcmdhbmlzYXRpb25JZEZpZWxkLCBjb250cm9sKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaENyaXRlcmlhKG9yZ2FuaXNhdGlvbjogT3JnYW5pc2F0aW9uVm0sIGxvd2VyT3JnU2VhcmNoVGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5wb3N0Q29kZSAmJiBvcmdhbmlzYXRpb24ucG9zdENvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlck9yZ1NlYXJjaFRleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5wb3N0Q29kZSAmJiB0aGlzLnRyaW1BbGwob3JnYW5pc2F0aW9uLnBvc3RDb2RlKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLnBvc3RDb2RlICYmIG9yZ2FuaXNhdGlvbi5wb3N0Q29kZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudHJpbUFsbChsb3dlck9yZ1NlYXJjaFRleHQpKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcmdhbmlzYXRpb24ubmFtZSAmJiBvcmdhbmlzYXRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLmFkZHJlc3NMaW5lMSAmJiBvcmdhbmlzYXRpb24uYWRkcmVzc0xpbmUxLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcmdhbmlzYXRpb24uYWRkcmVzc0xpbmUyICYmIG9yZ2FuaXNhdGlvbi5hZGRyZXNzTGluZTIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlck9yZ1NlYXJjaFRleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5hZGRyZXNzTGluZTMgJiYgb3JnYW5pc2F0aW9uLmFkZHJlc3NMaW5lMy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLnRvd25DaXR5ICYmIG9yZ2FuaXNhdGlvbi50b3duQ2l0eS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLmNvdW50eSAmJiBvcmdhbmlzYXRpb24uY291bnR5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIG5vaW5zcGVjdGlvbiBSZWR1bmRhbnRJZlN0YXRlbWVudEpTXG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5jb3VudHJ5ICYmIG9yZ2FuaXNhdGlvbi5jb3VudHJ5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoV2l0aFNwYWNlKG9yZ2FuaXNhdGlvbjogT3JnYW5pc2F0aW9uVm0sIGxvd2VyT3JnU2VhcmNoVGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VhcmNoVGV4dEFycmF5OiBzdHJpbmdbXSA9IGxvd2VyT3JnU2VhcmNoVGV4dC5zcGxpdCgvXFxzKy9nKTtcbiAgICBmb3IgKGNvbnN0IHNpbmdsZVNlYXJjaFRleHQgb2Ygc2VhcmNoVGV4dEFycmF5KSB7XG4gICAgICBpZiAoc2luZ2xlU2VhcmNoVGV4dCAmJiB0aGlzLnNlYXJjaENyaXRlcmlhKG9yZ2FuaXNhdGlvbiwgc2luZ2xlU2VhcmNoVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtmb3JtR3JvdXBdPVwib3JnYW5pc2F0aW9uRm9ybUdyb3VwXCI+XG4gIDxmaWVsZHNldCAqbmdJZj1cIihvcmdhbmlzYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiPlxuICAgIDxsZWdlbmQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJobWN0cy1iYW5uZXJcIj5cbiAgICAgIDxzdmcgY2xhc3M9XCJobWN0cy1iYW5uZXJfX2ljb25cIiBmaWxsPVwiY3VycmVudENvbG9yXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIGZvY3VzYWJsZT1cImZhbHNlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjUgMjVcIiBoZWlnaHQ9XCIyNVwiIHdpZHRoPVwiMjVcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xMy43LDE4LjVoLTIuNHYtMi40aDIuNFYxOC41eiBNMTIuNSwxMy43Yy0wLjcsMC0xLjItMC41LTEuMi0xLjJWNy43YzAtMC43LDAuNS0xLjIsMS4yLTEuMnMxLjIsMC41LDEuMiwxLjJ2NC44XG4gIEMxMy43LDEzLjIsMTMuMiwxMy43LDEyLjUsMTMuN3ogTTEyLjUsMC41Yy02LjYsMC0xMiw1LjQtMTIsMTJzNS40LDEyLDEyLDEyczEyLTUuNCwxMi0xMlMxOS4xLDAuNSwxMi41LDAuNXpcIiAvPjwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cImhtY3RzLWJhbm5lcl9fbWVzc2FnZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImhtY3RzLWJhbm5lcl9fYXNzaXN0aXZlXCI+e3snaW5mb3JtYXRpb24nIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgPHAgY2xhc3M9XCJ3YXJuaW5nLW1lc3NhZ2VcIj57eydPcmdhbmlzYXRpb24gc2VhcmNoIGlzIGN1cnJlbnRseSB1bmF2YWlsYWJsZS4nIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwid2FybmluZy1wYW5lbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIndhcm5pbmctbWVzc2FnZVwiPlxuICAgICAgICB7eydXZSBhcmUgd29ya2luZyB0byBmaXggdGhlIGlzc3VlLllvdSBjYW4gdHJ5IGFnYWluIGxhdGVyLicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG4gIDxmaWVsZHNldCAqbmdJZj1cIihvcmdhbmlzYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZmllbGRzZXRcIj5cbiAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1sXCI+XG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+XG4gICAgICAgIHt7J1NlYXJjaCBmb3IgYW4gb3JnYW5pc2F0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2gyPlxuICAgIDwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbFwiIGZvcj1cInNlYXJjaC1vcmctdGV4dFwiPlxuICAgICAgICA8c3BhbiBpZD1cInNlYXJjaC1vcmctaGludFwiIGNsYXNzPVwiZ292dWstaGludFwiPlxuICAgICAgICAgIHt7J1lvdSBjYW4gb25seSBzZWFyY2ggZm9yIG9yZ2FuaXNhdGlvbnMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggTXlITUNUUy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gc2VhcmNoIGJ5IG9yZ2FuaXNhdGlvbiBuYW1lIG9yIGFkZHJlc3MuJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJzZWFyY2gtb3JnLXRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHR5cGU9XCJ0ZXh0XCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaE9yZ1RleHRGb3JtQ29udHJvbFwiLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWxcIiBmb3I9XCJvcmdhbmlzYXRpb24tdGFibGVcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMlwiPnt7J09yZ2FuaXNhdGlvbiBuYW1lIGFuZCBhZGRyZXNzJyB8IHJweFRyYW5zbGF0ZX19PC9oMj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aHIgY2xhc3M9XCJnb3Z1ay1zZWN0aW9uLWJyZWFrIGdvdnVrLXNlY3Rpb24tYnJlYWstLXZpc2libGVcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCIhKHNlbGVjdGVkT3JnJCB8IGFzeW5jKT8ub3JnYW5pc2F0aW9uSWRlbnRpZmllcjsgZWxzZSBzZWxlY3RlZE9yZ2FuaXNhdGlvblwiIFtuZ0NsYXNzXT1cInsnc2Nyb2xsLWNvbnRhaW5lciAnOiAoc2ltcGxlT3JnYW5pc2F0aW9ucyQgfCBhc3luYyk/Lmxlbmd0aCA+IDEwfVwiPlxuICAgICAgICA8dGFibGUgaWQ9XCJvcmdhbmlzYXRpb24tdGFibGVcIiAqbmdGb3I9XCJsZXQgb3JnYW5pc2F0aW9uIG9mIChzaW1wbGVPcmdhbmlzYXRpb25zJCB8IGFzeW5jKVwiPlxuICAgICAgICAgIDxjYXB0aW9uPjxoMyBjbGFzcz1cIm5hbWUtaGVhZGVyXCI+e3tvcmdhbmlzYXRpb24ubmFtZX19PC9oMz48L2NhcHRpb24+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLWFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cIm9yZ2FuaXNhdGlvbi5hZGRyZXNzXCI+PC9jY2QtbWFya2Rvd24+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cInNlbGVjdE9yZyhvcmdhbmlzYXRpb24pXCIgdGl0bGU9XCJ7eydTZWxlY3QgdGhlIG9yZ2FuaXNhdGlvbicgfCBycHhUcmFuc2xhdGV9fSB7e29yZ2FuaXNhdGlvbi5uYW1lfX1cIj5cbiAgICAgICAgICAgICAgICAgIHt7J1NlbGVjdCcgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIihzaW1wbGVPcmdhbmlzYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwICYmIChzZWFyY2hPcmdWYWx1ZSQgfCBhc3luYyk/Lmxlbmd0aCA+IDJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0LW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIHt7J05vIHJlc3VsdHMgZm91bmQuJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NlbGVjdGVkT3JnYW5pc2F0aW9uPlxuICAgICAgICA8dGFibGUgaWQ9XCJvcmdhbmlzYXRpb24tc2VsZWN0ZWQtdGFibGVcIiAqbmdJZj1cIihzZWxlY3RlZE9yZyQgfCBhc3luYykgYXMgc2VsZWN0ZWRPcmdcIj5cbiAgICAgICAgICA8Y2FwdGlvbj48aDMgY2xhc3M9XCJuYW1lLWhlYWRlclwiPnt7c2VsZWN0ZWRPcmcubmFtZX19PC9oMz48L2NhcHRpb24+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLWFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cInNlbGVjdGVkT3JnLmFkZHJlc3NcIj48L2NjZC1tYXJrZG93bj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGQtc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwiZGVTZWxlY3RPcmcoKVwiXG4gICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eydDbGVhciBvcmdhbmlzYXRpb24gc2VsZWN0aW9uIGZvcicgfCBycHhUcmFuc2xhdGV9fSB7e3NlbGVjdGVkT3JnLm5hbWV9fVwiPlxuICAgICAgICAgICAgICAgICAge3snQ2xlYXInIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxjY2Qtd3JpdGUtb3JnYW5pc2F0aW9uLWNvbXBsZXgtZmllbGQgW2Nhc2VGaWVsZF09XCJjYXNlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkT3JnJF09XCJzZWxlY3RlZE9yZyRcIj5cbiAgICA8L2NjZC13cml0ZS1vcmdhbmlzYXRpb24tY29tcGxleC1maWVsZD5cbiAgICA8ZGV0YWlscyBpZD1cImZpbmQtb3JnYW5pc2F0aW9uLWhlbHBcIiBjbGFzcz1cImdvdnVrLWRldGFpbHNcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWRldGFpbHNcIj5cbiAgICAgIDxzdW1tYXJ5IGNsYXNzPVwiZ292dWstZGV0YWlsc19fc3VtbWFyeVwiPlxuICAgICAgPHNwYW4gaWQ9XCJjb250ZW50LXdoeS1jYW4tbm90LWZpbmQtb3JnYW5pc2F0aW9uXCIgY2xhc3M9XCJnb3Z1ay1kZXRhaWxzX19zdW1tYXJ5LXRleHRcIj5cbiAgICAgICAge3snQ2Fu4oCZdCBmaW5kIHRoZSBvcmdhbmlzYXRpb24geW91IGFyZSBsb29raW5nIGZvciA/JyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L3NwYW4+XG4gICAgICA8L3N1bW1hcnk+XG4gICAgICA8ZGl2IGlkPVwiY29udGVudC1yZWFzb24tY2FuLW5vdC1maW5kLW9yZ2FuaXNhdGlvblwiIGNsYXNzPVwiZ292dWstZGV0YWlsc19fdGV4dFwiPlxuICAgICAgICB7eydJZiB5b3Uga25vdyB0aGF0IHRoZSBzb2xpY2l0b3IgaXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggTXlITUNUUywgY2hlY2sgdGhhdCB5b3UgaGF2ZSBlbnRlcmVkIHRoZWlyIGRldGFpbHMgY29ycmVjdGx5LicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICB7e1wiUmVtZW1iZXIgdGhhdCBvcmdhbmlzYXRpb25zIGNhbiBvbmx5IHJlZ2lzdGVyIG9uZSBvZmZpY2UgYWRkcmVzcy4gVGhpcyBtZWFucyB0aGF0IHRoZSBkZXRhaWxzIGNvdWxkIGJlIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIHdoYXQgeW91J3JlIGV4cGVjdGluZy4gQ29udGFjdCB0aGUgc29saWNpdG9yIGRpcmVjdGx5IGlmIHlvdSBoYXZlIGFueSBjb25jZXJucy5cIiB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2Rpdj5cbiAgICA8L2RldGFpbHM+XG4gIDwvZmllbGRzZXQ+XG48L2Rpdj5cbiJdfQ==
428
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtb3JnYW5pc2F0aW9uLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL29yZ2FuaXNhdGlvbi93cml0ZS1vcmdhbmlzYXRpb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvb3JnYW5pc2F0aW9uL3dyaXRlLW9yZ2FuaXNhdGlvbi1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBbUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUU1RixPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0scURBQXFELENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7SUNUekYsbUNBQWdGO0lBQzlFLDRCQUF3QztJQUN4Qyw4QkFBMEI7SUFDeEIsbUJBQXdLO0lBQXhLLDhCQUF3SztJQUN0SywwQkFDd0c7SUFBQSxpQkFBTTtJQUNoSCxvQkFBbUM7SUFBbkMsOEJBQW1DO0lBQ2pDLCtCQUFzQztJQUFBLFlB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QUFDO1FBQ25FLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxlQUFlLEVBQUU7WUFDOUMsSUFBSSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUMzRSxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7SUFDSCxDQUFDOztBQXBOdUIsZ0RBQWdCLEdBQTRCLEVBQUMsc0JBQXNCLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBQyxDQUFDO0FBQ2hHLGdEQUFnQixHQUFXLEdBQUcsQ0FBQztBQUMvQiwrQ0FBZSxHQUFXLGdCQUFnQixDQUFDO0FBQzNDLGlEQUFpQixHQUFXLGtCQUFrQixDQUFDO0FBQy9DLGtFQUFrQyxHQUFXLGdDQUFnQyxDQUFDO0FBQzlFLG9EQUFvQixHQUFXLHFCQUFxQixDQUFDO0FBQ3JELG1DQUFHLEdBQVcsS0FBSyxDQUFDO0FBQ3BCLHlDQUFTLEdBQVcsV0FBVyxDQUFDOzhHQVQ3QywrQkFBK0I7b0VBQS9CLCtCQUErQjtRQ2pCNUMsOEJBQTREO1FBQzFELDJGQWdCVzs7UUFDWCw0RkE2RVc7O1FBQ2IsaUJBQU07Ozs7UUFoR2tCLHFEQUFtQztRQUM5QyxlQUE0QztRQUE1QyxtSEFBNEM7UUFpQjVDLGVBQTBDO1FBQTFDLGlIQUEwQzs7dUZERDFDLCtCQUErQjtjQUwzQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsV0FBVyxFQUFFLDJDQUEyQztnQkFDeEQsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUM7YUFDekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBPcmdhbmlzYXRpb25Db252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vb3JnYW5pc2F0aW9uL29yZ2FuaXNhdGlvbi1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgU2ltcGxlT3JnYW5pc2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vb3JnYW5pc2F0aW9uL3NpbXBsZS1vcmdhbmlzYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgT3JnYW5pc2F0aW9uU2VydmljZSwgT3JnYW5pc2F0aW9uVm0gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmdhbmlzYXRpb24vb3JnYW5pc2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2luZG93U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dpbmRvdy93aW5kb3cuc2VydmljZSc7XG5cbmltcG9ydCB7IEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtd3JpdGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLW9yZ2FuaXNhdGlvbi1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1vcmdhbmlzYXRpb24tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vcmdhbmlzYXRpb24tZmllbGQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEVNUFRZX1NJTVBMRV9PUkc6IFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsID0ge29yZ2FuaXNhdGlvbklkZW50aWZpZXI6ICcnLCBuYW1lOiAnJywgYWRkcmVzczogJyd9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNQVhfUkVTVUxUX0NPVU5UOiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE9SR0FOSVNBVElPTl9JRDogc3RyaW5nID0gJ09yZ2FuaXNhdGlvbklEJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgT1JHQU5JU0FUSU9OX05BTUU6IHN0cmluZyA9ICdPcmdhbmlzYXRpb25OYW1lJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTjogc3RyaW5nID0gJ1ByZXBvcHVsYXRlVG9Vc2Vyc09yZ2FuaXNhdGlvbic7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE9SR0FOSVNBVElPTl9ERVRBSUxTOiBzdHJpbmcgPSAnb3JnYW5pc2F0aW9uRGV0YWlscyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFlFUzogc3RyaW5nID0gJ1lFUyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1BTkRBVE9SWTogc3RyaW5nID0gJ01BTkRBVE9SWSc7XG4gIHB1YmxpYyBkZWZhdWx0T3JnOiBhbnk7XG5cbiAgcHVibGljIG9yZ2FuaXNhdGlvbkZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgc2VhcmNoT3JnVGV4dEZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIG9yZ2FuaXNhdGlvbklERm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgb3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBwdWJsaWMgb3JnYW5pc2F0aW9ucyQ6IE9ic2VydmFibGU8T3JnYW5pc2F0aW9uVm1bXT47XG4gIHB1YmxpYyBzZWFyY2hPcmdWYWx1ZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIHNpbXBsZU9yZ2FuaXNhdGlvbnMkOiBPYnNlcnZhYmxlPFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsW10+O1xuICBwdWJsaWMgc2VsZWN0ZWRPcmckOiBPYnNlcnZhYmxlPFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG9yZ2FuaXNhdGlvblNlcnZpY2U6IE9yZ2FuaXNhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3JnYW5pc2F0aW9uQ29udmVydGVyOiBPcmdhbmlzYXRpb25Db252ZXJ0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93U2VydmljZTogV2luZG93U2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kZWZhdWx0T3JnID0gSlNPTi5wYXJzZSh0aGlzLndpbmRvd1NlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5PUkdBTklTQVRJT05fREVUQUlMUykpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3JnYW5pc2F0aW9ucyQgPSB0aGlzLm9yZ2FuaXNhdGlvblNlcnZpY2UuZ2V0QWN0aXZlT3JnYW5pc2F0aW9ucygpO1xuXG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIHRoaXMuc2VhcmNoT3JnVmFsdWUkID0gdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzO1xuICAgIHRoaXMuc2VhcmNoT3JnVmFsdWUkLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLm9uU2VhcmNoT3JnKHZhbHVlKSk7XG5cbiAgICB0aGlzLm9yZ2FuaXNhdGlvbkZvcm1Hcm91cCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtR3JvdXAoe30pLCB0cnVlKSBhcyBGb3JtR3JvdXA7XG4gICAgaWYgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmNvbnRyb2xzICYmIHRoaXMucGFyZW50LmNvbnRyb2xzLmhhc093blByb3BlcnR5KFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTilcbiAgICAgICYmIHRoaXMucGFyZW50LmNvbnRyb2xzW1dyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTl0udmFsdWVcbiAgICAgICYmIHRoaXMucGFyZW50LmNvbnRyb2xzW1dyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuUFJFX1BPUFVMQVRFX1RPX1VTRVJTX09SR0FOSVNBVElPTl0udmFsdWUudG9VcHBlckNhc2UoKVxuICAgICAgPT09IFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuWUVTKSB7XG4gICAgICBpZiAodGhpcy5jYXNlRmllbGQgJiYgIXRoaXMuY2FzZUZpZWxkLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0ge1xuICAgICAgICAgIE9yZ2FuaXNhdGlvbklEOiB0aGlzLmRlZmF1bHRPcmcgPyB0aGlzLmRlZmF1bHRPcmcub3JnYW5pc2F0aW9uSWRlbnRpZmllciA6IG51bGwsXG4gICAgICAgICAgT3JnYW5pc2F0aW9uTmFtZTogdGhpcy5kZWZhdWx0T3JnID8gdGhpcy5kZWZhdWx0T3JnLm5hbWUgOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLnByZVNlbGVjdERlZmF1bHRPcmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY2FzZUZpZWxkICYmIHRoaXMuY2FzZUZpZWxkLnZhbHVlICYmIHRoaXMuY2FzZUZpZWxkLnZhbHVlLk9yZ2FuaXNhdGlvbklEKSB7XG4gICAgICAgIHRoaXMucHJlU2VsZWN0RGVmYXVsdE9yZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcmVTZWxlY3RFbXB0eU9yZygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGF0IGFsbCBzdWItZmllbGRzIGluaGVyaXQgdGhlIHNhbWUgdmFsdWUgZm9yIHJldGFpbl9oaWRkZW5fdmFsdWUgYXMgdGhpcyBwYXJlbnQ7IGFsdGhvdWdoIGFuXG4gICAgLy8gT3JnYW5pc2F0aW9uIGZpZWxkIHVzZXMgdGhlIENvbXBsZXggdHlwZSwgaXQgaXMgbWVhbnQgdG8gYmUgdHJlYXRlZCBhcyBvbmUgZmllbGRcbiAgICBpZiAodGhpcy5jYXNlRmllbGQgJiYgdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgIGZvciAoY29uc3Qgb3JnYW5pc2F0aW9uU3ViRmllbGQgb2YgdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICBvcmdhbmlzYXRpb25TdWJGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlID0gdGhpcy5jYXNlRmllbGQucmV0YWluX2hpZGRlbl92YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWFyY2hPcmcob3JnU2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG9yZ1NlYXJjaFRleHQgJiYgb3JnU2VhcmNoVGV4dC5sZW5ndGggPj0gMikge1xuICAgICAgY29uc3QgbG93ZXJPcmdTZWFyY2hUZXh0ID0gb3JnU2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5zaW1wbGVPcmdhbmlzYXRpb25zJCA9IHRoaXMub3JnYW5pc2F0aW9ucyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKG9yZ2FuaXNhdGlvbnMgPT4gb2YoXG4gICAgICAgICAgdGhpcy5zZWFyY2hPcmcob3JnYW5pc2F0aW9ucywgbG93ZXJPcmdTZWFyY2hUZXh0KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaW1wbGVPcmdhbmlzYXRpb25zJCA9IG9mKFtdKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGUgd2F5IHRoZSBzZWFyY2ggd29ya3MgZGl2aWRlIGludG8gdHdvIHBoYXNlc1xuICAvLyAxLiBnbyB0aHJvdWdoIGNvbGxlY3Rpb24gb2Ygb3JnIGl0ZW1zIG9uZSBieSBvbmUgYnkgZG9pbmcgdGhlIGNvbXBhcnNpb24gb2Ygc2VhcmNoIHN0cmluZyB1c2luZyBpbmNsdWRlcyB0byBhbGwgdGhlIGFkZHJlc3MgZmllbGRzXG4gIC8vIDIuIHNwbGl0IHRoZSBzZWFyY2ggc3RyaW5nIGludG8gYXJyYXlzIGFuZCBhcHBseSB0aGUgZWFjaCBhcnJheSBpdGVtIGludG8gdGhlIGFkZHJlc3MgZmllbGRzXG4gIC8vIDMuIGJvdGggc3RlcCAxLCAyIHdpbGwgZ28gdW50aWwgbWF4IGNvdW50IHJlc3VsdCByZWFjaGVzLCBhbmQgZmluYWxseSBjb21iaW5lIGJvdGggcmVzdWx0IHNldHMgaW50byBmaW5hbCBjb2xsZWN0aW9uXG4gIHB1YmxpYyBzZWFyY2hPcmcob3JnYW5pc2F0aW9uczogT3JnYW5pc2F0aW9uVm1bXSwgbG93ZXJPcmdTZWFyY2hUZXh0OiBzdHJpbmcpOiBTaW1wbGVPcmdhbmlzYXRpb25Nb2RlbFtdIHtcbiAgICBjb25zdCBwYXJ0TWF0Y2hpbmdSZXN1bHRTZXQgPSBbXTtcbiAgICBjb25zdCB3aXRoU3BhY2VNYXRjaGluZ1Jlc3VsdFNldCA9IFtdO1xuICAgIGNvbnN0IE1BWF9SRVNVTFRfQ09VTlQgPSBXcml0ZU9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50Lk1BWF9SRVNVTFRfQ09VTlQ7XG4gICAgb3JnYW5pc2F0aW9ucy5mb3JFYWNoKChvcmdhbmlzYXRpb24pID0+IHtcbiAgICAgIGlmICggcGFydE1hdGNoaW5nUmVzdWx0U2V0Lmxlbmd0aCA8IE1BWF9SRVNVTFRfQ09VTlQgJiYgdGhpcy5zZWFyY2hDcml0ZXJpYShvcmdhbmlzYXRpb24sIGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgICAgcGFydE1hdGNoaW5nUmVzdWx0U2V0LnB1c2gob3JnYW5pc2F0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9yZ2FuaXNhdGlvbnMuZm9yRWFjaCgob3JnKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHRTZXQgPSBbLi4ucGFydE1hdGNoaW5nUmVzdWx0U2V0LCAuLi53aXRoU3BhY2VNYXRjaGluZ1Jlc3VsdFNldF07XG4gICAgICBjb25zdCBoYXNNYXRjaGluZ09yZ2FuaXNhdGlvbiA9IHJlc3VsdFNldC5maW5kKGl0ZW0gPT4gaXRlbS5vcmdhbmlzYXRpb25JZGVudGlmaWVyID09PSBvcmcub3JnYW5pc2F0aW9uSWRlbnRpZmllcik7XG4gICAgICBjb25zdCBzZWFyY2hIYXNTcGFjZSA9IHRoaXMuc2VhcmNoV2l0aFNwYWNlKG9yZywgbG93ZXJPcmdTZWFyY2hUZXh0KTtcbiAgICAgIGNvbnN0IGhhc1Jlc3VsdFNldEJlbG93TWF4Q291bnQgPSByZXN1bHRTZXQubGVuZ3RoIDwgTUFYX1JFU1VMVF9DT1VOVDtcblxuICAgICAgaWYgKCFoYXNNYXRjaGluZ09yZ2FuaXNhdGlvbiAmJiBwYXJ0TWF0Y2hpbmdSZXN1bHRTZXQubGVuZ3RoID09PSAwICYmIGhhc1Jlc3VsdFNldEJlbG93TWF4Q291bnQgJiYgc2VhcmNoSGFzU3BhY2UpIHtcbiAgICAgICAgd2l0aFNwYWNlTWF0Y2hpbmdSZXN1bHRTZXQucHVzaChvcmcpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBbLi4ucGFydE1hdGNoaW5nUmVzdWx0U2V0LCAuLi53aXRoU3BhY2VNYXRjaGluZ1Jlc3VsdFNldF0ubWFwKChvcmdhbmlzYXRpb24pID0+XG4gICAgICB0aGlzLm9yZ2FuaXNhdGlvbkNvbnZlcnRlci50b1NpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsKG9yZ2FuaXNhdGlvbilcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHRyaW1BbGwob2xkVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gb2xkVGV4dC5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RPcmcoc2VsZWN0ZWRPcmc6IFNpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25JREZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkT3JnLm9yZ2FuaXNhdGlvbklkZW50aWZpZXIpO1xuICAgIHRoaXMub3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGVkT3JnLm5hbWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcmckID0gb2Yoc2VsZWN0ZWRPcmcpO1xuICAgIHRoaXMuc2ltcGxlT3JnYW5pc2F0aW9ucyQgPSBvZihbLi4uW10sIHNlbGVjdGVkT3JnXSk7XG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuc2VhcmNoT3JnVGV4dEZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZSA9IHtcbiAgICAgIE9yZ2FuaXNhdGlvbklEOiBzZWxlY3RlZE9yZy5vcmdhbmlzYXRpb25JZGVudGlmaWVyLFxuICAgICAgT3JnYW5pc2F0aW9uTmFtZTogc2VsZWN0ZWRPcmcubmFtZVxuICAgIH07XG4gICAgdGhpcy5vcmdhbmlzYXRpb25Gb3JtR3JvdXAuc2V0VmFsdWUodGhpcy5jYXNlRmllbGQudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGRlU2VsZWN0T3JnKCk6IHZvaWQge1xuICAgIHRoaXMub3JnYW5pc2F0aW9uSURGb3JtQ29udHJvbC5yZXNldCgpO1xuICAgIHRoaXMub3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sLnJlc2V0KCk7XG4gICAgdGhpcy5zZWxlY3RlZE9yZyQgPSBvZihXcml0ZU9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50LkVNUFRZX1NJTVBMRV9PUkcpO1xuICAgIHRoaXMuc2ltcGxlT3JnYW5pc2F0aW9ucyQgPSBvZihbXSk7XG4gICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuc2VhcmNoT3JnVGV4dEZvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0ge09yZ2FuaXNhdGlvbklEOiBudWxsLCBPcmdhbmlzYXRpb25OYW1lOiBudWxsfTtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbkZvcm1Hcm91cC5zZXRWYWx1ZSh0aGlzLmNhc2VGaWVsZC52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHByZVNlbGVjdERlZmF1bHRPcmcoKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW50aWF0ZU9yZ2FuaXNhdGlvbkZvcm1Hcm91cCh0aGlzLmNhc2VGaWVsZC52YWx1ZS5PcmdhbmlzYXRpb25JRCwgdGhpcy5jYXNlRmllbGQudmFsdWUuT3JnYW5pc2F0aW9uTmFtZSk7XG4gICAgdGhpcy5zZWxlY3RlZE9yZyQgPSB0aGlzLm9yZ2FuaXNhdGlvbnMkLnBpcGUoXG4gICAgICBtYXAob3JnYW5pc2F0aW9ucyA9PlxuICAgICAgICBvcmdhbmlzYXRpb25zLmZpbHRlcihmaW5kT3JnID0+IHtcbiAgICAgICAgICByZXR1cm4gZmluZE9yZy5vcmdhbmlzYXRpb25JZGVudGlmaWVyID09PSB0aGlzLmNhc2VGaWVsZC52YWx1ZS5PcmdhbmlzYXRpb25JRDtcbiAgICAgICAgfSlcbiAgICAgICAgICAubWFwKG9yZ2FuaXNhdGlvbiA9PiB0aGlzLm9yZ2FuaXNhdGlvbkNvbnZlcnRlci50b1NpbXBsZU9yZ2FuaXNhdGlvbk1vZGVsKG9yZ2FuaXNhdGlvbikpWzBdKSxcbiAgICApO1xuICAgIGlmICh0aGlzLmNhc2VGaWVsZC52YWx1ZSAmJiB0aGlzLmNhc2VGaWVsZC52YWx1ZS5PcmdhbmlzYXRpb25JRCkge1xuICAgICAgdGhpcy5zZWFyY2hPcmdUZXh0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJlU2VsZWN0RW1wdHlPcmcoKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW50aWF0ZU9yZ2FuaXNhdGlvbkZvcm1Hcm91cChudWxsLCBudWxsKTtcbiAgICB0aGlzLnNlbGVjdGVkT3JnJCA9IG9mKFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuRU1QVFlfU0lNUExFX09SRyk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbnRpYXRlT3JnYW5pc2F0aW9uRm9ybUdyb3VwKG9yZ0lEU3RhdGU6IGFueSwgb3JnTmFtZVN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbklERm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wob3JnSURTdGF0ZSk7XG4gICAgdGhpcy5hZGRPcmdhbmlzYXRpb25WYWxpZGF0b3JzKHRoaXMuY2FzZUZpZWxkLCB0aGlzLm9yZ2FuaXNhdGlvbklERm9ybUNvbnRyb2wpO1xuICAgIHRoaXMub3JnYW5pc2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudC5PUkdBTklTQVRJT05fSUQsIHRoaXMub3JnYW5pc2F0aW9uSURGb3JtQ29udHJvbCk7XG4gICAgdGhpcy5vcmdhbmlzYXRpb25OYW1lRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wob3JnTmFtZVN0YXRlKTtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuT1JHQU5JU0FUSU9OX05BTUUsIHRoaXMub3JnYW5pc2F0aW9uTmFtZUZvcm1Db250cm9sKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT3JnYW5pc2F0aW9uVmFsaWRhdG9ycyhjYXNlRmllbGQ6IENhc2VGaWVsZCwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgaWYgKGNhc2VGaWVsZC5maWVsZF90eXBlICYmIGNhc2VGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKSB7XG4gICAgICBjb25zdCBvcmdhbmlzYXRpb25JZEZpZWxkID0gY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHNcbiAgICAgICAgLmZpbmQoZmllbGQgPT4gZmllbGQuaWQgPT09IFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQuT1JHQU5JU0FUSU9OX0lEKTtcbiAgICAgIHRoaXMuYWRkVmFsaWRhdG9ycyhvcmdhbmlzYXRpb25JZEZpZWxkLCBjb250cm9sKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaENyaXRlcmlhKG9yZ2FuaXNhdGlvbjogT3JnYW5pc2F0aW9uVm0sIGxvd2VyT3JnU2VhcmNoVGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5wb3N0Q29kZSAmJiBvcmdhbmlzYXRpb24ucG9zdENvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlck9yZ1NlYXJjaFRleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5wb3N0Q29kZSAmJiB0aGlzLnRyaW1BbGwob3JnYW5pc2F0aW9uLnBvc3RDb2RlKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLnBvc3RDb2RlICYmIG9yZ2FuaXNhdGlvbi5wb3N0Q29kZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudHJpbUFsbChsb3dlck9yZ1NlYXJjaFRleHQpKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcmdhbmlzYXRpb24ubmFtZSAmJiBvcmdhbmlzYXRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLmFkZHJlc3NMaW5lMSAmJiBvcmdhbmlzYXRpb24uYWRkcmVzc0xpbmUxLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcmdhbmlzYXRpb24uYWRkcmVzc0xpbmUyICYmIG9yZ2FuaXNhdGlvbi5hZGRyZXNzTGluZTIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlck9yZ1NlYXJjaFRleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5hZGRyZXNzTGluZTMgJiYgb3JnYW5pc2F0aW9uLmFkZHJlc3NMaW5lMy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLnRvd25DaXR5ICYmIG9yZ2FuaXNhdGlvbi50b3duQ2l0eS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyT3JnU2VhcmNoVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAob3JnYW5pc2F0aW9uLmNvdW50eSAmJiBvcmdhbmlzYXRpb24uY291bnR5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIG5vaW5zcGVjdGlvbiBSZWR1bmRhbnRJZlN0YXRlbWVudEpTXG4gICAgaWYgKG9yZ2FuaXNhdGlvbi5jb3VudHJ5ICYmIG9yZ2FuaXNhdGlvbi5jb3VudHJ5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJPcmdTZWFyY2hUZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoV2l0aFNwYWNlKG9yZ2FuaXNhdGlvbjogT3JnYW5pc2F0aW9uVm0sIGxvd2VyT3JnU2VhcmNoVGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VhcmNoVGV4dEFycmF5OiBzdHJpbmdbXSA9IGxvd2VyT3JnU2VhcmNoVGV4dC5zcGxpdCgvXFxzKy9nKTtcbiAgICBmb3IgKGNvbnN0IHNpbmdsZVNlYXJjaFRleHQgb2Ygc2VhcmNoVGV4dEFycmF5KSB7XG4gICAgICBpZiAoc2luZ2xlU2VhcmNoVGV4dCAmJiB0aGlzLnNlYXJjaENyaXRlcmlhKG9yZ2FuaXNhdGlvbiwgc2luZ2xlU2VhcmNoVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtmb3JtR3JvdXBdPVwib3JnYW5pc2F0aW9uRm9ybUdyb3VwXCI+XG4gIDxmaWVsZHNldCAqbmdJZj1cIihvcmdhbmlzYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiPlxuICAgIDxsZWdlbmQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJobWN0cy1iYW5uZXJcIj5cbiAgICAgIDxzdmcgY2xhc3M9XCJobWN0cy1iYW5uZXJfX2ljb25cIiBmaWxsPVwiY3VycmVudENvbG9yXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIGZvY3VzYWJsZT1cImZhbHNlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjUgMjVcIiBoZWlnaHQ9XCIyNVwiIHdpZHRoPVwiMjVcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xMy43LDE4LjVoLTIuNHYtMi40aDIuNFYxOC41eiBNMTIuNSwxMy43Yy0wLjcsMC0xLjItMC41LTEuMi0xLjJWNy43YzAtMC43LDAuNS0xLjIsMS4yLTEuMnMxLjIsMC41LDEuMiwxLjJ2NC44XG4gIEMxMy43LDEzLjIsMTMuMiwxMy43LDEyLjUsMTMuN3ogTTEyLjUsMC41Yy02LjYsMC0xMiw1LjQtMTIsMTJzNS40LDEyLDEyLDEyczEyLTUuNCwxMi0xMlMxOS4xLDAuNSwxMi41LDAuNXpcIiAvPjwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cImhtY3RzLWJhbm5lcl9fbWVzc2FnZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImhtY3RzLWJhbm5lcl9fYXNzaXN0aXZlXCI+e3snaW5mb3JtYXRpb24nIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgPHAgY2xhc3M9XCJ3YXJuaW5nLW1lc3NhZ2VcIj57eydPcmdhbmlzYXRpb24gc2VhcmNoIGlzIGN1cnJlbnRseSB1bmF2YWlsYWJsZS4nIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwid2FybmluZy1wYW5lbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIndhcm5pbmctbWVzc2FnZVwiPlxuICAgICAgICB7eydXZSBhcmUgd29ya2luZyB0byBmaXggdGhlIGlzc3VlLllvdSBjYW4gdHJ5IGFnYWluIGxhdGVyLicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZmllbGRzZXQ+XG4gIDxmaWVsZHNldCAqbmdJZj1cIihvcmdhbmlzYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZmllbGRzZXRcIj5cbiAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1sXCI+XG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+XG4gICAgICAgIHt7J1NlYXJjaCBmb3IgYW4gb3JnYW5pc2F0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2gyPlxuICAgIDwvbGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbFwiIGZvcj1cInNlYXJjaC1vcmctdGV4dFwiPlxuICAgICAgICA8c3BhbiBpZD1cInNlYXJjaC1vcmctaGludFwiIGNsYXNzPVwiZ292dWstaGludFwiPlxuICAgICAgICAgIHt7J1lvdSBjYW4gb25seSBzZWFyY2ggZm9yIG9yZ2FuaXNhdGlvbnMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggTXlITUNUUy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gc2VhcmNoIGJ5IG9yZ2FuaXNhdGlvbiBuYW1lIG9yIGFkZHJlc3MuJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXQgaWQ9XCJzZWFyY2gtb3JnLXRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHR5cGU9XCJ0ZXh0XCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaE9yZ1RleHRGb3JtQ29udHJvbFwiLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWxcIiBmb3I9XCJvcmdhbmlzYXRpb24tdGFibGVcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMlwiPnt7J09yZ2FuaXNhdGlvbiBuYW1lIGFuZCBhZGRyZXNzJyB8IHJweFRyYW5zbGF0ZX19PC9oMj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aHIgY2xhc3M9XCJnb3Z1ay1zZWN0aW9uLWJyZWFrIGdvdnVrLXNlY3Rpb24tYnJlYWstLXZpc2libGVcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCIhKHNlbGVjdGVkT3JnJCB8IGFzeW5jKT8ub3JnYW5pc2F0aW9uSWRlbnRpZmllcjsgZWxzZSBzZWxlY3RlZE9yZ2FuaXNhdGlvblwiIFtuZ0NsYXNzXT1cInsnc2Nyb2xsLWNvbnRhaW5lciAnOiAoc2ltcGxlT3JnYW5pc2F0aW9ucyQgfCBhc3luYyk/Lmxlbmd0aCA+IDEwfVwiPlxuICAgICAgICA8dGFibGUgaWQ9XCJvcmdhbmlzYXRpb24tdGFibGVcIiAqbmdGb3I9XCJsZXQgb3JnYW5pc2F0aW9uIG9mIChzaW1wbGVPcmdhbmlzYXRpb25zJCB8IGFzeW5jKVwiPlxuICAgICAgICAgIDxjYXB0aW9uPjxoMyBjbGFzcz1cIm5hbWUtaGVhZGVyXCI+e3tvcmdhbmlzYXRpb24ubmFtZX19PC9oMz48L2NhcHRpb24+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLWFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cIm9yZ2FuaXNhdGlvbi5hZGRyZXNzXCI+PC9jY2QtbWFya2Rvd24+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cInNlbGVjdE9yZyhvcmdhbmlzYXRpb24pXCIgdGl0bGU9XCJ7eydTZWxlY3QgdGhlIG9yZ2FuaXNhdGlvbicgfCBycHhUcmFuc2xhdGV9fSB7e29yZ2FuaXNhdGlvbi5uYW1lfX1cIj5cbiAgICAgICAgICAgICAgICAgIHt7J1NlbGVjdCcgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGRpdiAqbmdJZj1cIihzaW1wbGVPcmdhbmlzYXRpb25zJCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwICYmIChzZWFyY2hPcmdWYWx1ZSQgfCBhc3luYyk/Lmxlbmd0aCA+IDJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0LW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIHt7J05vIHJlc3VsdHMgZm91bmQuJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NlbGVjdGVkT3JnYW5pc2F0aW9uPlxuICAgICAgICA8dGFibGUgaWQ9XCJvcmdhbmlzYXRpb24tc2VsZWN0ZWQtdGFibGVcIiAqbmdJZj1cIihzZWxlY3RlZE9yZyQgfCBhc3luYykgYXMgc2VsZWN0ZWRPcmdcIj5cbiAgICAgICAgICA8Y2FwdGlvbj48aDMgY2xhc3M9XCJuYW1lLWhlYWRlclwiPnt7c2VsZWN0ZWRPcmcubmFtZX19PC9oMz48L2NhcHRpb24+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRkLWFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cInNlbGVjdGVkT3JnLmFkZHJlc3NcIj48L2NjZC1tYXJrZG93bj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGQtc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwiZGVTZWxlY3RPcmcoKVwiXG4gICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eydDbGVhciBvcmdhbmlzYXRpb24gc2VsZWN0aW9uIGZvcicgfCBycHhUcmFuc2xhdGV9fSB7e3NlbGVjdGVkT3JnLm5hbWV9fVwiPlxuICAgICAgICAgICAgICAgICAge3snQ2xlYXInIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxjY2Qtd3JpdGUtb3JnYW5pc2F0aW9uLWNvbXBsZXgtZmllbGQgW2Nhc2VGaWVsZF09XCJjYXNlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkT3JnJF09XCJzZWxlY3RlZE9yZyRcIj5cbiAgICA8L2NjZC13cml0ZS1vcmdhbmlzYXRpb24tY29tcGxleC1maWVsZD5cbiAgICA8ZGV0YWlscyBpZD1cImZpbmQtb3JnYW5pc2F0aW9uLWhlbHBcIiBjbGFzcz1cImdvdnVrLWRldGFpbHNcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWRldGFpbHNcIj5cbiAgICAgIDxzdW1tYXJ5IGNsYXNzPVwiZ292dWstZGV0YWlsc19fc3VtbWFyeVwiPlxuICAgICAgPHNwYW4gaWQ9XCJjb250ZW50LXdoeS1jYW4tbm90LWZpbmQtb3JnYW5pc2F0aW9uXCIgY2xhc3M9XCJnb3Z1ay1kZXRhaWxzX19zdW1tYXJ5LXRleHRcIj5cbiAgICAgICAge3tcIkNhbuKAmXQgZmluZCB0aGUgb3JnYW5pc2F0aW9uIHlvdSBhcmUgbG9va2luZyBmb3I/XCIgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPC9zdW1tYXJ5PlxuICAgICAgPGRpdiBpZD1cImNvbnRlbnQtcmVhc29uLWNhbi1ub3QtZmluZC1vcmdhbmlzYXRpb25cIiBjbGFzcz1cImdvdnVrLWRldGFpbHNfX3RleHRcIj5cbiAgICAgICAge3snSWYgeW91IGtub3cgdGhhdCB0aGUgc29saWNpdG9yIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCB3aXRoIE15SE1DVFMsIGNoZWNrIHRoYXQgeW91IGhhdmUgZW50ZXJlZCB0aGVpciBkZXRhaWxzIGNvcnJlY3RseS4nIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAge3tcIlJlbWVtYmVyIHRoYXQgb3JnYW5pc2F0aW9ucyBjYW4gb25seSByZWdpc3RlciBvbmUgb2ZmaWNlIGFkZHJlc3MuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZGV0YWlscyBjb3VsZCBiZSBzbGlnaHRseSBkaWZmZXJlbnQgZnJvbSB3aGF0IHlvdSdyZSBleHBlY3RpbmcuIENvbnRhY3QgdGhlIHNvbGljaXRvciBkaXJlY3RseSBpZiB5b3UgaGF2ZSBhbnkgY29uY2VybnMuXCIgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kZXRhaWxzPlxuICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG4iXX0=