geonetwork-ui 2.6.0-dev.86c0fa7b5 → 2.6.0-dev.87d6e6c1b

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 (491) hide show
  1. package/README.md +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +3 -3
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +14 -11
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +3 -3
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +4 -8
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -6
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
  9. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +4 -4
  10. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +17 -15
  11. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +3 -3
  12. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +8 -8
  13. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +14 -11
  14. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +17 -13
  15. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -31
  16. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +9 -8
  17. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +4 -4
  18. package/esm2022/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.mjs +4 -5
  19. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +4 -4
  20. package/esm2022/libs/feature/editor/src/index.mjs +1 -4
  21. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +5 -7
  22. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +8 -13
  23. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +5 -6
  24. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +5 -4
  25. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +4 -13
  26. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -5
  27. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.mjs +5 -8
  28. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.mjs +4 -5
  29. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +6 -10
  30. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +8 -14
  31. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -15
  32. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +4 -4
  33. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +4 -4
  34. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +4 -4
  35. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +4 -4
  36. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +4 -4
  37. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +4 -4
  38. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +6 -17
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +4 -5
  40. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +12 -30
  41. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +1 -3
  42. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +5 -6
  43. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +11 -8
  44. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +11 -8
  45. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -6
  46. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -5
  47. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +3 -36
  48. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +5 -11
  49. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -6
  50. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +5 -5
  51. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +6 -7
  52. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +4 -5
  53. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +6 -7
  54. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +4 -4
  55. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +8 -22
  56. package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +5 -5
  57. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +15 -7
  58. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +5 -4
  59. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +4 -4
  60. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +24 -27
  61. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +3 -3
  62. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +6 -6
  63. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +6 -6
  64. package/esm2022/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.mjs +5 -7
  65. package/esm2022/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.mjs +4 -4
  66. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +5 -4
  67. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +4 -5
  68. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +4 -5
  69. package/esm2022/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.mjs +4 -5
  70. package/esm2022/libs/ui/dataviz/src/index.mjs +1 -2
  71. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +4 -4
  72. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -5
  73. package/esm2022/libs/ui/elements/src/index.mjs +1 -2
  74. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +6 -6
  75. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +5 -5
  76. package/esm2022/libs/ui/elements/src/lib/avatar/avatar.component.mjs +4 -3
  77. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +4 -5
  78. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +4 -4
  79. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +4 -5
  80. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +4 -5
  81. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +4 -5
  82. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +5 -7
  83. package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +5 -6
  84. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +7 -10
  85. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +4 -5
  86. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +3 -6
  87. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +4 -5
  88. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +4 -5
  89. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +6 -7
  90. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +5 -7
  91. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +4 -5
  92. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +7 -5
  93. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +6 -7
  94. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +5 -4
  95. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +4 -5
  96. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +5 -4
  97. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  98. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +5 -6
  99. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +4 -3
  100. package/esm2022/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.mjs +7 -6
  101. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +29 -7
  102. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +4 -5
  103. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +5 -7
  104. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +4 -3
  105. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +12 -7
  106. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +4 -5
  107. package/esm2022/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.mjs +3 -3
  108. package/esm2022/libs/ui/layout/src/index.mjs +1 -2
  109. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +3 -2
  110. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +4 -5
  111. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +4 -5
  112. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +4 -5
  113. package/esm2022/libs/ui/layout/src/lib/pagination/pagination.component.mjs +4 -5
  114. package/esm2022/libs/ui/layout/src/lib/sticky-header/sticky-header.component.mjs +4 -3
  115. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +5 -7
  116. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +4 -5
  117. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +6 -6
  118. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +3 -3
  119. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +5 -7
  120. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +9 -10
  121. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +23 -24
  122. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  123. package/esm2022/libs/ui/widgets/src/lib/color-scale/color-scale.component.mjs +3 -3
  124. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +1 -3
  125. package/esm2022/libs/util/i18n/src/index.mjs +2 -3
  126. package/esm2022/libs/util/i18n/src/lib/embedded.translate.loader.mjs +3 -2
  127. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +36 -69
  128. package/esm2022/libs/util/i18n/src/lib/i18n.interceptor.mjs +10 -9
  129. package/esm2022/libs/util/i18n/src/lib/i18n.providers.mjs +41 -0
  130. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +40 -2
  131. package/esm2022/libs/util/shared/src/index.mjs +1 -2
  132. package/esm2022/libs/util/shared/src/lib/image-fallback.directive.mjs +3 -2
  133. package/esm2022/translations/de.json +0 -16
  134. package/esm2022/translations/en.json +0 -16
  135. package/esm2022/translations/es.json +0 -16
  136. package/esm2022/translations/fr.json +0 -16
  137. package/esm2022/translations/it.json +0 -16
  138. package/esm2022/translations/nl.json +0 -16
  139. package/esm2022/translations/pt.json +0 -16
  140. package/esm2022/translations/sk.json +602 -0
  141. package/fesm2022/geonetwork-ui.mjs +10383 -10670
  142. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  143. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +4 -4
  144. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  145. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  146. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  147. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  148. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  149. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +8 -6
  150. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  151. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  152. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts +1 -0
  153. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  154. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts +4 -4
  155. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  156. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +4 -3
  157. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  158. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +4 -8
  159. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  160. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts +3 -3
  161. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
  162. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  163. package/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.d.ts.map +1 -1
  164. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  165. package/libs/feature/editor/src/index.d.ts +0 -3
  166. package/libs/feature/editor/src/index.d.ts.map +1 -1
  167. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +1 -1
  168. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  169. package/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.d.ts.map +1 -1
  170. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  171. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  172. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
  173. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  174. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  175. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.d.ts.map +1 -1
  176. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -1
  177. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  178. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  179. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  180. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
  181. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  182. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  183. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
  184. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -1
  185. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  186. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +10 -17
  187. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  188. package/libs/feature/editor/src/lib/models/index.d.ts +0 -2
  189. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  190. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  191. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  192. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  193. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  194. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  195. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -11
  196. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  197. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  198. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  199. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  200. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  201. package/libs/feature/record/src/lib/feature-record.module.d.ts +8 -12
  202. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  203. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
  204. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  205. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  206. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  207. package/libs/feature/search/src/lib/feature-search.module.d.ts +24 -24
  208. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  209. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
  210. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  211. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts +1 -2
  212. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts.map +1 -1
  213. package/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.d.ts.map +1 -1
  214. package/libs/feature/search/src/lib/utils/service/fields.d.ts +1 -2
  215. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  216. package/libs/ui/dataviz/src/index.d.ts +0 -1
  217. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  218. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  219. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -1
  220. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  221. package/libs/ui/elements/src/index.d.ts +0 -1
  222. package/libs/ui/elements/src/index.d.ts.map +1 -1
  223. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  224. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts +1 -1
  225. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts.map +1 -1
  226. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  227. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +1 -1
  228. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  229. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  230. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  231. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  232. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  233. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  234. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -1
  235. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  236. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts +1 -1
  237. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts.map +1 -1
  238. package/libs/ui/inputs/src/index.d.ts +0 -1
  239. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  240. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts +1 -1
  241. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts.map +1 -1
  242. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts +1 -1
  243. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts.map +1 -1
  244. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts +1 -1
  245. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  246. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
  247. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +1 -1
  248. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -1
  249. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -1
  250. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts +1 -1
  251. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts.map +1 -1
  252. package/libs/ui/layout/src/index.d.ts +0 -1
  253. package/libs/ui/layout/src/index.d.ts.map +1 -1
  254. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +1 -1
  255. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  256. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts +1 -1
  257. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts.map +1 -1
  258. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +1 -1
  259. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
  260. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  261. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  262. package/libs/ui/search/src/lib/ui-search.module.d.ts +11 -11
  263. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  264. package/libs/ui/widgets/src/index.d.ts +0 -1
  265. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  266. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts +1 -1
  267. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts.map +1 -1
  268. package/libs/util/app-config/src/lib/app-config.d.ts +0 -1
  269. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  270. package/libs/util/i18n/src/index.d.ts +1 -2
  271. package/libs/util/i18n/src/index.d.ts.map +1 -1
  272. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts +1 -1
  273. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts.map +1 -1
  274. package/libs/util/i18n/src/lib/i18n.constants.d.ts +6 -16
  275. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  276. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts +5 -5
  277. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts.map +1 -1
  278. package/libs/util/i18n/src/lib/i18n.providers.d.ts +4 -0
  279. package/libs/util/i18n/src/lib/i18n.providers.d.ts.map +1 -0
  280. package/libs/util/i18n/src/lib/language-codes.d.ts +3 -29
  281. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  282. package/libs/util/shared/src/index.d.ts +0 -1
  283. package/libs/util/shared/src/index.d.ts.map +1 -1
  284. package/libs/util/shared/src/lib/image-fallback.directive.d.ts +1 -1
  285. package/libs/util/shared/src/lib/image-fallback.directive.d.ts.map +1 -1
  286. package/package.json +3 -3
  287. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +2 -2
  288. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +12 -6
  289. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +4 -4
  290. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +3 -7
  291. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -6
  292. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +3 -3
  293. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -6
  294. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +3 -6
  295. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +13 -5
  296. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
  297. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +8 -7
  298. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +13 -6
  299. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +13 -20
  300. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +4 -17
  301. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +7 -3
  302. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +2 -2
  303. package/src/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.ts +2 -2
  304. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -2
  305. package/src/libs/feature/editor/src/index.ts +0 -3
  306. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.ts +3 -4
  307. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +5 -16
  308. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +7 -5
  309. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +7 -2
  310. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +2 -10
  311. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +3 -2
  312. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.ts +3 -4
  313. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +2 -2
  314. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +4 -11
  315. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +5 -9
  316. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +2 -17
  317. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +2 -2
  318. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -2
  319. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +2 -2
  320. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +2 -2
  321. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  322. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +2 -2
  323. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +2 -2
  324. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +2 -15
  325. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -2
  326. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +4 -17
  327. package/src/libs/feature/editor/src/lib/models/index.ts +0 -2
  328. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +2 -1
  329. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +8 -3
  330. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +10 -3
  331. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +8 -2
  332. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +8 -2
  333. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -17
  334. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +3 -8
  335. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +3 -2
  336. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +5 -4
  337. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -2
  338. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +2 -2
  339. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +2 -2
  340. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +2 -2
  341. package/src/libs/feature/record/src/lib/feature-record.module.ts +4 -13
  342. package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +4 -3
  343. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +10 -4
  344. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +7 -2
  345. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -2
  346. package/src/libs/feature/search/src/lib/feature-search.module.ts +13 -18
  347. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +4 -0
  348. package/src/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.ts +10 -4
  349. package/src/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.ts +2 -2
  350. package/src/libs/feature/search/src/lib/utils/service/fields.ts +4 -3
  351. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  352. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +2 -2
  353. package/src/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.ts +2 -2
  354. package/src/libs/ui/dataviz/src/index.ts +0 -1
  355. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +2 -2
  356. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +0 -1
  357. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +4 -0
  358. package/src/libs/ui/elements/src/index.ts +0 -1
  359. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +3 -2
  360. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +6 -6
  361. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +2 -2
  362. package/src/libs/ui/elements/src/lib/avatar/avatar.component.ts +3 -0
  363. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  364. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +2 -5
  365. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -2
  366. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +2 -2
  367. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +2 -2
  368. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +5 -7
  369. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +3 -3
  370. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +4 -5
  371. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +2 -2
  372. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -4
  373. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.ts +2 -2
  374. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +2 -2
  375. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +4 -7
  376. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +3 -4
  377. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +2 -2
  378. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +4 -2
  379. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +4 -4
  380. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +7 -2
  381. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  382. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.ts +4 -0
  383. package/src/libs/ui/inputs/src/index.ts +0 -1
  384. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +2 -2
  385. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.ts +3 -0
  386. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.html +1 -1
  387. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.ts +4 -0
  388. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +27 -0
  389. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +2 -2
  390. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +3 -4
  391. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +3 -0
  392. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +9 -3
  393. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +2 -2
  394. package/src/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.ts +1 -0
  395. package/src/libs/ui/layout/src/index.ts +0 -1
  396. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +1 -0
  397. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +2 -2
  398. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +2 -2
  399. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.ts +2 -2
  400. package/src/libs/ui/layout/src/lib/pagination/pagination.component.ts +2 -2
  401. package/src/libs/ui/layout/src/lib/sticky-header/sticky-header.component.ts +3 -0
  402. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +3 -10
  403. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +2 -2
  404. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.html +4 -1
  405. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +3 -4
  406. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +15 -5
  407. package/src/libs/ui/search/src/lib/ui-search.module.ts +12 -11
  408. package/src/libs/ui/widgets/src/index.ts +0 -1
  409. package/src/libs/ui/widgets/src/lib/color-scale/color-scale.component.ts +1 -0
  410. package/src/libs/util/app-config/src/lib/app-config.ts +0 -2
  411. package/src/libs/util/i18n/src/index.ts +1 -2
  412. package/src/libs/util/i18n/src/lib/embedded.translate.loader.ts +4 -3
  413. package/src/libs/util/i18n/src/lib/i18n.constants.ts +39 -71
  414. package/src/libs/util/i18n/src/lib/i18n.interceptor.ts +11 -9
  415. package/src/libs/util/i18n/src/lib/i18n.providers.ts +68 -0
  416. package/src/libs/util/i18n/src/lib/language-codes.ts +44 -1
  417. package/src/libs/util/shared/src/index.ts +0 -1
  418. package/src/libs/util/shared/src/lib/image-fallback.directive.ts +1 -0
  419. package/translations/de.json +0 -16
  420. package/translations/en.json +0 -16
  421. package/translations/es.json +0 -16
  422. package/translations/fr.json +0 -16
  423. package/translations/it.json +0 -16
  424. package/translations/nl.json +0 -16
  425. package/translations/pt.json +0 -16
  426. package/translations/sk.json +0 -16
  427. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +0 -44
  428. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +0 -75
  429. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +0 -160
  430. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +0 -53
  431. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.model.mjs +0 -2
  432. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +0 -8
  433. package/esm2022/libs/feature/editor/src/lib/services/wizard.service.mjs +0 -87
  434. package/esm2022/libs/ui/dataviz/src/lib/ui-dataviz.module.mjs +0 -47
  435. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +0 -134
  436. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +0 -160
  437. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +0 -23
  438. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +0 -46
  439. package/esm2022/libs/util/i18n/src/lib/lang.service.mjs +0 -31
  440. package/esm2022/libs/util/i18n/src/lib/util-i18n.module.mjs +0 -37
  441. package/esm2022/libs/util/shared/src/lib/util-shared.module.mjs +0 -18
  442. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +0 -14
  443. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts.map +0 -1
  444. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts +0 -31
  445. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts.map +0 -1
  446. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +0 -43
  447. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +0 -1
  448. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +0 -17
  449. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +0 -1
  450. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts +0 -10
  451. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts.map +0 -1
  452. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +0 -7
  453. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +0 -1
  454. package/libs/feature/editor/src/lib/services/wizard.service.d.ts +0 -33
  455. package/libs/feature/editor/src/lib/services/wizard.service.d.ts.map +0 -1
  456. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts +0 -11
  457. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts.map +0 -1
  458. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +0 -32
  459. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +0 -1
  460. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +0 -35
  461. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +0 -1
  462. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +0 -12
  463. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +0 -1
  464. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +0 -15
  465. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +0 -1
  466. package/libs/util/i18n/src/lib/lang.service.d.ts +0 -13
  467. package/libs/util/i18n/src/lib/lang.service.d.ts.map +0 -1
  468. package/libs/util/i18n/src/lib/util-i18n.module.d.ts +0 -12
  469. package/libs/util/i18n/src/lib/util-i18n.module.d.ts.map +0 -1
  470. package/libs/util/shared/src/lib/util-shared.module.d.ts +0 -9
  471. package/libs/util/shared/src/lib/util-shared.module.d.ts.map +0 -1
  472. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.css +0 -5
  473. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +0 -22
  474. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.ts +0 -93
  475. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.css +0 -31
  476. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -62
  477. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -206
  478. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.css +0 -3
  479. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.html +0 -21
  480. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +0 -58
  481. package/src/libs/feature/editor/src/lib/models/wizard-field.model.ts +0 -10
  482. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -6
  483. package/src/libs/feature/editor/src/lib/services/wizard.service.ts +0 -105
  484. package/src/libs/ui/dataviz/src/lib/ui-dataviz.module.ts +0 -27
  485. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -74
  486. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -96
  487. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -14
  488. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -25
  489. package/src/libs/util/i18n/src/lib/lang.service.ts +0 -23
  490. package/src/libs/util/i18n/src/lib/util-i18n.module.ts +0 -26
  491. package/src/libs/util/shared/src/lib/util-shared.module.ts +0 -10
@@ -5,13 +5,13 @@ import { map } from 'rxjs/operators';
5
5
  import { SearchFacade } from '../state/search.facade';
6
6
  import { SearchService } from '../utils/service/search.service';
7
7
  import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface';
8
+ import { TranslatePipe } from '@ngx-translate/core';
9
+ import { CommonModule } from '@angular/common';
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "../state/search.facade";
10
12
  import * as i2 from "../utils/service/search.service";
11
13
  import * as i3 from "../../../../../../libs/common/domain/src/lib/repository/records-repository.interface";
12
- import * as i4 from "../../../../../ui/inputs/src/lib/autocomplete/autocomplete.component";
13
- import * as i5 from "@angular/common";
14
- import * as i6 from "@ngx-translate/core";
14
+ import * as i4 from "@angular/common";
15
15
  export class FuzzySearchComponent {
16
16
  constructor(searchFacade, searchService, recordsRepository) {
17
17
  this.searchFacade = searchFacade;
@@ -66,11 +66,11 @@ export class FuzzySearchComponent {
66
66
  this.isSearchActive.emit(event);
67
67
  }
68
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: i1.SearchFacade }, { token: i2.SearchService }, { token: i3.RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
69
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus", forceTrackPosition: "forceTrackPosition", enterButton: "enterButton", placeholder: "placeholder" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", isSearchActive: "isSearchActive" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"placeholder ?? ('search.field.any.placeholder' | translate)\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n (isSearchActive)=\"handleSearchActive($event)\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n [forceTrackPosition]=\"forceTrackPosition\"\n [enterButton]=\"enterButton\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: i4.AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FuzzySearchComponent, isStandalone: true, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus", forceTrackPosition: "forceTrackPosition", enterButton: "enterButton", placeholder: "placeholder" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", isSearchActive: "isSearchActive" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"placeholder ?? ('search.field.any.placeholder' | translate)\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n (isSearchActive)=\"handleSearchActive($event)\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n [forceTrackPosition]=\"forceTrackPosition\"\n [enterButton]=\"enterButton\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
70
70
  }
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FuzzySearchComponent, decorators: [{
72
72
  type: Component,
73
- args: [{ selector: 'gn-ui-fuzzy-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-autocomplete\n [placeholder]=\"placeholder ?? ('search.field.any.placeholder' | translate)\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n (isSearchActive)=\"handleSearchActive($event)\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n [forceTrackPosition]=\"forceTrackPosition\"\n [enterButton]=\"enterButton\"\n></gn-ui-autocomplete>\n" }]
73
+ args: [{ selector: 'gn-ui-fuzzy-search', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, AutocompleteComponent, TranslatePipe], template: "<gn-ui-autocomplete\n [placeholder]=\"placeholder ?? ('search.field.any.placeholder' | translate)\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n (isSearchActive)=\"handleSearchActive($event)\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n [forceTrackPosition]=\"forceTrackPosition\"\n [enterButton]=\"enterButton\"\n></gn-ui-autocomplete>\n" }]
74
74
  }], ctorParameters: () => [{ type: i1.SearchFacade }, { type: i2.SearchService }, { type: i3.RecordsRepositoryInterface }], propDecorators: { autocomplete: [{
75
75
  type: ViewChild,
76
76
  args: [AutocompleteComponent]
@@ -89,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
89
89
  }], isSearchActive: [{
90
90
  type: Output
91
91
  }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9mdXp6eS1zZWFyY2gvZnV6enktc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9mdXp6eS1zZWFyY2gvZnV6enktc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQ0wscUJBQXFCLEdBRXRCLE1BQU0sc0NBQXNDLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUUvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQTs7Ozs7Ozs7QUFTakksTUFBTSxPQUFPLG9CQUFvQjtJQWtCL0IsWUFDVSxZQUEwQixFQUMxQixhQUE0QixFQUM1QixpQkFBNkM7UUFGN0MsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE0QjtRQW5COUMsY0FBUyxHQUFHLEtBQUssQ0FBQTtRQUNqQix1QkFBa0IsR0FBRyxLQUFLLENBQUE7UUFDMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUE7UUFFbEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQTtRQUNoRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUE7UUFDM0MsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFBO1FBR3RELGtCQUFhLEdBQXNDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBO1FBRTNFLHVCQUFrQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGlCQUFpQjthQUNuQixXQUFXLENBQUMsS0FBSyxDQUFDO2FBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBTXZDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDNUQsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JCLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBYTtTQUNsQyxDQUFDLENBQUMsQ0FDSixDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLENBQUMsSUFBc0I7UUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBcUIsQ0FBQTtRQUNwQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBVztRQUMvQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0I7UUFDdEIsTUFBTSxvQkFBb0IsR0FBa0IsTUFBTSxjQUFjLENBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUNqQyxDQUFBO1FBQ0QsSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBYztRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNqQyxDQUFDOytHQWxFVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw2VkFDcEIscUJBQXFCLGdEQzVCbEMsdW1CQWVBOzs0RkRZYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU07c0pBR2IsWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ3ZCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gIEF1dG9jb21wbGV0ZUl0ZW0sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgU2VhcmNoRmFjYWRlIH0gZnJvbSAnLi4vc3RhdGUvc2VhcmNoLmZhY2FkZSdcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlL3NlYXJjaC5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcmVwb3NpdG9yeS9yZWNvcmRzLXJlcG9zaXRvcnkuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU2VhcmNoRmlsdGVycyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWZ1enp5LXNlYXJjaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mdXp6eS1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mdXp6eS1zZWFyY2guY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnV6enlTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKEF1dG9jb21wbGV0ZUNvbXBvbmVudCkgYXV0b2NvbXBsZXRlOiBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgQElucHV0KCkgYXV0b0ZvY3VzID0gZmFsc2VcbiAgQElucHV0KCkgZm9yY2VUcmFja1Bvc2l0aW9uID0gZmFsc2VcbiAgQElucHV0KCkgZW50ZXJCdXR0b24gPSBmYWxzZVxuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxDYXRhbG9nUmVjb3JkPigpXG4gIEBPdXRwdXQoKSBpbnB1dFN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpXG4gIEBPdXRwdXQoKSBpc1NlYXJjaEFjdGl2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuICBzZWFyY2hJbnB1dFZhbHVlJDogT2JzZXJ2YWJsZTx7IHRpdGxlOiBzdHJpbmcgfT5cblxuICBkaXNwbGF5V2l0aEZuOiAocmVjb3JkOiBDYXRhbG9nUmVjb3JkKSA9PiBzdHJpbmcgPSAocmVjb3JkKSA9PiByZWNvcmQudGl0bGVcblxuICBhdXRvQ29tcGxldGVBY3Rpb24gPSAocXVlcnk6IHN0cmluZykgPT5cbiAgICB0aGlzLnJlY29yZHNSZXBvc2l0b3J5XG4gICAgICAuZnV6enlTZWFyY2gocXVlcnkpXG4gICAgICAucGlwZShtYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnJlY29yZHMpKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VhcmNoRmFjYWRlOiBTZWFyY2hGYWNhZGUsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjb3Jkc1JlcG9zaXRvcnk6IFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaElucHV0VmFsdWUkID0gdGhpcy5zZWFyY2hGYWNhZGUuc2VhcmNoRmlsdGVycyQucGlwZShcbiAgICAgIG1hcCgoc2VhcmNoRmlsdGVyKSA9PiAoe1xuICAgICAgICB0aXRsZTogc2VhcmNoRmlsdGVyLmFueSBhcyBzdHJpbmcsXG4gICAgICB9KSlcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogRW1pdCB0aGUgZXZlbnQgaWYgdGhlIHBhcmVudCBjb21wb25lbnQgaGFzIHN1YnNjcmliZWQgdG8gaXQsIHNvIGl0XG4gICAqIGNhbiBkZWZpbmUgdGhlIGNvcnJlY3QgYmVoYXZpb3IuIElmIG5vIGNvbXBvbmVudCBpcyBsaXN0ZW5pbmcgdG8gdGhhdFxuICAgKiBldmVudCwgdGhlbiBhcHBseSB0aGUgZGVmYXVsdCBiZWhhdmlvclxuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgaGFuZGxlSXRlbVNlbGVjdGlvbihpdGVtOiBBdXRvY29tcGxldGVJdGVtKSB7XG4gICAgY29uc3QgcmVjb3JkID0gaXRlbSBhcyBDYXRhbG9nUmVjb3JkXG4gICAgaWYgKHRoaXMuaXRlbVNlbGVjdGVkLm9ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KHJlY29yZClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hGYWNhZGUuc2V0RmlsdGVycyh7IGFueTogcmVjb3JkLnRpdGxlIH0pXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSW5wdXRTdWJtaXNzaW9uKGFueTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRTdWJtaXR0ZWQub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaW5wdXRTdWJtaXR0ZWQuZW1pdChhbnkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS51cGRhdGVGaWx0ZXJzKHsgYW55IH0pXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaGFuZGxlSW5wdXRDbGVhcmVkKCkge1xuICAgIGNvbnN0IGN1cnJlbnRTZWFyY2hGaWx0ZXJzOiBTZWFyY2hGaWx0ZXJzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnNlYXJjaEZhY2FkZS5zZWFyY2hGaWx0ZXJzJFxuICAgIClcbiAgICBpZiAoY3VycmVudFNlYXJjaEZpbHRlcnMuYW55KSB7XG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2UudXBkYXRlRmlsdGVycyh7IGFueTogJycgfSlcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTZWFyY2hBY3RpdmUoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlLmVtaXQoZXZlbnQpXG4gIH1cbn1cbiIsIjxnbi11aS1hdXRvY29tcGxldGVcbiAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8/ICgnc2VhcmNoLmZpZWxkLmFueS5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGUpXCJcbiAgW2Rpc3BsYXlXaXRoRm5dPVwiZGlzcGxheVdpdGhGblwiXG4gIFthY3Rpb25dPVwiYXV0b0NvbXBsZXRlQWN0aW9uXCJcbiAgKGl0ZW1TZWxlY3RlZCk9XCJoYW5kbGVJdGVtU2VsZWN0aW9uKCRldmVudClcIlxuICAoaW5wdXRTdWJtaXR0ZWQpPVwiaGFuZGxlSW5wdXRTdWJtaXNzaW9uKCRldmVudClcIlxuICAoaW5wdXRDbGVhcmVkKT1cImhhbmRsZUlucHV0Q2xlYXJlZCgpXCJcbiAgKGlzU2VhcmNoQWN0aXZlKT1cImhhbmRsZVNlYXJjaEFjdGl2ZSgkZXZlbnQpXCJcbiAgW3ZhbHVlXT1cInNlYXJjaElucHV0VmFsdWUkIHwgYXN5bmNcIlxuICBbcHJldmVudENvbXBsZXRlT25TZWxlY3Rpb25dPVwidHJ1ZVwiXG4gIFthdXRvRm9jdXNdPVwiYXV0b0ZvY3VzXCJcbiAgW2FsbG93U3VibWl0XT1cInRydWVcIlxuICBbZm9yY2VUcmFja1Bvc2l0aW9uXT1cImZvcmNlVHJhY2tQb3NpdGlvblwiXG4gIFtlbnRlckJ1dHRvbl09XCJlbnRlckJ1dHRvblwiXG4+PC9nbi11aS1hdXRvY29tcGxldGU+XG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9mdXp6eS1zZWFyY2gvZnV6enktc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9mdXp6eS1zZWFyY2gvZnV6enktc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQ0wscUJBQXFCLEdBRXRCLE1BQU0sc0NBQXNDLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUUvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQTtBQUVqSSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7Ozs7QUFVOUMsTUFBTSxPQUFPLG9CQUFvQjtJQWtCL0IsWUFDVSxZQUEwQixFQUMxQixhQUE0QixFQUM1QixpQkFBNkM7UUFGN0MsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE0QjtRQW5COUMsY0FBUyxHQUFH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S0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gIEF1dG9jb21wbGV0ZUl0ZW0sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgU2VhcmNoRmFjYWRlIH0gZnJvbSAnLi4vc3RhdGUvc2VhcmNoLmZhY2FkZSdcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlL3NlYXJjaC5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcmVwb3NpdG9yeS9yZWNvcmRzLXJlcG9zaXRvcnkuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU2VhcmNoRmlsdGVycyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMnXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZnV6enktc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Z1enp5LXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Z1enp5LXNlYXJjaC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBdXRvY29tcGxldGVDb21wb25lbnQsIFRyYW5zbGF0ZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBGdXp6eVNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoQXV0b2NvbXBsZXRlQ29tcG9uZW50KSBhdXRvY29tcGxldGU6IEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICBASW5wdXQoKSBhdXRvRm9jdXMgPSBmYWxzZVxuICBASW5wdXQoKSBmb3JjZVRyYWNrUG9zaXRpb24gPSBmYWxzZVxuICBASW5wdXQoKSBlbnRlckJ1dHRvbiA9IGZhbHNlXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmQ+KClcbiAgQE91dHB1dCgpIGlucHV0U3VibWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KClcbiAgQE91dHB1dCgpIGlzU2VhcmNoQWN0aXZlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIHNlYXJjaElucHV0VmFsdWUkOiBPYnNlcnZhYmxlPHsgdGl0bGU6IHN0cmluZyB9PlxuXG4gIGRpc3BsYXlXaXRoRm46IChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpID0+IHN0cmluZyA9IChyZWNvcmQpID0+IHJlY29yZC50aXRsZVxuXG4gIGF1dG9Db21wbGV0ZUFjdGlvbiA9IChxdWVyeTogc3RyaW5nKSA9PlxuICAgIHRoaXMucmVjb3Jkc1JlcG9zaXRvcnlcbiAgICAgIC5mdXp6eVNlYXJjaChxdWVyeSlcbiAgICAgIC5waXBlKG1hcCgocmVzdWx0KSA9PiByZXN1bHQucmVjb3JkcykpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZWFyY2hGYWNhZGU6IFNlYXJjaEZhY2FkZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNvcmRzUmVwb3NpdG9yeTogUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoSW5wdXRWYWx1ZSQgPSB0aGlzLnNlYXJjaEZhY2FkZS5zZWFyY2hGaWx0ZXJzJC5waXBlKFxuICAgICAgbWFwKChzZWFyY2hGaWx0ZXIpID0+ICh7XG4gICAgICAgIHRpdGxlOiBzZWFyY2hGaWx0ZXIuYW55IGFzIHN0cmluZyxcbiAgICAgIH0pKVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IHRoZSBldmVudCBpZiB0aGUgcGFyZW50IGNvbXBvbmVudCBoYXMgc3Vic2NyaWJlZCB0byBpdCwgc28gaXRcbiAgICogY2FuIGRlZmluZSB0aGUgY29ycmVjdCBiZWhhdmlvci4gSWYgbm8gY29tcG9uZW50IGlzIGxpc3RlbmluZyB0byB0aGF0XG4gICAqIGV2ZW50LCB0aGVuIGFwcGx5IHRoZSBkZWZhdWx0IGJlaGF2aW9yXG4gICAqIEBwYXJhbSBpdGVtXG4gICAqL1xuICBoYW5kbGVJdGVtU2VsZWN0aW9uKGl0ZW06IEF1dG9jb21wbGV0ZUl0ZW0pIHtcbiAgICBjb25zdCByZWNvcmQgPSBpdGVtIGFzIENhdGFsb2dSZWNvcmRcbiAgICBpZiAodGhpcy5pdGVtU2VsZWN0ZWQub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQocmVjb3JkKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaEZhY2FkZS5zZXRGaWx0ZXJzKHsgYW55OiByZWNvcmQudGl0bGUgfSlcbiAgICB9XG4gIH1cblxuICBoYW5kbGVJbnB1dFN1Ym1pc3Npb24oYW55OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5pbnB1dFN1Ym1pdHRlZC5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pbnB1dFN1Ym1pdHRlZC5lbWl0KGFueSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnVwZGF0ZUZpbHRlcnMoeyBhbnkgfSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBoYW5kbGVJbnB1dENsZWFyZWQoKSB7XG4gICAgY29uc3QgY3VycmVudFNlYXJjaEZpbHRlcnM6IFNlYXJjaEZpbHRlcnMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuc2VhcmNoRmFjYWRlLnNlYXJjaEZpbHRlcnMkXG4gICAgKVxuICAgIGlmIChjdXJyZW50U2VhcmNoRmlsdGVycy5hbnkpIHtcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS51cGRhdGVGaWx0ZXJzKHsgYW55OiAnJyB9KVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNlYXJjaEFjdGl2ZShldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUuZW1pdChldmVudClcbiAgfVxufVxuIiwiPGduLXVpLWF1dG9jb21wbGV0ZVxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgPz8gKCdzZWFyY2guZmllbGQuYW55LnBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZSlcIlxuICBbZGlzcGxheVdpdGhGbl09XCJkaXNwbGF5V2l0aEZuXCJcbiAgW2FjdGlvbl09XCJhdXRvQ29tcGxldGVBY3Rpb25cIlxuICAoaXRlbVNlbGVjdGVkKT1cImhhbmRsZUl0ZW1TZWxlY3Rpb24oJGV2ZW50KVwiXG4gIChpbnB1dFN1Ym1pdHRlZCk9XCJoYW5kbGVJbnB1dFN1Ym1pc3Npb24oJGV2ZW50KVwiXG4gIChpbnB1dENsZWFyZWQpPVwiaGFuZGxlSW5wdXRDbGVhcmVkKClcIlxuICAoaXNTZWFyY2hBY3RpdmUpPVwiaGFuZGxlU2VhcmNoQWN0aXZlKCRldmVudClcIlxuICBbdmFsdWVdPVwic2VhcmNoSW5wdXRWYWx1ZSQgfCBhc3luY1wiXG4gIFtwcmV2ZW50Q29tcGxldGVPblNlbGVjdGlvbl09XCJ0cnVlXCJcbiAgW2F1dG9Gb2N1c109XCJhdXRvRm9jdXNcIlxuICBbYWxsb3dTdWJtaXRdPVwidHJ1ZVwiXG4gIFtmb3JjZVRyYWNrUG9zaXRpb25dPVwiZm9yY2VUcmFja1Bvc2l0aW9uXCJcbiAgW2VudGVyQnV0dG9uXT1cImVudGVyQnV0dG9uXCJcbj48L2duLXVpLWF1dG9jb21wbGV0ZT5cbiJdfQ==
@@ -10,11 +10,11 @@ import * as i1 from "../state/search.facade";
10
10
  import * as i2 from "@angular/common";
11
11
  import * as i3 from "@ngx-translate/core";
12
12
  import * as i4 from "../../../../../ui/search/src/lib/results-list/results-list.component";
13
- import * as i5 from "../../../../../ui/inputs/src/lib/button/button.component";
14
- import * as i6 from "../../../../../ui/inputs/src/lib/viewport-intersector/viewport-intersector.component";
15
- import * as i7 from "../../../../../ui/widgets/src/lib/spinning-loader/spinning-loader.component";
16
- import * as i8 from "../../../../../ui/elements/src/lib/error/error.component";
17
- import * as i9 from "../favorites/favorite-star/favorite-star.component";
13
+ import * as i5 from "../../../../../ui/widgets/src/lib/spinning-loader/spinning-loader.component";
14
+ import * as i6 from "../../../../../ui/elements/src/lib/error/error.component";
15
+ import * as i7 from "../favorites/favorite-star/favorite-star.component";
16
+ import * as i8 from "../../../../../ui/inputs/src/lib/viewport-intersector/viewport-intersector.component";
17
+ import * as i9 from "../../../../../ui/inputs/src/lib/button/button.component";
18
18
  export class ResultsListContainerComponent {
19
19
  constructor(facade, resultsLayoutConfig, recordDatasetUrlTemplate, recordServiceUrlTemplate, recordReuseUrlTemplate) {
20
20
  this.facade = facade;
@@ -66,7 +66,7 @@ export class ResultsListContainerComponent {
66
66
  return urlKind.replace('${uuid}', metadata.uniqueIdentifier);
67
67
  }
68
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: i1.SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token: RECORD_DATASET_URL_TOKEN, optional: true }, { token: RECORD_SERVICE_URL_TOKEN, optional: true }, { token: RECORD_REUSE_URL_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
69
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n [style.--gn-ui-button-width]=\"!auto\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.ResultsListComponent, selector: "gn-ui-results-list", inputs: ["records", "layoutConfig", "favoriteTemplate", "recordUrlGetter", "metadataQualityDisplay"], outputs: ["mdSelect"] }, { kind: "component", type: i5.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i6.ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: ["isInViewport", "entersViewport", "exitsViewport"] }, { kind: "component", type: i7.SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: i8.ErrorComponent, selector: "gn-ui-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: i9.FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n [style.--gn-ui-button-width]=\"!auto\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.ResultsListComponent, selector: "gn-ui-results-list", inputs: ["records", "layoutConfig", "favoriteTemplate", "recordUrlGetter", "metadataQualityDisplay"], outputs: ["mdSelect"] }, { kind: "component", type: i5.SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: i6.ErrorComponent, selector: "gn-ui-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: i7.FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "component", type: i8.ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: ["isInViewport", "entersViewport", "exitsViewport"] }, { kind: "component", type: i9.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
70
70
  }
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, decorators: [{
72
72
  type: Component,
@@ -1,16 +1,14 @@
1
- import { Component, Inject, Input, Optional } from '@angular/core';
1
+ import { Component, Inject, InjectionToken, Input, Optional, } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { first, map } from 'rxjs';
4
4
  import { SearchFiltersSummaryItemComponent } from '../search-filters-summary-item/search-filters-summary-item.component';
5
- import { TranslateModule } from '@ngx-translate/core';
5
+ import { TranslatePipe } from '@ngx-translate/core';
6
6
  import { SearchFacade } from '../state/search.facade';
7
7
  import { SearchService } from '../utils/service/search.service';
8
- import { InjectionToken } from '@angular/core';
9
8
  import * as i0 from "@angular/core";
10
9
  import * as i1 from "../state/search.facade";
11
10
  import * as i2 from "../utils/service/search.service";
12
11
  import * as i3 from "@angular/common";
13
- import * as i4 from "@ngx-translate/core";
14
12
  export const FILTER_SUMMARY_IGNORE_LIST = new InjectionToken('FILTER_SUMMARY_IGNORE_LIST');
15
13
  export class SearchFiltersSummaryComponent {
16
14
  constructor(searchFacade, searchService, filterSummaryIgnoreList) {
@@ -51,11 +49,11 @@ export class SearchFiltersSummaryComponent {
51
49
  .subscribe((filters) => this.searchService.setFilters(filters));
52
50
  }
53
51
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFiltersSummaryComponent, deps: [{ token: i1.SearchFacade }, { token: i2.SearchService }, { token: FILTER_SUMMARY_IGNORE_LIST, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchFiltersSummaryComponent, isStandalone: true, selector: "gn-ui-search-filters-summary", inputs: { searchFields: "searchFields" }, ngImport: i0, template: "<div\n class=\"flex flex-row py-3 px-4 gap-4 overflow-hidden grow border-[1px] border-gray-200\"\n *ngIf=\"searchFilterActive$ | async\"\n>\n <div class=\"flex flex-row flex-wrap items-center gap-2\">\n <gn-ui-search-filters-summary-item\n *ngFor=\"let field of searchFields; let i = index\"\n [fieldName]=\"field\"\n ></gn-ui-search-filters-summary-item>\n </div>\n <button\n class=\"bg-white text-black font-bold ml-auto\"\n (click)=\"clearFilters()\"\n >\n {{ 'search.filters.clear' | translate }}\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "component", type: SearchFiltersSummaryItemComponent, selector: "gn-ui-search-filters-summary-item", inputs: ["fieldName"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
52
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchFiltersSummaryComponent, isStandalone: true, selector: "gn-ui-search-filters-summary", inputs: { searchFields: "searchFields" }, ngImport: i0, template: "<div\n class=\"flex flex-row py-3 px-4 gap-4 overflow-hidden grow border-[1px] border-gray-200\"\n *ngIf=\"searchFilterActive$ | async\"\n>\n <div class=\"flex flex-row flex-wrap items-center gap-2\">\n <gn-ui-search-filters-summary-item\n *ngFor=\"let field of searchFields; let i = index\"\n [fieldName]=\"field\"\n ></gn-ui-search-filters-summary-item>\n </div>\n <button\n class=\"bg-white text-black font-bold ml-auto\"\n (click)=\"clearFilters()\"\n >\n {{ 'search.filters.clear' | translate }}\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "component", type: SearchFiltersSummaryItemComponent, selector: "gn-ui-search-filters-summary-item", inputs: ["fieldName"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
55
53
  }
56
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFiltersSummaryComponent, decorators: [{
57
55
  type: Component,
58
- args: [{ selector: 'gn-ui-search-filters-summary', imports: [CommonModule, SearchFiltersSummaryItemComponent, TranslateModule], standalone: true, template: "<div\n class=\"flex flex-row py-3 px-4 gap-4 overflow-hidden grow border-[1px] border-gray-200\"\n *ngIf=\"searchFilterActive$ | async\"\n>\n <div class=\"flex flex-row flex-wrap items-center gap-2\">\n <gn-ui-search-filters-summary-item\n *ngFor=\"let field of searchFields; let i = index\"\n [fieldName]=\"field\"\n ></gn-ui-search-filters-summary-item>\n </div>\n <button\n class=\"bg-white text-black font-bold ml-auto\"\n (click)=\"clearFilters()\"\n >\n {{ 'search.filters.clear' | translate }}\n </button>\n</div>\n" }]
56
+ args: [{ selector: 'gn-ui-search-filters-summary', imports: [CommonModule, SearchFiltersSummaryItemComponent, TranslatePipe], standalone: true, template: "<div\n class=\"flex flex-row py-3 px-4 gap-4 overflow-hidden grow border-[1px] border-gray-200\"\n *ngIf=\"searchFilterActive$ | async\"\n>\n <div class=\"flex flex-row flex-wrap items-center gap-2\">\n <gn-ui-search-filters-summary-item\n *ngFor=\"let field of searchFields; let i = index\"\n [fieldName]=\"field\"\n ></gn-ui-search-filters-summary-item>\n </div>\n <button\n class=\"bg-white text-black font-bold ml-auto\"\n (click)=\"clearFilters()\"\n >\n {{ 'search.filters.clear' | translate }}\n </button>\n</div>\n" }]
59
57
  }], ctorParameters: () => [{ type: i1.SearchFacade }, { type: i2.SearchService }, { type: undefined, decorators: [{
60
58
  type: Optional
61
59
  }, {
@@ -64,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
64
62
  }] }], propDecorators: { searchFields: [{
65
63
  type: Input
66
64
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlcnMtc3VtbWFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvc2VhcmNoL3NyYy9saWIvc2VhcmNoLWZpbHRlcnMtc3VtbWFyeS9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5L3NlYXJjaC1maWx0ZXJzLXN1bW1hcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUE7QUFDN0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0VBQXNFLENBQUE7QUFDeEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFFL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7Ozs7O0FBRTlDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUMxRCw0QkFBNEIsQ0FDN0IsQ0FBQTtBQVFELE1BQU0sT0FBTyw2QkFBNkI7SUFNeEMsWUFDVSxZQUEwQixFQUMxQixhQUE0QixFQUdwQyx1QkFBaUM7UUFKekIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFQN0IsaUJBQVksR0FBYSxFQUFFLENBQUE7UUFZbEMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsR0FBRztZQUM3QixHQUFHLGlCQUFpQjtZQUNwQixHQUFHLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDO1NBQ25DLENBQUE7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzlELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ2xELENBQUE7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBcUI7UUFDckMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFBO1FBQzFCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQ3hDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixLQUFLLEtBQUssU0FBUztZQUNuQixDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVE7Z0JBQ3hCLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ2xFLENBQUE7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYzthQUM3QixJQUFJLENBQ0gsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDZCxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUE7WUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDaEQsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUNGLE9BQU8sVUFBVSxDQUFBO1FBQ25CLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ25FLENBQUM7K0dBeERVLDZCQUE2QiwyRUFVOUIsMEJBQTBCO21HQVZ6Qiw2QkFBNkIsa0lDcEIxQyw0aUJBaUJBLHlEREZZLFlBQVkscVRBQUUsaUNBQWlDLG9HQUFFLGVBQWU7OzRGQUsvRCw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0UsOEJBQThCLFdBQy9CLENBQUMsWUFBWSxFQUFFLGlDQUFpQyxFQUFFLGVBQWUsQ0FBQyxjQUcvRCxJQUFJOzswQkFXYixRQUFROzswQkFDUixNQUFNOzJCQUFDLDBCQUEwQjt5Q0FUM0IsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBmaXJzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IFNlYXJjaEZpbHRlcnNTdW1tYXJ5SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1maWx0ZXJzLXN1bW1hcnktaXRlbS9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW0uY29tcG9uZW50J1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IFNlYXJjaEZhY2FkZSB9IGZyb20gJy4uL3N0YXRlL3NlYXJjaC5mYWNhZGUnXG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZS9zZWFyY2guc2VydmljZSdcbmltcG9ydCB7IEZpZWxkRmlsdGVycyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3NlYXJjaCdcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9TVU1NQVJZX0lHTk9SRV9MSVNUID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZ1tdPihcbiAgJ0ZJTFRFUl9TVU1NQVJZX0lHTk9SRV9MSVNUJ1xuKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktc2VhcmNoLWZpbHRlcnMtc3VtbWFyeScsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNlYXJjaEZpbHRlcnNTdW1tYXJ5SXRlbUNvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1maWx0ZXJzLXN1bW1hcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoRmlsdGVyc1N1bW1hcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzZWFyY2hGaWVsZHM6IHN0cmluZ1tdID0gW11cbiAgZmlsdGVyU3VtbWFyeUlnbm9yZUxpc3Q6IHN0cmluZ1tdXG5cbiAgc2VhcmNoRmlsdGVyQWN0aXZlJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VhcmNoRmFjYWRlOiBTZWFyY2hGYWNhZGUsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChGSUxURVJfU1VNTUFSWV9JR05PUkVfTElTVClcbiAgICBmaWx0ZXJTdW1tYXJ5SWdub3JlTGlzdDogc3RyaW5nW11cbiAgKSB7XG4gICAgY29uc3QgZGVmYXVsdElnbm9yZUxpc3QgPSBbJ2FueSddXG4gICAgdGhpcy5maWx0ZXJTdW1tYXJ5SWdub3JlTGlzdCA9IFtcbiAgICAgIC4uLmRlZmF1bHRJZ25vcmVMaXN0LFxuICAgICAgLi4uKGZpbHRlclN1bW1hcnlJZ25vcmVMaXN0ID8/IFtdKSxcbiAgICBdXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEZpbHRlckFjdGl2ZSQgPSB0aGlzLnNlYXJjaEZhY2FkZS5zZWFyY2hGaWx0ZXJzJC5waXBlKFxuICAgICAgbWFwKChmaWx0ZXJzKSA9PiB0aGlzLmhhc05vbkVtcHR5VmFsdWVzKGZpbHRlcnMpKVxuICAgIClcbiAgfVxuXG4gIGhhc05vbkVtcHR5VmFsdWVzKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpbHRlcmVkRmlsdGVycyA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVycykpIHtcbiAgICAgIGlmICghdGhpcy5maWx0ZXJTdW1tYXJ5SWdub3JlTGlzdC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIGZpbHRlcmVkRmlsdGVyc1trZXldID0gdmFsdWVcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZmlsdGVyZWRGaWx0ZXJzKS5zb21lKFxuICAgICAgKHZhbHVlKSA9PlxuICAgICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8XG4gICAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA+IDApKVxuICAgIClcbiAgfVxuXG4gIGNsZWFyRmlsdGVycygpIHtcbiAgICB0aGlzLnNlYXJjaEZhY2FkZS5zZWFyY2hGaWx0ZXJzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIG1hcCgoZmlsdGVycykgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSB7IC4uLmZpbHRlcnMgfVxuICAgICAgICAgIE9iamVjdC5rZXlzKG5ld0ZpbHRlcnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZpbHRlclN1bW1hcnlJZ25vcmVMaXN0LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0ZpbHRlcnNba2V5XVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIG5ld0ZpbHRlcnNcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGZpbHRlcnMpID0+IHRoaXMuc2VhcmNoU2VydmljZS5zZXRGaWx0ZXJzKGZpbHRlcnMpKVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBweS0zIHB4LTQgZ2FwLTQgb3ZlcmZsb3ctaGlkZGVuIGdyb3cgYm9yZGVyLVsxcHhdIGJvcmRlci1ncmF5LTIwMFwiXG4gICpuZ0lmPVwic2VhcmNoRmlsdGVyQWN0aXZlJCB8IGFzeW5jXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgIDxnbi11aS1zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW1cbiAgICAgICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWFyY2hGaWVsZHM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgW2ZpZWxkTmFtZV09XCJmaWVsZFwiXG4gICAgPjwvZ24tdWktc2VhcmNoLWZpbHRlcnMtc3VtbWFyeS1pdGVtPlxuICA8L2Rpdj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYmctd2hpdGUgdGV4dC1ibGFjayBmb250LWJvbGQgbWwtYXV0b1wiXG4gICAgKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCJcbiAgPlxuICAgIHt7ICdzZWFyY2guZmlsdGVycy5jbGVhcicgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlcnMtc3VtbWFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvc2VhcmNoL3NyYy9saWIvc2VhcmNoLWZpbHRlcnMtc3VtbWFyeS9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5L3NlYXJjaC1maWx0ZXJzLXN1bW1hcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFFTCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHNFQUFzRSxDQUFBO0FBQ3hILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFBOzs7OztBQUcvRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLGNBQWMsQ0FDMUQsNEJBQTRCLENBQzdCLENBQUE7QUFRRCxNQUFNLE9BQU8sNkJBQTZCO0lBTXhDLFlBQ1UsWUFBMEIsRUFDMUIsYUFBNEIsRUFHcEMsdUJBQWlDO1FBSnpCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBUDdCLGlCQUFZLEdBQWEsRUFBRSxDQUFBO1FBWWxDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsdUJBQXVCLEdBQUc7WUFDN0IsR0FBRyxpQkFBaUI7WUFDcEIsR0FBRyxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQztTQUNuQyxDQUFBO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNsRCxDQUFBO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQXFCO1FBQ3JDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQTtRQUMxQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hELGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDOUIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUN4QyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1IsS0FBSyxLQUFLLFNBQVM7WUFDbkIsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRO2dCQUN4QixDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNsRSxDQUFBO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7YUFDN0IsSUFBSSxDQUNILEtBQUssRUFBRSxFQUNQLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2QsTUFBTSxVQUFVLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFBO1lBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2hELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUE7WUFDRixPQUFPLFVBQVUsQ0FBQTtRQUNuQixDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNuRSxDQUFDOytHQXhEVSw2QkFBNkIsMkVBVTlCLDBCQUEwQjttR0FWekIsNkJBQTZCLGtJQzFCMUMsNGlCQWlCQSx5RERJWSxZQUFZLHFUQUFFLGlDQUFpQyxnR0FBRSxhQUFhOzs0RkFLN0QsNkJBQTZCO2tCQVB6QyxTQUFTOytCQUNFLDhCQUE4QixXQUMvQixDQUFDLFlBQVksRUFBRSxpQ0FBaUMsRUFBRSxhQUFhLENBQUMsY0FHN0QsSUFBSTs7MEJBV2IsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQywwQkFBMEI7eUNBVDNCLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBTZWFyY2hGaWx0ZXJzU3VtbWFyeUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW0vc2VhcmNoLWZpbHRlcnMtc3VtbWFyeS1pdGVtLmNvbXBvbmVudCdcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgU2VhcmNoRmFjYWRlIH0gZnJvbSAnLi4vc3RhdGUvc2VhcmNoLmZhY2FkZSdcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlL3NlYXJjaC5zZXJ2aWNlJ1xuaW1wb3J0IHsgRmllbGRGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuXG5leHBvcnQgY29uc3QgRklMVEVSX1NVTU1BUllfSUdOT1JFX0xJU1QgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nW10+KFxuICAnRklMVEVSX1NVTU1BUllfSUdOT1JFX0xJU1QnXG4pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1zZWFyY2gtZmlsdGVycy1zdW1tYXJ5JyxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2VhcmNoRmlsdGVyc1N1bW1hcnlJdGVtQ29tcG9uZW50LCBUcmFuc2xhdGVQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1maWx0ZXJzLXN1bW1hcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoRmlsdGVyc1N1bW1hcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzZWFyY2hGaWVsZHM6IHN0cmluZ1tdID0gW11cbiAgZmlsdGVyU3VtbWFyeUlnbm9yZUxpc3Q6IHN0cmluZ1tdXG5cbiAgc2VhcmNoRmlsdGVyQWN0aXZlJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VhcmNoRmFjYWRlOiBTZWFyY2hGYWNhZGUsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChGSUxURVJfU1VNTUFSWV9JR05PUkVfTElTVClcbiAgICBmaWx0ZXJTdW1tYXJ5SWdub3JlTGlzdDogc3RyaW5nW11cbiAgKSB7XG4gICAgY29uc3QgZGVmYXVsdElnbm9yZUxpc3QgPSBbJ2FueSddXG4gICAgdGhpcy5maWx0ZXJTdW1tYXJ5SWdub3JlTGlzdCA9IFtcbiAgICAgIC4uLmRlZmF1bHRJZ25vcmVMaXN0LFxuICAgICAgLi4uKGZpbHRlclN1bW1hcnlJZ25vcmVMaXN0ID8/IFtdKSxcbiAgICBdXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEZpbHRlckFjdGl2ZSQgPSB0aGlzLnNlYXJjaEZhY2FkZS5zZWFyY2hGaWx0ZXJzJC5waXBlKFxuICAgICAgbWFwKChmaWx0ZXJzKSA9PiB0aGlzLmhhc05vbkVtcHR5VmFsdWVzKGZpbHRlcnMpKVxuICAgIClcbiAgfVxuXG4gIGhhc05vbkVtcHR5VmFsdWVzKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpbHRlcmVkRmlsdGVycyA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVycykpIHtcbiAgICAgIGlmICghdGhpcy5maWx0ZXJTdW1tYXJ5SWdub3JlTGlzdC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIGZpbHRlcmVkRmlsdGVyc1trZXldID0gdmFsdWVcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZmlsdGVyZWRGaWx0ZXJzKS5zb21lKFxuICAgICAgKHZhbHVlKSA9PlxuICAgICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8XG4gICAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA+IDApKVxuICAgIClcbiAgfVxuXG4gIGNsZWFyRmlsdGVycygpIHtcbiAgICB0aGlzLnNlYXJjaEZhY2FkZS5zZWFyY2hGaWx0ZXJzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIG1hcCgoZmlsdGVycykgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSB7IC4uLmZpbHRlcnMgfVxuICAgICAgICAgIE9iamVjdC5rZXlzKG5ld0ZpbHRlcnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZpbHRlclN1bW1hcnlJZ25vcmVMaXN0LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0ZpbHRlcnNba2V5XVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIG5ld0ZpbHRlcnNcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGZpbHRlcnMpID0+IHRoaXMuc2VhcmNoU2VydmljZS5zZXRGaWx0ZXJzKGZpbHRlcnMpKVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBweS0zIHB4LTQgZ2FwLTQgb3ZlcmZsb3ctaGlkZGVuIGdyb3cgYm9yZGVyLVsxcHhdIGJvcmRlci1ncmF5LTIwMFwiXG4gICpuZ0lmPVwic2VhcmNoRmlsdGVyQWN0aXZlJCB8IGFzeW5jXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgIDxnbi11aS1zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW1cbiAgICAgICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBzZWFyY2hGaWVsZHM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgW2ZpZWxkTmFtZV09XCJmaWVsZFwiXG4gICAgPjwvZ24tdWktc2VhcmNoLWZpbHRlcnMtc3VtbWFyeS1pdGVtPlxuICA8L2Rpdj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYmctd2hpdGUgdGV4dC1ibGFjayBmb250LWJvbGQgbWwtYXV0b1wiXG4gICAgKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCJcbiAgPlxuICAgIHt7ICdzZWFyY2guZmlsdGVycy5jbGVhcicgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -2,7 +2,7 @@ import { Component, Input } from '@angular/core';
2
2
  import { CommonModule, DatePipe } from '@angular/common';
3
3
  import { catchError, firstValueFrom, map, of, switchMap, } from 'rxjs';
4
4
  import { BadgeComponent } from '../../../../../../libs/ui/inputs/src';
5
- import { TranslateModule, TranslateService } from '@ngx-translate/core';
5
+ import { TranslateService } from '@ngx-translate/core';
6
6
  import { SearchFacade } from '../state/search.facade';
7
7
  import { SearchService } from '../utils/service/search.service';
8
8
  import { FieldsService } from '../utils/service/fields.service';
@@ -73,12 +73,12 @@ export class SearchFiltersSummaryItemComponent {
73
73
  .subscribe((filters) => this.searchService.updateFilters(filters));
74
74
  }
75
75
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFiltersSummaryItemComponent, deps: [{ token: i1.SearchFacade }, { token: i2.SearchService }, { token: i3.FieldsService }, { token: i4.DatePipe }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchFiltersSummaryItemComponent, isStandalone: true, selector: "gn-ui-search-filters-summary-item", inputs: { fieldName: "fieldName" }, providers: [DatePipe], ngImport: i0, template: "<div\n *ngIf=\"(fieldValues$ | async)?.length > 0\"\n class=\"flex flex-row items-center gap-2\"\n>\n <span class=\"text-gray-800\" data-cy=\"filterSummaryLabel\">{{\n translatedLabel\n }}</span>\n <gn-ui-badge\n *ngFor=\"let fieldValue of fieldValues$ | async\"\n class=\"gn-ui-badge\"\n [style.--gn-ui-badge-rounded]=\"'8px'\"\n [style.--gn-ui-badge-padding]=\"'3px 4px'\"\n [style.--gn-ui-badge-text-color]=\"'black'\"\n [style.--gn-ui-badge-background-color]=\"'#F2F2F2'\"\n [style.--gn-ui-badge-font-weight]=\"'700'\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeFilterValue(fieldValue.value)\"\n >{{ fieldValue.label }}</gn-ui-badge\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }] }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchFiltersSummaryItemComponent, isStandalone: true, selector: "gn-ui-search-filters-summary-item", inputs: { fieldName: "fieldName" }, providers: [DatePipe], ngImport: i0, template: "<div\n *ngIf=\"(fieldValues$ | async)?.length > 0\"\n class=\"flex flex-row items-center gap-2\"\n>\n <span class=\"text-gray-800\" data-cy=\"filterSummaryLabel\">{{\n translatedLabel\n }}</span>\n <gn-ui-badge\n *ngFor=\"let fieldValue of fieldValues$ | async\"\n class=\"gn-ui-badge\"\n [style.--gn-ui-badge-rounded]=\"'8px'\"\n [style.--gn-ui-badge-padding]=\"'3px 4px'\"\n [style.--gn-ui-badge-text-color]=\"'black'\"\n [style.--gn-ui-badge-background-color]=\"'#F2F2F2'\"\n [style.--gn-ui-badge-font-weight]=\"'700'\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeFilterValue(fieldValue.value)\"\n >{{ fieldValue.label }}</gn-ui-badge\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }] }); }
77
77
  }
78
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFiltersSummaryItemComponent, decorators: [{
79
79
  type: Component,
80
- args: [{ selector: 'gn-ui-search-filters-summary-item', standalone: true, imports: [CommonModule, TranslateModule, BadgeComponent], providers: [DatePipe], template: "<div\n *ngIf=\"(fieldValues$ | async)?.length > 0\"\n class=\"flex flex-row items-center gap-2\"\n>\n <span class=\"text-gray-800\" data-cy=\"filterSummaryLabel\">{{\n translatedLabel\n }}</span>\n <gn-ui-badge\n *ngFor=\"let fieldValue of fieldValues$ | async\"\n class=\"gn-ui-badge\"\n [style.--gn-ui-badge-rounded]=\"'8px'\"\n [style.--gn-ui-badge-padding]=\"'3px 4px'\"\n [style.--gn-ui-badge-text-color]=\"'black'\"\n [style.--gn-ui-badge-background-color]=\"'#F2F2F2'\"\n [style.--gn-ui-badge-font-weight]=\"'700'\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeFilterValue(fieldValue.value)\"\n >{{ fieldValue.label }}</gn-ui-badge\n >\n</div>\n" }]
80
+ args: [{ selector: 'gn-ui-search-filters-summary-item', standalone: true, imports: [CommonModule, BadgeComponent], providers: [DatePipe], template: "<div\n *ngIf=\"(fieldValues$ | async)?.length > 0\"\n class=\"flex flex-row items-center gap-2\"\n>\n <span class=\"text-gray-800\" data-cy=\"filterSummaryLabel\">{{\n translatedLabel\n }}</span>\n <gn-ui-badge\n *ngFor=\"let fieldValue of fieldValues$ | async\"\n class=\"gn-ui-badge\"\n [style.--gn-ui-badge-rounded]=\"'8px'\"\n [style.--gn-ui-badge-padding]=\"'3px 4px'\"\n [style.--gn-ui-badge-text-color]=\"'black'\"\n [style.--gn-ui-badge-background-color]=\"'#F2F2F2'\"\n [style.--gn-ui-badge-font-weight]=\"'700'\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeFilterValue(fieldValue.value)\"\n >{{ fieldValue.label }}</gn-ui-badge\n >\n</div>\n" }]
81
81
  }], ctorParameters: () => [{ type: i1.SearchFacade }, { type: i2.SearchService }, { type: i3.FieldsService }, { type: i4.DatePipe }, { type: i5.TranslateService }], propDecorators: { fieldName: [{
82
82
  type: Input
83
83
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlcnMtc3VtbWFyeS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW0vc2VhcmNoLWZpbHRlcnMtc3VtbWFyeS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW0vc2VhcmNoLWZpbHRlcnMtc3VtbWFyeS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFBO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDeEQsT0FBTyxFQUNMLFVBQVUsRUFDVixjQUFjLEVBQ2QsR0FBRyxFQUVILEVBQUUsRUFDRixTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUE7QUFDYixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBR3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUE7Ozs7Ozs7QUFFaEUsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUE7QUFD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QztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFBO1lBQ2hDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsVUFBa0M7UUFDeEQsTUFBTSxrQkFBa0IsR0FBcUIsTUFBTSxjQUFjLENBQy9ELElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUE7UUFDRCxNQUFNLGtCQUFrQixHQUFHLGtCQUFrQjthQUMxQyxNQUFNLENBQ0wsQ0FBQyxjQUE4QixFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FDeEU7YUFDQSxHQUFHLENBQUMsQ0FBQyxjQUE4QixFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFaEUsSUFBSSxDQUFDLGFBQWE7YUFDZiwyQkFBMkIsQ0FBQztZQUMzQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxrQkFBa0M7U0FDckQsQ0FBQzthQUNELFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUN0RSxDQUFDOytHQWhGVSxpQ0FBaUM7bUdBQWpDLGlDQUFpQyxvSEFGakMsQ0FBQyxRQUFRLENBQUMsMEJDbEN2Qiw4ckJBb0JBLHlERFdZLFlBQVksb1RBQUUsZUFBZSwrQkFBRSxjQUFjOzs0RkFLNUMsaUNBQWlDO2tCQVI3QyxTQUFTOytCQUNFLG1DQUFtQyxjQUNqQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxhQUc3QyxDQUFDLFFBQVEsQ0FBQzsrTEFHWixTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBmaXJzdFZhbHVlRnJvbSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMnXG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVmFsdWUgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlL2ZpZWxkcydcbmltcG9ydCB7IFNlYXJjaEZhY2FkZSB9IGZyb20gJy4uL3N0YXRlL3NlYXJjaC5mYWNhZGUnXG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZS9zZWFyY2guc2VydmljZSdcbmltcG9ydCB7IEZpZWxkc1NlcnZpY2UgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlL2ZpZWxkcy5zZXJ2aWNlJ1xuaW1wb3J0IHsgZm9ybWF0VXNlckluZm8gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcblxubWFya2VyKCdzZWFyY2guZmlsdGVycy5zdW1tYXJ5TGFiZWwudXNlcicpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLnN1bW1hcnlMYWJlbC5jaGFuZ2VEYXRlJylcblxuaW50ZXJmYWNlIERpc3BsYXllZFZhbHVlIHtcbiAgbGFiZWw6IHN0cmluZ1xuICB2YWx1ZTogRmllbGRWYWx1ZSB8IERhdGVSYW5nZVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIEJhZGdlQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1maWx0ZXJzLXN1bW1hcnktaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1maWx0ZXJzLXN1bW1hcnktaXRlbS5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW0RhdGVQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoRmlsdGVyc1N1bW1hcnlJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZmllbGROYW1lOiBzdHJpbmdcbiAgZmllbGRUeXBlOiBGaWVsZFR5cGVcbiAgdHJhbnNsYXRlZExhYmVsOiBzdHJpbmdcblxuICBmaWVsZFZhbHVlcyQgPSB0aGlzLnNlYXJjaEZhY2FkZS5zZWFyY2hGaWx0ZXJzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoZmlsdGVycykgPT5cbiAgICAgIHRoaXMuZmllbGRzU2VydmljZS5yZWFkRmllbGRWYWx1ZXNGcm9tRmlsdGVycyhmaWx0ZXJzKVxuICAgICksXG4gICAgbWFwKChmaWVsZFZhbHVlcykgPT5cbiAgICAgIEFycmF5LmlzQXJyYXkoZmllbGRWYWx1ZXNbdGhpcy5maWVsZE5hbWVdKVxuICAgICAgICA/IChmaWVsZFZhbHVlc1t0aGlzLmZpZWxkTmFtZV0gYXMgRmllbGRWYWx1ZVtdKVxuICAgICAgICA6IChbZmllbGRWYWx1ZXNbdGhpcy5maWVsZE5hbWVdXSBhcyBGaWVsZFZhbHVlW10pXG4gICAgKSxcbiAgICBtYXAoXG4gICAgICAoZmllbGRWYWx1ZXMpID0+IHRoaXMuZ2V0UmVhZGFibGVWYWx1ZXMoZmllbGRWYWx1ZXMpIGFzIERpc3BsYXllZFZhbHVlW11cbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKVxuICApIGFzIE9ic2VydmFibGU8RGlzcGxheWVkVmFsdWVbXT5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlYXJjaEZhY2FkZTogU2VhcmNoRmFjYWRlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIGZpZWxkc1NlcnZpY2U6IEZpZWxkc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZmllbGRUeXBlID0gdGhpcy5maWVsZHNTZXJ2aWNlLmdldEZpZWxkVHlwZSh0aGlzLmZpZWxkTmFtZSlcbiAgICB0aGlzLnRyYW5zbGF0ZUxhYmVsKClcbiAgfVxuXG4gIHRyYW5zbGF0ZUxhYmVsKCkge1xuICAgIGNvbnN0IGxhYmVsS2V5ID0gYHNlYXJjaC5maWx0ZXJzLnN1bW1hcnlMYWJlbC4ke3RoaXMuZmllbGROYW1lfWBcbiAgICBjb25zdCBmYWxsYmFja0tleSA9IGBzZWFyY2guZmlsdGVycy4ke3RoaXMuZmllbGROYW1lfWBcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXQobGFiZWxLZXkpLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHZhbHVlID09PSBsYWJlbEtleSkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoZmFsbGJhY2tLZXkpLnN1YnNjcmliZSgoZmFsbGJhY2tWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVkTGFiZWwgPSBmYWxsYmFja1ZhbHVlXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZWRMYWJlbCA9IHZhbHVlXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldFJlYWRhYmxlVmFsdWVzKGZpZWxkVmFsdWVzOiBGaWVsZFZhbHVlW10gfCBEYXRlUmFuZ2VbXSk6IERpc3BsYXllZFZhbHVlW10ge1xuICAgIHJldHVybiBmaWVsZFZhbHVlcy5tYXAoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodGhpcy5maWVsZFR5cGUgPT09ICdkYXRlUmFuZ2UnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgbGFiZWw6IGAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKFxuICAgICAgICAgICAgdmFsdWUuc3RhcnQsXG4gICAgICAgICAgICAnZGQuTU0ueXl5eSdcbiAgICAgICAgICApfSAtICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUuZW5kLCAnZGQuTU0ueXl5eScpfWAsXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZE5hbWUgPT09ICd1c2VyJykge1xuICAgICAgICByZXR1cm4geyB2YWx1ZSwgbGFiZWw6IGZvcm1hdFVzZXJJbmZvKHZhbHVlKSB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4geyB2YWx1ZSwgbGFiZWw6IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgcmVtb3ZlRmlsdGVyVmFsdWUoZmllbGRWYWx1ZTogRmllbGRWYWx1ZSB8IERhdGVSYW5nZSkge1xuICAgIGNvbnN0IGN1cnJlbnRGaWVsZFZhbHVlczogRGlzcGxheWVkVmFsdWVbXSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5maWVsZFZhbHVlcyRcbiAgICApXG4gICAgY29uc3QgdXBkYXRlZEZpZWxkVmFsdWVzID0gY3VycmVudEZpZWxkVmFsdWVzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoZGlzcGxheWVkVmFsdWU6IERpc3BsYXllZFZhbHVlKSA9PiBkaXNwbGF5ZWRWYWx1ZS52YWx1ZSAhPT0gZmllbGRWYWx1ZVxuICAgICAgKVxuICAgICAgLm1hcCgoZGlzcGxheWVkVmFsdWU6IERpc3BsYXllZFZhbHVlKSA9PiBkaXNwbGF5ZWRWYWx1ZS52YWx1ZSlcblxuICAgIHRoaXMuZmllbGRzU2VydmljZVxuICAgICAgLmJ1aWxkRmlsdGVyc0Zyb21GaWVsZFZhbHVlcyh7XG4gICAgICAgIFt0aGlzLmZpZWxkTmFtZV06IHVwZGF0ZWRGaWVsZFZhbHVlcyBhcyBGaWVsZFZhbHVlW10sXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSgoZmlsdGVycykgPT4gdGhpcy5zZWFyY2hTZXJ2aWNlLnVwZGF0ZUZpbHRlcnMoZmlsdGVycykpXG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCIoZmllbGRWYWx1ZXMkIHwgYXN5bmMpPy5sZW5ndGggPiAwXCJcbiAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMlwiXG4+XG4gIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTgwMFwiIGRhdGEtY3k9XCJmaWx0ZXJTdW1tYXJ5TGFiZWxcIj57e1xuICAgIHRyYW5zbGF0ZWRMYWJlbFxuICB9fTwvc3Bhbj5cbiAgPGduLXVpLWJhZGdlXG4gICAgKm5nRm9yPVwibGV0IGZpZWxkVmFsdWUgb2YgZmllbGRWYWx1ZXMkIHwgYXN5bmNcIlxuICAgIGNsYXNzPVwiZ24tdWktYmFkZ2VcIlxuICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLXJvdW5kZWRdPVwiJzhweCdcIlxuICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLXBhZGRpbmddPVwiJzNweCA0cHgnXCJcbiAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS10ZXh0LWNvbG9yXT1cIidibGFjaydcIlxuICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLWJhY2tncm91bmQtY29sb3JdPVwiJyNGMkYyRjInXCJcbiAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1mb250LXdlaWdodF09XCInNzAwJ1wiXG4gICAgW3JlbW92YWJsZV09XCJ0cnVlXCJcbiAgICAoYmFkZ2VSZW1vdmVDbGlja2VkKT1cInJlbW92ZUZpbHRlclZhbHVlKGZpZWxkVmFsdWUudmFsdWUpXCJcbiAgICA+e3sgZmllbGRWYWx1ZS5sYWJlbCB9fTwvZ24tdWktYmFkZ2VcbiAgPlxuPC9kaXY+XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlcnMtc3VtbWFyeS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW0vc2VhcmNoLWZpbHRlcnMtc3VtbWFyeS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjL2xpYi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW0vc2VhcmNoLWZpbHRlcnMtc3VtbWFyeS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFBO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDeEQsT0FBTyxFQUNMLFVBQVUsRUFDVixjQUFjLEVBQ2QsR0FBRyxFQUVILEVBQUUsRUFDRixTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUE7QUFDYixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTs7Ozs7OztBQUVoRSxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtBQUMxQyxNQUFNLENB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QUM7Z0JBQ04sT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUE7WUFDaEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxVQUFrQztRQUN4RCxNQUFNLGtCQUFrQixHQUFxQixNQUFNLGNBQWMsQ0FDL0QsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FBQTtRQUNELE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCO2FBQzFDLE1BQU0sQ0FDTCxDQUFDLGNBQThCLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEtBQUssVUFBVSxDQUN4RTthQUNBLEdBQUcsQ0FBQyxDQUFDLGNBQThCLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUVoRSxJQUFJLENBQUMsYUFBYTthQUNmLDJCQUEyQixDQUFDO1lBQzNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGtCQUFrQztTQUNyRCxDQUFDO2FBQ0QsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ3RFLENBQUM7K0dBaEZVLGlDQUFpQzttR0FBakMsaUNBQWlDLG9IQUZqQyxDQUFDLFFBQVEsQ0FBQywwQkNsQ3ZCLDhyQkFvQkEseUREV1ksWUFBWSxxVEFBRSxjQUFjOzs0RkFLM0IsaUNBQWlDO2tCQVI3QyxTQUFTOytCQUNFLG1DQUFtQyxjQUNqQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLGFBRzVCLENBQUMsUUFBUSxDQUFDOytMQUdaLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGZpcnN0VmFsdWVGcm9tLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMnXG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVmFsdWUgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlL2ZpZWxkcydcbmltcG9ydCB7IFNlYXJjaEZhY2FkZSB9IGZyb20gJy4uL3N0YXRlL3NlYXJjaC5mYWNhZGUnXG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZS9zZWFyY2guc2VydmljZSdcbmltcG9ydCB7IEZpZWxkc1NlcnZpY2UgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlL2ZpZWxkcy5zZXJ2aWNlJ1xuaW1wb3J0IHsgZm9ybWF0VXNlckluZm8gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcblxubWFya2VyKCdzZWFyY2guZmlsdGVycy5zdW1tYXJ5TGFiZWwudXNlcicpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLnN1bW1hcnlMYWJlbC5jaGFuZ2VEYXRlJylcblxuaW50ZXJmYWNlIERpc3BsYXllZFZhbHVlIHtcbiAgbGFiZWw6IHN0cmluZ1xuICB2YWx1ZTogRmllbGRWYWx1ZSB8IERhdGVSYW5nZVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCYWRnZUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtZmlsdGVycy1zdW1tYXJ5LWl0ZW0uY29tcG9uZW50LmNzcyddLFxuICBwcm92aWRlcnM6IFtEYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEZpbHRlcnNTdW1tYXJ5SXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGZpZWxkTmFtZTogc3RyaW5nXG4gIGZpZWxkVHlwZTogRmllbGRUeXBlXG4gIHRyYW5zbGF0ZWRMYWJlbDogc3RyaW5nXG5cbiAgZmllbGRWYWx1ZXMkID0gdGhpcy5zZWFyY2hGYWNhZGUuc2VhcmNoRmlsdGVycyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGZpbHRlcnMpID0+XG4gICAgICB0aGlzLmZpZWxkc1NlcnZpY2UucmVhZEZpZWxkVmFsdWVzRnJvbUZpbHRlcnMoZmlsdGVycylcbiAgICApLFxuICAgIG1hcCgoZmllbGRWYWx1ZXMpID0+XG4gICAgICBBcnJheS5pc0FycmF5KGZpZWxkVmFsdWVzW3RoaXMuZmllbGROYW1lXSlcbiAgICAgICAgPyAoZmllbGRWYWx1ZXNbdGhpcy5maWVsZE5hbWVdIGFzIEZpZWxkVmFsdWVbXSlcbiAgICAgICAgOiAoW2ZpZWxkVmFsdWVzW3RoaXMuZmllbGROYW1lXV0gYXMgRmllbGRWYWx1ZVtdKVxuICAgICksXG4gICAgbWFwKFxuICAgICAgKGZpZWxkVmFsdWVzKSA9PiB0aGlzLmdldFJlYWRhYmxlVmFsdWVzKGZpZWxkVmFsdWVzKSBhcyBEaXNwbGF5ZWRWYWx1ZVtdXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKCgpID0+IG9mKFtdKSlcbiAgKSBhcyBPYnNlcnZhYmxlPERpc3BsYXllZFZhbHVlW10+XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZWFyY2hGYWNhZGU6IFNlYXJjaEZhY2FkZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaWVsZHNTZXJ2aWNlOiBGaWVsZHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZpZWxkVHlwZSA9IHRoaXMuZmllbGRzU2VydmljZS5nZXRGaWVsZFR5cGUodGhpcy5maWVsZE5hbWUpXG4gICAgdGhpcy50cmFuc2xhdGVMYWJlbCgpXG4gIH1cblxuICB0cmFuc2xhdGVMYWJlbCgpIHtcbiAgICBjb25zdCBsYWJlbEtleSA9IGBzZWFyY2guZmlsdGVycy5zdW1tYXJ5TGFiZWwuJHt0aGlzLmZpZWxkTmFtZX1gXG4gICAgY29uc3QgZmFsbGJhY2tLZXkgPSBgc2VhcmNoLmZpbHRlcnMuJHt0aGlzLmZpZWxkTmFtZX1gXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0KGxhYmVsS2V5KS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbGFiZWxLZXkpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KGZhbGxiYWNrS2V5KS5zdWJzY3JpYmUoKGZhbGxiYWNrVmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlZExhYmVsID0gZmFsbGJhY2tWYWx1ZVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVkTGFiZWwgPSB2YWx1ZVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZXRSZWFkYWJsZVZhbHVlcyhmaWVsZFZhbHVlczogRmllbGRWYWx1ZVtdIHwgRGF0ZVJhbmdlW10pOiBEaXNwbGF5ZWRWYWx1ZVtdIHtcbiAgICByZXR1cm4gZmllbGRWYWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZmllbGRUeXBlID09PSAnZGF0ZVJhbmdlJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGxhYmVsOiBgJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShcbiAgICAgICAgICAgIHZhbHVlLnN0YXJ0LFxuICAgICAgICAgICAgJ2RkLk1NLnl5eXknXG4gICAgICAgICAgKX0gLSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLmVuZCwgJ2RkLk1NLnl5eXknKX1gLFxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGROYW1lID09PSAndXNlcicpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGxhYmVsOiBmb3JtYXRVc2VySW5mbyh2YWx1ZSkgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWUsIGxhYmVsOiB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZUZpbHRlclZhbHVlKGZpZWxkVmFsdWU6IEZpZWxkVmFsdWUgfCBEYXRlUmFuZ2UpIHtcbiAgICBjb25zdCBjdXJyZW50RmllbGRWYWx1ZXM6IERpc3BsYXllZFZhbHVlW10gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuZmllbGRWYWx1ZXMkXG4gICAgKVxuICAgIGNvbnN0IHVwZGF0ZWRGaWVsZFZhbHVlcyA9IGN1cnJlbnRGaWVsZFZhbHVlc1xuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGRpc3BsYXllZFZhbHVlOiBEaXNwbGF5ZWRWYWx1ZSkgPT4gZGlzcGxheWVkVmFsdWUudmFsdWUgIT09IGZpZWxkVmFsdWVcbiAgICAgIClcbiAgICAgIC5tYXAoKGRpc3BsYXllZFZhbHVlOiBEaXNwbGF5ZWRWYWx1ZSkgPT4gZGlzcGxheWVkVmFsdWUudmFsdWUpXG5cbiAgICB0aGlzLmZpZWxkc1NlcnZpY2VcbiAgICAgIC5idWlsZEZpbHRlcnNGcm9tRmllbGRWYWx1ZXMoe1xuICAgICAgICBbdGhpcy5maWVsZE5hbWVdOiB1cGRhdGVkRmllbGRWYWx1ZXMgYXMgRmllbGRWYWx1ZVtdLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoKGZpbHRlcnMpID0+IHRoaXMuc2VhcmNoU2VydmljZS51cGRhdGVGaWx0ZXJzKGZpbHRlcnMpKVxuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiKGZpZWxkVmFsdWVzJCB8IGFzeW5jKT8ubGVuZ3RoID4gMFwiXG4gIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgZ2FwLTJcIlxuPlxuICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS04MDBcIiBkYXRhLWN5PVwiZmlsdGVyU3VtbWFyeUxhYmVsXCI+e3tcbiAgICB0cmFuc2xhdGVkTGFiZWxcbiAgfX08L3NwYW4+XG4gIDxnbi11aS1iYWRnZVxuICAgICpuZ0Zvcj1cImxldCBmaWVsZFZhbHVlIG9mIGZpZWxkVmFsdWVzJCB8IGFzeW5jXCJcbiAgICBjbGFzcz1cImduLXVpLWJhZGdlXCJcbiAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1yb3VuZGVkXT1cIic4cHgnXCJcbiAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1wYWRkaW5nXT1cIiczcHggNHB4J1wiXG4gICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1jb2xvcl09XCInYmxhY2snXCJcbiAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1iYWNrZ3JvdW5kLWNvbG9yXT1cIicjRjJGMkYyJ1wiXG4gICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtZm9udC13ZWlnaHRdPVwiJzcwMCdcIlxuICAgIFtyZW1vdmFibGVdPVwidHJ1ZVwiXG4gICAgKGJhZGdlUmVtb3ZlQ2xpY2tlZCk9XCJyZW1vdmVGaWx0ZXJWYWx1ZShmaWVsZFZhbHVlLnZhbHVlKVwiXG4gICAgPnt7IGZpZWxkVmFsdWUubGFiZWwgfX08L2duLXVpLWJhZGdlXG4gID5cbjwvZGl2PlxuIl19
@@ -6,7 +6,6 @@ import { OrganizationsServiceInterface } from '../../../../../../../libs/common/
6
6
  import { RecordsRepositoryInterface } from '../../../../../../../libs/common/domain/src/lib/repository/records-repository.interface';
7
7
  import { PlatformServiceInterface } from '../../../../../../../libs/common/domain/src/lib/platform.service.interface';
8
8
  import { ElasticsearchService, isDateRange, METADATA_LANGUAGE, } from '../../../../../../../libs/api/repository/src';
9
- import { LangService } from '../../../../../../../libs/util/i18n/src';
10
9
  import { formatUserInfo } from '../../../../../../../libs/util/shared/src';
11
10
  import { PossibleResourceTypes } from '../../../../../../../libs/api/metadata-converter/src';
12
11
  export class AbstractSearchField {
@@ -112,14 +111,16 @@ export class TranslatedSearchField extends SimpleSearchField {
112
111
  * The provided ES field name should not include any prefix such as `.langeng`
113
112
  */
114
113
  export class MultilingualSearchField extends SimpleSearchField {
114
+ // we're using a getter in case the token value changes over time
115
+ get searchLanguage() {
116
+ return this.injector.get(METADATA_LANGUAGE, null);
117
+ }
115
118
  constructor(esFieldName, injector, order = 'asc', orderType = 'key') {
116
119
  super(esFieldName, injector, order, orderType);
117
120
  this.esFieldName = esFieldName;
118
121
  this.injector = injector;
119
122
  this.order = order;
120
123
  this.orderType = orderType;
121
- this.langService = this.injector.get(LangService);
122
- this.searchLanguage = this.injector.get(METADATA_LANGUAGE, null);
123
124
  // note: we're excluding the metadata language "current" value because that would produce
124
125
  // permalinks that might not work for different users
125
126
  if (this.searchLanguage && this.searchLanguage !== 'current') {
@@ -432,4 +433,4 @@ export class RecordKindField extends SimpleSearchField {
432
433
  return of([...activeTypes, ...unknownValues]);
433
434
  }
434
435
  }
435
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3NlYXJjaC9zcmMvbGliL3V0aWxzL3NlcnZpY2UvZmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlGQUFpRixDQUFBO0FBQy9ILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlGQUF5RixDQUFBO0FBQ3BJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRFQUE0RSxDQUFBO0FBU3JILE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLGlCQUFpQixHQUNsQixNQUFNLDhDQUE4QyxDQUFBO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0RBQXNELENBQUE7QUFXNUYsTUFBTSxPQUFnQixtQkFBbUI7Q0FTeEM7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0lBTTVCLFlBQ1ksV0FBbUIsRUFDbkIsUUFBa0IsRUFDbEIsUUFBd0IsS0FBSyxFQUM3QixZQUE2QixLQUFLO1FBSGxDLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDN0IsY0FBUyxHQUFU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QUFDLENBQUMsR0FBRyxXQUFXLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFBO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL29yZ2FuaXphdGlvbnMuc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZSdcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHtcbiAgQWdncmVnYXRpb25CdWNrZXRzLFxuICBBZ2dyZWdhdGlvbnNQYXJhbXMsXG4gIEZpZWxkRmlsdGVyLFxuICBGaWVsZEZpbHRlckJ5RXhwcmVzc2lvbixcbiAgRmllbGRGaWx0ZXJzLFxuICBUZXJtQnVja2V0LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5pbXBvcnQge1xuICBEYXRlUmFuZ2UsXG4gIEVsYXN0aWNzZWFyY2hTZXJ2aWNlLFxuICBpc0RhdGVSYW5nZSxcbiAgTUVUQURBVEFfTEFOR1VBR0UsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjJ1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5pbXBvcnQgeyBmb3JtYXRVc2VySW5mbyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHsgUG9zc2libGVSZXNvdXJjZVR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYydcblxuZXhwb3J0IHR5cGUgRmllbGRUeXBlID0gJ3ZhbHVlcycgfCAnZGF0ZVJhbmdlJ1xuXG5leHBvcnQgdHlwZSBGaWVsZFZhbHVlID0gc3RyaW5nIHwgbnVtYmVyXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkQXZhaWxhYmxlVmFsdWUge1xuICB2YWx1ZTogRmllbGRWYWx1ZVxuICBsYWJlbDogc3RyaW5nXG4gIGNvdW50PzogbnVtYmVyXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgYWJzdHJhY3QgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdIHwgRGF0ZVJhbmdlW10+XG4gIGFic3RyYWN0IGdldEZpbHRlcnNGb3JWYWx1ZXMoXG4gICAgdmFsdWVzOiBGaWVsZFZhbHVlW10gfCBEYXRlUmFuZ2VbXVxuICApOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz5cbiAgYWJzdHJhY3QgZ2V0VmFsdWVzRm9yRmlsdGVyKFxuICAgIGZpbHRlcnM6IEZpZWxkRmlsdGVyc1xuICApOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXSB8IEZpZWxkVmFsdWUgfCBEYXRlUmFuZ2U+XG4gIGFic3RyYWN0IGdldFR5cGUoKTogRmllbGRUeXBlXG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVTZWFyY2hGaWVsZCBpbXBsZW1lbnRzIEFic3RyYWN0U2VhcmNoRmllbGQge1xuICBwcm90ZWN0ZWQgcmVwb3NpdG9yeSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlKVxuXG4gIC8vIEZJWE1FOiB0aGlzIGlzIHJlcXVpcmVkIHRvIHJlZ2lzdGVyIHJ1bnRpbWUgZmllbGRzOyBhYnN0cmFjdCB0aGlzIGFzIHdlbGxcbiAgcHJvdGVjdGVkIGVzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEVsYXN0aWNzZWFyY2hTZXJ2aWNlKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBlc0ZpZWxkTmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnLFxuICAgIHByb3RlY3RlZCBvcmRlclR5cGU6ICdrZXknIHwgJ2NvdW50JyA9ICdrZXknXG4gICkge31cblxuICBwcm90ZWN0ZWQgZ2V0QWdncmVnYXRpb25zKCk6IEFnZ3JlZ2F0aW9uc1BhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmVzRmllbGROYW1lXToge1xuICAgICAgICB0eXBlOiAndGVybXMnLFxuICAgICAgICBmaWVsZDogdGhpcy5lc0ZpZWxkTmFtZSxcbiAgICAgICAgbGltaXQ6IDEwMDAsXG4gICAgICAgIHNvcnQ6IFt0aGlzLm9yZGVyLCB0aGlzLm9yZGVyVHlwZV0sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRCdWNrZXRMYWJlbChidWNrZXQ6IFRlcm1CdWNrZXQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBidWNrZXQudGVybS50b1N0cmluZygpXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LmFnZ3JlZ2F0ZSh0aGlzLmdldEFnZ3JlZ2F0aW9ucygpKS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAocmVzcG9uc2UpID0+XG4gICAgICAgICAgKHJlc3BvbnNlW3RoaXMuZXNGaWVsZE5hbWVdIGFzIEFnZ3JlZ2F0aW9uQnVja2V0cykuYnVja2V0cyB8fCBbXVxuICAgICAgKSxcbiAgICAgIHN3aXRjaE1hcCgoYnVja2V0czogVGVybUJ1Y2tldFtdKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1Y2tldFByb21pc2VzID0gYnVja2V0cy5tYXAoYXN5bmMgKGJ1Y2tldCkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogYCR7YXdhaXQgdGhpcy5nZXRCdWNrZXRMYWJlbChidWNrZXQpfSAoJHtidWNrZXQuY291bnR9KWAsXG4gICAgICAgICAgdmFsdWU6IGJ1Y2tldC50ZXJtLnRvU3RyaW5nKCksXG4gICAgICAgICAgY291bnQ6IGJ1Y2tldC5jb3VudCxcbiAgICAgICAgfSkpXG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChidWNrZXRQcm9taXNlcylcbiAgICAgIH0pXG4gICAgKVxuICB9XG4gIGdldEZpbHRlcnNGb3JWYWx1ZXMoXG4gICAgdmFsdWVzOiBGaWVsZFZhbHVlW10gfCBEYXRlUmFuZ2VbXVxuICApOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIC8vIEZpZWxkVmFsdWVbXVxuICAgIGlmICh0aGlzLmdldFR5cGUoKSA9PT0gJ3ZhbHVlcycpIHtcbiAgICAgIHJldHVybiBvZih7XG4gICAgICAgIFt0aGlzLmVzRmllbGROYW1lXTogKHZhbHVlcyBhcyBGaWVsZFZhbHVlW10pLnJlZHVjZSgoYWNjLCB2YWwpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbC50b1N0cmluZygpXG4gICAgICAgICAgaWYgKHZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbdmFsdWVdOiB0cnVlIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICB9LCB7fSksXG4gICAgICB9KVxuICAgIH1cbiAgICAvLyBEYXRlUmFuZ2VcbiAgICByZXR1cm4gb2Yoe1xuICAgICAgW3RoaXMuZXNGaWVsZE5hbWVdOiB2YWx1ZXNbMF0gIT09ICcnID8gdmFsdWVzWzBdIDoge30sXG4gICAgfSlcbiAgfVxuICBnZXRWYWx1ZXNGb3JGaWx0ZXIoXG4gICAgZmlsdGVyczogRmllbGRGaWx0ZXJzXG4gICk6IE9ic2VydmFibGU8RmllbGRWYWx1ZVtdIHwgRmllbGRWYWx1ZSB8IERhdGVSYW5nZT4ge1xuICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcnNbdGhpcy5lc0ZpZWxkTmFtZV1cbiAgICBpZiAoIWZpbHRlcikgcmV0dXJuIG9mKFtdKVxuICAgIC8vIGZpbHRlciBieSBleHByZXNzaW9uXG4gICAgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2YoW2ZpbHRlcl0pXG4gICAgfVxuICAgIC8vIGZpbHRlciBieSBkYXRlIHJhbmdlXG4gICAgaWYgKGlzRGF0ZVJhbmdlKGZpbHRlcikpIHtcbiAgICAgIHJldHVybiBvZihmaWx0ZXIpXG4gICAgfVxuICAgIC8vIGZpbHRlciBieSB2YWx1ZXNcbiAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3Qua2V5cyhmaWx0ZXIpLmZpbHRlcigodikgPT4gZmlsdGVyW3ZdKVxuICAgIHJldHVybiBvZih2YWx1ZXMpXG4gIH1cblxuICBnZXRUeXBlKCk6IEZpZWxkVHlwZSB7XG4gICAgcmV0dXJuICd2YWx1ZXMnXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZWRTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgcHJvdGVjdGVkIHBsYXRmb3JtU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFBsYXRmb3JtU2VydmljZUludGVyZmFjZSlcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZXNGaWVsZE5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBvcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJyxcbiAgICBwcm90ZWN0ZWQgb3JkZXJUeXBlOiAna2V5JyB8ICdjb3VudCcgPSAna2V5J1xuICApIHtcbiAgICBzdXBlcihlc0ZpZWxkTmFtZSwgaW5qZWN0b3IsIG9yZGVyLCBvcmRlclR5cGUpXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5wbGF0Zm9ybVNlcnZpY2UudHJhbnNsYXRlS2V5KGtleSkpXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QnVja2V0TGFiZWwoYnVja2V0OiBUZXJtQnVja2V0KSB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmdldFRyYW5zbGF0aW9uKGJ1Y2tldC50ZXJtKSkgfHwgYnVja2V0LnRlcm1cbiAgfVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIGlmICh0aGlzLm9yZGVyVHlwZSA9PT0gJ2NvdW50JykgcmV0dXJuIHN1cGVyLmdldEF2YWlsYWJsZVZhbHVlcygpXG4gICAgLy8gc29ydCB2YWx1ZXMgYnkgYWxwaGFiZXRpY2FsIG9yZGVyXG4gICAgcmV0dXJuIHN1cGVyXG4gICAgICAuZ2V0QXZhaWxhYmxlVmFsdWVzKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHZhbHVlcykgPT5cbiAgICAgICAgICB2YWx1ZXMuc29ydCgoYSwgYikgPT4gbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlKGEubGFiZWwsIGIubGFiZWwpKVxuICAgICAgICApXG4gICAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIHNlYXJjaCBmaWVsZCB3aWxsIGVpdGhlciB0YXJnZXQgdGhlIGAuZGVmYXVsdGAgZmllbGQsIG9yIGEgc3BlY2lmaWMgYC5sYW5neHl6YCBmaWVsZCBhY2NvcmRpbmdcbiAqIHRvIHRoZSBkZWZpbmVkIE1FVEFEQVRBX0xBTkdVQUdFIHRva2VuXG4gKiBUaGUgcHJvdmlkZWQgRVMgZmllbGQgbmFtZSBzaG91bGQgbm90IGluY2x1ZGUgYW55IHByZWZpeCBzdWNoIGFzIGAubGFuZ2VuZ2BcbiAqL1xuZXhwb3J0IGNsYXNzIE11bHRpbGluZ3VhbFNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBwcml2YXRlIGxhbmdTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTGFuZ1NlcnZpY2UpXG4gIHByaXZhdGUgc2VhcmNoTGFuZ3VhZ2UgPSB0aGlzLmluamVjdG9yLmdldChNRVRBREFUQV9MQU5HVUFHRSwgbnVsbClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZXNGaWVsZE5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBvcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJyxcbiAgICBwcm90ZWN0ZWQgb3JkZXJUeXBlOiAna2V5JyB8ICdjb3VudCcgPSAna2V5J1xuICApIHtcbiAgICBzdXBlcihlc0ZpZWxkTmFtZSwgaW5qZWN0b3IsIG9yZGVyLCBvcmRlclR5cGUpXG4gICAgLy8gbm90ZTogd2UncmUgZXhjbHVkaW5nIHRoZSBtZXRhZGF0YSBsYW5ndWFnZSBcImN1cnJlbnRcIiB2YWx1ZSBiZWNhdXNlIHRoYXQgd291bGQgcHJvZHVjZVxuICAgIC8vIHBlcm1hbGlua3MgdGhhdCBtaWdodCBub3Qgd29yayBmb3IgZGlmZmVyZW50IHVzZXJzXG4gICAgaWYgKHRoaXMuc2VhcmNoTGFuZ3VhZ2UgJiYgdGhpcy5zZWFyY2hMYW5ndWFnZSAhPT0gJ2N1cnJlbnQnKSB7XG4gICAgICB0aGlzLmVzRmllbGROYW1lICs9IGAubGFuZyR7dGhpcy5zZWFyY2hMYW5ndWFnZX1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXNGaWVsZE5hbWUgKz0gJy5kZWZhdWx0J1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRnVsbFRleHRTZWFyY2hGaWVsZCBpbXBsZW1lbnRzIEFic3RyYWN0U2VhcmNoRmllbGQge1xuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICByZXR1cm4gb2YoW10pXG4gIH1cbiAgZ2V0RmlsdGVyc0ZvclZhbHVlcyh2YWx1ZXM6IEZpZWxkVmFsdWVbXSk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgcmV0dXJuIG9mKHtcbiAgICAgIGFueTogdmFsdWVzWzBdIGFzIHN0cmluZyxcbiAgICB9KVxuICB9XG4gIGdldFZhbHVlc0ZvckZpbHRlcihmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXT4ge1xuICAgIHJldHVybiBvZihmaWx0ZXJzLmFueSA/IFtmaWx0ZXJzLmFueSBhcyBGaWVsZEZpbHRlckJ5RXhwcmVzc2lvbl0gOiBbXSlcbiAgfVxuICBnZXRUeXBlKCk6IEZpZWxkVHlwZSB7XG4gICAgcmV0dXJuICd2YWx1ZXMnXG4gIH1cbn1cblxubWFya2VyKCdzZWFyY2guZmlsdGVycy5pc1NwYXRpYWwueWVzJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMuaXNTcGF0aWFsLm5vJylcblxuZXhwb3J0IGNsYXNzIElzU3BhdGlhbFNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKVxuXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCdpc1NwYXRpYWwnLCBpbmplY3RvciwgJ2FzYycpXG4gICAgdGhpcy5lc1NlcnZpY2UucmVnaXN0ZXJSdW50aW1lRmllbGQoXG4gICAgICAnaXNTcGF0aWFsJyxcbiAgICAgIGBTdHJpbmcgcmVzdWx0ID0gJ25vJztcblN0cmluZyBmb3JtYXRzID0gZG9jLmZvcm1hdC5qb2luKCd8JykudG9Mb3dlckNhc2UoKTtcbmlmIChmb3JtYXRzLmNvbnRhaW5zKCdnZW9qc29uJykgfHwgZm9ybWF0cy5jb250YWlucygnYXJjZ2lzJykgfHwgZm9ybWF0cy5jb250YWlucygnb2djJykgfHwgZm9ybWF0cy5jb250YWlucygnc2hwJykpIHJlc3VsdCA9ICd5ZXMnO1xuU3RyaW5nIHByb3RvY29scyA9IGRvYy5saW5rUHJvdG9jb2wuam9pbignfCcpLnRvTG93ZXJDYXNlKCk7XG5pZiAocHJvdG9jb2xzLmNvbnRhaW5zKCdlc3JpJykgfHwgcHJvdG9jb2xzLmNvbnRhaW5zKCdvZ2MnKSkgcmVzdWx0ID0gJ3llcyc7XG5lbWl0KHJlc3VsdCk7YFxuICAgIClcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRBZ2dyZWdhdGlvbnMoKTogQWdncmVnYXRpb25zUGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNTcGF0aWFsOiB7XG4gICAgICAgIHR5cGU6ICd0ZXJtcycsXG4gICAgICAgIGxpbWl0OiAyLFxuICAgICAgICBmaWVsZDogJ2lzU3BhdGlhbCcsXG4gICAgICAgIHNvcnQ6IFsnYXNjJywgJ2tleSddLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QnVja2V0TGFiZWwoYnVja2V0OiBUZXJtQnVja2V0KSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChgc2VhcmNoLmZpbHRlcnMuaXNTcGF0aWFsLiR7YnVja2V0LnRlcm19YClcbiAgICApXG4gIH1cblxuICBnZXRGaWx0ZXJzRm9yVmFsdWVzKHZhbHVlczogRmllbGRWYWx1ZVtdKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICBjb25zdCBpc1NwYXRpYWwgPSB7fVxuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMCkgaXNTcGF0aWFsW3ZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV1dID0gdHJ1ZVxuICAgIHJldHVybiBvZih7XG4gICAgICBpc1NwYXRpYWwsXG4gICAgfSlcbiAgfVxuXG4gIGdldFZhbHVlc0ZvckZpbHRlcihmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXT4ge1xuICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcnMuaXNTcGF0aWFsXG4gICAgaWYgKCFmaWx0ZXIpIHJldHVybiBvZihbXSlcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZmlsdGVyKVxuICAgIHJldHVybiBvZihrZXlzLmxlbmd0aCA/IFtrZXlzWzBdXSA6IFtdKVxuICB9XG59XG5cbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5wZGRsJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5vZGJsJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5vZGMtYnknKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLmNjLWJ5LXNhJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5jYy1ieScpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuY2MtemVybycpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuZXRhbGFiLXYyJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5ldGFsYWInKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLnVua25vd24nKVxuXG4vLyBOb3RlOiB2YWx1ZXMgYXJlIGluc3BpcmVkIGZyb20gaHR0cHM6Ly9kb2MuZGF0YS5nb3V2LmZyL21vaXNzb25uYWdlL2xpY2VuY2VzL1xuZXhwb3J0IGNsYXNzIExpY2Vuc2VTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSlcblxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcignbGljZW5zZScsIGluamVjdG9yLCAnYXNjJylcbiAgICB0aGlzLmVzU2VydmljZS5yZWdpc3RlclJ1bnRpbWVGaWVsZChcbiAgICAgICdsaWNlbnNlJyxcbiAgICAgIGBTdHJpbmcgcmF3ID0gJyc7XG5pZiAoZG9jLmNvbnRhaW5zS2V5KCdsaWNlbnNlT2JqZWN0LmRlZmF1bHQua2V5d29yZCcpICYmIGRvY1snbGljZW5zZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnXS5sZW5ndGggPiAwKVxuICByYXcgKz0gZG9jWydsaWNlbnNlT2JqZWN0LmRlZmF1bHQua2V5d29yZCddLmpvaW4oJ3wnKS50b0xvd2VyQ2FzZSgpO1xuaWYgKGRvYy5jb250YWluc0tleSgnTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QuZGVmYXVsdC5rZXl3b3JkJykgJiYgZG9jWydNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdC5kZWZhdWx0LmtleXdvcmQnXS5sZW5ndGggPiAwKVxuICByYXcgKz0gZG9jWydNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdC5kZWZhdWx0LmtleXdvcmQnXS5qb2luKCd8JykudG9Mb3dlckNhc2UoKTtcblxuYm9vbGVhbiB1bmtub3duID0gdHJ1ZTtcbmlmIChyYXcuY29udGFpbnMoJ3BkZGwnKSB8fCByYXcuY29udGFpbnMoJ3B1YmxpYyBkb21haW4gZGVkaWNhdGlvbiBhbmQgbGljZW5jZScpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgncGRkbCcpO1xufVxuaWYgKHJhdy5jb250YWlucygnb2RibCcpIHx8IHJhdy5jb250YWlucygnb3BlbiBkYXRhYmFzZSBsaWNlbnNlJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdvZGJsJyk7XG59XG5pZiAocmF3LmNvbnRhaW5zKCdvZGMtYnknKSB8fCByYXcuY29udGFpbnMoJ29wZW5kYXRhY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvc3VtbWFyeS9cIicpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnb2RjLWJ5Jyk7XG59XG5cbmlmIChyYXcuY29udGFpbnMoJ2NjLWJ5LXNhJykgfHwgcmF3LmNvbnRhaW5zKCdjcmVhdGl2ZSBjb21tb25zIGF0dHJpYnV0aW9uIHNoYXJlLWFsaWtlJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdjYy1ieS1zYScpO1xufSBlbHNlIGlmIChyYXcuY29udGFpbnMoJ2NjLWJ5JykgfHwgcmF3LmNvbnRhaW5zKCdjYyBieScpIHx8IHJhdy5jb250YWlucygnY3JlYXRpdmUgY29tbW9ucyBhdHRyaWJ1dGlvbicpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnY2MtYnknKTtcbn0gZWxzZSBpZiAocmF3LmNvbnRhaW5zKCdjYzAnKSB8fCByYXcuY29udGFpbnMoJ2NjLTAnKSB8fCByYXcuY29udGFpbnMoJ2NjemVybycpIHx8IHJhdy5jb250YWlucygnY2MtemVybycpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnY2MtemVybycpO1xufVxuXG5pZiAocmF3LmNvbnRhaW5zKCdldGFsYWInKSAmJiAocmF3LmNvbnRhaW5zKCd2MicpIHx8IHJhdy5jb250YWlucygnMi4wJykpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnZXRhbGFiLXYyJyk7XG59IGVsc2UgaWYgKHJhdy5jb250YWlucygnb3BlbiBsaWNlbmNlJykgfHwgcmF3LmNvbnRhaW5zKCdsaWNlbmNlIG91dmVydGUnKSB8fCByYXcuY29udGFpbnMoJ2xpY2VuY2Vfb3V2ZXJ0ZScpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnZXRhbGFiJyk7XG59XG5cbmlmKHVua25vd24pIGVtaXQoJ3Vua25vd24nKTtgXG4gICAgKVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEFnZ3JlZ2F0aW9ucygpOiBBZ2dyZWdhdGlvbnNQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBsaWNlbnNlOiB7XG4gICAgICAgIHR5cGU6ICd0ZXJtcycsXG4gICAgICAgIGxpbWl0OiAxMCxcbiAgICAgICAgZmllbGQ6ICdsaWNlbnNlJyxcbiAgICAgICAgc29ydDogWydkZXNjJywgJ2NvdW50J10sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRCdWNrZXRMYWJlbChidWNrZXQ6IFRlcm1CdWNrZXQpIHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGBzZWFyY2guZmlsdGVycy5saWNlbnNlLiR7YnVja2V0LnRlcm19YClcbiAgICApXG4gIH1cbn1cblxuLy8gVGhpcyB3aWxsIHVzZSB0aGUgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2Vcbi8vIEZpZWxkIHZhbHVlcyBhcmUgdGhlIG9yZ2FuaXphdGlvbiBuYW1lc1xuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvblNlYXJjaEZpZWxkIGltcGxlbWVudHMgQWJzdHJhY3RTZWFyY2hGaWVsZCB7XG4gIHByaXZhdGUgb3Jnc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSlcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBnZXRGaWx0ZXJzRm9yVmFsdWVzKHZhbHVlczogRmllbGRWYWx1ZVtdKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICByZXR1cm4gdGhpcy5vcmdzU2VydmljZS5vcmdhbmlzYXRpb25zJC5waXBlKFxuICAgICAgbWFwKChvcmdzKSA9PlxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgICAubWFwKChuYW1lKSA9PiBvcmdzLmZpbmQoKG9yZykgPT4gb3JnLm5hbWUgPT09IG5hbWUpKVxuICAgICAgICAgIC5maWx0ZXIoKG9yZykgPT4gb3JnICE9PSB1bmRlZmluZWQpXG4gICAgICApLFxuICAgICAgc3dpdGNoTWFwKChzZWxlY3RlZE9yZ3MpID0+XG4gICAgICAgIHRoaXMub3Jnc1NlcnZpY2UuZ2V0RmlsdGVyc0Zvck9yZ3Moc2VsZWN0ZWRPcmdzKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGdldFZhbHVlc0ZvckZpbHRlcihmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLm9yZ3NTZXJ2aWNlXG4gICAgICAuZ2V0T3Jnc0Zyb21GaWx0ZXJzKGZpbHRlcnMpXG4gICAgICAucGlwZShtYXAoKG9yZ3MpID0+IG9yZ3MubWFwKChvcmcpID0+IG9yZy5uYW1lKSkpXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICAvLyBzb3J0IHZhbHVlcyBieSBhbHBoYWJldGljYWwgb3JkZXJcbiAgICByZXR1cm4gdGhpcy5vcmdzU2VydmljZS5vcmdhbmlzYXRpb25zJC5waXBlKFxuICAgICAgbWFwKChvcmdhbmlzYXRpb25zKSA9PlxuICAgICAgICBvcmdhbmlzYXRpb25zLm1hcCgob3JnKSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiBgJHtvcmcubmFtZX0gKCR7b3JnLnJlY29yZENvdW50fSlgLFxuICAgICAgICAgIHZhbHVlOiBvcmcubmFtZSxcbiAgICAgICAgfSkpXG4gICAgICApLFxuICAgICAgbWFwKCh2YWx1ZXMpID0+XG4gICAgICAgIHZhbHVlcy5zb3J0KChhLCBiKSA9PiBuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUoYS5sYWJlbCwgYi5sYWJlbCkpXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgZ2V0VHlwZSgpOiBGaWVsZFR5cGUge1xuICAgIHJldHVybiAndmFsdWVzJ1xuICB9XG59XG5leHBvcnQgY2xhc3MgT3duZXJTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoJ293bmVyJywgaW5qZWN0b3IsICdhc2MnKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIG9mKFtdKVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVc2VyU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCd1c2VyaW5mby5rZXl3b3JkJywgaW5qZWN0b3IsICdhc2MnKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHN1cGVyLmdldEF2YWlsYWJsZVZhbHVlcygpLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlcykgPT5cbiAgICAgICAgdmFsdWVzLm1hcCgodikgPT4gKHtcbiAgICAgICAgICAuLi52LFxuICAgICAgICAgIGxhYmVsOiBmb3JtYXRVc2VySW5mbyh2LmxhYmVsLCB0cnVlKSxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVzRmllbGROYW1lOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycsXG4gICAgcHJvdGVjdGVkIG9yZGVyVHlwZTogJ2tleScgfCAnY291bnQnID0gJ2tleSdcbiAgKSB7XG4gICAgc3VwZXIoZXNGaWVsZE5hbWUsIGluamVjdG9yLCBvcmRlciwgb3JkZXJUeXBlKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgLy8gVE9ETzogcmV0dXJuIGFuIGFycmF5IG9mIGRhdGVzIHRvIHNob3cgd2hpY2ggb25lIGFyZSBhdmFpbGFibGUgaW4gdGhlIGRhdGUgcGlja2VyXG4gICAgcmV0dXJuIG9mKFtdKVxuICB9XG5cbiAgZ2V0VHlwZSgpOiBGaWVsZFR5cGUge1xuICAgIHJldHVybiAnZGF0ZVJhbmdlJ1xuICB9XG59XG5cbm1hcmtlcignc2VhcmNoLmZpbHRlcnMuYXZhaWxhYmxlU2VydmljZXMudmlldycpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmF2YWlsYWJsZVNlcnZpY2VzLmRvd25sb2FkJylcblxuZXhwb3J0IGNsYXNzIEF2YWlsYWJsZVNlcnZpY2VzRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpXG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoJ2F2YWlsYWJsZVNlcnZpY2VzJywgaW5qZWN0b3IsICdhc2MnKVxuICB9XG5cbiAgbGlua1Byb3RvY29sVmlld0ZpbHRlciA9ICcvT0dDOldNVD9TLiovJ1xuICBsaW5rUHJvdG9jb2xEb3dubG9hZEZpbHRlciA9ICcvT0dDOldGUy4qLydcblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QnVja2V0TGFiZWwoYnVja2V0OiBUZXJtQnVja2V0KSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChcbiAgICAgICAgYHNlYXJjaC5maWx0ZXJzLmF2YWlsYWJsZVNlcnZpY2VzLiR7YnVja2V0LnRlcm19YFxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRBZ2dyZWdhdGlvbnMoKTogQWdncmVnYXRpb25zUGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXZhaWxhYmxlU2VydmljZXM6IHtcbiAgICAgICAgdHlwZTogJ2ZpbHRlcnMnLFxuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgdmlldzogYCtsaW5rUHJvdG9jb2w6JHt0aGlzLmxpbmtQcm90b2NvbFZpZXdGaWx0ZXJ9YCxcbiAgICAgICAgICBkb3dubG9hZDogYCtsaW5rUHJvdG9jb2w6JHt0aGlzLmxpbmtQcm90b2NvbERvd25sb2FkRmlsdGVyfWAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIGNvbnN0IGZpbHRlcnM6IEZpZWxkRmlsdGVyID0ge31cbiAgICBpZiAodmFsdWVzLmluY2x1ZGVzKCd2aWV3JykpIGZpbHRlcnNbdGhpcy5saW5rUHJvdG9jb2xWaWV3RmlsdGVyXSA9IHRydWVcbiAgICBpZiAodmFsdWVzLmluY2x1ZGVzKCdkb3dubG9hZCcpKVxuICAgICAgZmlsdGVyc1t0aGlzLmxpbmtQcm90b2NvbERvd25sb2FkRmlsdGVyXSA9IHRydWVcblxuICAgIHJldHVybiBvZih7XG4gICAgICBsaW5rUHJvdG9jb2w6IGZpbHRlcnMsXG4gICAgfSlcbiAgfVxuXG4gIGdldFZhbHVlc0ZvckZpbHRlcihmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXT4ge1xuICAgIGNvbnN0IGxpbmtGaWx0ZXIgPSBmaWx0ZXJzLmxpbmtQcm90b2NvbFxuICAgIGlmICghbGlua0ZpbHRlcikgcmV0dXJuIG9mKFtdKVxuICAgIGNvbnN0IHZhbHVlcyA9IFtdXG4gICAgaWYgKGxpbmtGaWx0ZXJbdGhpcy5saW5rUHJvdG9jb2xWaWV3RmlsdGVyXSkgdmFsdWVzLnB1c2goJ3ZpZXcnKVxuICAgIGlmIChsaW5rRmlsdGVyW3RoaXMubGlua1Byb3RvY29sRG93bmxvYWRGaWx0ZXJdKSB2YWx1ZXMucHVzaCgnZG93bmxvYWQnKVxuICAgIHJldHVybiBvZih2YWx1ZXMpXG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIG1lYW50IHRvIGJlIHVzZWQgd2l0aCB0aGUgbGVnYWN5IGZpbHRlciBvbiBgcmVzb3VyY2VUeXBlYCAobm93IGRlcHJlY2F0ZWQsIHRoZSB1c2Ugb2YgYHJlY29yZEtpbmRgIGZpZWxkIGlzIHJlY29tbWVuZGVkKS5cbiAqIFNpbmNlIGNyZWF0aW5nIGZpbHRlcnMgb24gdGhlIHNhbWUgRVMgZmllbGQgaXMgbm90IHBvc3NpYmxlLCBpbiBvcmRlciB0byBtYWtlIHRoZSByZXNvdXJjZSB0eXBlIGZpbHRlciBzdGlsbCB3b3JraW5nLFxuICogd2UgY3JlYXRlIGFuIEVTIG9uIHRoZSBmbHk6IGByZXNvdXJjZVR5cGVMZWdhY3lgIHRoYXQgcmVmZXJlbmNlcyB0aGUgYHJlc291cmNlVHlwZWAgdW5kZXIgdGhlIGhvb2QuXG4gKiBAZGVwcmVjYXRlZCBVc2UgYHJlY29yZEtpbmRgIGZpZWxkIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVR5cGVMZWdhY3lGaWVsZCBleHRlbmRzIFRyYW5zbGF0ZWRTZWFyY2hGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCdyZXNvdXJjZVR5cGVMZWdhY3knLCBpbmplY3RvciwgJ2FzYycpXG5cbiAgICAvLyBBc2sgRVMgdG8gY3JlYXRlIGEgZmllbGQgb24gdGhlIGZseTogJ3Jlc291cmNlVHlwZUxlZ2FjeScgdGhhdCBpcyBpbiBmYWN0LCAncmVzb3VyY2VUeXBlJ1xuICAgIHRoaXMuZXNTZXJ2aWNlLnJlZ2lzdGVyUnVudGltZUZpZWxkKFxuICAgICAgJ3Jlc291cmNlVHlwZUxlZ2FjeScsXG4gICAgICBgZm9yIChyZXNvdXJjZVR5cGUgaW4gZG9jLnJlc291cmNlVHlwZSkgeyBlbWl0KHJlc291cmNlVHlwZSkgfWBcbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlY29yZEtpbmRGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgVFlQRV9NQVBQSU5HID0ge1xuICAgIGRhdGFzZXQ6IFsnZGF0YXNldCcsICdzZXJpZXMnLCAnZmVhdHVyZUNhdGFsb2cnXSxcbiAgICBzZXJ2aWNlOiBbJ3NlcnZpY2UnXSxcbiAgICByZXVzZTogT2JqZWN0LmVudHJpZXMoUG9zc2libGVSZXNvdXJjZVR5cGVzKVxuICAgICAgLmZpbHRlcigoW18sIHZdKSA9PiB2ID09PSAncmV1c2UnKVxuICAgICAgLm1hcCgoW2tdKSA9PiBrKSwgLy8gPSBbJ2FwcGxpY2F0aW9uJywgJ21hcCcsICdzdGF0aWNNYXAnLCAnaW50ZXJhY3RpdmVNYXAnLCAuLi5dXG4gIH1cblxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcigncmVzb3VyY2VUeXBlJywgaW5qZWN0b3IsICdhc2MnKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5hZ2dyZWdhdGUodGhpcy5nZXRBZ2dyZWdhdGlvbnMoKSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKHJlc3BvbnNlKSA9PlxuICAgICAgICAgIChyZXNwb25zZVt0aGlzLmVzRmllbGROYW1lXSBhcyBBZ2dyZWdhdGlvbkJ1Y2tldHMpLmJ1Y2tldHMgfHwgW11cbiAgICAgICksXG4gICAgICBtYXAoKGJ1Y2tldHM6IFRlcm1CdWNrZXRbXSkgPT4ge1xuICAgICAgICBjb25zdCBjb3VudHMgPSBidWNrZXRzLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCB7IHRlcm0sIGNvdW50IH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGVybS50b1N0cmluZygpXG4gICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLlRZUEVfTUFQUElORy5yZXVzZS5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgICAgICAgICAgPyAncmV1c2UnXG4gICAgICAgICAgICAgIDogdGhpcy5UWVBFX01BUFBJTkcuZGF0YXNldC5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgICAgICAgICAgICA/ICdkYXRhc2V0J1xuICAgICAgICAgICAgICAgIDogdmFsdWVcblxuICAgICAgICAgICAgYWNjW2tleV0gPSAoYWNjW2tleV0gfHwgMCkgKyBjb3VudFxuICAgICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICAgIH0sXG4gICAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPlxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuVFlQRV9NQVBQSU5HKS5tYXAoKHR5cGUpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IHR5cGUsXG4gICAgICAgICAgdmFsdWU6IHR5cGUsXG4gICAgICAgICAgY291bnQ6IGNvdW50c1t0eXBlXSA/PyAwLFxuICAgICAgICB9KSlcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0RmlsdGVyc0ZvclZhbHVlcyh2YWx1ZXM6IEZpZWxkVmFsdWVbXSk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgY29uc3QgZmlsdGVycyA9IHtcbiAgICAgIFt0aGlzLmVzRmllbGROYW1lXTogdmFsdWVzLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgPT09ICcnKSByZXR1cm4geyAuLi5hY2MsIFt2YWx1ZV06IHRydWUgfVxuXG4gICAgICAgIGNvbnN0IGtleXNUb0FkZCA9IHRoaXMuVFlQRV9NQVBQSU5HW3ZhbHVlXSB8fCBbdmFsdWVdXG4gICAgICAgIGtleXNUb0FkZC5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4gKGFjY1trZXldID0gdHJ1ZSkpXG5cbiAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgfSwge30pLFxuICAgIH1cblxuICAgIHJldHVybiBvZihmaWx0ZXJzKVxuICB9XG5cbiAgZ2V0VmFsdWVzRm9yRmlsdGVyKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IE9ic2VydmFibGU8RmllbGRWYWx1ZVtdPiB7XG4gICAgY29uc3QgZmlsdGVyID0gZmlsdGVyc1t0aGlzLmVzRmllbGROYW1lXVxuICAgIGlmICghZmlsdGVyKSByZXR1cm4gb2YoW10pXG5cbiAgICBjb25zdCBhY3RpdmVWYWx1ZXMgPSBPYmplY3Qua2V5cyhmaWx0ZXIpLmZpbHRlcigodikgPT4gZmlsdGVyW3ZdKVxuICAgIGNvbnN0IGFjdGl2ZVR5cGVzID0gT2JqZWN0LmtleXModGhpcy5UWVBFX01BUFBJTkcpLmZpbHRlcigodHlwZSkgPT5cbiAgICAgIHRoaXMuVFlQRV9NQVBQSU5HW3R5cGVdLmV2ZXJ5KCh0OiBzdHJpbmcpID0+IGFjdGl2ZVZhbHVlcy5pbmNsdWRlcyh0KSlcbiAgICApXG5cbiAgICAvLyBBbGxvdyB1bmtub3duIHZhbHVlcyBlZy4gJ3R5cGU9c29tZXRoaW5nbm90ZXhpc3QnIChmb3IgVUkgdG8gc2VsZWN0IG5vbmUpXG4gICAgY29uc3QgYWxsVHlwZXMgPSBbXS5jb25jYXQoLi4uT2JqZWN0LnZhbHVlcyh0aGlzLlRZUEVfTUFQUElORykpXG4gICAgY29uc3QgdW5rbm93blZhbHVlcyA9IGFjdGl2ZVZhbHVlcy5maWx0ZXIoXG4gICAgICAodmFsdWUpID0+ICFhbGxUeXBlcy5pbmNsdWRlcyh2YWx1ZSlcbiAgICApXG5cbiAgICByZXR1cm4gb2YoWy4uLmFjdGl2ZVR5cGVzLCAuLi51bmtub3duVmFsdWVzXSlcbiAgfVxufVxuIl19
436
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3NlYXJjaC9zcmMvbGliL3V0aWxzL3NlcnZpY2UvZmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlGQUFpRixDQUFBO0FBQy9ILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlGQUF5RixDQUFBO0FBQ3BJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRFQUE0RSxDQUFBO0FBU3JILE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLGlCQUFpQixHQUNsQixNQUFNLDhDQUE4QyxDQUFBO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQTtBQVc1RixNQUFNLE9BQWdCLG1CQUFtQjtDQVN4QztBQUVELE1BQU0sT0FBTyxpQkFBaUI7SUFNNUIsWUFDWSxXQUFtQixFQUNuQixRQUFrQixFQUNsQixRQUF3QixLQUFLLEVBQzdCLFlBQTZCLEtBQUs7UUFIbEMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUM3QixjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQVRwQyxlQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEs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ZXNDb250ZW50IjpbImltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL29yZ2FuaXphdGlvbnMuc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZSdcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHtcbiAgQWdncmVnYXRpb25CdWNrZXRzLFxuICBBZ2dyZWdhdGlvbnNQYXJhbXMsXG4gIEZpZWxkRmlsdGVyLFxuICBGaWVsZEZpbHRlckJ5RXhwcmVzc2lvbixcbiAgRmllbGRGaWx0ZXJzLFxuICBUZXJtQnVja2V0LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5pbXBvcnQge1xuICBEYXRlUmFuZ2UsXG4gIEVsYXN0aWNzZWFyY2hTZXJ2aWNlLFxuICBpc0RhdGVSYW5nZSxcbiAgTUVUQURBVEFfTEFOR1VBR0UsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjJ1xuaW1wb3J0IHsgZm9ybWF0VXNlckluZm8gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IFBvc3NpYmxlUmVzb3VyY2VUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMnXG5cbmV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9ICd2YWx1ZXMnIHwgJ2RhdGVSYW5nZSdcblxuZXhwb3J0IHR5cGUgRmllbGRWYWx1ZSA9IHN0cmluZyB8IG51bWJlclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZEF2YWlsYWJsZVZhbHVlIHtcbiAgdmFsdWU6IEZpZWxkVmFsdWVcbiAgbGFiZWw6IHN0cmluZ1xuICBjb3VudD86IG51bWJlclxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RTZWFyY2hGaWVsZCB7XG4gIGFic3RyYWN0IGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXSB8IERhdGVSYW5nZVtdPlxuICBhYnN0cmFjdCBnZXRGaWx0ZXJzRm9yVmFsdWVzKFxuICAgIHZhbHVlczogRmllbGRWYWx1ZVtdIHwgRGF0ZVJhbmdlW11cbiAgKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+XG4gIGFic3RyYWN0IGdldFZhbHVlc0ZvckZpbHRlcihcbiAgICBmaWx0ZXJzOiBGaWVsZEZpbHRlcnNcbiAgKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10gfCBGaWVsZFZhbHVlIHwgRGF0ZVJhbmdlPlxuICBhYnN0cmFjdCBnZXRUeXBlKCk6IEZpZWxkVHlwZVxufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlU2VhcmNoRmllbGQgaW1wbGVtZW50cyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgcHJvdGVjdGVkIHJlcG9zaXRvcnkgPSB0aGlzLmluamVjdG9yLmdldChSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSlcblxuICAvLyBGSVhNRTogdGhpcyBpcyByZXF1aXJlZCB0byByZWdpc3RlciBydW50aW1lIGZpZWxkczsgYWJzdHJhY3QgdGhpcyBhcyB3ZWxsXG4gIHByb3RlY3RlZCBlc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChFbGFzdGljc2VhcmNoU2VydmljZSlcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZXNGaWVsZE5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBvcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJyxcbiAgICBwcm90ZWN0ZWQgb3JkZXJUeXBlOiAna2V5JyB8ICdjb3VudCcgPSAna2V5J1xuICApIHt9XG5cbiAgcHJvdGVjdGVkIGdldEFnZ3JlZ2F0aW9ucygpOiBBZ2dyZWdhdGlvbnNQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5lc0ZpZWxkTmFtZV06IHtcbiAgICAgICAgdHlwZTogJ3Rlcm1zJyxcbiAgICAgICAgZmllbGQ6IHRoaXMuZXNGaWVsZE5hbWUsXG4gICAgICAgIGxpbWl0OiAxMDAwLFxuICAgICAgICBzb3J0OiBbdGhpcy5vcmRlciwgdGhpcy5vcmRlclR5cGVdLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QnVja2V0TGFiZWwoYnVja2V0OiBUZXJtQnVja2V0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYnVja2V0LnRlcm0udG9TdHJpbmcoKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5hZ2dyZWdhdGUodGhpcy5nZXRBZ2dyZWdhdGlvbnMoKSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKHJlc3BvbnNlKSA9PlxuICAgICAgICAgIChyZXNwb25zZVt0aGlzLmVzRmllbGROYW1lXSBhcyBBZ2dyZWdhdGlvbkJ1Y2tldHMpLmJ1Y2tldHMgfHwgW11cbiAgICAgICksXG4gICAgICBzd2l0Y2hNYXAoKGJ1Y2tldHM6IFRlcm1CdWNrZXRbXSkgPT4ge1xuICAgICAgICBjb25zdCBidWNrZXRQcm9taXNlcyA9IGJ1Y2tldHMubWFwKGFzeW5jIChidWNrZXQpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGAke2F3YWl0IHRoaXMuZ2V0QnVja2V0TGFiZWwoYnVja2V0KX0gKCR7YnVja2V0LmNvdW50fSlgLFxuICAgICAgICAgIHZhbHVlOiBidWNrZXQudGVybS50b1N0cmluZygpLFxuICAgICAgICAgIGNvdW50OiBidWNrZXQuY291bnQsXG4gICAgICAgIH0pKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoYnVja2V0UHJvbWlzZXMpXG4gICAgICB9KVxuICAgIClcbiAgfVxuICBnZXRGaWx0ZXJzRm9yVmFsdWVzKFxuICAgIHZhbHVlczogRmllbGRWYWx1ZVtdIHwgRGF0ZVJhbmdlW11cbiAgKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICAvLyBGaWVsZFZhbHVlW11cbiAgICBpZiAodGhpcy5nZXRUeXBlKCkgPT09ICd2YWx1ZXMnKSB7XG4gICAgICByZXR1cm4gb2Yoe1xuICAgICAgICBbdGhpcy5lc0ZpZWxkTmFtZV06ICh2YWx1ZXMgYXMgRmllbGRWYWx1ZVtdKS5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWwudG9TdHJpbmcoKVxuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgW3ZhbHVlXTogdHJ1ZSB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSwge30pLFxuICAgICAgfSlcbiAgICB9XG4gICAgLy8gRGF0ZVJhbmdlXG4gICAgcmV0dXJuIG9mKHtcbiAgICAgIFt0aGlzLmVzRmllbGROYW1lXTogdmFsdWVzWzBdICE9PSAnJyA/IHZhbHVlc1swXSA6IHt9LFxuICAgIH0pXG4gIH1cbiAgZ2V0VmFsdWVzRm9yRmlsdGVyKFxuICAgIGZpbHRlcnM6IEZpZWxkRmlsdGVyc1xuICApOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXSB8IEZpZWxkVmFsdWUgfCBEYXRlUmFuZ2U+IHtcbiAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJzW3RoaXMuZXNGaWVsZE5hbWVdXG4gICAgaWYgKCFmaWx0ZXIpIHJldHVybiBvZihbXSlcbiAgICAvLyBmaWx0ZXIgYnkgZXhwcmVzc2lvblxuICAgIGlmICh0eXBlb2YgZmlsdGVyID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9mKFtmaWx0ZXJdKVxuICAgIH1cbiAgICAvLyBmaWx0ZXIgYnkgZGF0ZSByYW5nZVxuICAgIGlmIChpc0RhdGVSYW5nZShmaWx0ZXIpKSB7XG4gICAgICByZXR1cm4gb2YoZmlsdGVyKVxuICAgIH1cbiAgICAvLyBmaWx0ZXIgYnkgdmFsdWVzXG4gICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LmtleXMoZmlsdGVyKS5maWx0ZXIoKHYpID0+IGZpbHRlclt2XSlcbiAgICByZXR1cm4gb2YodmFsdWVzKVxuICB9XG5cbiAgZ2V0VHlwZSgpOiBGaWVsZFR5cGUge1xuICAgIHJldHVybiAndmFsdWVzJ1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVkU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIHByb3RlY3RlZCBwbGF0Zm9ybVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVzRmllbGROYW1lOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycsXG4gICAgcHJvdGVjdGVkIG9yZGVyVHlwZTogJ2tleScgfCAnY291bnQnID0gJ2tleSdcbiAgKSB7XG4gICAgc3VwZXIoZXNGaWVsZE5hbWUsIGluamVjdG9yLCBvcmRlciwgb3JkZXJUeXBlKVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldFRyYW5zbGF0aW9uKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMucGxhdGZvcm1TZXJ2aWNlLnRyYW5zbGF0ZUtleShrZXkpKVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEJ1Y2tldExhYmVsKGJ1Y2tldDogVGVybUJ1Y2tldCkge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5nZXRUcmFuc2xhdGlvbihidWNrZXQudGVybSkpIHx8IGJ1Y2tldC50ZXJtXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICBpZiAodGhpcy5vcmRlclR5cGUgPT09ICdjb3VudCcpIHJldHVybiBzdXBlci5nZXRBdmFpbGFibGVWYWx1ZXMoKVxuICAgIC8vIHNvcnQgdmFsdWVzIGJ5IGFscGhhYmV0aWNhbCBvcmRlclxuICAgIHJldHVybiBzdXBlclxuICAgICAgLmdldEF2YWlsYWJsZVZhbHVlcygpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh2YWx1ZXMpID0+XG4gICAgICAgICAgdmFsdWVzLnNvcnQoKGEsIGIpID0+IG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZShhLmxhYmVsLCBiLmxhYmVsKSlcbiAgICAgICAgKVxuICAgICAgKVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBzZWFyY2ggZmllbGQgd2lsbCBlaXRoZXIgdGFyZ2V0IHRoZSBgLmRlZmF1bHRgIGZpZWxkLCBvciBhIHNwZWNpZmljIGAubGFuZ3h5emAgZmllbGQgYWNjb3JkaW5nXG4gKiB0byB0aGUgZGVmaW5lZCBNRVRBREFUQV9MQU5HVUFHRSB0b2tlblxuICogVGhlIHByb3ZpZGVkIEVTIGZpZWxkIG5hbWUgc2hvdWxkIG5vdCBpbmNsdWRlIGFueSBwcmVmaXggc3VjaCBhcyBgLmxhbmdlbmdgXG4gKi9cbmV4cG9ydCBjbGFzcyBNdWx0aWxpbmd1YWxTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgLy8gd2UncmUgdXNpbmcgYSBnZXR0ZXIgaW4gY2FzZSB0aGUgdG9rZW4gdmFsdWUgY2hhbmdlcyBvdmVyIHRpbWVcbiAgcHJpdmF0ZSBnZXQgc2VhcmNoTGFuZ3VhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KE1FVEFEQVRBX0xBTkdVQUdFLCBudWxsKVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVzRmllbGROYW1lOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycsXG4gICAgcHJvdGVjdGVkIG9yZGVyVHlwZTogJ2tleScgfCAnY291bnQnID0gJ2tleSdcbiAgKSB7XG4gICAgc3VwZXIoZXNGaWVsZE5hbWUsIGluamVjdG9yLCBvcmRlciwgb3JkZXJUeXBlKVxuICAgIC8vIG5vdGU6IHdlJ3JlIGV4Y2x1ZGluZyB0aGUgbWV0YWRhdGEgbGFuZ3VhZ2UgXCJjdXJyZW50XCIgdmFsdWUgYmVjYXVzZSB0aGF0IHdvdWxkIHByb2R1Y2VcbiAgICAvLyBwZXJtYWxpbmtzIHRoYXQgbWlnaHQgbm90IHdvcmsgZm9yIGRpZmZlcmVudCB1c2Vyc1xuICAgIGlmICh0aGlzLnNlYXJjaExhbmd1YWdlICYmIHRoaXMuc2VhcmNoTGFuZ3VhZ2UgIT09ICdjdXJyZW50Jykge1xuICAgICAgdGhpcy5lc0ZpZWxkTmFtZSArPSBgLmxhbmcke3RoaXMuc2VhcmNoTGFuZ3VhZ2V9YFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVzRmllbGROYW1lICs9ICcuZGVmYXVsdCdcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZ1bGxUZXh0U2VhcmNoRmllbGQgaW1wbGVtZW50cyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIG9mKFtdKVxuICB9XG4gIGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIHJldHVybiBvZih7XG4gICAgICBhbnk6IHZhbHVlc1swXSBhcyBzdHJpbmcsXG4gICAgfSlcbiAgfVxuICBnZXRWYWx1ZXNGb3JGaWx0ZXIoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10+IHtcbiAgICByZXR1cm4gb2YoZmlsdGVycy5hbnkgPyBbZmlsdGVycy5hbnkgYXMgRmllbGRGaWx0ZXJCeUV4cHJlc3Npb25dIDogW10pXG4gIH1cbiAgZ2V0VHlwZSgpOiBGaWVsZFR5cGUge1xuICAgIHJldHVybiAndmFsdWVzJ1xuICB9XG59XG5cbm1hcmtlcignc2VhcmNoLmZpbHRlcnMuaXNTcGF0aWFsLnllcycpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmlzU3BhdGlhbC5ubycpXG5cbmV4cG9ydCBjbGFzcyBJc1NwYXRpYWxTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSlcblxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcignaXNTcGF0aWFsJywgaW5qZWN0b3IsICdhc2MnKVxuICAgIHRoaXMuZXNTZXJ2aWNlLnJlZ2lzdGVyUnVudGltZUZpZWxkKFxuICAgICAgJ2lzU3BhdGlhbCcsXG4gICAgICBgU3RyaW5nIHJlc3VsdCA9ICdubyc7XG5TdHJpbmcgZm9ybWF0cyA9IGRvYy5mb3JtYXQuam9pbignfCcpLnRvTG93ZXJDYXNlKCk7XG5pZiAoZm9ybWF0cy5jb250YWlucygnZ2VvanNvbicpIHx8IGZvcm1hdHMuY29udGFpbnMoJ2FyY2dpcycpIHx8IGZvcm1hdHMuY29udGFpbnMoJ29nYycpIHx8IGZvcm1hdHMuY29udGFpbnMoJ3NocCcpKSByZXN1bHQgPSAneWVzJztcblN0cmluZyBwcm90b2NvbHMgPSBkb2MubGlua1Byb3RvY29sLmpvaW4oJ3wnKS50b0xvd2VyQ2FzZSgpO1xuaWYgKHByb3RvY29scy5jb250YWlucygnZXNyaScpIHx8IHByb3RvY29scy5jb250YWlucygnb2djJykpIHJlc3VsdCA9ICd5ZXMnO1xuZW1pdChyZXN1bHQpO2BcbiAgICApXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QWdncmVnYXRpb25zKCk6IEFnZ3JlZ2F0aW9uc1BhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzU3BhdGlhbDoge1xuICAgICAgICB0eXBlOiAndGVybXMnLFxuICAgICAgICBsaW1pdDogMixcbiAgICAgICAgZmllbGQ6ICdpc1NwYXRpYWwnLFxuICAgICAgICBzb3J0OiBbJ2FzYycsICdrZXknXSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEJ1Y2tldExhYmVsKGJ1Y2tldDogVGVybUJ1Y2tldCkge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoYHNlYXJjaC5maWx0ZXJzLmlzU3BhdGlhbC4ke2J1Y2tldC50ZXJtfWApXG4gICAgKVxuICB9XG5cbiAgZ2V0RmlsdGVyc0ZvclZhbHVlcyh2YWx1ZXM6IEZpZWxkVmFsdWVbXSk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgY29uc3QgaXNTcGF0aWFsID0ge31cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDApIGlzU3BhdGlhbFt2YWx1ZXNbdmFsdWVzLmxlbmd0aCAtIDFdXSA9IHRydWVcbiAgICByZXR1cm4gb2Yoe1xuICAgICAgaXNTcGF0aWFsLFxuICAgIH0pXG4gIH1cblxuICBnZXRWYWx1ZXNGb3JGaWx0ZXIoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10+IHtcbiAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJzLmlzU3BhdGlhbFxuICAgIGlmICghZmlsdGVyKSByZXR1cm4gb2YoW10pXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGZpbHRlcilcbiAgICByZXR1cm4gb2Yoa2V5cy5sZW5ndGggPyBba2V5c1swXV0gOiBbXSlcbiAgfVxufVxuXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UucGRkbCcpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2Uub2RibCcpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2Uub2RjLWJ5Jylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5jYy1ieS1zYScpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuY2MtYnknKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLmNjLXplcm8nKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLmV0YWxhYi12MicpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuZXRhbGFiJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS51bmtub3duJylcblxuLy8gTm90ZTogdmFsdWVzIGFyZSBpbnNwaXJlZCBmcm9tIGh0dHBzOi8vZG9jLmRhdGEuZ291di5mci9tb2lzc29ubmFnZS9saWNlbmNlcy9cbmV4cG9ydCBjbGFzcyBMaWNlbnNlU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpXG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoJ2xpY2Vuc2UnLCBpbmplY3RvciwgJ2FzYycpXG4gICAgdGhpcy5lc1NlcnZpY2UucmVnaXN0ZXJSdW50aW1lRmllbGQoXG4gICAgICAnbGljZW5zZScsXG4gICAgICBgU3RyaW5nIHJhdyA9ICcnO1xuaWYgKGRvYy5jb250YWluc0tleSgnbGljZW5zZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnKSAmJiBkb2NbJ2xpY2Vuc2VPYmplY3QuZGVmYXVsdC5rZXl3b3JkJ10ubGVuZ3RoID4gMClcbiAgcmF3ICs9IGRvY1snbGljZW5zZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnXS5qb2luKCd8JykudG9Mb3dlckNhc2UoKTtcbmlmIChkb2MuY29udGFpbnNLZXkoJ01EX0xlZ2FsQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0LmRlZmF1bHQua2V5d29yZCcpICYmIGRvY1snTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QuZGVmYXVsdC5rZXl3b3JkJ10ubGVuZ3RoID4gMClcbiAgcmF3ICs9IGRvY1snTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QuZGVmYXVsdC5rZXl3b3JkJ10uam9pbignfCcpLnRvTG93ZXJDYXNlKCk7XG5cbmJvb2xlYW4gdW5rbm93biA9IHRydWU7XG5pZiAocmF3LmNvbnRhaW5zKCdwZGRsJykgfHwgcmF3LmNvbnRhaW5zKCdwdWJsaWMgZG9tYWluIGRlZGljYXRpb24gYW5kIGxpY2VuY2UnKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ3BkZGwnKTtcbn1cbmlmIChyYXcuY29udGFpbnMoJ29kYmwnKSB8fCByYXcuY29udGFpbnMoJ29wZW4gZGF0YWJhc2UgbGljZW5zZScpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnb2RibCcpO1xufVxuaWYgKHJhdy5jb250YWlucygnb2RjLWJ5JykgfHwgcmF3LmNvbnRhaW5zKCdvcGVuZGF0YWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5L3N1bW1hcnkvXCInKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ29kYy1ieScpO1xufVxuXG5pZiAocmF3LmNvbnRhaW5zKCdjYy1ieS1zYScpIHx8IHJhdy5jb250YWlucygnY3JlYXRpdmUgY29tbW9ucyBhdHRyaWJ1dGlvbiBzaGFyZS1hbGlrZScpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnY2MtYnktc2EnKTtcbn0gZWxzZSBpZiAocmF3LmNvbnRhaW5zKCdjYy1ieScpIHx8IHJhdy5jb250YWlucygnY2MgYnknKSB8fCByYXcuY29udGFpbnMoJ2NyZWF0aXZlIGNvbW1vbnMgYXR0cmlidXRpb24nKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ2NjLWJ5Jyk7XG59IGVsc2UgaWYgKHJhdy5jb250YWlucygnY2MwJykgfHwgcmF3LmNvbnRhaW5zKCdjYy0wJykgfHwgcmF3LmNvbnRhaW5zKCdjY3plcm8nKSB8fCByYXcuY29udGFpbnMoJ2NjLXplcm8nKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ2NjLXplcm8nKTtcbn1cblxuaWYgKHJhdy5jb250YWlucygnZXRhbGFiJykgJiYgKHJhdy5jb250YWlucygndjInKSB8fCByYXcuY29udGFpbnMoJzIuMCcpKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ2V0YWxhYi12MicpO1xufSBlbHNlIGlmIChyYXcuY29udGFpbnMoJ29wZW4gbGljZW5jZScpIHx8IHJhdy5jb250YWlucygnbGljZW5jZSBvdXZlcnRlJykgfHwgcmF3LmNvbnRhaW5zKCdsaWNlbmNlX291dmVydGUnKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ2V0YWxhYicpO1xufVxuXG5pZih1bmtub3duKSBlbWl0KCd1bmtub3duJyk7YFxuICAgIClcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRBZ2dyZWdhdGlvbnMoKTogQWdncmVnYXRpb25zUGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGljZW5zZToge1xuICAgICAgICB0eXBlOiAndGVybXMnLFxuICAgICAgICBsaW1pdDogMTAsXG4gICAgICAgIGZpZWxkOiAnbGljZW5zZScsXG4gICAgICAgIHNvcnQ6IFsnZGVzYycsICdjb3VudCddLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QnVja2V0TGFiZWwoYnVja2V0OiBUZXJtQnVja2V0KSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChgc2VhcmNoLmZpbHRlcnMubGljZW5zZS4ke2J1Y2tldC50ZXJtfWApXG4gICAgKVxuICB9XG59XG5cbi8vIFRoaXMgd2lsbCB1c2UgdGhlIE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlXG4vLyBGaWVsZCB2YWx1ZXMgYXJlIHRoZSBvcmdhbml6YXRpb24gbmFtZXNcbmV4cG9ydCBjbGFzcyBPcmdhbml6YXRpb25TZWFyY2hGaWVsZCBpbXBsZW1lbnRzIEFic3RyYWN0U2VhcmNoRmllbGQge1xuICBwcml2YXRlIG9yZ3NTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2UpXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgZ2V0RmlsdGVyc0ZvclZhbHVlcyh2YWx1ZXM6IEZpZWxkVmFsdWVbXSk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgcmV0dXJuIHRoaXMub3Jnc1NlcnZpY2Uub3JnYW5pc2F0aW9ucyQucGlwZShcbiAgICAgIG1hcCgob3JncykgPT5cbiAgICAgICAgdmFsdWVzXG4gICAgICAgICAgLm1hcCgobmFtZSkgPT4gb3Jncy5maW5kKChvcmcpID0+IG9yZy5uYW1lID09PSBuYW1lKSlcbiAgICAgICAgICAuZmlsdGVyKChvcmcpID0+IG9yZyAhPT0gdW5kZWZpbmVkKVxuICAgICAgKSxcbiAgICAgIHN3aXRjaE1hcCgoc2VsZWN0ZWRPcmdzKSA9PlxuICAgICAgICB0aGlzLm9yZ3NTZXJ2aWNlLmdldEZpbHRlcnNGb3JPcmdzKHNlbGVjdGVkT3JncylcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBnZXRWYWx1ZXNGb3JGaWx0ZXIoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5vcmdzU2VydmljZVxuICAgICAgLmdldE9yZ3NGcm9tRmlsdGVycyhmaWx0ZXJzKVxuICAgICAgLnBpcGUobWFwKChvcmdzKSA9PiBvcmdzLm1hcCgob3JnKSA9PiBvcmcubmFtZSkpKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgLy8gc29ydCB2YWx1ZXMgYnkgYWxwaGFiZXRpY2FsIG9yZGVyXG4gICAgcmV0dXJuIHRoaXMub3Jnc1NlcnZpY2Uub3JnYW5pc2F0aW9ucyQucGlwZShcbiAgICAgIG1hcCgob3JnYW5pc2F0aW9ucykgPT5cbiAgICAgICAgb3JnYW5pc2F0aW9ucy5tYXAoKG9yZykgPT4gKHtcbiAgICAgICAgICBsYWJlbDogYCR7b3JnLm5hbWV9ICgke29yZy5yZWNvcmRDb3VudH0pYCxcbiAgICAgICAgICB2YWx1ZTogb3JnLm5hbWUsXG4gICAgICAgIH0pKVxuICAgICAgKSxcbiAgICAgIG1hcCgodmFsdWVzKSA9PlxuICAgICAgICB2YWx1ZXMuc29ydCgoYSwgYikgPT4gbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlKGEubGFiZWwsIGIubGFiZWwpKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGdldFR5cGUoKTogRmllbGRUeXBlIHtcbiAgICByZXR1cm4gJ3ZhbHVlcydcbiAgfVxufVxuZXhwb3J0IGNsYXNzIE93bmVyU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCdvd25lcicsIGluamVjdG9yLCAnYXNjJylcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIHJldHVybiBvZihbXSlcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXNlclNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcigndXNlcmluZm8ua2V5d29yZCcsIGluamVjdG9yLCAnYXNjJylcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIHJldHVybiBzdXBlci5nZXRBdmFpbGFibGVWYWx1ZXMoKS5waXBlKFxuICAgICAgbWFwKCh2YWx1ZXMpID0+XG4gICAgICAgIHZhbHVlcy5tYXAoKHYpID0+ICh7XG4gICAgICAgICAgLi4udixcbiAgICAgICAgICBsYWJlbDogZm9ybWF0VXNlckluZm8odi5sYWJlbCwgdHJ1ZSksXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBlc0ZpZWxkTmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnLFxuICAgIHByb3RlY3RlZCBvcmRlclR5cGU6ICdrZXknIHwgJ2NvdW50JyA9ICdrZXknXG4gICkge1xuICAgIHN1cGVyKGVzRmllbGROYW1lLCBpbmplY3Rvciwgb3JkZXIsIG9yZGVyVHlwZSlcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIC8vIFRPRE86IHJldHVybiBhbiBhcnJheSBvZiBkYXRlcyB0byBzaG93IHdoaWNoIG9uZSBhcmUgYXZhaWxhYmxlIGluIHRoZSBkYXRlIHBpY2tlclxuICAgIHJldHVybiBvZihbXSlcbiAgfVxuXG4gIGdldFR5cGUoKTogRmllbGRUeXBlIHtcbiAgICByZXR1cm4gJ2RhdGVSYW5nZSdcbiAgfVxufVxuXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmF2YWlsYWJsZVNlcnZpY2VzLnZpZXcnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5hdmFpbGFibGVTZXJ2aWNlcy5kb3dubG9hZCcpXG5cbmV4cG9ydCBjbGFzcyBBdmFpbGFibGVTZXJ2aWNlc0ZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKVxuXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCdhdmFpbGFibGVTZXJ2aWNlcycsIGluamVjdG9yLCAnYXNjJylcbiAgfVxuXG4gIGxpbmtQcm90b2NvbFZpZXdGaWx0ZXIgPSAnL09HQzpXTVQ/Uy4qLydcbiAgbGlua1Byb3RvY29sRG93bmxvYWRGaWx0ZXIgPSAnL09HQzpXRlMuKi8nXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEJ1Y2tldExhYmVsKGJ1Y2tldDogVGVybUJ1Y2tldCkge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoXG4gICAgICAgIGBzZWFyY2guZmlsdGVycy5hdmFpbGFibGVTZXJ2aWNlcy4ke2J1Y2tldC50ZXJtfWBcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QWdncmVnYXRpb25zKCk6IEFnZ3JlZ2F0aW9uc1BhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF2YWlsYWJsZVNlcnZpY2VzOiB7XG4gICAgICAgIHR5cGU6ICdmaWx0ZXJzJyxcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIHZpZXc6IGArbGlua1Byb3RvY29sOiR7dGhpcy5saW5rUHJvdG9jb2xWaWV3RmlsdGVyfWAsXG4gICAgICAgICAgZG93bmxvYWQ6IGArbGlua1Byb3RvY29sOiR7dGhpcy5saW5rUHJvdG9jb2xEb3dubG9hZEZpbHRlcn1gLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBnZXRGaWx0ZXJzRm9yVmFsdWVzKHZhbHVlczogRmllbGRWYWx1ZVtdKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICBjb25zdCBmaWx0ZXJzOiBGaWVsZEZpbHRlciA9IHt9XG4gICAgaWYgKHZhbHVlcy5pbmNsdWRlcygndmlldycpKSBmaWx0ZXJzW3RoaXMubGlua1Byb3RvY29sVmlld0ZpbHRlcl0gPSB0cnVlXG4gICAgaWYgKHZhbHVlcy5pbmNsdWRlcygnZG93bmxvYWQnKSlcbiAgICAgIGZpbHRlcnNbdGhpcy5saW5rUHJvdG9jb2xEb3dubG9hZEZpbHRlcl0gPSB0cnVlXG5cbiAgICByZXR1cm4gb2Yoe1xuICAgICAgbGlua1Byb3RvY29sOiBmaWx0ZXJzLFxuICAgIH0pXG4gIH1cblxuICBnZXRWYWx1ZXNGb3JGaWx0ZXIoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10+IHtcbiAgICBjb25zdCBsaW5rRmlsdGVyID0gZmlsdGVycy5saW5rUHJvdG9jb2xcbiAgICBpZiAoIWxpbmtGaWx0ZXIpIHJldHVybiBvZihbXSlcbiAgICBjb25zdCB2YWx1ZXMgPSBbXVxuICAgIGlmIChsaW5rRmlsdGVyW3RoaXMubGlua1Byb3RvY29sVmlld0ZpbHRlcl0pIHZhbHVlcy5wdXNoKCd2aWV3JylcbiAgICBpZiAobGlua0ZpbHRlclt0aGlzLmxpbmtQcm90b2NvbERvd25sb2FkRmlsdGVyXSkgdmFsdWVzLnB1c2goJ2Rvd25sb2FkJylcbiAgICByZXR1cm4gb2YodmFsdWVzKVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyBtZWFudCB0byBiZSB1c2VkIHdpdGggdGhlIGxlZ2FjeSBmaWx0ZXIgb24gYHJlc291cmNlVHlwZWAgKG5vdyBkZXByZWNhdGVkLCB0aGUgdXNlIG9mIGByZWNvcmRLaW5kYCBmaWVsZCBpcyByZWNvbW1lbmRlZCkuXG4gKiBTaW5jZSBjcmVhdGluZyBmaWx0ZXJzIG9uIHRoZSBzYW1lIEVTIGZpZWxkIGlzIG5vdCBwb3NzaWJsZSwgaW4gb3JkZXIgdG8gbWFrZSB0aGUgcmVzb3VyY2UgdHlwZSBmaWx0ZXIgc3RpbGwgd29ya2luZyxcbiAqIHdlIGNyZWF0ZSBhbiBFUyBvbiB0aGUgZmx5OiBgcmVzb3VyY2VUeXBlTGVnYWN5YCB0aGF0IHJlZmVyZW5jZXMgdGhlIGByZXNvdXJjZVR5cGVgIHVuZGVyIHRoZSBob29kLlxuICogQGRlcHJlY2F0ZWQgVXNlIGByZWNvcmRLaW5kYCBmaWVsZCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VUeXBlTGVnYWN5RmllbGQgZXh0ZW5kcyBUcmFuc2xhdGVkU2VhcmNoRmllbGQge1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcigncmVzb3VyY2VUeXBlTGVnYWN5JywgaW5qZWN0b3IsICdhc2MnKVxuXG4gICAgLy8gQXNrIEVTIHRvIGNyZWF0ZSBhIGZpZWxkIG9uIHRoZSBmbHk6ICdyZXNvdXJjZVR5cGVMZWdhY3knIHRoYXQgaXMgaW4gZmFjdCwgJ3Jlc291cmNlVHlwZSdcbiAgICB0aGlzLmVzU2VydmljZS5yZWdpc3RlclJ1bnRpbWVGaWVsZChcbiAgICAgICdyZXNvdXJjZVR5cGVMZWdhY3knLFxuICAgICAgYGZvciAocmVzb3VyY2VUeXBlIGluIGRvYy5yZXNvdXJjZVR5cGUpIHsgZW1pdChyZXNvdXJjZVR5cGUpIH1gXG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZWNvcmRLaW5kRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIFRZUEVfTUFQUElORyA9IHtcbiAgICBkYXRhc2V0OiBbJ2RhdGFzZXQnLCAnc2VyaWVzJywgJ2ZlYXR1cmVDYXRhbG9nJ10sXG4gICAgc2VydmljZTogWydzZXJ2aWNlJ10sXG4gICAgcmV1c2U6IE9iamVjdC5lbnRyaWVzKFBvc3NpYmxlUmVzb3VyY2VUeXBlcylcbiAgICAgIC5maWx0ZXIoKFtfLCB2XSkgPT4gdiA9PT0gJ3JldXNlJylcbiAgICAgIC5tYXAoKFtrXSkgPT4gayksIC8vID0gWydhcHBsaWNhdGlvbicsICdtYXAnLCAnc3RhdGljTWFwJywgJ2ludGVyYWN0aXZlTWFwJywgLi4uXVxuICB9XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoJ3Jlc291cmNlVHlwZScsIGluamVjdG9yLCAnYXNjJylcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnkuYWdncmVnYXRlKHRoaXMuZ2V0QWdncmVnYXRpb25zKCkpLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChyZXNwb25zZSkgPT5cbiAgICAgICAgICAocmVzcG9uc2VbdGhpcy5lc0ZpZWxkTmFtZV0gYXMgQWdncmVnYXRpb25CdWNrZXRzKS5idWNrZXRzIHx8IFtdXG4gICAgICApLFxuICAgICAgbWFwKChidWNrZXRzOiBUZXJtQnVja2V0W10pID0+IHtcbiAgICAgICAgY29uc3QgY291bnRzID0gYnVja2V0cy5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgeyB0ZXJtLCBjb3VudCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRlcm0udG9TdHJpbmcoKVxuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5UWVBFX01BUFBJTkcucmV1c2UuaW5jbHVkZXModmFsdWUpXG4gICAgICAgICAgICAgID8gJ3JldXNlJ1xuICAgICAgICAgICAgICA6IHRoaXMuVFlQRV9NQVBQSU5HLmRhdGFzZXQuaW5jbHVkZXModmFsdWUpXG4gICAgICAgICAgICAgICAgPyAnZGF0YXNldCdcbiAgICAgICAgICAgICAgICA6IHZhbHVlXG5cbiAgICAgICAgICAgIGFjY1trZXldID0gKGFjY1trZXldIHx8IDApICsgY291bnRcbiAgICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj5cbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLlRZUEVfTUFQUElORykubWFwKCh0eXBlKSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiB0eXBlLFxuICAgICAgICAgIHZhbHVlOiB0eXBlLFxuICAgICAgICAgIGNvdW50OiBjb3VudHNbdHlwZV0gPz8gMCxcbiAgICAgICAgfSkpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIGNvbnN0IGZpbHRlcnMgPSB7XG4gICAgICBbdGhpcy5lc0ZpZWxkTmFtZV06IHZhbHVlcy5yZWR1Y2UoKGFjYywgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnJykgcmV0dXJuIHsgLi4uYWNjLCBbdmFsdWVdOiB0cnVlIH1cblxuICAgICAgICBjb25zdCBrZXlzVG9BZGQgPSB0aGlzLlRZUEVfTUFQUElOR1t2YWx1ZV0gfHwgW3ZhbHVlXVxuICAgICAgICBrZXlzVG9BZGQuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IChhY2Nba2V5XSA9IHRydWUpKVxuXG4gICAgICAgIHJldHVybiBhY2NcbiAgICAgIH0sIHt9KSxcbiAgICB9XG5cbiAgICByZXR1cm4gb2YoZmlsdGVycylcbiAgfVxuXG4gIGdldFZhbHVlc0ZvckZpbHRlcihmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXT4ge1xuICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcnNbdGhpcy5lc0ZpZWxkTmFtZV1cbiAgICBpZiAoIWZpbHRlcikgcmV0dXJuIG9mKFtdKVxuXG4gICAgY29uc3QgYWN0aXZlVmFsdWVzID0gT2JqZWN0LmtleXMoZmlsdGVyKS5maWx0ZXIoKHYpID0+IGZpbHRlclt2XSlcbiAgICBjb25zdCBhY3RpdmVUeXBlcyA9IE9iamVjdC5rZXlzKHRoaXMuVFlQRV9NQVBQSU5HKS5maWx0ZXIoKHR5cGUpID0+XG4gICAgICB0aGlzLlRZUEVfTUFQUElOR1t0eXBlXS5ldmVyeSgodDogc3RyaW5nKSA9PiBhY3RpdmVWYWx1ZXMuaW5jbHVkZXModCkpXG4gICAgKVxuXG4gICAgLy8gQWxsb3cgdW5rbm93biB2YWx1ZXMgZWcuICd0eXBlPXNvbWV0aGluZ25vdGV4aXN0JyAoZm9yIFVJIHRvIHNlbGVjdCBub25lKVxuICAgIGNvbnN0IGFsbFR5cGVzID0gW10uY29uY2F0KC4uLk9iamVjdC52YWx1ZXModGhpcy5UWVBFX01BUFBJTkcpKVxuICAgIGNvbnN0IHVua25vd25WYWx1ZXMgPSBhY3RpdmVWYWx1ZXMuZmlsdGVyKFxuICAgICAgKHZhbHVlKSA9PiAhYWxsVHlwZXMuaW5jbHVkZXModmFsdWUpXG4gICAgKVxuXG4gICAgcmV0dXJuIG9mKFsuLi5hY3RpdmVUeXBlcywgLi4udW5rbm93blZhbHVlc10pXG4gIH1cbn1cbiJdfQ==