geonetwork-ui 2.6.0-dev.f073bbb4e → 2.7.0-dev.035ba2871

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 (884) hide show
  1. package/README.md +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/index.mjs +2 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/base.converter.mjs +1 -1
  4. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
  5. package/esm2022/libs/api/metadata-converter/src/lib/common/resource-types.mjs +17 -15
  6. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +11 -2
  7. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +3 -3
  8. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +59 -15
  9. package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +3 -3
  10. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  11. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +6 -6
  12. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -3
  13. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +14 -6
  14. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +7 -7
  15. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.mjs +4 -1
  16. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +12 -8
  17. package/esm2022/libs/api/metadata-converter/src/lib/translate-utils.mjs +17 -0
  18. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +4 -4
  19. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +5 -2
  20. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +21 -27
  21. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +79 -16
  22. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +7 -1
  23. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +8 -8
  24. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +14 -11
  25. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +91 -46
  26. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
  27. package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
  28. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +5 -1
  29. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  30. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  31. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -31
  32. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +9 -8
  33. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +59 -11
  34. package/esm2022/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.mjs +4 -5
  35. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  36. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +42 -3
  37. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +31 -8
  38. package/esm2022/libs/feature/editor/src/index.mjs +3 -4
  39. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
  40. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +13 -7
  41. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +4 -1
  42. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +5 -1
  43. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +5 -7
  44. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +8 -13
  45. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +5 -6
  46. package/esm2022/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.mjs +80 -0
  47. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +275 -0
  48. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +5 -15
  49. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -5
  50. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.mjs +5 -8
  51. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.mjs +4 -5
  52. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +6 -10
  53. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -14
  54. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -15
  55. 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
  56. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +4 -4
  57. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +4 -4
  58. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +7 -7
  59. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +4 -4
  60. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +4 -4
  61. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +6 -17
  62. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +4 -5
  63. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +12 -30
  64. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +1 -3
  65. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +1 -3
  66. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +5 -6
  67. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +11 -8
  68. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +11 -8
  69. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -6
  70. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -5
  71. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +3 -36
  72. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +5 -11
  73. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -6
  74. package/esm2022/libs/feature/record/src/index.mjs +2 -4
  75. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +50 -26
  76. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +10 -15
  77. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +5 -6
  78. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +12 -17
  79. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +7 -4
  80. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +8 -22
  81. package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +5 -5
  82. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +15 -7
  83. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +151 -24
  84. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +1 -1
  85. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +3 -1
  86. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +16 -5
  87. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +13 -15
  88. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
  89. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
  90. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +3 -1
  91. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  92. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +10 -2
  93. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +9 -3
  94. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  95. package/esm2022/libs/feature/search/src/lib/constants.mjs +4 -2
  96. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +12 -8
  97. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +33 -42
  98. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +3 -3
  99. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +8 -6
  100. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -2
  101. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +44 -0
  102. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +35 -15
  103. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
  104. package/esm2022/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.mjs +5 -7
  105. package/esm2022/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.mjs +4 -4
  106. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +74 -4
  107. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +4 -3
  108. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  109. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +4 -5
  110. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +4 -5
  111. package/esm2022/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.mjs +4 -5
  112. package/esm2022/libs/ui/dataviz/src/index.mjs +1 -2
  113. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
  114. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +14 -8
  115. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -5
  116. package/esm2022/libs/ui/elements/src/index.mjs +7 -4
  117. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +7 -7
  118. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +5 -5
  119. package/esm2022/libs/ui/elements/src/lib/avatar/avatar.component.mjs +4 -3
  120. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +5 -3
  121. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +5 -6
  122. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +20 -9
  123. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +4 -5
  124. package/esm2022/libs/ui/elements/src/lib/external-link-card/external-link-card.component.mjs +59 -0
  125. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +54 -0
  126. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +4 -5
  127. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
  128. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +89 -0
  129. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +70 -0
  130. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +3 -6
  131. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +4 -5
  132. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +5 -6
  133. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +10 -8
  134. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +27 -26
  135. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +8 -5
  136. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
  137. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +70 -0
  138. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +170 -0
  139. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +4 -5
  140. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +5 -4
  141. package/esm2022/libs/ui/inputs/src/index.mjs +3 -3
  142. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +10 -13
  143. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
  144. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +4 -3
  145. package/esm2022/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.mjs +7 -6
  146. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +29 -7
  147. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +5 -6
  148. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +5 -7
  149. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +43 -0
  150. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.mjs +2 -0
  151. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +73 -0
  152. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +8 -3
  153. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +4 -5
  154. package/esm2022/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.mjs +3 -3
  155. package/esm2022/libs/ui/layout/src/index.mjs +3 -2
  156. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +44 -3
  157. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +61 -14
  158. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  159. package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
  160. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
  161. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +4 -5
  162. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +26 -5
  163. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +4 -5
  164. package/esm2022/libs/ui/layout/src/lib/pagination/pagination.component.mjs +4 -5
  165. package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +6 -6
  166. package/esm2022/libs/ui/layout/src/lib/sticky-header/sticky-header.component.mjs +4 -3
  167. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +71 -0
  168. package/esm2022/libs/ui/map/src/index.mjs +2 -1
  169. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
  170. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +4 -5
  171. package/esm2022/libs/ui/map/src/lib/components/map-legend/map-legend.component.mjs +2 -2
  172. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +80 -0
  173. package/esm2022/libs/ui/search/src/index.mjs +3 -1
  174. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +6 -6
  175. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +17 -10
  176. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +3 -3
  177. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +53 -0
  178. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
  179. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  180. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +24 -17
  181. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +45 -20
  182. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +39 -26
  183. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  184. package/esm2022/libs/ui/widgets/src/lib/color-scale/color-scale.component.mjs +3 -3
  185. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
  186. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +6 -3
  187. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +3 -1
  188. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  189. package/esm2022/libs/util/i18n/src/index.mjs +2 -3
  190. package/esm2022/libs/util/i18n/src/lib/embedded.translate.loader.mjs +3 -2
  191. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +36 -28
  192. package/esm2022/libs/util/i18n/src/lib/i18n.interceptor.mjs +10 -9
  193. package/esm2022/libs/util/i18n/src/lib/i18n.providers.mjs +41 -0
  194. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +63 -3
  195. package/esm2022/libs/util/shared/src/index.mjs +3 -2
  196. package/esm2022/libs/util/shared/src/lib/gn-ui-version.mjs +6 -0
  197. package/esm2022/libs/util/shared/src/lib/image-fallback.directive.mjs +3 -2
  198. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
  199. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +27 -7
  200. package/esm2022/libs/util/shared/src/lib/record/index.mjs +3 -0
  201. package/esm2022/libs/util/shared/src/lib/record/quality-score.util.mjs +45 -0
  202. package/esm2022/libs/util/shared/src/lib/record/record.util.mjs +56 -0
  203. package/esm2022/translations/de.json +98 -24
  204. package/esm2022/translations/en.json +98 -24
  205. package/esm2022/translations/es.json +97 -23
  206. package/esm2022/translations/fr.json +100 -26
  207. package/esm2022/translations/it.json +97 -24
  208. package/esm2022/translations/nl.json +97 -23
  209. package/esm2022/translations/pt.json +97 -23
  210. package/esm2022/translations/sk.json +615 -0
  211. package/fesm2022/geonetwork-ui.mjs +12372 -9881
  212. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  213. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  214. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  215. package/libs/api/metadata-converter/src/lib/base.converter.d.ts.map +1 -1
  216. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  217. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +21 -0
  218. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
  219. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -1
  220. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +4 -4
  221. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  222. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
  223. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  224. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
  225. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  226. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  227. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  228. package/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.d.ts.map +1 -1
  229. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  230. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts +2 -0
  231. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts.map +1 -0
  232. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  233. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  234. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +9 -7
  235. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  236. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +14 -3
  237. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  238. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  239. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts +1 -0
  240. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  241. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts +4 -4
  242. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  243. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +10 -4
  244. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  245. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
  246. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  247. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +8 -1
  248. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
  249. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +26 -17
  250. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  251. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -1
  252. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  253. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +7 -1
  254. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  255. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +4 -8
  256. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  257. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts +3 -3
  258. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
  259. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +14 -9
  260. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  261. package/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.d.ts.map +1 -1
  262. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +3 -0
  263. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  264. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +6 -3
  265. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  266. package/libs/feature/editor/src/index.d.ts +2 -3
  267. package/libs/feature/editor/src/index.d.ts.map +1 -1
  268. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +8 -1
  269. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  270. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +10 -12
  271. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  272. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +2 -1
  273. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  274. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  275. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +1 -1
  276. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  277. package/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.d.ts.map +1 -1
  278. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  279. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  280. package/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.d.ts +19 -0
  281. package/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.d.ts.map +1 -0
  282. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +52 -0
  283. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -0
  284. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  285. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +6 -6
  286. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  287. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.d.ts.map +1 -1
  288. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -1
  289. 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
  290. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  291. 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
  292. 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
  293. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  294. 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
  295. 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
  296. 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
  297. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  298. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +10 -17
  299. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  300. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  301. package/libs/feature/editor/src/lib/models/index.d.ts +0 -2
  302. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  303. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  304. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  305. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  306. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  307. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  308. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -11
  309. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  310. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  311. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  312. package/libs/feature/record/src/index.d.ts +1 -3
  313. package/libs/feature/record/src/index.d.ts.map +1 -1
  314. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +23 -7
  315. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  316. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +2 -3
  317. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  318. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +1 -2
  319. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  320. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +2 -1
  321. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  322. package/libs/feature/record/src/lib/feature-record.module.d.ts +8 -12
  323. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  324. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
  325. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  326. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +22 -8
  327. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  328. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts +2 -2
  329. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +13 -3
  330. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  331. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +9 -1
  332. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  333. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +30 -23
  334. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  335. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +4 -2
  336. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  337. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +3 -1
  338. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  339. package/libs/feature/router/src/lib/default/constants.d.ts +2 -0
  340. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  341. package/libs/feature/router/src/lib/default/router.config.d.ts +2 -0
  342. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  343. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  344. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +5 -0
  345. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  346. package/libs/feature/search/src/index.d.ts +1 -1
  347. package/libs/feature/search/src/index.d.ts.map +1 -1
  348. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  349. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +2 -1
  350. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  351. package/libs/feature/search/src/lib/feature-search.module.d.ts +24 -22
  352. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  353. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  354. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  355. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -1
  356. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -1
  357. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +22 -0
  358. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -0
  359. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +5 -3
  360. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  361. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
  362. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  363. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts +1 -2
  364. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts.map +1 -1
  365. package/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.d.ts.map +1 -1
  366. package/libs/feature/search/src/lib/utils/service/fields.d.ts +22 -2
  367. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  368. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  369. package/libs/ui/dataviz/src/index.d.ts +0 -1
  370. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  371. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
  372. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
  373. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
  374. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  375. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -1
  376. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  377. package/libs/ui/elements/src/index.d.ts +6 -3
  378. package/libs/ui/elements/src/index.d.ts.map +1 -1
  379. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  380. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts +1 -1
  381. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts.map +1 -1
  382. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +2 -0
  383. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -1
  384. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +1 -1
  385. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  386. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -1
  387. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  388. package/libs/ui/elements/src/lib/{link-card/link-card.component.d.ts → external-link-card/external-link-card.component.d.ts} +5 -5
  389. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts.map +1 -0
  390. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
  391. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
  392. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +30 -0
  393. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -0
  394. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +14 -0
  395. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -0
  396. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  397. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +2 -2
  398. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  399. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +8 -4
  400. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  401. package/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.d.ts.map +1 -1
  402. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  403. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +27 -0
  404. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
  405. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +31 -0
  406. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -0
  407. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts +1 -1
  408. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts.map +1 -1
  409. package/libs/ui/inputs/src/index.d.ts +2 -2
  410. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  411. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +1 -2
  412. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  413. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  414. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  415. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts +1 -1
  416. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts.map +1 -1
  417. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts +1 -1
  418. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts.map +1 -1
  419. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts +1 -1
  420. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  421. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
  422. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +14 -0
  423. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -0
  424. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts +6 -0
  425. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts.map +1 -0
  426. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
  427. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
  428. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts +2 -1
  429. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  430. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts +1 -1
  431. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts.map +1 -1
  432. package/libs/ui/layout/src/index.d.ts +2 -1
  433. package/libs/ui/layout/src/index.d.ts.map +1 -1
  434. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +10 -3
  435. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  436. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +11 -3
  437. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -1
  438. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts +28 -0
  439. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts.map +1 -0
  440. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
  441. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
  442. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +5 -1
  443. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  444. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts +1 -1
  445. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts.map +1 -1
  446. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +22 -0
  447. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -0
  448. package/libs/ui/map/src/index.d.ts +1 -0
  449. package/libs/ui/map/src/index.d.ts.map +1 -1
  450. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
  451. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  452. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts +15 -0
  453. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -0
  454. package/libs/ui/search/src/index.d.ts +2 -0
  455. package/libs/ui/search/src/index.d.ts.map +1 -1
  456. package/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.d.ts +2 -0
  457. package/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.d.ts.map +1 -1
  458. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +17 -0
  459. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -0
  460. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  461. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -3
  462. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  463. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +10 -4
  464. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  465. package/libs/ui/search/src/lib/ui-search.module.d.ts +22 -19
  466. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  467. package/libs/ui/widgets/src/index.d.ts +0 -1
  468. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  469. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts +1 -1
  470. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts.map +1 -1
  471. package/libs/util/app-config/src/lib/app-config.d.ts +0 -1
  472. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  473. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  474. package/libs/util/app-config/src/lib/model.d.ts +2 -0
  475. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  476. package/libs/util/i18n/src/index.d.ts +1 -2
  477. package/libs/util/i18n/src/index.d.ts.map +1 -1
  478. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts +1 -1
  479. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts.map +1 -1
  480. package/libs/util/i18n/src/lib/i18n.constants.d.ts +6 -15
  481. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  482. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts +5 -5
  483. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts.map +1 -1
  484. package/libs/util/i18n/src/lib/i18n.providers.d.ts +4 -0
  485. package/libs/util/i18n/src/lib/i18n.providers.d.ts.map +1 -0
  486. package/libs/util/i18n/src/lib/language-codes.d.ts +15 -19
  487. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  488. package/libs/util/shared/src/index.d.ts +2 -1
  489. package/libs/util/shared/src/index.d.ts.map +1 -1
  490. package/libs/util/shared/src/lib/gn-ui-version.d.ts +3 -0
  491. package/libs/util/shared/src/lib/gn-ui-version.d.ts.map +1 -0
  492. package/libs/util/shared/src/lib/image-fallback.directive.d.ts +1 -1
  493. package/libs/util/shared/src/lib/image-fallback.directive.d.ts.map +1 -1
  494. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  495. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  496. package/libs/util/shared/src/lib/links/link-utils.d.ts +16 -8
  497. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  498. package/libs/util/shared/src/lib/record/index.d.ts +3 -0
  499. package/libs/util/shared/src/lib/record/index.d.ts.map +1 -0
  500. package/libs/util/shared/src/lib/record/quality-score.util.d.ts +13 -0
  501. package/libs/util/shared/src/lib/record/quality-score.util.d.ts.map +1 -0
  502. package/libs/util/shared/src/lib/record/record.util.d.ts +3 -0
  503. package/libs/util/shared/src/lib/record/record.util.d.ts.map +1 -0
  504. package/package.json +4 -4
  505. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  506. package/src/libs/api/metadata-converter/src/lib/base.converter.ts +1 -4
  507. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  508. package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +29 -15
  509. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +10 -1
  510. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +2 -2
  511. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/status.mapper.ts +3 -0
  512. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +2 -2
  513. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +3 -3
  514. package/src/libs/api/metadata-converter/src/lib/fixtures/metadata-for-i18n.records.ts +4240 -0
  515. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  516. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +2 -2
  517. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +81 -11
  518. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +4 -4
  519. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
  520. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +11 -5
  521. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -2
  522. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +14 -8
  523. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +12 -8
  524. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.ts +3 -0
  525. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +12 -7
  526. package/src/libs/api/metadata-converter/src/lib/translate-utils.ts +17 -0
  527. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +3 -6
  528. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +4 -1
  529. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +17 -17
  530. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +119 -16
  531. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +6 -0
  532. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +8 -7
  533. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +13 -6
  534. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +113 -69
  535. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
  536. package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +10 -1
  537. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +31 -11
  538. package/src/libs/common/domain/src/lib/platform.service.interface.ts +4 -1
  539. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +11 -1
  540. package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +0 -3
  541. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +36 -26
  542. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +16 -2
  543. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +5 -5
  544. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +114 -1
  545. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +4 -17
  546. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +7 -3
  547. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
  548. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +70 -13
  549. package/src/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.ts +2 -2
  550. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +49 -1
  551. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
  552. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +33 -3
  553. package/src/libs/feature/editor/src/index.ts +2 -3
  554. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +9 -1
  555. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +23 -12
  556. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +13 -1
  557. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +9 -1
  558. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.ts +3 -4
  559. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +5 -16
  560. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +7 -5
  561. package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.html +37 -0
  562. package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.ts +93 -0
  563. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +121 -0
  564. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +331 -0
  565. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +3 -12
  566. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +5 -4
  567. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.ts +3 -4
  568. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +2 -2
  569. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +4 -11
  570. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +6 -9
  571. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +2 -17
  572. 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
  573. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -2
  574. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +2 -2
  575. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +2 -2
  576. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +2 -2
  577. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +4 -4
  578. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +2 -2
  579. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +2 -2
  580. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +2 -15
  581. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -2
  582. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +4 -17
  583. package/src/libs/feature/editor/src/lib/fields.config.ts +0 -2
  584. package/src/libs/feature/editor/src/lib/models/index.ts +0 -2
  585. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +2 -1
  586. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +8 -3
  587. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +10 -3
  588. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +8 -2
  589. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +8 -2
  590. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -17
  591. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +3 -8
  592. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +3 -2
  593. package/src/libs/feature/record/src/index.ts +1 -3
  594. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +19 -11
  595. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +56 -30
  596. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +4 -5
  597. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
  598. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +2 -2
  599. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +6 -7
  600. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.html +2 -2
  601. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +3 -2
  602. package/src/libs/feature/record/src/lib/feature-record.module.ts +4 -13
  603. package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +4 -3
  604. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +10 -4
  605. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +43 -13
  606. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +189 -25
  607. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -2
  608. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +12 -2
  609. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +31 -3
  610. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +23 -19
  611. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +14 -2
  612. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
  613. package/src/libs/feature/router/src/lib/default/constants.ts +2 -0
  614. package/src/libs/feature/router/src/lib/default/router.config.ts +2 -0
  615. package/src/libs/feature/router/src/lib/default/router.service.ts +10 -0
  616. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +10 -1
  617. package/src/libs/feature/search/src/index.ts +1 -1
  618. package/src/libs/feature/search/src/lib/constants.ts +3 -1
  619. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +2 -7
  620. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +16 -7
  621. package/src/libs/feature/search/src/lib/feature-search.module.ts +17 -23
  622. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
  623. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +5 -0
  624. package/src/libs/feature/search/src/lib/record-url.token.ts +10 -1
  625. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +17 -0
  626. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +60 -0
  627. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.css +6 -0
  628. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +1 -0
  629. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +26 -5
  630. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  631. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
  632. package/src/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.ts +10 -4
  633. package/src/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.ts +2 -2
  634. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +4 -5
  635. package/src/libs/feature/search/src/lib/utils/service/fields.ts +103 -3
  636. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  637. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  638. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +2 -2
  639. package/src/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.ts +2 -2
  640. package/src/libs/ui/dataviz/src/index.ts +0 -1
  641. package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
  642. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
  643. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +12 -6
  644. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +0 -1
  645. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +4 -0
  646. package/src/libs/ui/elements/src/index.ts +6 -3
  647. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -4
  648. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +3 -2
  649. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +6 -6
  650. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +2 -2
  651. package/src/libs/ui/elements/src/lib/avatar/avatar.component.ts +3 -0
  652. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +6 -2
  653. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +5 -1
  654. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +8 -5
  655. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +4 -4
  656. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +42 -11
  657. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +28 -4
  658. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -2
  659. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.css +0 -0
  660. package/src/libs/ui/elements/src/lib/{link-card/link-card.component.html → external-link-card/external-link-card.component.html} +5 -2
  661. package/src/libs/ui/elements/src/lib/{link-card/link-card.component.ts → external-link-card/external-link-card.component.ts} +9 -13
  662. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
  663. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
  664. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
  665. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +2 -2
  666. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  667. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +88 -0
  668. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.scss +115 -0
  669. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +102 -0
  670. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.css +6 -0
  671. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +15 -0
  672. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +72 -0
  673. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -4
  674. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +3 -5
  675. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.ts +2 -2
  676. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +12 -9
  677. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +2 -2
  678. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +9 -0
  679. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +24 -7
  680. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +11 -6
  681. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +21 -21
  682. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +27 -22
  683. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +6 -2
  684. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +6 -3
  685. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +107 -0
  686. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +82 -0
  687. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.css +0 -0
  688. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +110 -0
  689. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +196 -0
  690. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  691. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.ts +4 -0
  692. package/src/libs/ui/inputs/src/index.ts +2 -2
  693. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +3 -3
  694. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +6 -9
  695. package/src/libs/ui/inputs/src/lib/button/button.component.ts +2 -2
  696. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.ts +3 -0
  697. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.html +1 -1
  698. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.ts +4 -0
  699. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  700. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +27 -0
  701. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -1
  702. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +2 -2
  703. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +3 -4
  704. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.html +23 -0
  705. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +47 -0
  706. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.ts +5 -0
  707. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css +0 -0
  708. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
  709. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +83 -0
  710. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +0 -1
  711. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +11 -8
  712. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +4 -1
  713. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +2 -2
  714. package/src/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.ts +1 -0
  715. package/src/libs/ui/layout/src/index.ts +2 -1
  716. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +47 -2
  717. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +22 -0
  718. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +2 -3
  719. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +57 -9
  720. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -1
  721. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -1
  722. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
  723. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
  724. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
  725. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
  726. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +2 -2
  727. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +4 -7
  728. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +22 -2
  729. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.html +1 -1
  730. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.ts +2 -2
  731. package/src/libs/ui/layout/src/lib/pagination/pagination.component.ts +2 -2
  732. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +17 -5
  733. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +3 -3
  734. package/src/libs/ui/layout/src/lib/sticky-header/sticky-header.component.ts +3 -0
  735. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +27 -0
  736. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +84 -0
  737. package/src/libs/ui/map/src/index.ts +1 -0
  738. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
  739. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
  740. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +2 -2
  741. package/src/libs/ui/map/src/lib/components/map-legend/map-legend.component.ts +1 -1
  742. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.css +0 -0
  743. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.html +4 -0
  744. package/src/libs/{feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts → ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts} +8 -8
  745. package/src/libs/ui/search/src/index.ts +2 -0
  746. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.html +4 -1
  747. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
  748. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.ts +14 -1
  749. package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.html +1 -1
  750. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +25 -0
  751. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +53 -0
  752. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
  753. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
  754. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
  755. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +16 -6
  756. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +18 -15
  757. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
  758. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +29 -24
  759. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +49 -17
  760. package/src/libs/ui/search/src/lib/ui-search.module.ts +19 -10
  761. package/src/libs/ui/widgets/src/index.ts +0 -1
  762. package/src/libs/ui/widgets/src/lib/color-scale/color-scale.component.ts +1 -0
  763. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +4 -3
  764. package/src/libs/util/app-config/src/lib/app-config.ts +6 -2
  765. package/src/libs/util/app-config/src/lib/fixtures.ts +2 -0
  766. package/src/libs/util/app-config/src/lib/model.ts +2 -0
  767. package/src/libs/util/i18n/src/index.ts +1 -2
  768. package/src/libs/util/i18n/src/lib/embedded.translate.loader.ts +4 -3
  769. package/src/libs/util/i18n/src/lib/i18n.constants.ts +39 -29
  770. package/src/libs/util/i18n/src/lib/i18n.interceptor.ts +11 -9
  771. package/src/libs/util/i18n/src/lib/i18n.providers.ts +68 -0
  772. package/src/libs/util/i18n/src/lib/language-codes.ts +67 -2
  773. package/src/libs/util/shared/src/index.ts +2 -1
  774. package/src/libs/util/shared/src/lib/gn-ui-version.ts +8 -0
  775. package/src/libs/util/shared/src/lib/image-fallback.directive.ts +1 -0
  776. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +15 -3
  777. package/src/libs/util/shared/src/lib/links/link-utils.ts +44 -13
  778. package/src/libs/util/shared/src/lib/record/index.ts +2 -0
  779. package/src/libs/util/shared/src/lib/record/quality-score.util.ts +69 -0
  780. package/src/libs/util/shared/src/lib/record/record.util.ts +114 -0
  781. package/tailwind.base.config.js +3 -0
  782. package/tailwind.base.css +24 -26
  783. package/translations/de.json +98 -24
  784. package/translations/en.json +98 -24
  785. package/translations/es.json +97 -23
  786. package/translations/fr.json +100 -26
  787. package/translations/it.json +97 -24
  788. package/translations/nl.json +97 -23
  789. package/translations/pt.json +97 -23
  790. package/translations/sk.json +97 -23
  791. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +0 -79
  792. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +0 -44
  793. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +0 -75
  794. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +0 -160
  795. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +0 -53
  796. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.model.mjs +0 -2
  797. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +0 -8
  798. package/esm2022/libs/feature/editor/src/lib/services/wizard.service.mjs +0 -87
  799. package/esm2022/libs/feature/record/src/lib/gn-ui-version.token.mjs +0 -3
  800. package/esm2022/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +0 -18
  801. package/esm2022/libs/ui/dataviz/src/lib/ui-dataviz.module.mjs +0 -47
  802. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +0 -60
  803. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +0 -46
  804. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +0 -106
  805. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +0 -16
  806. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +0 -161
  807. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +0 -31
  808. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +0 -46
  809. package/esm2022/libs/util/i18n/src/lib/lang.service.mjs +0 -31
  810. package/esm2022/libs/util/i18n/src/lib/util-i18n.module.mjs +0 -37
  811. package/esm2022/libs/util/shared/src/lib/util-shared.module.mjs +0 -18
  812. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +0 -15
  813. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +0 -1
  814. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +0 -14
  815. 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
  816. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts +0 -31
  817. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts.map +0 -1
  818. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +0 -43
  819. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +0 -1
  820. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +0 -17
  821. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +0 -1
  822. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts +0 -10
  823. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts.map +0 -1
  824. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +0 -7
  825. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +0 -1
  826. package/libs/feature/editor/src/lib/services/wizard.service.d.ts +0 -33
  827. package/libs/feature/editor/src/lib/services/wizard.service.d.ts.map +0 -1
  828. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts +0 -3
  829. package/libs/feature/record/src/lib/gn-ui-version.token.d.ts.map +0 -1
  830. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts +0 -9
  831. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts.map +0 -1
  832. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts +0 -11
  833. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts.map +0 -1
  834. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +0 -1
  835. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +0 -12
  836. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +0 -1
  837. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +0 -27
  838. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +0 -1
  839. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts +0 -8
  840. package/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.d.ts.map +0 -1
  841. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +0 -34
  842. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +0 -1
  843. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +0 -12
  844. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +0 -1
  845. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +0 -15
  846. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +0 -1
  847. package/libs/util/i18n/src/lib/lang.service.d.ts +0 -13
  848. package/libs/util/i18n/src/lib/lang.service.d.ts.map +0 -1
  849. package/libs/util/i18n/src/lib/util-i18n.module.d.ts +0 -12
  850. package/libs/util/i18n/src/lib/util-i18n.module.d.ts.map +0 -1
  851. package/libs/util/shared/src/lib/util-shared.module.d.ts +0 -9
  852. package/libs/util/shared/src/lib/util-shared.module.d.ts.map +0 -1
  853. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +0 -1
  854. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.css +0 -5
  855. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +0 -22
  856. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.ts +0 -93
  857. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.css +0 -31
  858. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -62
  859. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -206
  860. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.css +0 -3
  861. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.html +0 -21
  862. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +0 -58
  863. package/src/libs/feature/editor/src/lib/models/wizard-field.model.ts +0 -10
  864. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -6
  865. package/src/libs/feature/editor/src/lib/services/wizard.service.ts +0 -105
  866. package/src/libs/feature/record/src/lib/gn-ui-version.token.ts +0 -3
  867. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.html +0 -4
  868. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.ts +0 -10
  869. package/src/libs/ui/dataviz/src/lib/ui-dataviz.module.ts +0 -27
  870. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +0 -30
  871. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +0 -48
  872. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -61
  873. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +0 -3
  874. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +0 -9
  875. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.ts +0 -15
  876. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -96
  877. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -18
  878. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -25
  879. package/src/libs/util/i18n/src/lib/lang.service.ts +0 -23
  880. package/src/libs/util/i18n/src/lib/util-i18n.module.ts +0 -26
  881. package/src/libs/util/shared/src/lib/util-shared.module.ts +0 -10
  882. /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-map-container/form-field-map-container.component.css → metadata-quality-panel/metadata-quality-panel.component.css} +0 -0
  883. /package/src/libs/{ui/elements/src/lib/link-card/link-card.component.css → feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.css} +0 -0
  884. /package/src/libs/{ui/elements/src/lib/related-record-card/related-record-card.component.css → feature/search/src/lib/results-hits/results-hits.container.component.css} +0 -0
@@ -4,16 +4,16 @@ import { Injectable } from '@angular/core';
4
4
  import { getStatusFromStatusCode } from '../iso19139/utils/status.mapper';
5
5
  import { getUpdateFrequencyFromFrequencyCode } from '../iso19139/utils/update-frequency.mapper';
6
6
  import { matchProtocol } from '../common/distribution.mapper';
7
- import { LANG_3_TO_2_MAPPER, LangService } from '../../../../../../libs/util/i18n/src';
8
7
  import { getResourceType, getReuseType } from '../common/resource-types';
8
+ import { TranslateService } from '@ngx-translate/core';
9
+ import { getLang2FromLang3, getLocalizedIndexKey, } from '../../../../../../libs/util/i18n/src';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "./metadata-url.service";
11
- import * as i2 from "../../../../../../libs/util/i18n/src";
12
+ import * as i2 from "@ngx-translate/core";
12
13
  export class Gn4FieldMapper {
13
- constructor(metadataUrlService, langService) {
14
+ constructor(metadataUrlService, translateService) {
14
15
  this.metadataUrlService = metadataUrlService;
15
- this.langService = langService;
16
- this.lang3 = this.langService.gnLang;
16
+ this.translateService = translateService;
17
17
  this.fields = {
18
18
  id: (output, source) => this.addExtra({ id: selectField(source, 'id') }, output),
19
19
  uuid: (output, source) => {
@@ -84,12 +84,20 @@ export class Gn4FieldMapper {
84
84
  }),
85
85
  resourceLanguage: (output, source) => {
86
86
  const langList = getAsArray(selectField(source, 'resourceLanguage'));
87
- const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
87
+ const languages = langList.map(getLang2FromLang3);
88
88
  const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null; // set the first language as main one as fallback
89
- const otherLanguages = languages.filter((lang) => lang !== defaultLanguage);
90
89
  return {
91
90
  ...output,
92
91
  defaultLanguage,
92
+ };
93
+ },
94
+ otherLanguage: (output, source) => {
95
+ const langList = getAsArray(selectField(source, 'otherLanguage'));
96
+ const languages = langList.map(getLang2FromLang3);
97
+ const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null;
98
+ const otherLanguages = languages.filter((lang) => lang !== defaultLanguage);
99
+ return {
100
+ ...output,
93
101
  otherLanguages,
94
102
  };
95
103
  },
@@ -97,7 +105,7 @@ export class Gn4FieldMapper {
97
105
  const language = selectField(source, 'mainLanguage');
98
106
  return {
99
107
  ...output,
100
- defaultLanguage: language ? LANG_3_TO_2_MAPPER[language] : null,
108
+ defaultLanguage: language ? getLang2FromLang3(language) : null,
101
109
  };
102
110
  },
103
111
  link: (output, source) => {
@@ -163,13 +171,40 @@ export class Gn4FieldMapper {
163
171
  related: (output, source) => {
164
172
  const fcatSource = selectField(getFirstValue(selectField(selectField(source, 'related'), 'fcats')) ?? {}, '_source');
165
173
  const featureCatalogIdentifier = selectField(fcatSource, 'uuid');
166
- return featureCatalogIdentifier
167
- ? this.addExtra({ featureCatalogIdentifier }, output)
174
+ const sourceOfLinks = getAsArray(selectField(selectField(source, 'related'), 'hassources'));
175
+ const sourceOfIdentifiers = sourceOfLinks
176
+ .filter((link) => link['origin'] === 'catalog')
177
+ .map((link) => {
178
+ return selectField(selectField(link, '_source'), 'uuid');
179
+ });
180
+ const extraValues = {};
181
+ if (featureCatalogIdentifier) {
182
+ extraValues.featureCatalogIdentifier = featureCatalogIdentifier;
183
+ }
184
+ if (sourceOfIdentifiers && sourceOfIdentifiers.length > 0) {
185
+ extraValues.sourceOfIdentifiers = sourceOfIdentifiers;
186
+ }
187
+ return Object.keys(extraValues).length > 0
188
+ ? this.addExtra(extraValues, output)
189
+ : output;
190
+ },
191
+ recordLink: (output, source) => {
192
+ const recordLinks = getAsArray(selectField(source, 'recordLink'));
193
+ const sourcesIdentifiers = recordLinks
194
+ .filter((link) => link['origin'] === 'catalog' && link['type'] === 'sources')
195
+ .map((link) => selectField(link, 'to'));
196
+ return sourcesIdentifiers && sourcesIdentifiers.length > 0
197
+ ? this.addExtra({
198
+ sourcesIdentifiers,
199
+ }, output)
168
200
  : output;
169
201
  },
170
202
  isPublishedToAll: (output, source) => this.addExtra({
171
203
  isPublishedToAll: selectField(source, 'isPublishedToAll'),
172
204
  }, output),
205
+ isHarvested: (output, source) => this.addExtra({
206
+ isHarvested: selectField(source, 'isHarvested') !== 'false',
207
+ }, output),
173
208
  edit: (output, source) => this.addExtra({
174
209
  edit: selectField(source, 'edit'),
175
210
  }, output),
@@ -257,6 +292,10 @@ export class Gn4FieldMapper {
257
292
  const url = getAsUrl(selectFallback(selectTranslatedField(sourceLink, 'urlObject', this.lang3), selectField(sourceLink, 'url')));
258
293
  const name = selectFallback(selectTranslatedField(sourceLink, 'nameObject', this.lang3), selectField(sourceLink, 'name'));
259
294
  const description = selectFallback(selectTranslatedField(sourceLink, 'descriptionObject', this.lang3), selectField(sourceLink, 'description'));
295
+ const descriptionLink = selectField(sourceLink, 'descriptionObject');
296
+ const accessRestricted = descriptionLink &&
297
+ 'link' in descriptionLink &&
298
+ descriptionLink.link.toString().includes('#MD_RestrictionCode_restricted');
260
299
  // no url: fail early
261
300
  if (url === null) {
262
301
  // TODO: collect errors at the record level?
@@ -279,6 +318,7 @@ export class Gn4FieldMapper {
279
318
  type,
280
319
  url: url,
281
320
  accessServiceProtocol,
321
+ accessRestricted: accessRestricted,
282
322
  };
283
323
  case 'link':
284
324
  return {
@@ -297,8 +337,8 @@ export class Gn4FieldMapper {
297
337
  return {
298
338
  ...distribution,
299
339
  type,
300
- endpointUrl: url,
301
- protocol: accessServiceProtocol,
340
+ url: url,
341
+ accessServiceProtocol: accessServiceProtocol,
302
342
  };
303
343
  }
304
344
  };
@@ -307,6 +347,9 @@ export class Gn4FieldMapper {
307
347
  extras: { ...(output.extras || {}), ...value },
308
348
  });
309
349
  }
350
+ get lang3() {
351
+ return getLocalizedIndexKey(this.translateService.currentLang);
352
+ }
310
353
  getMappingFn(fieldName) {
311
354
  return fieldName in this.fields ? this.fields[fieldName] : this.genericField;
312
355
  }
@@ -318,6 +361,7 @@ export class Gn4FieldMapper {
318
361
  /^OGC:WMS/.test(protocol) ||
319
362
  /^OGC:WFS/.test(protocol) ||
320
363
  /^OGC:WMTS/.test(protocol) ||
364
+ /TMS/i.test(protocol) ||
321
365
  /ogc\W*api\W*features/i.test(protocol) ||
322
366
  (/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
323
367
  ) {
@@ -328,7 +372,7 @@ export class Gn4FieldMapper {
328
372
  }
329
373
  return 'link';
330
374
  }
331
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4FieldMapper, deps: [{ token: i1.MetadataUrlService }, { token: i2.LangService }], target: i0.ɵɵFactoryTarget.Injectable }); }
375
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4FieldMapper, deps: [{ token: i1.MetadataUrlService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
332
376
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4FieldMapper, providedIn: 'root' }); }
333
377
  }
334
378
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4FieldMapper, decorators: [{
@@ -336,5 +380,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
336
380
  args: [{
337
381
  providedIn: 'root',
338
382
  }]
339
- }], ctorParameters: () => [{ type: i1.MetadataUrlService }, { type: i2.LangService }] });
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LmZpZWxkLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2duNC9nbjQuZmllbGQubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIscUJBQXFCLEVBRXJCLE1BQU0sR0FDUCxNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDekUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFRL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFBOzs7O0FBWXhFLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQ1Usa0JBQXNDLEVBQ3RDLFdBQXdCO1FBRHhCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFHMUIsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFBO1FBRTdCLFdBQU0sR0FBb0M7WUFDbEQsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3JCLElBQUks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QUFXLENBQUMsR0FBVyxFQUFFLFFBQWlCO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQztRQUNELElBQ0UsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUQsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDekIsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDekIsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDMUIsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN0QyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMscURBQXFEO1VBQ3BILENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxVQUFVLENBQUE7UUFDbkIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQzsrR0FoWlUsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBnZXRBcnJheUl0ZW0sXG4gIGdldEFzQXJyYXksXG4gIGdldEFzVXJsLFxuICBnZXRGaXJzdFZhbHVlLFxuICBtYXBDb250YWN0LFxuICBtYXBLZXl3b3JkcyxcbiAgc2VsZWN0RmFsbGJhY2ssXG4gIHNlbGVjdEZhbGxiYWNrRmllbGRzLFxuICBzZWxlY3RGaWVsZCxcbiAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkLFxuICBzZWxlY3RUcmFuc2xhdGVkVmFsdWUsXG4gIFNvdXJjZVdpdGhVbmtub3duUHJvcHMsXG4gIHRvRGF0ZSxcbn0gZnJvbSAnLi9hdG9taWMtb3BlcmF0aW9ucydcbmltcG9ydCB7IE1ldGFkYXRhVXJsU2VydmljZSB9IGZyb20gJy4vbWV0YWRhdGEtdXJsLnNlcnZpY2UnXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IGdldFN0YXR1c0Zyb21TdGF0dXNDb2RlIH0gZnJvbSAnLi4vaXNvMTkxMzkvdXRpbHMvc3RhdHVzLm1hcHBlcidcbmltcG9ydCB7IGdldFVwZGF0ZUZyZXF1ZW5jeUZyb21GcmVxdWVuY3lDb2RlIH0gZnJvbSAnLi4vaXNvMTkxMzkvdXRpbHMvdXBkYXRlLWZyZXF1ZW5jeS5tYXBwZXInXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBDb25zdHJhaW50LFxuICBEYXRhc2V0U3BhdGlhbEV4dGVudCxcbiAgT25saW5lUmVzb3VyY2UsXG4gIE9ubGluZVJlc291cmNlVHlwZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgbWF0Y2hQcm90b2NvbCB9IGZyb20gJy4uL2NvbW1vbi9kaXN0cmlidXRpb24ubWFwcGVyJ1xuaW1wb3J0IHsgVGhlc2F1cnVzIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IExBTkdfM19UT18yX01BUFBFUiwgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5pbXBvcnQgeyBnZXRSZXNvdXJjZVR5cGUsIGdldFJldXNlVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9yZXNvdXJjZS10eXBlcydcblxudHlwZSBFU1Jlc3BvbnNlU291cmNlID0gU291cmNlV2l0aFVua25vd25Qcm9wc1xuXG50eXBlIEVzRmllbGRNYXBwZXJGbiA9IChcbiAgb3V0cHV0OiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+LFxuICBzb3VyY2U6IEVTUmVzcG9uc2VTb3VyY2VcbikgPT4gUGFydGlhbDxDYXRhbG9nUmVjb3JkPlxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR240RmllbGRNYXBwZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1ldGFkYXRhVXJsU2VydmljZTogTWV0YWRhdGFVcmxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ1NlcnZpY2U6IExhbmdTZXJ2aWNlXG4gICkge31cblxuICBwcml2YXRlIGxhbmczID0gdGhpcy5sYW5nU2VydmljZS5nbkxhbmdcblxuICBwcm90ZWN0ZWQgZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBFc0ZpZWxkTWFwcGVyRm4+ID0ge1xuICAgIGlkOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKHsgaWQ6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2lkJykgfSwgb3V0cHV0KSxcbiAgICB1dWlkOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHV1aWQgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3V1aWQnKVxuICAgICAgY29uc3QgbGFuZGluZ1BhZ2UgPSBnZXRBc1VybCh0aGlzLm1ldGFkYXRhVXJsU2VydmljZS5nZXRVcmwodXVpZCkpXG4gICAgICByZXR1cm4geyAuLi5vdXRwdXQsIHVuaXF1ZUlkZW50aWZpZXI6IHV1aWQsIGxhbmRpbmdQYWdlIH1cbiAgICB9LFxuICAgIHF1YWxpdHlTY29yZTogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAgeyBxdWFsaXR5U2NvcmU6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3F1YWxpdHlTY29yZScpIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICByZXNvdXJjZVRpdGxlT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICB0aXRsZTogc2VsZWN0RmFsbGJhY2soXG4gICAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZChzb3VyY2UsICdyZXNvdXJjZVRpdGxlT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICAgICdubyB0aXRsZSdcbiAgICAgICksXG4gICAgfSksXG4gICAgcmVzb3VyY2VBYnN0cmFjdE9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgYWJzdHJhY3Q6IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQoc291cmNlLCAncmVzb3VyY2VBYnN0cmFjdE9iamVjdCcsIHRoaXMubGFuZzMpLFxuICAgICAgICAnbm8gdGl0bGUnXG4gICAgICApLFxuICAgIH0pLFxuICAgIG92ZXJ2aWV3OiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0T3ZlcnZpZXcgPSBnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgJ292ZXJ2aWV3JykpXG4gICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZTxzdHJpbmc+KFxuICAgICAgICBzZWxlY3RGaWVsZChmaXJzdE92ZXJ2aWV3LCAndGV4dCcpLFxuICAgICAgICB0aGlzLmxhbmczXG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIG92ZXJ2aWV3czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVybDogZ2V0QXNVcmwoc2VsZWN0RmFsbGJhY2tGaWVsZHMoZmlyc3RPdmVydmlldywgJ3VybCcsICdkYXRhJykpLFxuICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uID8geyBkZXNjcmlwdGlvbiB9IDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgfSxcbiAgICBjbF90b3BpYzogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdG9waWNzOiBbXG4gICAgICAgIC4uLihvdXRwdXQudG9waWNzIHx8IFtdKSxcbiAgICAgICAgLi4uZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZDxTb3VyY2VXaXRoVW5rbm93blByb3BzW10+KHNvdXJjZSwgJ2NsX3RvcGljJylcbiAgICAgICAgKS5tYXAoKHRvcGljKSA9PiBzZWxlY3RUcmFuc2xhdGVkVmFsdWU8c3RyaW5nPih0b3BpYywgdGhpcy5sYW5nMykpLFxuICAgICAgXSxcbiAgICB9KSxcbiAgICBjbF9zdGF0dXM6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHN0YXR1czogZ2V0U3RhdHVzRnJvbVN0YXR1c0NvZGUoXG4gICAgICAgIHNlbGVjdEZpZWxkKGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAnY2xfc3RhdHVzJykpLCAna2V5JylcbiAgICAgICksXG4gICAgfSksXG4gICAgY2xfbWFpbnRlbmFuY2VBbmRVcGRhdGVGcmVxdWVuY3k6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHVwZGF0ZUZyZXF1ZW5jeTogZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUZyZXF1ZW5jeUNvZGUoXG4gICAgICAgIHNlbGVjdEZpZWxkKFxuICAgICAgICAgIGdldEZpcnN0VmFsdWUoXG4gICAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdjbF9tYWludGVuYW5jZUFuZFVwZGF0ZUZyZXF1ZW5jeScpXG4gICAgICAgICAgKSxcbiAgICAgICAgICAna2V5J1xuICAgICAgICApXG4gICAgICApLFxuICAgIH0pLFxuICAgIGNyZWF0aW9uRGF0ZUZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZXNvdXJjZUNyZWF0ZWQ6IHRvRGF0ZShcbiAgICAgICAgZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ2NyZWF0aW9uRGF0ZUZvclJlc291cmNlJykpXG4gICAgICApLFxuICAgIH0pLFxuICAgIHJldmlzaW9uRGF0ZUZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZXNvdXJjZVVwZGF0ZWQ6IHRvRGF0ZShcbiAgICAgICAgZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3JldmlzaW9uRGF0ZUZvclJlc291cmNlJykpXG4gICAgICApLFxuICAgIH0pLFxuICAgIHB1YmxpY2F0aW9uRGF0ZUZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZXNvdXJjZVB1Ymxpc2hlZDogdG9EYXRlKFxuICAgICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3B1YmxpY2F0aW9uRGF0ZUZvclJlc291cmNlJylcbiAgICAgICksXG4gICAgfSksXG4gICAgY3JlYXRlRGF0ZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVjb3JkQ3JlYXRlZDogdG9EYXRlKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAnY3JlYXRlRGF0ZScpKSxcbiAgICB9KSxcbiAgICBjaGFuZ2VEYXRlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZWNvcmRVcGRhdGVkOiB0b0RhdGUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdjaGFuZ2VEYXRlJykpLFxuICAgIH0pLFxuICAgIHB1YmxpY2F0aW9uRGF0ZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVjb3JkUHVibGlzaGVkOiB0b0RhdGUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdwdWJsaWNhdGlvbkRhdGUnKSksXG4gICAgfSksXG4gICAgcmVzb3VyY2VMYW5ndWFnZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBsYW5nTGlzdCA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAncmVzb3VyY2VMYW5ndWFnZScpXG4gICAgICApXG4gICAgICBjb25zdCBsYW5ndWFnZXMgPSBsYW5nTGlzdC5tYXAoKGxhbmcpID0+IExBTkdfM19UT18yX01BUFBFUltsYW5nXSlcbiAgICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IG91dHB1dC5kZWZhdWx0TGFuZ3VhZ2UgPz8gbGFuZ3VhZ2VzWzBdID8/IG51bGwgLy8gc2V0IHRoZSBmaXJzdCBsYW5ndWFnZSBhcyBtYWluIG9uZSBhcyBmYWxsYmFja1xuICAgICAgY29uc3Qgb3RoZXJMYW5ndWFnZXMgPSBsYW5ndWFnZXMuZmlsdGVyKFxuICAgICAgICAobGFuZykgPT4gbGFuZyAhPT0gZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZSxcbiAgICAgICAgb3RoZXJMYW5ndWFnZXMsXG4gICAgICB9XG4gICAgfSxcbiAgICBtYWluTGFuZ3VhZ2U6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ21haW5MYW5ndWFnZScpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZTogbGFuZ3VhZ2UgPyBMQU5HXzNfVE9fMl9NQVBQRVJbbGFuZ3VhZ2VdIDogbnVsbCxcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpbms6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgcmF3TGlua3MgPSBnZXRBc0FycmF5KFxuICAgICAgICBzZWxlY3RGaWVsZDxTb3VyY2VXaXRoVW5rbm93blByb3BzW10+KHNvdXJjZSwgJ2xpbmsnKVxuICAgICAgKVxuICAgICAgY29uc3Qgb25saW5lUmVzb3VyY2VzID0gcmF3TGlua3NcbiAgICAgICAgLm1hcCgobGluaykgPT4gdGhpcy5tYXBMaW5rKGxpbmspKVxuICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ICE9PSBudWxsKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBvbmxpbmVSZXNvdXJjZXMsXG4gICAgICB9IGFzIENhdGFsb2dSZWNvcmRcbiAgICB9LFxuICAgIGNvbnRhY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGNvbnRhY3RzOiBbXG4gICAgICAgIG1hcENvbnRhY3QoZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZChzb3VyY2UsICdjb250YWN0JykpLCB0aGlzLmxhbmczKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgY29udGFjdEZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBjb250YWN0c0ZvclJlc291cmNlOiBbXG4gICAgICAgIC4uLignY29udGFjdHNGb3JSZXNvdXJjZScgaW4gb3V0cHV0ICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkob3V0cHV0LmNvbnRhY3RzRm9yUmVzb3VyY2UpXG4gICAgICAgICAgPyBvdXRwdXQuY29udGFjdHNGb3JSZXNvdXJjZVxuICAgICAgICAgIDogW10pLFxuICAgICAgICAuLi5nZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NvbnRhY3RGb3JSZXNvdXJjZScpKS5tYXAoXG4gICAgICAgICAgKGNvbnRhY3QpID0+IG1hcENvbnRhY3QoY29udGFjdCwgdGhpcy5sYW5nMylcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgc291cmNlQ2F0YWxvZ3VlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgY2F0YWxvZ1V1aWQ6IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnc291cmNlQ2F0YWxvZ3VlJyksXG4gICAgICAgICAgICAnbm8gdGl0bGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApXG4gICAgfSxcbiAgICBhbGxLZXl3b3JkczogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAga2V5d29yZHM6IG1hcEtleXdvcmRzKFxuICAgICAgICBzZWxlY3RGaWVsZDxUaGVzYXVydXNbXT4oc291cmNlLCAnYWxsS2V5d29yZHMnKSxcbiAgICAgICAgdGhpcy5sYW5nM1xuICAgICAgKSxcbiAgICB9KSxcbiAgICBpbnNwaXJlVGhlbWU6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHRvcGljczogW1xuICAgICAgICAuLi4ob3V0cHV0LnRvcGljcyB8fCBbXSksXG4gICAgICAgIC4uLmdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnaW5zcGlyZVRoZW1lX3N5bicpKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgTURfQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ290aGVyJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX0NvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdCcpKVxuICAgICAgKSxcbiAgICBNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdsZWdhbCcsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdCcpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgTURfTGVnYWxDb25zdHJhaW50c090aGVyQ29uc3RyYWludHNPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnbGVnYWwnLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnTURfTGVnYWxDb25zdHJhaW50c090aGVyQ29uc3RyYWludHNPYmplY3QnKVxuICAgICAgICApXG4gICAgICApLFxuICAgIE1EX1NlY3VyaXR5Q29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ3NlY3VyaXR5JyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KFxuICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX1NlY3VyaXR5Q29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0JylcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBsaWNlbnNlT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ2xpY2Vuc2UnLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnbGljZW5zZU9iamVjdCcpKVxuICAgICAgKSxcbiAgICBsaW5lYWdlT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBsaW5lYWdlOiBzZWxlY3RUcmFuc2xhdGVkRmllbGQoc291cmNlLCAnbGluZWFnZU9iamVjdCcsIHRoaXMubGFuZzMpLFxuICAgIH0pLFxuICAgIHVzZXJTYXZlZENvdW50OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgZmF2b3JpdGVDb3VudDogcGFyc2VJbnQoc2VsZWN0RmllbGQoc291cmNlLCAndXNlclNhdmVkQ291bnQnKSksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICBpc09wZW5EYXRhOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgaXNPcGVuRGF0YTogc2VsZWN0RmllbGQoc291cmNlLCAnaXNPcGVuRGF0YScpICE9PSAnZmFsc2UnLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgZmVhdHVyZVR5cGVzOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgZmVhdHVyZVR5cGVzOiBzZWxlY3RGaWVsZChzb3VyY2UsICdmZWF0dXJlVHlwZXMnKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIHJlbGF0ZWQ6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgZmNhdFNvdXJjZSA9IHNlbGVjdEZpZWxkKFxuICAgICAgICBnZXRGaXJzdFZhbHVlKFxuICAgICAgICAgIHNlbGVjdEZpZWxkKFxuICAgICAgICAgICAgPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+c2VsZWN0RmllbGQoc291cmNlLCAncmVsYXRlZCcpLFxuICAgICAgICAgICAgJ2ZjYXRzJ1xuICAgICAgICAgIClcbiAgICAgICAgKSA/PyB7fSxcbiAgICAgICAgJ19zb3VyY2UnXG4gICAgICApXG4gICAgICBjb25zdCBmZWF0dXJlQ2F0YWxvZ0lkZW50aWZpZXIgPSBzZWxlY3RGaWVsZChcbiAgICAgICAgPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+ZmNhdFNvdXJjZSxcbiAgICAgICAgJ3V1aWQnXG4gICAgICApXG4gICAgICByZXR1cm4gZmVhdHVyZUNhdGFsb2dJZGVudGlmaWVyXG4gICAgICAgID8gdGhpcy5hZGRFeHRyYSh7IGZlYXR1cmVDYXRhbG9nSWRlbnRpZmllciB9LCBvdXRwdXQpXG4gICAgICAgIDogb3V0cHV0XG4gICAgfSxcbiAgICBpc1B1Ymxpc2hlZFRvQWxsOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgaXNQdWJsaXNoZWRUb0FsbDogc2VsZWN0RmllbGQoc291cmNlLCAnaXNQdWJsaXNoZWRUb0FsbCcpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgZWRpdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGVkaXQ6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2VkaXQnKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIHVzZXJpbmZvOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgb3duZXJJbmZvOiBzZWxlY3RGaWVsZChzb3VyY2UsICd1c2VyaW5mbycpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgcmVzb3VyY2VUeXBlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAncmVzb3VyY2VUeXBlJykpXG4gICAgICBjb25zdCBraW5kID0gZ2V0UmVzb3VyY2VUeXBlKHJlc291cmNlVHlwZSlcbiAgICAgIGNvbnN0IHJldXNlVHlwZSA9IGdldFJldXNlVHlwZShyZXNvdXJjZVR5cGUpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIC4uLihyZXVzZVR5cGUgJiYgeyByZXVzZVR5cGUgfSksXG4gICAgICB9IGFzIENhdGFsb2dSZWNvcmRcbiAgICB9LFxuICAgIGdlb206IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgZ2VvbXMgPSBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2dlb20nKSlcbiAgICAgIGNvbnN0IHNoYXBlcyA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnc2hhcGUnKSlcbiAgICAgIGNvbnN0IGV4dGVudERlc2NyaXB0aW9ucyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2V4dGVudERlc2NyaXB0aW9uT2JqZWN0JylcbiAgICAgIClcbiAgICAgIGNvbnN0IHNwYXRpYWxFeHRlbnRzID0gZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdzcGF0aWFsRXh0ZW50cycpKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBzcGF0aWFsRXh0ZW50czogW1xuICAgICAgICAgIC4uLnNwYXRpYWxFeHRlbnRzLFxuICAgICAgICAgIC4uLmdlb21zLm1hcCgoZ2VvbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VsZWN0VHJhbnNsYXRlZFZhbHVlKFxuICAgICAgICAgICAgICBnZXRBcnJheUl0ZW0oZXh0ZW50RGVzY3JpcHRpb25zLCBpbmRleCksXG4gICAgICAgICAgICAgIHRoaXMubGFuZzNcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gc2hhcGVzW2luZGV4XSA/PyBnZW9tXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gIT09IG51bGwgPyB7IGRlc2NyaXB0aW9uIH0gOiBudWxsKSxcbiAgICAgICAgICAgICAgZ2VvbWV0cnksXG4gICAgICAgICAgICB9IGFzIERhdGFzZXRTcGF0aWFsRXh0ZW50XG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgfSxcbiAgICByZXNvdXJjZVRlbXBvcmFsRXh0ZW50RGF0ZVJhbmdlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJhbmdlcyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2UnKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHM6IHJhbmdlcy5tYXAoKHJhbmdlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBzZWxlY3RGaWVsZChyYW5nZSwgJ2d0ZScpXG4gICAgICAgICAgY29uc3QgZW5kID0gc2VsZWN0RmllbGQocmFuZ2UsICdsdGUnKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi4oc3RhcnQgIT09IG51bGwgPyB7IHN0YXJ0OiB0b0RhdGUoc3RhcnQpIH0gOiBudWxsKSxcbiAgICAgICAgICAgIC4uLihlbmQgIT09IG51bGwgPyB7IGVuZDogdG9EYXRlKGVuZCkgfSA6IG51bGwpLFxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICB9XG4gICAgfSxcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJpY0ZpZWxkID0gKG91dHB1dCkgPT4gb3V0cHV0XG5cbiAgcHJpdmF0ZSBjb25zdHJhaW50RmllbGQgPSAoXG4gICAgdHlwZTogJ2xpY2Vuc2UnIHwgJ2xlZ2FsJyB8ICdzZWN1cml0eScgfCAnb3RoZXInLFxuICAgIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPixcbiAgICBjb25zdHJhaW50QXJyYXk6IFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXVxuICApID0+IHtcbiAgICBsZXQgb3V0cHV0RmllbGQ6IHN0cmluZ1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnbGljZW5zZSc6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ2xpY2Vuc2VzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbGVnYWwnOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdsZWdhbENvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc2VjdXJpdHknOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdzZWN1cml0eUNvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnb3RoZXInOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdvdGhlckNvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgIH1cbiAgICBjb25zdCBvdXRwdXRBcnJheTogQ29uc3RyYWludFtdID1cbiAgICAgIG91dHB1dEZpZWxkIGluIG91dHB1dCA/IG91dHB1dFtvdXRwdXRGaWVsZF0gOiBbXVxuICAgIG91dHB1dEFycmF5LnB1c2goXG4gICAgICAuLi5jb25zdHJhaW50QXJyYXkubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBzZWxlY3RUcmFuc2xhdGVkVmFsdWUoaXRlbSwgdGhpcy5sYW5nMykgYXMgc3RyaW5nXG4gICAgICAgIGNvbnN0IHVybCA9IGdldEFzVXJsKHNlbGVjdEZpZWxkKGl0ZW0sICdsaW5rJykpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgICAuLi4odXJsID8geyB1cmwgfSA6IHt9KSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgW291dHB1dEZpZWxkXTogb3V0cHV0QXJyYXksXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGdldE1hcHBpbmdGbihmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWVsZE5hbWUgaW4gdGhpcy5maWVsZHMgPyB0aGlzLmZpZWxkc1tmaWVsZE5hbWVdIDogdGhpcy5nZW5lcmljRmllbGRcbiAgfVxuXG4gIGdldExpbmtUeXBlKHVybDogc3RyaW5nLCBwcm90b2NvbD86IHN0cmluZyk6IE9ubGluZVJlc291cmNlVHlwZSB7XG4gICAgaWYgKCFwcm90b2NvbCkge1xuICAgICAgcmV0dXJuICdsaW5rJ1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAoL15FU1JJOlJFU1QvLnRlc3QocHJvdG9jb2wpICYmIC9GZWF0dXJlU2VydmVyLy50ZXN0KHVybCkpIHx8XG4gICAgICAvXk9HQzpXTVMvLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvXk9HQzpXRlMvLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvXk9HQzpXTVRTLy50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgL29nY1xcVyphcGlcXFcqZmVhdHVyZXMvaS50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgKC9eV1dXOkRPV05MT0FELS8udGVzdChwcm90b2NvbCkgJiYgL2RhdGEuZ2VvcGYuZnIvLnRlc3QodXJsKSkgLy8gVE8gRE8gOiBjaGFuZ2Ugd2l0aCB0aGUgZ29vZCBwcm90b2NvbCB3aGVuIGRlY2lkZWRcbiAgICApIHtcbiAgICAgIHJldHVybiAnc2VydmljZSdcbiAgICB9XG4gICAgaWYgKC9eV1dXOkRPV05MT0FELy50ZXN0KHByb3RvY29sKSkge1xuICAgICAgcmV0dXJuICdkb3dubG9hZCdcbiAgICB9XG4gICAgcmV0dXJuICdsaW5rJ1xuICB9XG5cbiAgbWFwTGluayA9IChzb3VyY2VMaW5rOiBTb3VyY2VXaXRoVW5rbm93blByb3BzKTogT25saW5lUmVzb3VyY2UgfCBudWxsID0+IHtcbiAgICBjb25zdCB1cmwgPSBnZXRBc1VybChcbiAgICAgIHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAndXJsT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlTGluaywgJ3VybCcpXG4gICAgICApXG4gICAgKVxuICAgIGNvbnN0IG5hbWUgPSBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICduYW1lT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICduYW1lJylcbiAgICApXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KFxuICAgICAgICBzb3VyY2VMaW5rLFxuICAgICAgICAnZGVzY3JpcHRpb25PYmplY3QnLFxuICAgICAgICB0aGlzLmxhbmczXG4gICAgICApLFxuICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAnZGVzY3JpcHRpb24nKVxuICAgIClcbiAgICAvLyBubyB1cmw6IGZhaWwgZWFybHlcbiAgICBpZiAodXJsID09PSBudWxsKSB7XG4gICAgICAvLyBUT0RPOiBjb2xsZWN0IGVycm9ycyBhdCB0aGUgcmVjb3JkIGxldmVsP1xuICAgICAgY29uc29sZS53YXJuKCdBIGxpbmsgd2l0aG91dCB2YWxpZCBVUkwgd2FzIGZvdW5kJywgc291cmNlTGluaylcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG9jb2wgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICdwcm90b2NvbCcpXG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0TGlua1R5cGUodXJsLnRvU3RyaW5nKCksIHByb3RvY29sKVxuICAgIGNvbnN0IGFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9IG1hdGNoUHJvdG9jb2wocHJvdG9jb2wpXG4gICAgY29uc3QgbWltZVR5cGVNYXRjaGVzID1cbiAgICAgIHByb3RvY29sICYmIHByb3RvY29sLm1hdGNoKC9eV1dXOkRPV05MT0FEOiguK1xcLy4rKSQvKVxuICAgIGNvbnN0IG1pbWVUeXBlID0gbWltZVR5cGVNYXRjaGVzICYmIG1pbWVUeXBlTWF0Y2hlc1sxXVxuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9uID0ge1xuICAgICAgLi4uKG5hbWUgJiYgeyBuYW1lIH0pLFxuICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgfVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnc2VydmljZSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgYWNjZXNzU2VydmljZVByb3RvY29sLFxuICAgICAgICB9XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5kaXN0cmlidXRpb24sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgfVxuICAgICAgY2FzZSAnZG93bmxvYWQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRpc3RyaWJ1dGlvbixcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgIC4uLihtaW1lVHlwZSAmJiB7IG1pbWVUeXBlIH0pLFxuICAgICAgICB9XG4gICAgICBjYXNlICdlbmRwb2ludCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgZW5kcG9pbnRVcmw6IHVybCxcbiAgICAgICAgICBwcm90b2NvbDogYWNjZXNzU2VydmljZVByb3RvY29sLFxuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRFeHRyYSA9ICh2YWx1ZTogb2JqZWN0LCBvdXRwdXQ6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD4pID0+ICh7XG4gICAgLi4ub3V0cHV0LFxuICAgIGV4dHJhczogeyAuLi4ob3V0cHV0LmV4dHJhcyB8fCB7fSksIC4uLnZhbHVlIH0sXG4gIH0pXG59XG4iXX0=
383
+ }], ctorParameters: () => [{ type: i1.MetadataUrlService }, { type: i2.TranslateService }] });
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LmZpZWxkLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2duNC9nbjQuZmllbGQubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIscUJBQXFCLEVBRXJCLE1BQU0sR0FDUCxNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDekUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFRL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixvQkFBb0IsR0FDckIsTUFBTSxzQ0FBc0MsQ0FBQTs7OztBQVk3QyxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUNVLGtCQUFzQyxFQUN0QyxnQkFBa0M7UUFEbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBT2xDLFdBQU0sR0FBb0M7WUFDbEQsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENB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QUVELFdBQVcsQ0FBQyxHQUFXLEVBQUUsUUFBaUI7UUFDeEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDO1FBQ0QsSUFDRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxRCxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN6QixVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNyQix1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3RDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxxREFBcUQ7VUFDcEgsQ0FBQztZQUNELE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7UUFDRCxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLFVBQVUsQ0FBQTtRQUNuQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDOytHQTVjVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGdldEFycmF5SXRlbSxcbiAgZ2V0QXNBcnJheSxcbiAgZ2V0QXNVcmwsXG4gIGdldEZpcnN0VmFsdWUsXG4gIG1hcENvbnRhY3QsXG4gIG1hcEtleXdvcmRzLFxuICBzZWxlY3RGYWxsYmFjayxcbiAgc2VsZWN0RmFsbGJhY2tGaWVsZHMsXG4gIHNlbGVjdEZpZWxkLFxuICBzZWxlY3RUcmFuc2xhdGVkRmllbGQsXG4gIHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZSxcbiAgU291cmNlV2l0aFVua25vd25Qcm9wcyxcbiAgdG9EYXRlLFxufSBmcm9tICcuL2F0b21pYy1vcGVyYXRpb25zJ1xuaW1wb3J0IHsgTWV0YWRhdGFVcmxTZXJ2aWNlIH0gZnJvbSAnLi9tZXRhZGF0YS11cmwuc2VydmljZSdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZ2V0U3RhdHVzRnJvbVN0YXR1c0NvZGUgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy9zdGF0dXMubWFwcGVyJ1xuaW1wb3J0IHsgZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUZyZXF1ZW5jeUNvZGUgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy91cGRhdGUtZnJlcXVlbmN5Lm1hcHBlcidcbmltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIENvbnN0cmFpbnQsXG4gIERhdGFzZXRTcGF0aWFsRXh0ZW50LFxuICBPbmxpbmVSZXNvdXJjZSxcbiAgT25saW5lUmVzb3VyY2VUeXBlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBtYXRjaFByb3RvY29sIH0gZnJvbSAnLi4vY29tbW9uL2Rpc3RyaWJ1dGlvbi5tYXBwZXInXG5pbXBvcnQgeyBUaGVzYXVydXMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VUeXBlLCBnZXRSZXVzZVR5cGUgfSBmcm9tICcuLi9jb21tb24vcmVzb3VyY2UtdHlwZXMnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7XG4gIGdldExhbmcyRnJvbUxhbmczLFxuICBnZXRMb2NhbGl6ZWRJbmRleEtleSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjJ1xuXG50eXBlIEVTUmVzcG9uc2VTb3VyY2UgPSBTb3VyY2VXaXRoVW5rbm93blByb3BzXG5cbnR5cGUgRXNGaWVsZE1hcHBlckZuID0gKFxuICBvdXRwdXQ6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD4sXG4gIHNvdXJjZTogRVNSZXNwb25zZVNvdXJjZVxuKSA9PiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHbjRGaWVsZE1hcHBlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWV0YWRhdGFVcmxTZXJ2aWNlOiBNZXRhZGF0YVVybFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBwcml2YXRlIGdldCBsYW5nMygpIHtcbiAgICByZXR1cm4gZ2V0TG9jYWxpemVkSW5kZXhLZXkodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKVxuICB9XG5cbiAgcHJvdGVjdGVkIGZpZWxkczogUmVjb3JkPHN0cmluZywgRXNGaWVsZE1hcHBlckZuPiA9IHtcbiAgICBpZDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYSh7IGlkOiBzZWxlY3RGaWVsZChzb3VyY2UsICdpZCcpIH0sIG91dHB1dCksXG4gICAgdXVpZDogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCB1dWlkID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICd1dWlkJylcbiAgICAgIGNvbnN0IGxhbmRpbmdQYWdlID0gZ2V0QXNVcmwodGhpcy5tZXRhZGF0YVVybFNlcnZpY2UuZ2V0VXJsKHV1aWQpKVxuICAgICAgcmV0dXJuIHsgLi4ub3V0cHV0LCB1bmlxdWVJZGVudGlmaWVyOiB1dWlkLCBsYW5kaW5nUGFnZSB9XG4gICAgfSxcbiAgICBxdWFsaXR5U2NvcmU6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHsgcXVhbGl0eVNjb3JlOiBzZWxlY3RGaWVsZChzb3VyY2UsICdxdWFsaXR5U2NvcmUnKSB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgcmVzb3VyY2VUaXRsZU9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdGl0bGU6IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQoc291cmNlLCAncmVzb3VyY2VUaXRsZU9iamVjdCcsIHRoaXMubGFuZzMpLFxuICAgICAgICAnbm8gdGl0bGUnXG4gICAgICApLFxuICAgIH0pLFxuICAgIHJlc291cmNlQWJzdHJhY3RPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGFic3RyYWN0OiBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlQWJzdHJhY3RPYmplY3QnLCB0aGlzLmxhbmczKSxcbiAgICAgICAgJ25vIHRpdGxlJ1xuICAgICAgKSxcbiAgICB9KSxcbiAgICBvdmVydmlldzogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBmaXJzdE92ZXJ2aWV3ID0gZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZChzb3VyY2UsICdvdmVydmlldycpKVxuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWxlY3RUcmFuc2xhdGVkVmFsdWU8c3RyaW5nPihcbiAgICAgICAgc2VsZWN0RmllbGQoZmlyc3RPdmVydmlldywgJ3RleHQnKSxcbiAgICAgICAgdGhpcy5sYW5nM1xuICAgICAgKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBvdmVydmlld3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB1cmw6IGdldEFzVXJsKHNlbGVjdEZhbGxiYWNrRmllbGRzKGZpcnN0T3ZlcnZpZXcsICd1cmwnLCAnZGF0YScpKSxcbiAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbiA/IHsgZGVzY3JpcHRpb24gfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIH0sXG4gICAgY2xfdG9waWM6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHRvcGljczogW1xuICAgICAgICAuLi4ob3V0cHV0LnRvcGljcyB8fCBbXSksXG4gICAgICAgIC4uLmdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQ8U291cmNlV2l0aFVua25vd25Qcm9wc1tdPihzb3VyY2UsICdjbF90b3BpYycpXG4gICAgICAgICkubWFwKCh0b3BpYykgPT4gc2VsZWN0VHJhbnNsYXRlZFZhbHVlPHN0cmluZz4odG9waWMsIHRoaXMubGFuZzMpKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgY2xfc3RhdHVzOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBzdGF0dXM6IGdldFN0YXR1c0Zyb21TdGF0dXNDb2RlKFxuICAgICAgICBzZWxlY3RGaWVsZChnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NsX3N0YXR1cycpKSwgJ2tleScpXG4gICAgICApLFxuICAgIH0pLFxuICAgIGNsX21haW50ZW5hbmNlQW5kVXBkYXRlRnJlcXVlbmN5OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICB1cGRhdGVGcmVxdWVuY3k6IGdldFVwZGF0ZUZyZXF1ZW5jeUZyb21GcmVxdWVuY3lDb2RlKFxuICAgICAgICBzZWxlY3RGaWVsZChcbiAgICAgICAgICBnZXRGaXJzdFZhbHVlKFxuICAgICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnY2xfbWFpbnRlbmFuY2VBbmRVcGRhdGVGcmVxdWVuY3knKVxuICAgICAgICAgICksXG4gICAgICAgICAgJ2tleSdcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICBjcmVhdGlvbkRhdGVGb3JSZXNvdXJjZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVzb3VyY2VDcmVhdGVkOiB0b0RhdGUoXG4gICAgICAgIGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdjcmVhdGlvbkRhdGVGb3JSZXNvdXJjZScpKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICByZXZpc2lvbkRhdGVGb3JSZXNvdXJjZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVzb3VyY2VVcGRhdGVkOiB0b0RhdGUoXG4gICAgICAgIGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdyZXZpc2lvbkRhdGVGb3JSZXNvdXJjZScpKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICBwdWJsaWNhdGlvbkRhdGVGb3JSZXNvdXJjZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVzb3VyY2VQdWJsaXNoZWQ6IHRvRGF0ZShcbiAgICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdwdWJsaWNhdGlvbkRhdGVGb3JSZXNvdXJjZScpXG4gICAgICApLFxuICAgIH0pLFxuICAgIGNyZWF0ZURhdGU6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlY29yZENyZWF0ZWQ6IHRvRGF0ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ2NyZWF0ZURhdGUnKSksXG4gICAgfSksXG4gICAgY2hhbmdlRGF0ZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVjb3JkVXBkYXRlZDogdG9EYXRlKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAnY2hhbmdlRGF0ZScpKSxcbiAgICB9KSxcbiAgICBwdWJsaWNhdGlvbkRhdGU6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlY29yZFB1Ymxpc2hlZDogdG9EYXRlKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAncHVibGljYXRpb25EYXRlJykpLFxuICAgIH0pLFxuICAgIHJlc291cmNlTGFuZ3VhZ2U6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgbGFuZ0xpc3QgPSBnZXRBc0FycmF5KFxuICAgICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3Jlc291cmNlTGFuZ3VhZ2UnKVxuICAgICAgKVxuICAgICAgY29uc3QgbGFuZ3VhZ2VzID0gbGFuZ0xpc3QubWFwKGdldExhbmcyRnJvbUxhbmczKVxuICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gb3V0cHV0LmRlZmF1bHRMYW5ndWFnZSA/PyBsYW5ndWFnZXNbMF0gPz8gbnVsbCAvLyBzZXQgdGhlIGZpcnN0IGxhbmd1YWdlIGFzIG1haW4gb25lIGFzIGZhbGxiYWNrXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlLFxuICAgICAgfVxuICAgIH0sXG4gICAgb3RoZXJMYW5ndWFnZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBsYW5nTGlzdCA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdvdGhlckxhbmd1YWdlJykpXG4gICAgICBjb25zdCBsYW5ndWFnZXMgPSBsYW5nTGlzdC5tYXAoZ2V0TGFuZzJGcm9tTGFuZzMpXG4gICAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2UgPSBvdXRwdXQuZGVmYXVsdExhbmd1YWdlID8/IGxhbmd1YWdlc1swXSA/PyBudWxsXG4gICAgICBjb25zdCBvdGhlckxhbmd1YWdlcyA9IGxhbmd1YWdlcy5maWx0ZXIoXG4gICAgICAgIChsYW5nKSA9PiBsYW5nICE9PSBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBvdGhlckxhbmd1YWdlcyxcbiAgICAgIH1cbiAgICB9LFxuICAgIG1haW5MYW5ndWFnZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBsYW5ndWFnZSA9IHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAnbWFpbkxhbmd1YWdlJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlOiBsYW5ndWFnZSA/IGdldExhbmcyRnJvbUxhbmczKGxhbmd1YWdlKSA6IG51bGwsXG4gICAgICB9XG4gICAgfSxcbiAgICBsaW5rOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJhd0xpbmtzID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQ8U291cmNlV2l0aFVua25vd25Qcm9wc1tdPihzb3VyY2UsICdsaW5rJylcbiAgICAgIClcbiAgICAgIGNvbnN0IG9ubGluZVJlc291cmNlcyA9IHJhd0xpbmtzXG4gICAgICAgIC5tYXAoKGxpbmspID0+IHRoaXMubWFwTGluayhsaW5rKSlcbiAgICAgICAgLmZpbHRlcigodikgPT4gdiAhPT0gbnVsbClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgb25saW5lUmVzb3VyY2VzLFxuICAgICAgfSBhcyBDYXRhbG9nUmVjb3JkXG4gICAgfSxcbiAgICBjb250YWN0OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBjb250YWN0czogW1xuICAgICAgICBtYXBDb250YWN0KGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAnY29udGFjdCcpKSwgdGhpcy5sYW5nMyksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIGNvbnRhY3RGb3JSZXNvdXJjZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgY29udGFjdHNGb3JSZXNvdXJjZTogW1xuICAgICAgICAuLi4oJ2NvbnRhY3RzRm9yUmVzb3VyY2UnIGluIG91dHB1dCAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KG91dHB1dC5jb250YWN0c0ZvclJlc291cmNlKVxuICAgICAgICAgID8gb3V0cHV0LmNvbnRhY3RzRm9yUmVzb3VyY2VcbiAgICAgICAgICA6IFtdKSxcbiAgICAgICAgLi4uZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdjb250YWN0Rm9yUmVzb3VyY2UnKSkubWFwKFxuICAgICAgICAgIChjb250YWN0KSA9PiBtYXBDb250YWN0KGNvbnRhY3QsIHRoaXMubGFuZzMpXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIHNvdXJjZUNhdGFsb2d1ZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGNhdGFsb2dVdWlkOiBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3NvdXJjZUNhdGFsb2d1ZScpLFxuICAgICAgICAgICAgJ25vIHRpdGxlJ1xuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKVxuICAgIH0sXG4gICAgYWxsS2V5d29yZHM6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGtleXdvcmRzOiBtYXBLZXl3b3JkcyhcbiAgICAgICAgc2VsZWN0RmllbGQ8VGhlc2F1cnVzW10+KHNvdXJjZSwgJ2FsbEtleXdvcmRzJyksXG4gICAgICAgIHRoaXMubGFuZzNcbiAgICAgICksXG4gICAgfSksXG4gICAgaW5zcGlyZVRoZW1lOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICB0b3BpY3M6IFtcbiAgICAgICAgLi4uKG91dHB1dC50b3BpY3MgfHwgW10pLFxuICAgICAgICAuLi5nZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2luc3BpcmVUaGVtZV9zeW4nKSksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIE1EX0NvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdvdGhlcicsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9Db25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QnKSlcbiAgICAgICksXG4gICAgTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnbGVnYWwnLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QnKVxuICAgICAgICApXG4gICAgICApLFxuICAgIE1EX0xlZ2FsQ29uc3RyYWludHNPdGhlckNvbnN0cmFpbnRzT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ2xlZ2FsJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KFxuICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX0xlZ2FsQ29uc3RyYWludHNPdGhlckNvbnN0cmFpbnRzT2JqZWN0JylcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBNRF9TZWN1cml0eUNvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdzZWN1cml0eScsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9TZWN1cml0eUNvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdCcpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgbGljZW5zZU9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdsaWNlbnNlJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2xpY2Vuc2VPYmplY3QnKSlcbiAgICAgICksXG4gICAgbGluZWFnZU9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgbGluZWFnZTogc2VsZWN0VHJhbnNsYXRlZEZpZWxkKHNvdXJjZSwgJ2xpbmVhZ2VPYmplY3QnLCB0aGlzLmxhbmczKSxcbiAgICB9KSxcbiAgICB1c2VyU2F2ZWRDb3VudDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGZhdm9yaXRlQ291bnQ6IHBhcnNlSW50KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3VzZXJTYXZlZENvdW50JykpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgaXNPcGVuRGF0YTogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGlzT3BlbkRhdGE6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2lzT3BlbkRhdGEnKSAhPT0gJ2ZhbHNlJyxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIGZlYXR1cmVUeXBlczogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGZlYXR1cmVUeXBlczogc2VsZWN0RmllbGQoc291cmNlLCAnZmVhdHVyZVR5cGVzJyksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICByZWxhdGVkOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGZjYXRTb3VyY2UgPSBzZWxlY3RGaWVsZChcbiAgICAgICAgZ2V0Rmlyc3RWYWx1ZShcbiAgICAgICAgICBzZWxlY3RGaWVsZChcbiAgICAgICAgICAgIDxTb3VyY2VXaXRoVW5rbm93blByb3BzPnNlbGVjdEZpZWxkKHNvdXJjZSwgJ3JlbGF0ZWQnKSxcbiAgICAgICAgICAgICdmY2F0cydcbiAgICAgICAgICApXG4gICAgICAgICkgPz8ge30sXG4gICAgICAgICdfc291cmNlJ1xuICAgICAgKVxuICAgICAgY29uc3QgZmVhdHVyZUNhdGFsb2dJZGVudGlmaWVyOiBzdHJpbmcgPSBzZWxlY3RGaWVsZChcbiAgICAgICAgPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+ZmNhdFNvdXJjZSxcbiAgICAgICAgJ3V1aWQnXG4gICAgICApXG4gICAgICBjb25zdCBzb3VyY2VPZkxpbmtzID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQoXG4gICAgICAgICAgPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+c2VsZWN0RmllbGQoc291cmNlLCAncmVsYXRlZCcpLFxuICAgICAgICAgICdoYXNzb3VyY2VzJ1xuICAgICAgICApXG4gICAgICApXG4gICAgICBjb25zdCBzb3VyY2VPZklkZW50aWZpZXJzOiBzdHJpbmdbXSA9IHNvdXJjZU9mTGlua3NcbiAgICAgICAgLmZpbHRlcigobGluaykgPT4gbGlua1snb3JpZ2luJ10gPT09ICdjYXRhbG9nJylcbiAgICAgICAgLm1hcCgobGluaykgPT4ge1xuICAgICAgICAgIHJldHVybiBzZWxlY3RGaWVsZChcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkKDxTb3VyY2VXaXRoVW5rbm93blByb3BzPmxpbmssICdfc291cmNlJyksXG4gICAgICAgICAgICAndXVpZCdcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICBjb25zdCBleHRyYVZhbHVlczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+ID0ge31cbiAgICAgIGlmIChmZWF0dXJlQ2F0YWxvZ0lkZW50aWZpZXIpIHtcbiAgICAgICAgZXh0cmFWYWx1ZXMuZmVhdHVyZUNhdGFsb2dJZGVudGlmaWVyID0gZmVhdHVyZUNhdGFsb2dJZGVudGlmaWVyXG4gICAgICB9XG4gICAgICBpZiAoc291cmNlT2ZJZGVudGlmaWVycyAmJiBzb3VyY2VPZklkZW50aWZpZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXh0cmFWYWx1ZXMuc291cmNlT2ZJZGVudGlmaWVycyA9IHNvdXJjZU9mSWRlbnRpZmllcnNcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhleHRyYVZhbHVlcykubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuYWRkRXh0cmEoZXh0cmFWYWx1ZXMsIG91dHB1dClcbiAgICAgICAgOiBvdXRwdXRcbiAgICB9LFxuICAgIHJlY29yZExpbms6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgcmVjb3JkTGlua3MgPSBnZXRBc0FycmF5KFxuICAgICAgICBzZWxlY3RGaWVsZDxTb3VyY2VXaXRoVW5rbm93blByb3BzW10+KHNvdXJjZSwgJ3JlY29yZExpbmsnKVxuICAgICAgKVxuICAgICAgY29uc3Qgc291cmNlc0lkZW50aWZpZXJzOiBzdHJpbmdbXSA9IHJlY29yZExpbmtzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGxpbmspID0+IGxpbmtbJ29yaWdpbiddID09PSAnY2F0YWxvZycgJiYgbGlua1sndHlwZSddID09PSAnc291cmNlcydcbiAgICAgICAgKVxuICAgICAgICAubWFwKChsaW5rKSA9PiBzZWxlY3RGaWVsZCg8U291cmNlV2l0aFVua25vd25Qcm9wcz5saW5rLCAndG8nKSlcblxuICAgICAgcmV0dXJuIHNvdXJjZXNJZGVudGlmaWVycyAmJiBzb3VyY2VzSWRlbnRpZmllcnMubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuYWRkRXh0cmEoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNvdXJjZXNJZGVudGlmaWVycyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdXRwdXRcbiAgICAgICAgICApXG4gICAgICAgIDogb3V0cHV0XG4gICAgfSxcbiAgICBpc1B1Ymxpc2hlZFRvQWxsOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgaXNQdWJsaXNoZWRUb0FsbDogc2VsZWN0RmllbGQoc291cmNlLCAnaXNQdWJsaXNoZWRUb0FsbCcpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgaXNIYXJ2ZXN0ZWQ6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBpc0hhcnZlc3RlZDogc2VsZWN0RmllbGQoc291cmNlLCAnaXNIYXJ2ZXN0ZWQnKSAhPT0gJ2ZhbHNlJyxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIGVkaXQ6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBlZGl0OiBzZWxlY3RGaWVsZChzb3VyY2UsICdlZGl0JyksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICB1c2VyaW5mbzogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIG93bmVySW5mbzogc2VsZWN0RmllbGQoc291cmNlLCAndXNlcmluZm8nKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIHJlc291cmNlVHlwZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZVR5cGUgPSBnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlVHlwZScpKVxuICAgICAgY29uc3Qga2luZCA9IGdldFJlc291cmNlVHlwZShyZXNvdXJjZVR5cGUpXG4gICAgICBjb25zdCByZXVzZVR5cGUgPSBnZXRSZXVzZVR5cGUocmVzb3VyY2VUeXBlKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBraW5kLFxuICAgICAgICAuLi4ocmV1c2VUeXBlICYmIHsgcmV1c2VUeXBlIH0pLFxuICAgICAgfSBhcyBDYXRhbG9nUmVjb3JkXG4gICAgfSxcbiAgICBnZW9tOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGdlb21zID0gZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdnZW9tJykpXG4gICAgICBjb25zdCBzaGFwZXMgPSBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3NoYXBlJykpXG4gICAgICBjb25zdCBleHRlbnREZXNjcmlwdGlvbnMgPSBnZXRBc0FycmF5KFxuICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdleHRlbnREZXNjcmlwdGlvbk9iamVjdCcpXG4gICAgICApXG4gICAgICBjb25zdCBzcGF0aWFsRXh0ZW50cyA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnc3BhdGlhbEV4dGVudHMnKSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgc3BhdGlhbEV4dGVudHM6IFtcbiAgICAgICAgICAuLi5zcGF0aWFsRXh0ZW50cyxcbiAgICAgICAgICAuLi5nZW9tcy5tYXAoKGdlb20sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZShcbiAgICAgICAgICAgICAgZ2V0QXJyYXlJdGVtKGV4dGVudERlc2NyaXB0aW9ucywgaW5kZXgpLFxuICAgICAgICAgICAgICB0aGlzLmxhbmczXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBnZW9tZXRyeSA9IHNoYXBlc1tpbmRleF0gPz8gZ2VvbVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uICE9PSBudWxsID8geyBkZXNjcmlwdGlvbiB9IDogbnVsbCksXG4gICAgICAgICAgICAgIGdlb21ldHJ5LFxuICAgICAgICAgICAgfSBhcyBEYXRhc2V0U3BhdGlhbEV4dGVudFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfVxuICAgIH0sXG4gICAgcmVzb3VyY2VUZW1wb3JhbEV4dGVudERhdGVSYW5nZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCByYW5nZXMgPSBnZXRBc0FycmF5KFxuICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdyZXNvdXJjZVRlbXBvcmFsRXh0ZW50RGF0ZVJhbmdlJylcbiAgICAgIClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgdGVtcG9yYWxFeHRlbnRzOiByYW5nZXMubWFwKChyYW5nZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gc2VsZWN0RmllbGQocmFuZ2UsICdndGUnKVxuICAgICAgICAgIGNvbnN0IGVuZCA9IHNlbGVjdEZpZWxkKHJhbmdlLCAnbHRlJylcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uKHN0YXJ0ICE9PSBudWxsID8geyBzdGFydDogdG9EYXRlKHN0YXJ0KSB9IDogbnVsbCksXG4gICAgICAgICAgICAuLi4oZW5kICE9PSBudWxsID8geyBlbmQ6IHRvRGF0ZShlbmQpIH0gOiBudWxsKSxcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgfVxuICAgIH0sXG4gIH1cblxuICBwcml2YXRlIGdlbmVyaWNGaWVsZCA9IChvdXRwdXQpID0+IG91dHB1dFxuXG4gIHByaXZhdGUgY29uc3RyYWludEZpZWxkID0gKFxuICAgIHR5cGU6ICdsaWNlbnNlJyB8ICdsZWdhbCcgfCAnc2VjdXJpdHknIHwgJ290aGVyJyxcbiAgICBvdXRwdXQ6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD4sXG4gICAgY29uc3RyYWludEFycmF5OiBTb3VyY2VXaXRoVW5rbm93blByb3BzW11cbiAgKSA9PiB7XG4gICAgbGV0IG91dHB1dEZpZWxkOiBzdHJpbmdcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2xpY2Vuc2UnOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdsaWNlbnNlcydcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2xlZ2FsJzpcbiAgICAgICAgb3V0cHV0RmllbGQgPSAnbGVnYWxDb25zdHJhaW50cydcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NlY3VyaXR5JzpcbiAgICAgICAgb3V0cHV0RmllbGQgPSAnc2VjdXJpdHlDb25zdHJhaW50cydcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ290aGVyJzpcbiAgICAgICAgb3V0cHV0RmllbGQgPSAnb3RoZXJDb25zdHJhaW50cydcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0QXJyYXk6IENvbnN0cmFpbnRbXSA9XG4gICAgICBvdXRwdXRGaWVsZCBpbiBvdXRwdXQgPyBvdXRwdXRbb3V0cHV0RmllbGRdIDogW11cbiAgICBvdXRwdXRBcnJheS5wdXNoKFxuICAgICAgLi4uY29uc3RyYWludEFycmF5Lm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB0ZXh0ID0gc2VsZWN0VHJhbnNsYXRlZFZhbHVlKGl0ZW0sIHRoaXMubGFuZzMpIGFzIHN0cmluZ1xuICAgICAgICBjb25zdCB1cmwgPSBnZXRBc1VybChzZWxlY3RGaWVsZChpdGVtLCAnbGluaycpKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRleHQsXG4gICAgICAgICAgLi4uKHVybCA/IHsgdXJsIH0gOiB7fSksXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIFtvdXRwdXRGaWVsZF06IG91dHB1dEFycmF5LFxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBnZXRNYXBwaW5nRm4oZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZmllbGROYW1lIGluIHRoaXMuZmllbGRzID8gdGhpcy5maWVsZHNbZmllbGROYW1lXSA6IHRoaXMuZ2VuZXJpY0ZpZWxkXG4gIH1cblxuICBnZXRMaW5rVHlwZSh1cmw6IHN0cmluZywgcHJvdG9jb2w/OiBzdHJpbmcpOiBPbmxpbmVSZXNvdXJjZVR5cGUge1xuICAgIGlmICghcHJvdG9jb2wpIHtcbiAgICAgIHJldHVybiAnbGluaydcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKC9eRVNSSTpSRVNULy50ZXN0KHByb3RvY29sKSAmJiAvRmVhdHVyZVNlcnZlci8udGVzdCh1cmwpKSB8fFxuICAgICAgL15PR0M6V01TLy50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgL15PR0M6V0ZTLy50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgL15PR0M6V01UUy8udGVzdChwcm90b2NvbCkgfHxcbiAgICAgIC9UTVMvaS50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgL29nY1xcVyphcGlcXFcqZmVhdHVyZXMvaS50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgKC9eV1dXOkRPV05MT0FELS8udGVzdChwcm90b2NvbCkgJiYgL2RhdGEuZ2VvcGYuZnIvLnRlc3QodXJsKSkgLy8gVE8gRE8gOiBjaGFuZ2Ugd2l0aCB0aGUgZ29vZCBwcm90b2NvbCB3aGVuIGRlY2lkZWRcbiAgICApIHtcbiAgICAgIHJldHVybiAnc2VydmljZSdcbiAgICB9XG4gICAgaWYgKC9eV1dXOkRPV05MT0FELy50ZXN0KHByb3RvY29sKSkge1xuICAgICAgcmV0dXJuICdkb3dubG9hZCdcbiAgICB9XG4gICAgcmV0dXJuICdsaW5rJ1xuICB9XG5cbiAgbWFwTGluayA9IChzb3VyY2VMaW5rOiBTb3VyY2VXaXRoVW5rbm93blByb3BzKTogT25saW5lUmVzb3VyY2UgfCBudWxsID0+IHtcbiAgICBjb25zdCB1cmwgPSBnZXRBc1VybChcbiAgICAgIHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAndXJsT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlTGluaywgJ3VybCcpXG4gICAgICApXG4gICAgKVxuICAgIGNvbnN0IG5hbWUgPSBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICduYW1lT2JqZWN0JywgdGhpcy5sYW5nMyksXG4gICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICduYW1lJylcbiAgICApXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KFxuICAgICAgICBzb3VyY2VMaW5rLFxuICAgICAgICAnZGVzY3JpcHRpb25PYmplY3QnLFxuICAgICAgICB0aGlzLmxhbmczXG4gICAgICApLFxuICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAnZGVzY3JpcHRpb24nKVxuICAgIClcbiAgICBjb25zdCBkZXNjcmlwdGlvbkxpbmsgPSBzZWxlY3RGaWVsZDxvYmplY3Q+KHNvdXJjZUxpbmssICdkZXNjcmlwdGlvbk9iamVjdCcpXG4gICAgY29uc3QgYWNjZXNzUmVzdHJpY3RlZCA9XG4gICAgICBkZXNjcmlwdGlvbkxpbmsgJiZcbiAgICAgICdsaW5rJyBpbiBkZXNjcmlwdGlvbkxpbmsgJiZcbiAgICAgIGRlc2NyaXB0aW9uTGluay5saW5rLnRvU3RyaW5nKCkuaW5jbHVkZXMoJyNNRF9SZXN0cmljdGlvbkNvZGVfcmVzdHJpY3RlZCcpXG4gICAgLy8gbm8gdXJsOiBmYWlsIGVhcmx5XG4gICAgaWYgKHVybCA9PT0gbnVsbCkge1xuICAgICAgLy8gVE9ETzogY29sbGVjdCBlcnJvcnMgYXQgdGhlIHJlY29yZCBsZXZlbD9cbiAgICAgIGNvbnNvbGUud2FybignQSBsaW5rIHdpdGhvdXQgdmFsaWQgVVJMIHdhcyBmb3VuZCcsIHNvdXJjZUxpbmspXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHByb3RvY29sID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAncHJvdG9jb2wnKVxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldExpbmtUeXBlKHVybC50b1N0cmluZygpLCBwcm90b2NvbClcbiAgICBjb25zdCBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPSBtYXRjaFByb3RvY29sKHByb3RvY29sKVxuICAgIGNvbnN0IG1pbWVUeXBlTWF0Y2hlcyA9XG4gICAgICBwcm90b2NvbCAmJiBwcm90b2NvbC5tYXRjaCgvXldXVzpET1dOTE9BRDooLitcXC8uKykkLylcbiAgICBjb25zdCBtaW1lVHlwZSA9IG1pbWVUeXBlTWF0Y2hlcyAmJiBtaW1lVHlwZU1hdGNoZXNbMV1cblxuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbiA9IHtcbiAgICAgIC4uLihuYW1lICYmIHsgbmFtZSB9KSxcbiAgICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uIH0pLFxuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRpc3RyaWJ1dGlvbixcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgIGFjY2Vzc1NlcnZpY2VQcm90b2NvbCxcbiAgICAgICAgICBhY2Nlc3NSZXN0cmljdGVkOiBhY2Nlc3NSZXN0cmljdGVkLFxuICAgICAgICB9XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5kaXN0cmlidXRpb24sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgfVxuICAgICAgY2FzZSAnZG93bmxvYWQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRpc3RyaWJ1dGlvbixcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgIC4uLihtaW1lVHlwZSAmJiB7IG1pbWVUeXBlIH0pLFxuICAgICAgICB9XG4gICAgICBjYXNlICdlbmRwb2ludCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgYWNjZXNzU2VydmljZVByb3RvY29sOiBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2wsXG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEV4dHJhID0gKHZhbHVlOiBvYmplY3QsIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPikgPT4gKHtcbiAgICAuLi5vdXRwdXQsXG4gICAgZXh0cmFzOiB7IC4uLihvdXRwdXQuZXh0cmFzIHx8IHt9KSwgLi4udmFsdWUgfSxcbiAgfSlcbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { Inject, Injectable } from '@angular/core';
2
2
  import { Configuration } from '../../../../../../libs/data-access/gn4/src';
3
3
  import { TranslateService } from '@ngx-translate/core';
4
- import { LANG_2_TO_3_MAPPER } from '../../../../../../libs/util/i18n/src';
4
+ import { getLang3FromLang2 } from '../../../../../../libs/util/i18n/src';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@ngx-translate/core";
7
7
  import * as i2 from "../../../../../../libs/data-access/gn4/src";
@@ -12,7 +12,7 @@ export class MetadataUrlService {
12
12
  }
13
13
  getUrl(uuid, apiPath = this.apiConfiguration.basePath) {
14
14
  const prefix = `${apiPath}/../`;
15
- return `${prefix}${LANG_2_TO_3_MAPPER[this.translate.currentLang]}/catalog.search#/metadata/${uuid}`;
15
+ return `${prefix}${getLang3FromLang2(this.translate.currentLang)}/catalog.search#/metadata/${uuid}`;
16
16
  }
17
17
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataUrlService, deps: [{ token: i1.TranslateService }, { token: Configuration }], target: i0.ɵɵFactoryTarget.Injectable }); }
18
18
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataUrlService, providedIn: 'root' }); }
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
26
26
  type: Inject,
27
27
  args: [Configuration]
28
28
  }] }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtdXJsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9nbjQvbWV0YWRhdGEtdXJsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBOzs7O0FBS3pFLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxTQUEyQixFQUNKLGdCQUErQjtRQUR0RCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNKLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBZTtJQUM3RCxDQUFDO0lBRUosTUFBTSxDQUFDLElBQVksRUFBRSxVQUFrQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUTtRQUNuRSxNQUFNLE1BQU0sR0FBRyxHQUFHLE9BQU8sTUFBTSxDQUFBO1FBQy9CLE9BQU8sR0FBRyxNQUFNLEdBQ2Qsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQy9DLDZCQUE2QixJQUFJLEVBQUUsQ0FBQTtJQUNyQyxDQUFDOytHQVhVLGtCQUFrQixrREFHbkIsYUFBYTttSEFIWixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL2duNC9zcmMnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IExBTkdfMl9UT18zX01BUFBFUiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9pMThuL3NyYydcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhVXJsU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBJbmplY3QoQ29uZmlndXJhdGlvbikgcHJpdmF0ZSBhcGlDb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uXG4gICkge31cblxuICBnZXRVcmwodXVpZDogc3RyaW5nLCBhcGlQYXRoOiBzdHJpbmcgPSB0aGlzLmFwaUNvbmZpZ3VyYXRpb24uYmFzZVBhdGgpIHtcbiAgICBjb25zdCBwcmVmaXggPSBgJHthcGlQYXRofS8uLi9gXG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke1xuICAgICAgTEFOR18yX1RPXzNfTUFQUEVSW3RoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nXVxuICAgIH0vY2F0YWxvZy5zZWFyY2gjL21ldGFkYXRhLyR7dXVpZH1gXG4gIH1cbn1cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtdXJsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9nbjQvbWV0YWRhdGEtdXJsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFBOzs7O0FBS3hFLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxTQUEyQixFQUNKLGdCQUErQjtRQUR0RCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNKLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBZTtJQUM3RCxDQUFDO0lBRUosTUFBTSxDQUFDLElBQVksRUFBRSxVQUFrQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUTtRQUNuRSxNQUFNLE1BQU0sR0FBRyxHQUFHLE9BQU8sTUFBTSxDQUFBO1FBQy9CLE9BQU8sR0FBRyxNQUFNLEdBQUcsaUJBQWlCLENBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUMzQiw2QkFBNkIsSUFBSSxFQUFFLENBQUE7SUFDdEMsQ0FBQzsrR0FYVSxrQkFBa0Isa0RBR25CLGFBQWE7bUhBSFosa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUlJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9nbjQvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBnZXRMYW5nM0Zyb21MYW5nMiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9pMThuL3NyYydcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhVXJsU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBJbmplY3QoQ29uZmlndXJhdGlvbikgcHJpdmF0ZSBhcGlDb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uXG4gICkge31cblxuICBnZXRVcmwodXVpZDogc3RyaW5nLCBhcGlQYXRoOiBzdHJpbmcgPSB0aGlzLmFwaUNvbmZpZ3VyYXRpb24uYmFzZVBhdGgpIHtcbiAgICBjb25zdCBwcmVmaXggPSBgJHthcGlQYXRofS8uLi9gXG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke2dldExhbmczRnJvbUxhbmcyKFxuICAgICAgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmdcbiAgICApfS9jYXRhbG9nLnNlYXJjaCMvbWV0YWRhdGEvJHt1dWlkfWBcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9nbjQvdHlwZXMvbWV0YWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbidcblxudHlwZSBMYW5nQ29kZSA9IHN0cmluZ1xudHlwZSBNdWx0aWxpbmd1YWxGaWVsZCA9IHtcbiAgW0sgaW4gYGxhbmcke0xhbmdDb2RlfWBdOiBzdHJpbmdcbn0gJiB7XG4gIGRlZmF1bHQ6IHN0cmluZ1xuICBsaW5rPzogc3RyaW5nXG59XG5cbnR5cGUgQm9vbGVhblN0cmluZyA9ICd0cnVlJyB8ICdmYWxzZSdcbmludGVyZmFjZSBDb2RlTGlzdEVudHJ5IGV4dGVuZHMgTXVsdGlsaW5ndWFsRmllbGQge1xuICBrZXk6IHN0cmluZ1xuICBsaW5rPzogc3RyaW5nXG59XG5cbnR5cGUgTWF5YmVBcnJheTxUPiA9IFQgfCBUW11cblxuaW50ZXJmYWNlIENvbnRhY3Qge1xuICBvcmdhbmlzYXRpb24/OiBzdHJpbmdcbiAgb3JnYW5pc2F0aW9uT2JqZWN0PzogTXVsdGlsaW5ndWFsRmllbGRcbiAgcm9sZTogc3RyaW5nXG4gIGVtYWlsOiBzdHJpbmdcbiAgd2Vic2l0ZTogc3RyaW5nXG4gIGxvZ286IHN0cmluZ1xuICBpbmRpdmlkdWFsOiBzdHJpbmdcbiAgcG9zaXRpb246IHN0cmluZ1xuICBwaG9uZTogc3RyaW5nXG4gIGFkZHJlc3M6IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgT3ZlcnZpZXcge1xuICBkYXRhPzogc3RyaW5nXG4gIHVybD86IHN0cmluZ1xuICB0ZXh0PzogTXVsdGlsaW5ndWFsRmllbGRcbn1cblxuaW50ZXJmYWNlIFJlc291cmNlRGF0ZSB7XG4gIHR5cGU6IHN0cmluZ1xuICBkYXRlOiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIFJlc291cmNlVGVtcG9yYWxEYXRlUmFuZ2Uge1xuICBndGU/OiBzdHJpbmdcbiAgbHRlPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBSZXNvdXJjZUlkZW50aWZpZXIge1xuICBjb2RlOiBzdHJpbmdcbiAgY29kZVNwYWNlOiBzdHJpbmdcbiAgbGluazogc3RyaW5nXG59XG5cbmludGVyZmFjZSBTcGVjaWZpY2F0aW9uQ29uZm9ybWFuY2Uge1xuICB0aXRsZTogc3RyaW5nXG4gIGRhdGU6IHN0cmluZ1xuICBleHBsYW5hdGlvbjogc3RyaW5nXG4gIHBhc3M6IEJvb2xlYW5TdHJpbmdcbn1cblxudHlwZSBUaGVzYXVydXNOYW1lID0gc3RyaW5nXG5leHBvcnQgaW50ZXJmYWNlIFRoZXNhdXJ1cyB7XG4gIGlkPzogc3RyaW5nXG4gIHRpdGxlPzogc3RyaW5nXG4gIHRoZW1lPzogc3RyaW5nXG4gIGxpbms/OiBzdHJpbmdcbiAga2V5d29yZHM6IE11bHRpbGluZ3VhbEZpZWxkW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcbiAgcHJvdG9jb2w/OiBzdHJpbmdcbiAgbWltZVR5cGU/OiBzdHJpbmdcbiAgdXJsPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgZnVuY3Rpb24/OiBzdHJpbmdcbiAgYXBwbGljYXRpb25Qcm9maWxlPzogc3RyaW5nXG4gIGdyb3VwPzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhT2JqZWN0ID0gUGFydGlhbDx7XG4gIE1EX0NvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogTXVsdGlsaW5ndWFsRmllbGRbXVxuICBNRF9MZWdhbENvbnN0cmFpbnRzT3RoZXJDb25zdHJhaW50c09iamVjdDogTXVsdGlsaW5ndWFsRmllbGRbXVxuICBPcmc6IHN0cmluZ1xuICBPcmdGb3JSZXNvdXJjZTogc3RyaW5nW11cbiAgYWxsS2V5d29yZHM6IFJlY29yZDxUaGVzYXVydXNOYW1lLCBUaGVzYXVydXM+XG4gIGNoYW5nZURhdGU6IHN0cmluZ1xuICBjbF9jaGFyYWN0ZXJTZXQ6IENvZGVMaXN0RW50cnlbXVxuICBjbF9mdW5jdGlvbjogQ29kZUxpc3RFbnRyeVtdXG4gIGNsX2hpZXJhcmNoeUxldmVsOiBDb2RlTGlzdEVudHJ5W11cbiAgY2xfcmVzb3VyY2VDaGFyYWN0ZXJTZXQ6IENvZGVMaXN0RW50cnlbXVxuICBjbF9zdGF0dXM6IENvZGVMaXN0RW50cnlbXVxuICBjbF90b3BpYzogQ29kZUxpc3RFbnRyeVtdXG4gIGNsX3R5cGU6IENvZGVMaXN0RW50cnlbXVxuICBjb25mb3JtVG9fVGl0cmVkdW5lc3BjaWZpY2F0aW9ubGFxdWVsbGVsYXNyaWVkZWRvbm5lc2VzdGNvbmZvcm1lb3Vub246IHN0cmluZ1xuICBjb250YWN0OiBDb250YWN0W11cbiAgY29udGFjdEZvclJlc291cmNlOiBDb250YWN0W11cbiAgY3JlYXRlRGF0ZTogc3RyaW5nXG4gIGNyZWF0aW9uRGF0ZUZvclJlc291cmNlOiBzdHJpbmdbXVxuICBjcmVhdGlvbk1vbnRoRm9yUmVzb3VyY2U6IHN0cmluZ1xuICBjcmVhdGlvblllYXJGb3JSZXNvdXJjZTogc3RyaW5nXG4gIGRhdGVTdGFtcDogc3RyaW5nXG4gIGRpc3BsYXlPcmRlcjogc3RyaW5nXG4gIGRvY1R5cGU6IHN0cmluZ1xuICBkb2N1bWVudDogc3RyaW5nXG4gIGRvY3VtZW50U3RhbmRhcmQ6IHN0cmluZ1xuICBkcmFmdDogc3RyaW5nXG4gIGV4dGVudERlc2NyaXB0aW9uT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFtdXG4gIGV4dHJhOiBzdHJpbmdcbiAgZmVhdHVyZU9mUmVjb3JkOiBzdHJpbmdcbiAgZmVlZGJhY2tDb3VudDogc3RyaW5nXG4gIGdlb206IEdlb21ldHJ5IHwgR2VvbWV0cnlbXVxuICBncm91cE93bmVyOiBzdHJpbmdcbiAgZ3JvdXBQdWJsaXNoZWQ6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGdyb3VwUHVibGlzaGVkSWQ6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGhhcnZlc3RlclV1aWQ6IHN0cmluZ1xuICBoYXNJbnNwaXJlVGhlbWU6IEJvb2xlYW5TdHJpbmdcbiAgaGFzT3ZlcnZpZXc6IEJvb2xlYW5TdHJpbmdcbiAgaGFzeGxpbmtzOiBCb29sZWFuU3RyaW5nXG4gIGlkOiBzdHJpbmdcbiAgaW5kZXhpbmdEYXRlOiBzdHJpbmcgfCBudW1iZXJcbiAgaW5kZXhpbmdFcnJvcjogc3RyaW5nIHwgc3RyaW5nW11cbiAgaW5kZXhpbmdFcnJvck1zZzogc3RyaW5nW11cbiAgaW5zcGlyZUFubmV4OiBzdHJpbmdbXVxuICBpbnNwaXJlQW5uZXhGb3JGaXJzdFRoZW1lOiBzdHJpbmdcbiAgaW5zcGlyZVRoZW1lOiBzdHJpbmdbXVxuICBpbnNwaXJlVGhlbWVGaXJzdDogc3RyaW5nXG4gIGluc3BpcmVUaGVtZUZpcnN0X3N5bjogc3RyaW5nXG4gIGluc3BpcmVUaGVtZU51bWJlcjogc3RyaW5nXG4gIGluc3BpcmVUaGVtZVVyaTogc3RyaW5nW11cbiAgaW5zcGlyZVRoZW1lX3N5bjogc3RyaW5nW11cbiAgaXNIYXJ2ZXN0ZWQ6IHN0cmluZ1xuICBpc09wZW5EYXRhOiBzdHJpbmdcbiAgZWRpdDogYm9vbGVhblxuICBpc1B1Ymxpc2hlZFRvQWxsOiBzdHJpbmdcbiAgaXNUZW1wbGF0ZTogc3RyaW5nXG4gIGtleXdvcmRUeXBlOiBSZWNvcmQ8c3RyaW5nLCBNdWx0aWxpbmd1YWxGaWVsZFtdPlxuICBsaWNlbnNlT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFtdXG4gIGxpbmVhZ2VPYmplY3Q6IE11bHRpbGluZ3VhbEZpZWxkXG4gIGxpbms6IExpbmtbXVxuICBsaW5rUHJvdG9jb2w6IHN0cmluZ1tdXG4gIGxpbmtVcmw6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGxpbmtVcmxQcm90b2NvbE9HQ1dGUzogc3RyaW5nIHwgc3RyaW5nW11cbiAgbGlua1VybFByb3RvY29sT0dDV01TOiBzdHJpbmdbXVxuICBsaW5rVXJsUHJvdG9jb2xXV1dMSU5LMTBodHRwbGluazogTWF5YmVBcnJheTxzdHJpbmc+XG4gIGxpbmtVcmxQcm90b2NvbFdXV0xJTksxMGh0dHByZWxhdGVkOiBzdHJpbmdcbiAgbG9jYXRpb246IHN0cmluZ1xuICBsb2dvOiBzdHJpbmdcbiAgbWFpbkxhbmd1YWdlOiBzdHJpbmdcbiAgbWV0YWRhdGFJZGVudGlmaWVyOiBzdHJpbmdcbiAgb3ZlcnZpZXc6IE92ZXJ2aWV3W11cbiAgb3duZXI6IHN0cmluZ1xuICBwb2ludE9mQ29udGFjdE9yZzogc3RyaW5nXG4gIHBvaW50T2ZDb250YWN0T3JnRm9yUmVzb3VyY2U6IHN0cmluZ1xuICBwb3B1bGFyaXR5OiBudW1iZXJcbiAgcHVibGljYXRpb25EYXRlRm9yUmVzb3VyY2U6IHN0cmluZyB8IHN0cmluZ1tdXG4gIHJhdGluZzogc3RyaW5nXG4gIHJlY29yZDogc3RyaW5nXG4gIHJlY29yZEdyb3VwOiBzdHJpbmdcbiAgcmVjb3JkT3duZXI6IHN0cmluZ1xuICByZXNvbHV0aW9uRGlzdGFuY2U6IHN0cmluZ1tdXG4gIHJlc29sdXRpb25TY2FsZURlbm9taW5hdG9yOiBzdHJpbmdbXVxuICByZXNvdXJjZUFic3RyYWN0T2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICByZXNvdXJjZURhdGU6IFJlc291cmNlRGF0ZVtdXG4gIHJlc291cmNlRWRpdGlvbjogc3RyaW5nXG4gIHJlc291cmNlSWRlbnRpZmllcjogUmVzb3VyY2VJZGVudGlmaWVyW11cbiAgcmVzb3VyY2VMYW5ndWFnZTogc3RyaW5nW11cbiAgcmVzb3VyY2VUZW1wb3JhbERhdGVSYW5nZTogUmVzb3VyY2VUZW1wb3JhbERhdGVSYW5nZVtdXG4gIHJlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2U6IFJlc291cmNlVGVtcG9yYWxEYXRlUmFuZ2VbXVxuICByZXNvdXJjZVRpdGxlT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICByZXNvdXJjZVR5cGU6IHN0cmluZ1tdXG4gIHJlc291cmNlVHlwZU5hbWVPYmplY3Q6IE11bHRpbGluZ3VhbEZpZWxkXG4gIHJldmlzaW9uRGF0ZUZvclJlc291cmNlOiBzdHJpbmdbXVxuICByZXZpc2lvbk1vbnRoRm9yUmVzb3VyY2U6IHN0cmluZ1xuICByZXZpc2lvblllYXJGb3JSZXNvdXJjZTogc3RyaW5nXG4gIHNvdXJjZUNhdGFsb2d1ZTogc3RyaW5nXG4gIHNwZWNpZmljYXRpb25Db25mb3JtYW5jZTogTWF5YmVBcnJheTxTcGVjaWZpY2F0aW9uQ29uZm9ybWFuY2U+XG4gIHN0YW5kYXJkTmFtZU9iamVjdDogTXVsdGlsaW5ndWFsRmllbGRcbiAgc3RhbmRhcmRWZXJzaW9uT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICB0YWc6IE11bHRpbGluZ3VhbEZpZWxkW11cbiAgdGFnTnVtYmVyOiBzdHJpbmdcbiAgdXNlclNhdmVkQ291bnQ6IHN0cmluZ1xuICB1c2VyaW5mbzogc3RyaW5nXG4gIHV1aWQ6IHN0cmluZ1xuICB2YWxpZDogc3RyaW5nXG4gIHhsaW5rOiBzdHJpbmdbXVxufT5cblxuZXhwb3J0IGludGVyZmFjZSBHbjRSZWNvcmQge1xuICBfaW5kZXg6IHN0cmluZ1xuICBfdHlwZT86IHN0cmluZ1xuICBfaWQ6IHN0cmluZ1xuICBfc2NvcmU6IG51bWJlclxuICBfc291cmNlOiBNZXRhZGF0YU9iamVjdFxuICBlZGl0PzogYm9vbGVhblxuICBvd25lcj86IGJvb2xlYW5cbiAgaXNQdWJsaXNoZWRUb0FsbD86IGJvb2xlYW5cbiAgdmlldz86IGJvb2xlYW5cbiAgbm90aWZ5PzogYm9vbGVhblxuICBkb3dubG9hZD86IGJvb2xlYW5cbiAgZHluYW1pYz86IGJvb2xlYW5cbiAgZmVhdHVyZWQ/OiBib29sZWFuXG4gIGd1ZXN0ZG93bmxvYWQ/OiBib29sZWFuXG4gIHNlbGVjdGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEduNFJlY29yZFJlbGF0ZWQge1xuICBmY2F0cz86IEduNFJlY29yZFtdXG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9nbjQvdHlwZXMvbWV0YWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbidcblxudHlwZSBMYW5nQ29kZSA9IHN0cmluZ1xudHlwZSBNdWx0aWxpbmd1YWxGaWVsZCA9IHtcbiAgW0sgaW4gYGxhbmcke0xhbmdDb2RlfWBdOiBzdHJpbmdcbn0gJiB7XG4gIGRlZmF1bHQ6IHN0cmluZ1xuICBsaW5rPzogc3RyaW5nXG59XG5cbnR5cGUgQm9vbGVhblN0cmluZyA9ICd0cnVlJyB8ICdmYWxzZSdcbmludGVyZmFjZSBDb2RlTGlzdEVudHJ5IGV4dGVuZHMgTXVsdGlsaW5ndWFsRmllbGQge1xuICBrZXk6IHN0cmluZ1xuICBsaW5rPzogc3RyaW5nXG59XG5cbnR5cGUgTWF5YmVBcnJheTxUPiA9IFQgfCBUW11cblxuaW50ZXJmYWNlIENvbnRhY3Qge1xuICBvcmdhbmlzYXRpb24/OiBzdHJpbmdcbiAgb3JnYW5pc2F0aW9uT2JqZWN0PzogTXVsdGlsaW5ndWFsRmllbGRcbiAgcm9sZTogc3RyaW5nXG4gIGVtYWlsOiBzdHJpbmdcbiAgd2Vic2l0ZTogc3RyaW5nXG4gIGxvZ286IHN0cmluZ1xuICBpbmRpdmlkdWFsOiBzdHJpbmdcbiAgcG9zaXRpb246IHN0cmluZ1xuICBwaG9uZTogc3RyaW5nXG4gIGFkZHJlc3M6IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgT3ZlcnZpZXcge1xuICBkYXRhPzogc3RyaW5nXG4gIHVybD86IHN0cmluZ1xuICB0ZXh0PzogTXVsdGlsaW5ndWFsRmllbGRcbn1cblxuaW50ZXJmYWNlIFJlc291cmNlRGF0ZSB7XG4gIHR5cGU6IHN0cmluZ1xuICBkYXRlOiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIFJlc291cmNlVGVtcG9yYWxEYXRlUmFuZ2Uge1xuICBndGU/OiBzdHJpbmdcbiAgbHRlPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBSZXNvdXJjZUlkZW50aWZpZXIge1xuICBjb2RlOiBzdHJpbmdcbiAgY29kZVNwYWNlOiBzdHJpbmdcbiAgbGluazogc3RyaW5nXG59XG5cbmludGVyZmFjZSBTcGVjaWZpY2F0aW9uQ29uZm9ybWFuY2Uge1xuICB0aXRsZTogc3RyaW5nXG4gIGRhdGU6IHN0cmluZ1xuICBleHBsYW5hdGlvbjogc3RyaW5nXG4gIHBhc3M6IEJvb2xlYW5TdHJpbmdcbn1cblxudHlwZSBUaGVzYXVydXNOYW1lID0gc3RyaW5nXG5leHBvcnQgaW50ZXJmYWNlIFRoZXNhdXJ1cyB7XG4gIGlkPzogc3RyaW5nXG4gIHRpdGxlPzogc3RyaW5nXG4gIHRoZW1lPzogc3RyaW5nXG4gIGxpbms/OiBzdHJpbmdcbiAga2V5d29yZHM6IE11bHRpbGluZ3VhbEZpZWxkW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcbiAgcHJvdG9jb2w/OiBzdHJpbmdcbiAgbWltZVR5cGU/OiBzdHJpbmdcbiAgdXJsPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgZnVuY3Rpb24/OiBzdHJpbmdcbiAgYXBwbGljYXRpb25Qcm9maWxlPzogc3RyaW5nXG4gIGdyb3VwPzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhT2JqZWN0ID0gUGFydGlhbDx7XG4gIE1EX0NvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogTXVsdGlsaW5ndWFsRmllbGRbXVxuICBNRF9MZWdhbENvbnN0cmFpbnRzT3RoZXJDb25zdHJhaW50c09iamVjdDogTXVsdGlsaW5ndWFsRmllbGRbXVxuICBPcmc6IHN0cmluZ1xuICBPcmdGb3JSZXNvdXJjZTogc3RyaW5nW11cbiAgYWxsS2V5d29yZHM6IFJlY29yZDxUaGVzYXVydXNOYW1lLCBUaGVzYXVydXM+XG4gIGNoYW5nZURhdGU6IHN0cmluZ1xuICBjbF9jaGFyYWN0ZXJTZXQ6IENvZGVMaXN0RW50cnlbXVxuICBjbF9mdW5jdGlvbjogQ29kZUxpc3RFbnRyeVtdXG4gIGNsX2hpZXJhcmNoeUxldmVsOiBDb2RlTGlzdEVudHJ5W11cbiAgY2xfcmVzb3VyY2VDaGFyYWN0ZXJTZXQ6IENvZGVMaXN0RW50cnlbXVxuICBjbF9zdGF0dXM6IENvZGVMaXN0RW50cnlbXVxuICBjbF90b3BpYzogQ29kZUxpc3RFbnRyeVtdXG4gIGNsX3R5cGU6IENvZGVMaXN0RW50cnlbXVxuICBjb25mb3JtVG9fVGl0cmVkdW5lc3BjaWZpY2F0aW9ubGFxdWVsbGVsYXNyaWVkZWRvbm5lc2VzdGNvbmZvcm1lb3Vub246IHN0cmluZ1xuICBjb250YWN0OiBDb250YWN0W11cbiAgY29udGFjdEZvclJlc291cmNlOiBDb250YWN0W11cbiAgY3JlYXRlRGF0ZTogc3RyaW5nXG4gIGNyZWF0aW9uRGF0ZUZvclJlc291cmNlOiBzdHJpbmdbXVxuICBjcmVhdGlvbk1vbnRoRm9yUmVzb3VyY2U6IHN0cmluZ1xuICBjcmVhdGlvblllYXJGb3JSZXNvdXJjZTogc3RyaW5nXG4gIGRhdGVTdGFtcDogc3RyaW5nXG4gIGRpc3BsYXlPcmRlcjogc3RyaW5nXG4gIGRvY1R5cGU6IHN0cmluZ1xuICBkb2N1bWVudDogc3RyaW5nXG4gIGRvY3VtZW50U3RhbmRhcmQ6IHN0cmluZ1xuICBkcmFmdDogc3RyaW5nXG4gIGV4dGVudERlc2NyaXB0aW9uT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFtdXG4gIGV4dHJhOiBzdHJpbmdcbiAgZmVhdHVyZU9mUmVjb3JkOiBzdHJpbmdcbiAgZmVlZGJhY2tDb3VudDogc3RyaW5nXG4gIGdlb206IEdlb21ldHJ5IHwgR2VvbWV0cnlbXVxuICBncm91cE93bmVyOiBzdHJpbmdcbiAgZ3JvdXBQdWJsaXNoZWQ6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGdyb3VwUHVibGlzaGVkSWQ6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGhhcnZlc3RlclV1aWQ6IHN0cmluZ1xuICBoYXNJbnNwaXJlVGhlbWU6IEJvb2xlYW5TdHJpbmdcbiAgaGFzT3ZlcnZpZXc6IEJvb2xlYW5TdHJpbmdcbiAgaGFzeGxpbmtzOiBCb29sZWFuU3RyaW5nXG4gIGlkOiBzdHJpbmdcbiAgaW5kZXhpbmdEYXRlOiBzdHJpbmcgfCBudW1iZXJcbiAgaW5kZXhpbmdFcnJvcjogc3RyaW5nIHwgc3RyaW5nW11cbiAgaW5kZXhpbmdFcnJvck1zZzogc3RyaW5nW11cbiAgaW5zcGlyZUFubmV4OiBzdHJpbmdbXVxuICBpbnNwaXJlQW5uZXhGb3JGaXJzdFRoZW1lOiBzdHJpbmdcbiAgaW5zcGlyZVRoZW1lOiBzdHJpbmdbXVxuICBpbnNwaXJlVGhlbWVGaXJzdDogc3RyaW5nXG4gIGluc3BpcmVUaGVtZUZpcnN0X3N5bjogc3RyaW5nXG4gIGluc3BpcmVUaGVtZU51bWJlcjogc3RyaW5nXG4gIGluc3BpcmVUaGVtZVVyaTogc3RyaW5nW11cbiAgaW5zcGlyZVRoZW1lX3N5bjogc3RyaW5nW11cbiAgaXNIYXJ2ZXN0ZWQ6IHN0cmluZ1xuICBpc09wZW5EYXRhOiBzdHJpbmdcbiAgZWRpdDogYm9vbGVhblxuICBpc1B1Ymxpc2hlZFRvQWxsOiBzdHJpbmdcbiAgaXNUZW1wbGF0ZTogc3RyaW5nXG4gIGtleXdvcmRUeXBlOiBSZWNvcmQ8c3RyaW5nLCBNdWx0aWxpbmd1YWxGaWVsZFtdPlxuICBsaWNlbnNlT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFtdXG4gIGxpbmVhZ2VPYmplY3Q6IE11bHRpbGluZ3VhbEZpZWxkXG4gIGxpbms6IExpbmtbXVxuICBsaW5rUHJvdG9jb2w6IHN0cmluZ1tdXG4gIGxpbmtVcmw6IHN0cmluZyB8IHN0cmluZ1tdXG4gIGxpbmtVcmxQcm90b2NvbE9HQ1dGUzogc3RyaW5nIHwgc3RyaW5nW11cbiAgbGlua1VybFByb3RvY29sT0dDV01TOiBzdHJpbmdbXVxuICBsaW5rVXJsUHJvdG9jb2xXV1dMSU5LMTBodHRwbGluazogTWF5YmVBcnJheTxzdHJpbmc+XG4gIGxpbmtVcmxQcm90b2NvbFdXV0xJTksxMGh0dHByZWxhdGVkOiBzdHJpbmdcbiAgbG9jYXRpb246IHN0cmluZ1xuICBsb2dvOiBzdHJpbmdcbiAgbWFpbkxhbmd1YWdlOiBzdHJpbmdcbiAgbWV0YWRhdGFJZGVudGlmaWVyOiBzdHJpbmdcbiAgb3ZlcnZpZXc6IE92ZXJ2aWV3W11cbiAgb3duZXI6IHN0cmluZ1xuICBwb2ludE9mQ29udGFjdE9yZzogc3RyaW5nXG4gIHBvaW50T2ZDb250YWN0T3JnRm9yUmVzb3VyY2U6IHN0cmluZ1xuICBwb3B1bGFyaXR5OiBudW1iZXJcbiAgcHVibGljYXRpb25EYXRlRm9yUmVzb3VyY2U6IHN0cmluZyB8IHN0cmluZ1tdXG4gIHJhdGluZzogc3RyaW5nXG4gIHJlY29yZDogc3RyaW5nXG4gIHJlY29yZEdyb3VwOiBzdHJpbmdcbiAgcmVjb3JkT3duZXI6IHN0cmluZ1xuICByZXNvbHV0aW9uRGlzdGFuY2U6IHN0cmluZ1tdXG4gIHJlc29sdXRpb25TY2FsZURlbm9taW5hdG9yOiBzdHJpbmdbXVxuICByZXNvdXJjZUFic3RyYWN0T2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICByZXNvdXJjZURhdGU6IFJlc291cmNlRGF0ZVtdXG4gIHJlc291cmNlRWRpdGlvbjogc3RyaW5nXG4gIHJlc291cmNlSWRlbnRpZmllcjogUmVzb3VyY2VJZGVudGlmaWVyW11cbiAgcmVzb3VyY2VUZW1wb3JhbERhdGVSYW5nZTogUmVzb3VyY2VUZW1wb3JhbERhdGVSYW5nZVtdXG4gIHJlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2U6IFJlc291cmNlVGVtcG9yYWxEYXRlUmFuZ2VbXVxuICByZXNvdXJjZVRpdGxlT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICByZXNvdXJjZVR5cGU6IHN0cmluZ1tdXG4gIHJlc291cmNlVHlwZU5hbWVPYmplY3Q6IE11bHRpbGluZ3VhbEZpZWxkXG4gIHJldmlzaW9uRGF0ZUZvclJlc291cmNlOiBzdHJpbmdbXVxuICByZXZpc2lvbk1vbnRoRm9yUmVzb3VyY2U6IHN0cmluZ1xuICByZXZpc2lvblllYXJGb3JSZXNvdXJjZTogc3RyaW5nXG4gIHNvdXJjZUNhdGFsb2d1ZTogc3RyaW5nXG4gIHNwZWNpZmljYXRpb25Db25mb3JtYW5jZTogTWF5YmVBcnJheTxTcGVjaWZpY2F0aW9uQ29uZm9ybWFuY2U+XG4gIHN0YW5kYXJkTmFtZU9iamVjdDogTXVsdGlsaW5ndWFsRmllbGRcbiAgc3RhbmRhcmRWZXJzaW9uT2JqZWN0OiBNdWx0aWxpbmd1YWxGaWVsZFxuICB0YWc6IE11bHRpbGluZ3VhbEZpZWxkW11cbiAgdGFnTnVtYmVyOiBzdHJpbmdcbiAgdXNlclNhdmVkQ291bnQ6IHN0cmluZ1xuICB1c2VyaW5mbzogc3RyaW5nXG4gIHV1aWQ6IHN0cmluZ1xuICB2YWxpZDogc3RyaW5nXG4gIHhsaW5rOiBzdHJpbmdbXVxufT5cblxuZXhwb3J0IGludGVyZmFjZSBHbjRSZWNvcmQge1xuICBfaW5kZXg6IHN0cmluZ1xuICBfdHlwZT86IHN0cmluZ1xuICBfaWQ6IHN0cmluZ1xuICBfc2NvcmU6IG51bWJlclxuICBfc291cmNlOiBNZXRhZGF0YU9iamVjdFxuICBlZGl0PzogYm9vbGVhblxuICBvd25lcj86IGJvb2xlYW5cbiAgaXNQdWJsaXNoZWRUb0FsbD86IGJvb2xlYW5cbiAgdmlldz86IGJvb2xlYW5cbiAgbm90aWZ5PzogYm9vbGVhblxuICBkb3dubG9hZD86IGJvb2xlYW5cbiAgZHluYW1pYz86IGJvb2xlYW5cbiAgZmVhdHVyZWQ/OiBib29sZWFuXG4gIGd1ZXN0ZG93bmxvYWQ/OiBib29sZWFuXG4gIHNlbGVjdGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEduNFJlY29yZFJlbGF0ZWQge1xuICBmY2F0cz86IEduNFJlY29yZFtdXG59XG4iXX0=
@@ -1,9 +1,9 @@
1
1
  import { findChildElement, findChildrenElement, findNestedElement, findNestedElements, findParent, readAttribute, } from '../xml-utils';
2
2
  import { combine, filterArray, flattenArray, getAtIndex, map, mapArray, pipe, } from '../function-utils';
3
- import { extractCharacterString, extractDatasetOnlineResources, extractDateTime, extractLocalizedCharacterString, extractRole, extractServiceOnlineResources, extractReuseOnlineResources, extractUrl, findIdentification, } from '../iso19139/read-parts';
3
+ import { extractCharacterString, extractDatasetOnlineResources, extractDateTime, extractLocalizedCharacterString, extractReuseOnlineResources, extractRole, extractServiceOnlineResources, extractUrl, findIdentification, } from '../iso19139/read-parts';
4
4
  import { matchMimeType } from '../common/distribution.mapper';
5
5
  import { fullNameToParts } from '../iso19139/utils/individual-name';
6
- import { LANG_3_TO_2_MAPPER } from '../../../../../../libs/util/i18n/src/lib/language-codes';
6
+ import { getLang2FromLang3 } from '../../../../../../libs/util/i18n/src/lib/language-codes';
7
7
  import { getResourceType, getReuseType } from '../common/resource-types';
8
8
  export function readKind(rootEl) {
9
9
  return pipe(findNestedElement('mdb:metadataScope', 'mdb:MD_MetadataScope', 'mdb:resourceScope', 'mcc:MD_ScopeCode'), readAttribute('codeListValue'), map((scopeCode) => getResourceType(scopeCode)))(rootEl);
@@ -131,13 +131,13 @@ export function readOnlineResources(rootEl) {
131
131
  }
132
132
  return pipe(findNestedElements('mrd:distributionInfo', 'mrd:MD_Distribution'), mapArray(getOnlineResources), flattenArray())(rootEl);
133
133
  }
134
- function readLocaleElement() {
135
- return pipe(findChildElement('lan:LanguageCode'), readAttribute('codeListValue'), map((lang) => (lang ? LANG_3_TO_2_MAPPER[lang.toLowerCase()] : null)));
134
+ export function readLocaleElement() {
135
+ return pipe(findChildElement('lan:LanguageCode'), readAttribute('codeListValue'), map((lang) => getLang2FromLang3(lang?.toLowerCase()) ?? lang));
136
136
  }
137
137
  export function readDefaultLanguage(rootEl) {
138
138
  return pipe(findChildElement('mdb:defaultLocale', false), readLocaleElement())(rootEl);
139
139
  }
140
140
  export function readOtherLanguages(rootEl) {
141
- return pipe(findChildrenElement('mdb:otherLocale', false), mapArray(readLocaleElement()))(rootEl);
141
+ return pipe(findChildrenElement('mdb:otherLocale', false), mapArray(readLocaleElement()), map((languages) => languages.filter((lang) => lang !== null)))(rootEl);
142
142
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1wYXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2lzbzE5MTE1LTMvcmVhZC1wYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixhQUFhLEdBRWQsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUVMLE9BQU8sRUFDUCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFVBQVUsRUFDVixHQUFHLEVBQ0gsUUFBUSxFQUNSLElBQUksR0FDTCxNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsNkJBQTZCLEVBQzdCLGVBQWUsRUFDZiwrQkFBK0IsRUFDL0IsV0FBVyxFQUNYLDZCQUE2QixFQUM3QiwyQkFBMkIsRUFDM0IsVUFBVSxFQUNWLGtCQUFrQixHQUNuQixNQUFNLHdCQUF3QixDQUFBO0FBWS9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seURBQXlELENBQUE7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUV4RSxNQUFNLFVBQVUsUUFBUSxDQUFDLE1BQWtCO0lBQ3pDLE9BQU8sSUFBSSxDQUNULGlCQUFpQixDQUNmLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGtCQUFrQixDQUNuQixFQUNELGFBQWEsQ0FBQyxlQUFlLENBQUMsRUFDOUIsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFjLEVBQUUsQ0FBQyxlQUFlLENBQUMsU0FB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QUVELFNBQVMsaUJBQWlCO0lBQ3hCLE9BQU8sSUFBSSxDQUNULGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLEVBQ3BDLGFBQWEsQ0FBQyxlQUFlLENBQUMsRUFDOUIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3RFLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQWtCO0lBQ3BELE9BQU8sSUFBSSxDQUNULGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxFQUM1QyxpQkFBaUIsRUFBRSxDQUNwQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ1gsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFrQjtJQUNuRCxPQUFPLElBQUksQ0FDVCxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsRUFDN0MsUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FDOUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBmaW5kQ2hpbGRFbGVtZW50LFxuICBmaW5kQ2hpbGRyZW5FbGVtZW50LFxuICBmaW5kTmVzdGVkRWxlbWVudCxcbiAgZmluZE5lc3RlZEVsZW1lbnRzLFxuICBmaW5kUGFyZW50LFxuICByZWFkQXR0cmlidXRlLFxuICBYbWxFbGVtZW50LFxufSBmcm9tICcuLi94bWwtdXRpbHMnXG5pbXBvcnQge1xuICBDaGFpbmFibGVGdW5jdGlvbixcbiAgY29tYmluZSxcbiAgZmlsdGVyQXJyYXksXG4gIGZsYXR0ZW5BcnJheSxcbiAgZ2V0QXRJbmRleCxcbiAgbWFwLFxuICBtYXBBcnJheSxcbiAgcGlwZSxcbn0gZnJvbSAnLi4vZnVuY3Rpb24tdXRpbHMnXG5pbXBvcnQge1xuICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nLFxuICBleHRyYWN0RGF0YXNldE9ubGluZVJlc291cmNlcyxcbiAgZXh0cmFjdERhdGVUaW1lLFxuICBleHRyYWN0TG9jYWxpemVkQ2hhcmFjdGVyU3RyaW5nLFxuICBleHRyYWN0Um9sZSxcbiAgZXh0cmFjdFNlcnZpY2VPbmxpbmVSZXNvdXJjZXMsXG4gIGV4dHJhY3RSZXVzZU9ubGluZVJlc291cmNlcyxcbiAgZXh0cmFjdFVybCxcbiAgZmluZElkZW50aWZpY2F0aW9uLFxufSBmcm9tICcuLi9pc28xOTEzOS9yZWFkLXBhcnRzJ1xuaW1wb3J0IHtcbiAgSW5kaXZpZHVhbCxcbiAgTGFuZ3VhZ2VDb2RlLFxuICBPbmxpbmVSZXNvdXJjZSxcbiAgT3JnYW5pemF0aW9uLFxuICBPcmdhbml6YXRpb25UcmFuc2xhdGlvbnMsXG4gIFJlY29yZEtpbmQsXG4gIFJlY29yZFRyYW5zbGF0aW9ucyxcbiAgUmV1c2VUeXBlLFxuICBSb2xlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBtYXRjaE1pbWVUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2Rpc3RyaWJ1dGlvbi5tYXBwZXInXG5pbXBvcnQgeyBmdWxsTmFtZVRvUGFydHMgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy9pbmRpdmlkdWFsLW5hbWUnXG5pbXBvcnQgeyBMQU5HXzNfVE9fMl9NQVBQRVIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMvbGliL2xhbmd1YWdlLWNvZGVzJ1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VUeXBlLCBnZXRSZXVzZVR5cGUgfSBmcm9tICcuLi9jb21tb24vcmVzb3VyY2UtdHlwZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkS2luZChyb290RWw6IFhtbEVsZW1lbnQpOiBSZWNvcmRLaW5kIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgICAnbWRiOm1ldGFkYXRhU2NvcGUnLFxuICAgICAgJ21kYjpNRF9NZXRhZGF0YVNjb3BlJyxcbiAgICAgICdtZGI6cmVzb3VyY2VTY29wZScsXG4gICAgICAnbWNjOk1EX1Njb3BlQ29kZSdcbiAgICApLFxuICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSxcbiAgICBtYXAoKHNjb3BlQ29kZSk6IFJlY29yZEtpbmQgPT4gZ2V0UmVzb3VyY2VUeXBlKHNjb3BlQ29kZSkpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZERpc3RyaWJ1dGlvbigpIHtcbiAgcmV0dXJuIGZpbmROZXN0ZWRFbGVtZW50KCdtZGI6ZGlzdHJpYnV0aW9uSW5mbycsICdtcmQ6TURfRGlzdHJpYnV0aW9uJylcbn1cblxuLy8gZnJvbSBjaXQ6Q0lfT3JnYW5pc2F0aW9uXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE9yZ2FuaXphdGlvbigpOiBDaGFpbmFibGVGdW5jdGlvbjxcbiAgWG1sRWxlbWVudCxcbiAgT3JnYW5pemF0aW9uXG4+IHtcbiAgY29uc3QgZ2V0VXJsID0gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudHMoXG4gICAgICAnY2l0OmNvbnRhY3RJbmZvJyxcbiAgICAgICdjaXQ6Q0lfQ29udGFjdCcsXG4gICAgICAnY2l0Om9ubGluZVJlc291cmNlJyxcbiAgICAgICdjaXQ6Q0lfT25saW5lUmVzb3VyY2UnLFxuICAgICAgJ2NpdDpsaW5rYWdlJ1xuICAgICksXG4gICAgZ2V0QXRJbmRleCgwKSxcbiAgICBleHRyYWN0VXJsKClcbiAgKVxuICByZXR1cm4gcGlwZShcbiAgICBjb21iaW5lKFxuICAgICAgcGlwZShcbiAgICAgICAgZmluZENoaWxkRWxlbWVudCgnY2l0Om5hbWUnLCBmYWxzZSksXG4gICAgICAgIGV4dHJhY3RMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmc8T3JnYW5pemF0aW9uVHJhbnNsYXRpb25zPignbmFtZScpXG4gICAgICApLFxuICAgICAgZ2V0VXJsXG4gICAgKSxcbiAgICBtYXAoKFtbbmFtZSwgdHJhbnNsYXRpb25zXSwgd2Vic2l0ZV0pID0+ICh7XG4gICAgICBuYW1lLFxuICAgICAgLi4uKHdlYnNpdGUgJiYgeyB3ZWJzaXRlIH0pLFxuICAgICAgdHJhbnNsYXRpb25zLFxuICAgIH0pKVxuICApXG59XG5cbi8vIGZyb20gY2l0OkNJX0luZGl2aWR1YWwgb3IgY2l0OkNJX09yZ2FuaXNhdGlvblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbmRpdmlkdWFsKFxuICByb2xlOiBSb2xlLFxuICBvcmdhbml6YXRpb24/OiBPcmdhbml6YXRpb24sXG4gIG9yZ0NvbnRhY3Q/OiBJbmRpdmlkdWFsXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBJbmRpdmlkdWFsPiB7XG4gIGNvbnN0IGdldFBvc2l0aW9uID0gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdjaXQ6cG9zaXRpb25OYW1lJyksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gIClcbiAgY29uc3QgZ2V0TmFtZVBhcnRzID0gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdjaXQ6bmFtZScpLFxuICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSxcbiAgICBtYXAoKGZ1bGxOYW1lKSA9PiB7XG4gICAgICBpZiAoIWZ1bGxOYW1lKSByZXR1cm4gW11cbiAgICAgIHJldHVybiBmdWxsTmFtZVRvUGFydHMoZnVsbE5hbWUpXG4gICAgfSlcbiAgKVxuICBjb25zdCBnZXRDb250YWN0ID0gZmluZE5lc3RlZEVsZW1lbnQoJ2NpdDpjb250YWN0SW5mbycsICdjaXQ6Q0lfQ29udGFjdCcpXG4gIGNvbnN0IGdldEFkZHJlc3NSb290ID0gcGlwZShcbiAgICBnZXRDb250YWN0LFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdjaXQ6YWRkcmVzcycsICdjaXQ6Q0lfQWRkcmVzcycpXG4gIClcbiAgY29uc3QgZ2V0QWRkcmVzcyA9IHBpcGUoXG4gICAgZ2V0QWRkcmVzc1Jvb3QsXG4gICAgY29tYmluZShcbiAgICAgIHBpcGUoXG4gICAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDpkZWxpdmVyeVBvaW50JywgZmFsc2UpLFxuICAgICAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgICAgICksXG4gICAgICBwaXBlKGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDpjaXR5JywgZmFsc2UpLCBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCkpLFxuICAgICAgcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdjaXQ6cG9zdGFsQ29kZScsIGZhbHNlKSwgZXh0cmFjdENoYXJhY3RlclN0cmluZygpKSxcbiAgICAgIHBpcGUoZmluZENoaWxkRWxlbWVudCgnY2l0OmNvdW50cnknLCBmYWxzZSksIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSlcbiAgICApLFxuICAgIG1hcCgocGFydHMpID0+IHBhcnRzLmZpbHRlcigocCkgPT4gISFwKS5qb2luKCcsICcpKVxuICApXG4gIGNvbnN0IGdldFBob25lID0gcGlwZShcbiAgICBnZXRDb250YWN0LFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdjaXQ6cGhvbmUnLCAnY2l0OkNJX1RlbGVwaG9uZScsICdjaXQ6bnVtYmVyJyksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gIClcbiAgY29uc3QgZ2V0RW1haWwgPSBwaXBlKFxuICAgIGdldEFkZHJlc3NSb290LFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDplbGVjdHJvbmljTWFpbEFkZHJlc3MnLCBmYWxzZSksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gIClcbiAgY29uc3QgZGVmYXVsdE9yZzogT3JnYW5pemF0aW9uID0ge1xuICAgIG5hbWU6ICdNaXNzaW5nIE9yZ2FuaXphdGlvbicsXG4gICAgdHJhbnNsYXRpb25zOiB7fSxcbiAgfVxuXG4gIGxldCBkZWZhdWx0SW5kaXZpZHVhbDogUGFydGlhbDxJbmRpdmlkdWFsPiA9IHt9XG4gIGlmIChvcmdDb250YWN0KSB7XG4gICAgZGVmYXVsdEluZGl2aWR1YWwgPSB7XG4gICAgICBlbWFpbDogb3JnQ29udGFjdC5lbWFpbCxcbiAgICAgIC4uLihvcmdDb250YWN0LmFkZHJlc3MgJiYgeyBhZGRyZXNzOiBvcmdDb250YWN0LmFkZHJlc3MgfSksXG4gICAgICAuLi4ob3JnQ29udGFjdC5waG9uZSAmJiB7IHBob25lOiBvcmdDb250YWN0LnBob25lIH0pLFxuICAgICAgLi4uKG9yZ0NvbnRhY3QucG9zaXRpb24gJiYgeyBwb3NpdGlvbjogb3JnQ29udGFjdC5wb3NpdGlvbiB9KSxcbiAgICAgIG9yZ2FuaXphdGlvbixcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGlwZShcbiAgICBjb21iaW5lKGdldFBvc2l0aW9uLCBnZXROYW1lUGFydHMsIGdldEVtYWlsLCBnZXRBZGRyZXNzLCBnZXRQaG9uZSksXG4gICAgbWFwKChbcG9zaXRpb24sIFtmaXJzdE5hbWUsIGxhc3ROYW1lXSwgZW1haWwsIGFkZHJlc3MsIHBob25lXSkgPT4gKHtcbiAgICAgIC4uLmRlZmF1bHRJbmRpdmlkdWFsLFxuICAgICAgZW1haWw6IGVtYWlsIHx8IGRlZmF1bHRJbmRpdmlkdWFsLmVtYWlsIHx8ICdtaXNzaW5nQG1pc3NpbmcuY29tJyxcbiAgICAgIHJvbGUsXG4gICAgICBvcmdhbml6YXRpb246IG9yZ2FuaXphdGlvbiB8fCBkZWZhdWx0T3JnLFxuICAgICAgLi4uKHBvc2l0aW9uICYmIHsgcG9zaXRpb24gfSksXG4gICAgICAuLi4oZmlyc3ROYW1lICYmIHsgZmlyc3ROYW1lIH0pLFxuICAgICAgLi4uKGxhc3ROYW1lICYmIHsgbGFzdE5hbWUgfSksXG4gICAgICAuLi4oYWRkcmVzcyAmJiB7IGFkZHJlc3MgfSksXG4gICAgICAuLi4ocGhvbmUgJiYgeyBwaG9uZSB9KSxcbiAgICB9KSlcbiAgKVxufVxuXG4vLyBmcm9tIGNpdDpDSV9PcmdhbmlzYXRpb25cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0T3JnYW5pemF0aW9uSW5kaXZpZHVhbHMoXG4gIHJvbGU6IFJvbGVcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIEFycmF5PEluZGl2aWR1YWw+PiB7XG4gIHJldHVybiBwaXBlKFxuICAgIGNvbWJpbmUoXG4gICAgICBleHRyYWN0T3JnYW5pemF0aW9uKCksXG4gICAgICBleHRyYWN0SW5kaXZpZHVhbChyb2xlKSxcbiAgICAgIGZpbmROZXN0ZWRFbGVtZW50cygnY2l0OmluZGl2aWR1YWwnLCAnY2l0OkNJX0luZGl2aWR1YWwnKVxuICAgICksXG4gICAgbWFwKChbb3JnLCBvcmdDb250YWN0LCBlbHNdKSA9PlxuICAgICAgZWxzLmxlbmd0aFxuICAgICAgICA/IGVscy5tYXAoKGVsKSA9PiBleHRyYWN0SW5kaXZpZHVhbChyb2xlLCBvcmcsIG9yZ0NvbnRhY3QpKGVsKSlcbiAgICAgICAgOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVtYWlsOiBvcmdDb250YWN0LmVtYWlsLFxuICAgICAgICAgICAgICAuLi4ob3JnQ29udGFjdC5hZGRyZXNzICYmIHsgYWRkcmVzczogb3JnQ29udGFjdC5hZGRyZXNzIH0pLFxuICAgICAgICAgICAgICAuLi4ob3JnQ29udGFjdC5waG9uZSAmJiB7IHBob25lOiBvcmdDb250YWN0LnBob25lIH0pLFxuICAgICAgICAgICAgICAuLi4ob3JnQ29udGFjdC5wb3NpdGlvbiAmJiB7IHBvc2l0aW9uOiBvcmdDb250YWN0LnBvc2l0aW9uIH0pLFxuICAgICAgICAgICAgICBvcmdhbml6YXRpb246IG9yZyxcbiAgICAgICAgICAgICAgcm9sZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgIClcbiAgKVxufVxuXG4vLyBmcm9tIGNpdDpDSV9SZXNwb25zaWJpbGl0eVxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbmRpdmlkdWFscygpOiBDaGFpbmFibGVGdW5jdGlvbjxcbiAgWG1sRWxlbWVudCxcbiAgQXJyYXk8SW5kaXZpZHVhbD5cbj4ge1xuICBjb25zdCBnZXRSb2xlID0gcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdjaXQ6cm9sZScpLCBleHRyYWN0Um9sZSgpKVxuICBjb25zdCBnZXRJbmRpdmlkdWFscyA9IHBpcGUoXG4gICAgY29tYmluZShnZXRSb2xlLCBmaW5kTmVzdGVkRWxlbWVudHMoJ2NpdDpwYXJ0eScsICdjaXQ6Q0lfSW5kaXZpZHVhbCcpKSxcbiAgICAoW3JvbGUsIGVsc10pID0+IGVscy5tYXAoZXh0cmFjdEluZGl2aWR1YWwocm9sZSkpXG4gIClcbiAgY29uc3QgZ2V0T3JnSW5kaXZpZHVhbHMgPSBwaXBlKFxuICAgIGNvbWJpbmUoZ2V0Um9sZSwgZmluZE5lc3RlZEVsZW1lbnRzKCdjaXQ6cGFydHknLCAnY2l0OkNJX09yZ2FuaXNhdGlvbicpKSxcbiAgICBtYXAoKFtyb2xlLCBlbHNdKSA9PiBlbHMubWFwKGV4dHJhY3RPcmdhbml6YXRpb25JbmRpdmlkdWFscyhyb2xlKSkpLFxuICAgIGZsYXR0ZW5BcnJheSgpXG4gIClcblxuICByZXR1cm4gcGlwZShjb21iaW5lKGdldEluZGl2aWR1YWxzLCBnZXRPcmdJbmRpdmlkdWFscyksIGZsYXR0ZW5BcnJheSgpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVuaXF1ZUlkZW50aWZpZXIocm9vdEVsOiBYbWxFbGVtZW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgICAnbWRiOm1ldGFkYXRhSWRlbnRpZmllcicsXG4gICAgICAnbWNjOk1EX0lkZW50aWZpZXInLFxuICAgICAgJ21jYzpjb2RlJ1xuICAgICksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZE93bmVyT3JnYW5pemF0aW9uKHJvb3RFbDogWG1sRWxlbWVudCk6IE9yZ2FuaXphdGlvbiB7XG4gIGNvbnN0IGNvbnRhY3RzID0gcmVhZENvbnRhY3RzKHJvb3RFbClcbiAgY29uc3QgY29udGFjdHNGb3JSZXNvdXJjZSA9IHJlYWRDb250YWN0c0ZvclJlc291cmNlKHJvb3RFbClcbiAgY29uc3QgcG9pbnRPZkNvbnRhY3QgPSBjb250YWN0cy5maWx0ZXIoXG4gICAgKGMpID0+IGMucm9sZSA9PT0gJ3BvaW50X29mX2NvbnRhY3QnXG4gIClbMF1cbiAgcmV0dXJuIChwb2ludE9mQ29udGFjdCB8fCBjb250YWN0c1swXSB8fCBjb250YWN0c0ZvclJlc291cmNlWzBdKS5vcmdhbml6YXRpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDb250YWN0cyhyb290RWw6IFhtbEVsZW1lbnQpOiBJbmRpdmlkdWFsW10ge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudHMoJ21kYjpjb250YWN0JywgJ2NpdDpDSV9SZXNwb25zaWJpbGl0eScpLFxuICAgIG1hcEFycmF5KGV4dHJhY3RJbmRpdmlkdWFscygpKSxcbiAgICBmbGF0dGVuQXJyYXkoKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDb250YWN0c0ZvclJlc291cmNlKHJvb3RFbDogWG1sRWxlbWVudCk6IEluZGl2aWR1YWxbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGNvbWJpbmUoXG4gICAgICBwaXBlKFxuICAgICAgICBmaW5kSWRlbnRpZmljYXRpb24oKSxcbiAgICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKFxuICAgICAgICAgICdtcmk6Y2l0YXRpb24nLFxuICAgICAgICAgICdjaXQ6Q0lfQ2l0YXRpb24nLFxuICAgICAgICAgICdjaXQ6Y2l0ZWRSZXNwb25zaWJsZVBhcnR5J1xuICAgICAgICApXG4gICAgICApLFxuICAgICAgcGlwZShcbiAgICAgICAgZmluZElkZW50aWZpY2F0aW9uKCksXG4gICAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ21yaTpwb2ludE9mQ29udGFjdCcsIGZhbHNlKVxuICAgICAgKSxcbiAgICAgIHBpcGUoZmluZERpc3RyaWJ1dGlvbigpLCBmaW5kQ2hpbGRyZW5FbGVtZW50KCdtcmQ6ZGlzdHJpYnV0b3JDb250YWN0JykpXG4gICAgKSxcbiAgICBmbGF0dGVuQXJyYXkoKSxcbiAgICBtYXBBcnJheShmaW5kQ2hpbGRFbGVtZW50KCdjaXQ6Q0lfUmVzcG9uc2liaWxpdHknLCBmYWxzZSkpLFxuICAgIG1hcEFycmF5KGV4dHJhY3RJbmRpdmlkdWFscygpKSxcbiAgICBmbGF0dGVuQXJyYXkoKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRMYW5kaW5nUGFnZShyb290RWw6IFhtbEVsZW1lbnQpOiBVUkwge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudChcbiAgICAgICdtZGI6bWV0YWRhdGFMaW5rYWdlJyxcbiAgICAgICdjaXQ6Q0lfT25saW5lUmVzb3VyY2UnLFxuICAgICAgJ2NpdDpsaW5rYWdlJ1xuICAgICksXG4gICAgZXh0cmFjdFVybCgpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZExpbmVhZ2UoXG4gIHJvb3RFbDogWG1sRWxlbWVudCxcbiAgdHJhbnNsYXRpb25zOiBSZWNvcmRUcmFuc2xhdGlvbnNcbik6IHN0cmluZyB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdtZGI6cmVzb3VyY2VMaW5lYWdlJywgJ21ybDpMSV9MaW5lYWdlJywgJ21ybDpzdGF0ZW1lbnQnKSxcbiAgICBleHRyYWN0TG9jYWxpemVkQ2hhcmFjdGVyU3RyaW5nKCdsaW5lYWdlJywgdHJhbnNsYXRpb25zKSxcbiAgICBtYXAoKFtsaW5lYWdlXSkgPT4gbGluZWFnZSlcbiAgKShyb290RWwpXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3REYXRlSW5mbyhcbiAgdHlwZTogJ2NyZWF0aW9uJyB8ICdyZXZpc2lvbicgfCAncHVibGljYXRpb24nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBEYXRlPiB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ21kYjpkYXRlSW5mbycsIGZhbHNlKSxcbiAgICBmaWx0ZXJBcnJheShcbiAgICAgIChlbCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBmaW5kQ2hpbGRFbGVtZW50KCdjaXQ6Q0lfRGF0ZVR5cGVDb2RlJyksXG4gICAgICAgICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpXG4gICAgICAgICkoZWwpID09PSB0eXBlXG4gICAgKSxcbiAgICBnZXRBdEluZGV4KDApLFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDpkYXRlJyksXG4gICAgZXh0cmFjdERhdGVUaW1lKClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlY29yZFVwZGF0ZWQocm9vdEVsOiBYbWxFbGVtZW50KTogRGF0ZSB7XG4gIHJldHVybiBleHRyYWN0RGF0ZUluZm8oJ3JldmlzaW9uJykocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlY29yZENyZWF0ZWQocm9vdEVsOiBYbWxFbGVtZW50KTogRGF0ZSB7XG4gIHJldHVybiBleHRyYWN0RGF0ZUluZm8oJ2NyZWF0aW9uJykocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlY29yZFB1Ymxpc2hlZChyb290RWw6IFhtbEVsZW1lbnQpOiBEYXRlIHtcbiAgcmV0dXJuIGV4dHJhY3REYXRlSW5mbygncHVibGljYXRpb24nKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkUmV1c2VUeXBlKHJvb3RFbDogWG1sRWxlbWVudCk6IFJldXNlVHlwZSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KFxuICAgICAgJ21kYjptZXRhZGF0YVNjb3BlJyxcbiAgICAgICdtZGI6TURfTWV0YWRhdGFTY29wZScsXG4gICAgICAnbWRiOnJlc291cmNlU2NvcGUnLFxuICAgICAgJ21jYzpNRF9TY29wZUNvZGUnXG4gICAgKSxcbiAgICByZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJyksXG4gICAgbWFwKChzY29wZUNvZGUpOiBSZXVzZVR5cGUgPT4gZ2V0UmV1c2VUeXBlKHNjb3BlQ29kZSkpXG4gICkocm9vdEVsKVxufVxuXG5jb25zdCBnZXRNaW1lVHlwZSA9IHBpcGUoXG4gIGZpbmRQYXJlbnQoJ21yZDpNRF9EaXN0cmlidXRpb24nKSxcbiAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgJ21yZDpkaXN0cmlidXRpb25Gb3JtYXQnLFxuICAgICdtcmQ6TURfRm9ybWF0JyxcbiAgICAnbXJkOmZvcm1hdFNwZWNpZmljYXRpb25DaXRhdGlvbicsXG4gICAgJ2NpdDpDSV9DaXRhdGlvbicsXG4gICAgJ2NpdDp0aXRsZSdcbiAgKSxcbiAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpLFxuICBtYXAobWF0Y2hNaW1lVHlwZSlcbilcblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRPbmxpbmVSZXNvdXJjZXMocm9vdEVsOiBYbWxFbGVtZW50KTogT25saW5lUmVzb3VyY2VbXSB7XG4gIGxldCBnZXRPbmxpbmVSZXNvdXJjZXM6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIE9ubGluZVJlc291cmNlW10+XG4gIGlmIChyZWFkS2luZChyb290RWwpID09PSAnZGF0YXNldCcpIHtcbiAgICBnZXRPbmxpbmVSZXNvdXJjZXMgPSBleHRyYWN0RGF0YXNldE9ubGluZVJlc291cmNlcyhnZXRNaW1lVHlwZSlcbiAgfSBlbHNlIGlmIChyZWFkS2luZChyb290RWwpID09PSAnc2VydmljZScpIHtcbiAgICBnZXRPbmxpbmVSZXNvdXJjZXMgPSBleHRyYWN0U2VydmljZU9ubGluZVJlc291cmNlcygpXG4gIH0gZWxzZSB7XG4gICAgZ2V0T25saW5lUmVzb3VyY2VzID0gZXh0cmFjdFJldXNlT25saW5lUmVzb3VyY2VzKClcbiAgfVxuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudHMoJ21yZDpkaXN0cmlidXRpb25JbmZvJywgJ21yZDpNRF9EaXN0cmlidXRpb24nKSxcbiAgICBtYXBBcnJheShnZXRPbmxpbmVSZXNvdXJjZXMpLFxuICAgIGZsYXR0ZW5BcnJheSgpXG4gICkocm9vdEVsKVxufVxuXG5mdW5jdGlvbiByZWFkTG9jYWxlRWxlbWVudCgpOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBMYW5ndWFnZUNvZGU+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnbGFuOkxhbmd1YWdlQ29kZScpLFxuICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSxcbiAgICBtYXAoKGxhbmcpID0+IChsYW5nID8gTEFOR18zX1RPXzJfTUFQUEVSW2xhbmcudG9Mb3dlckNhc2UoKV0gOiBudWxsKSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZERlZmF1bHRMYW5ndWFnZShyb290RWw6IFhtbEVsZW1lbnQpOiBMYW5ndWFnZUNvZGUge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdtZGI6ZGVmYXVsdExvY2FsZScsIGZhbHNlKSxcbiAgICByZWFkTG9jYWxlRWxlbWVudCgpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZE90aGVyTGFuZ3VhZ2VzKHJvb3RFbDogWG1sRWxlbWVudCk6IExhbmd1YWdlQ29kZVtdIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkcmVuRWxlbWVudCgnbWRiOm90aGVyTG9jYWxlJywgZmFsc2UpLFxuICAgIG1hcEFycmF5KHJlYWRMb2NhbGVFbGVtZW50KCkpXG4gICkocm9vdEVsKVxufVxuIl19
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1wYXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2lzbzE5MTE1LTMvcmVhZC1wYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixhQUFhLEdBRWQsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUVMLE9BQU8sRUFDUCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFVBQVUsRUFDVixHQUFHLEVBQ0gsUUFBUSxFQUNSLElBQUksR0FDTCxNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsNkJBQTZCLEVBQzdCLGVBQWUsRUFDZiwrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLFdBQVcsRUFDWCw2QkFBNkIsRUFDN0IsVUFBVSxFQUNWLGtCQUFrQixHQUNuQixNQUFNLHdCQUF3QixDQUFBO0FBWS9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seURBQXlELENBQUE7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUV4RSxNQUFNLFVBQVUsUUFBUSxDQUFDLE1BQWtCO0lBQ3pDLE9BQU8sSUFBSSxDQUNULGlCQUFpQixDQUNmLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGtCQUFrQixDQUNuQixFQUNELGFBQWEsQ0FBQyxlQUFlLENBQUMsRUFDOUIsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFjLEVBQUUsQ0FBQyxlQUFlLENBQUMsU0FB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QUVELE1BQU0sVUFBVSxpQkFBaUI7SUFJL0IsT0FBTyxJQUFJLENBQ1QsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsRUFDcEMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxFQUM5QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUM5RCxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFrQjtJQUNwRCxPQUFPLElBQUksQ0FDVCxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsRUFDNUMsaUJBQWlCLEVBQUUsQ0FDcEIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNYLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBa0I7SUFDbkQsT0FBTyxJQUFJLENBQ1QsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEVBQzdDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEVBQzdCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ2hCLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQXdCLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQ2hFLENBQ0YsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBmaW5kQ2hpbGRFbGVtZW50LFxuICBmaW5kQ2hpbGRyZW5FbGVtZW50LFxuICBmaW5kTmVzdGVkRWxlbWVudCxcbiAgZmluZE5lc3RlZEVsZW1lbnRzLFxuICBmaW5kUGFyZW50LFxuICByZWFkQXR0cmlidXRlLFxuICBYbWxFbGVtZW50LFxufSBmcm9tICcuLi94bWwtdXRpbHMnXG5pbXBvcnQge1xuICBDaGFpbmFibGVGdW5jdGlvbixcbiAgY29tYmluZSxcbiAgZmlsdGVyQXJyYXksXG4gIGZsYXR0ZW5BcnJheSxcbiAgZ2V0QXRJbmRleCxcbiAgbWFwLFxuICBtYXBBcnJheSxcbiAgcGlwZSxcbn0gZnJvbSAnLi4vZnVuY3Rpb24tdXRpbHMnXG5pbXBvcnQge1xuICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nLFxuICBleHRyYWN0RGF0YXNldE9ubGluZVJlc291cmNlcyxcbiAgZXh0cmFjdERhdGVUaW1lLFxuICBleHRyYWN0TG9jYWxpemVkQ2hhcmFjdGVyU3RyaW5nLFxuICBleHRyYWN0UmV1c2VPbmxpbmVSZXNvdXJjZXMsXG4gIGV4dHJhY3RSb2xlLFxuICBleHRyYWN0U2VydmljZU9ubGluZVJlc291cmNlcyxcbiAgZXh0cmFjdFVybCxcbiAgZmluZElkZW50aWZpY2F0aW9uLFxufSBmcm9tICcuLi9pc28xOTEzOS9yZWFkLXBhcnRzJ1xuaW1wb3J0IHtcbiAgSW5kaXZpZHVhbCxcbiAgTGFuZ3VhZ2VDb2RlLFxuICBPbmxpbmVSZXNvdXJjZSxcbiAgT3JnYW5pemF0aW9uLFxuICBPcmdhbml6YXRpb25UcmFuc2xhdGlvbnMsXG4gIFJlY29yZEtpbmQsXG4gIFJlY29yZFRyYW5zbGF0aW9ucyxcbiAgUmV1c2VUeXBlLFxuICBSb2xlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBtYXRjaE1pbWVUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2Rpc3RyaWJ1dGlvbi5tYXBwZXInXG5pbXBvcnQgeyBmdWxsTmFtZVRvUGFydHMgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy9pbmRpdmlkdWFsLW5hbWUnXG5pbXBvcnQgeyBnZXRMYW5nMkZyb21MYW5nMyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9pMThuL3NyYy9saWIvbGFuZ3VhZ2UtY29kZXMnXG5pbXBvcnQgeyBnZXRSZXNvdXJjZVR5cGUsIGdldFJldXNlVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9yZXNvdXJjZS10eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRLaW5kKHJvb3RFbDogWG1sRWxlbWVudCk6IFJlY29yZEtpbmQge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudChcbiAgICAgICdtZGI6bWV0YWRhdGFTY29wZScsXG4gICAgICAnbWRiOk1EX01ldGFkYXRhU2NvcGUnLFxuICAgICAgJ21kYjpyZXNvdXJjZVNjb3BlJyxcbiAgICAgICdtY2M6TURfU2NvcGVDb2RlJ1xuICAgICksXG4gICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpLFxuICAgIG1hcCgoc2NvcGVDb2RlKTogUmVjb3JkS2luZCA9PiBnZXRSZXNvdXJjZVR5cGUoc2NvcGVDb2RlKSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGlzdHJpYnV0aW9uKCkge1xuICByZXR1cm4gZmluZE5lc3RlZEVsZW1lbnQoJ21kYjpkaXN0cmlidXRpb25JbmZvJywgJ21yZDpNRF9EaXN0cmlidXRpb24nKVxufVxuXG4vLyBmcm9tIGNpdDpDSV9PcmdhbmlzYXRpb25cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0T3JnYW5pemF0aW9uKCk6IENoYWluYWJsZUZ1bmN0aW9uPFxuICBYbWxFbGVtZW50LFxuICBPcmdhbml6YXRpb25cbj4ge1xuICBjb25zdCBnZXRVcmwgPSBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cyhcbiAgICAgICdjaXQ6Y29udGFjdEluZm8nLFxuICAgICAgJ2NpdDpDSV9Db250YWN0JyxcbiAgICAgICdjaXQ6b25saW5lUmVzb3VyY2UnLFxuICAgICAgJ2NpdDpDSV9PbmxpbmVSZXNvdXJjZScsXG4gICAgICAnY2l0OmxpbmthZ2UnXG4gICAgKSxcbiAgICBnZXRBdEluZGV4KDApLFxuICAgIGV4dHJhY3RVcmwoKVxuICApXG4gIHJldHVybiBwaXBlKFxuICAgIGNvbWJpbmUoXG4gICAgICBwaXBlKFxuICAgICAgICBmaW5kQ2hpbGRFbGVtZW50KCdjaXQ6bmFtZScsIGZhbHNlKSxcbiAgICAgICAgZXh0cmFjdExvY2FsaXplZENoYXJhY3RlclN0cmluZzxPcmdhbml6YXRpb25UcmFuc2xhdGlvbnM+KCduYW1lJylcbiAgICAgICksXG4gICAgICBnZXRVcmxcbiAgICApLFxuICAgIG1hcCgoW1tuYW1lLCB0cmFuc2xhdGlvbnNdLCB3ZWJzaXRlXSkgPT4gKHtcbiAgICAgIG5hbWUsXG4gICAgICAuLi4od2Vic2l0ZSAmJiB7IHdlYnNpdGUgfSksXG4gICAgICB0cmFuc2xhdGlvbnMsXG4gICAgfSkpXG4gIClcbn1cblxuLy8gZnJvbSBjaXQ6Q0lfSW5kaXZpZHVhbCBvciBjaXQ6Q0lfT3JnYW5pc2F0aW9uXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEluZGl2aWR1YWwoXG4gIHJvbGU6IFJvbGUsXG4gIG9yZ2FuaXphdGlvbj86IE9yZ2FuaXphdGlvbixcbiAgb3JnQ29udGFjdD86IEluZGl2aWR1YWxcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIEluZGl2aWR1YWw+IHtcbiAgY29uc3QgZ2V0UG9zaXRpb24gPSBwaXBlKFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDpwb3NpdGlvbk5hbWUnKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKVxuICBjb25zdCBnZXROYW1lUGFydHMgPSBwaXBlKFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDpuYW1lJyksXG4gICAgZXh0cmFjdENoYXJhY3RlclN0cmluZygpLFxuICAgIG1hcCgoZnVsbE5hbWUpID0+IHtcbiAgICAgIGlmICghZnVsbE5hbWUpIHJldHVybiBbXVxuICAgICAgcmV0dXJuIGZ1bGxOYW1lVG9QYXJ0cyhmdWxsTmFtZSlcbiAgICB9KVxuICApXG4gIGNvbnN0IGdldENvbnRhY3QgPSBmaW5kTmVzdGVkRWxlbWVudCgnY2l0OmNvbnRhY3RJbmZvJywgJ2NpdDpDSV9Db250YWN0JylcbiAgY29uc3QgZ2V0QWRkcmVzc1Jvb3QgPSBwaXBlKFxuICAgIGdldENvbnRhY3QsXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ2NpdDphZGRyZXNzJywgJ2NpdDpDSV9BZGRyZXNzJylcbiAgKVxuICBjb25zdCBnZXRBZGRyZXNzID0gcGlwZShcbiAgICBnZXRBZGRyZXNzUm9vdCxcbiAgICBjb21iaW5lKFxuICAgICAgcGlwZShcbiAgICAgICAgZmluZENoaWxkRWxlbWVudCgnY2l0OmRlbGl2ZXJ5UG9pbnQnLCBmYWxzZSksXG4gICAgICAgIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKVxuICAgICAgKSxcbiAgICAgIHBpcGUoZmluZENoaWxkRWxlbWVudCgnY2l0OmNpdHknLCBmYWxzZSksIGV4dHJhY3RDaGFyYWN0ZXJTdHJpbmcoKSksXG4gICAgICBwaXBlKGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDpwb3N0YWxDb2RlJywgZmFsc2UpLCBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCkpLFxuICAgICAgcGlwZShmaW5kQ2hpbGRFbGVtZW50KCdjaXQ6Y291bnRyeScsIGZhbHNlKSwgZXh0cmFjdENoYXJhY3RlclN0cmluZygpKVxuICAgICksXG4gICAgbWFwKChwYXJ0cykgPT4gcGFydHMuZmlsdGVyKChwKSA9PiAhIXApLmpvaW4oJywgJykpXG4gIClcbiAgY29uc3QgZ2V0UGhvbmUgPSBwaXBlKFxuICAgIGdldENvbnRhY3QsXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ2NpdDpwaG9uZScsICdjaXQ6Q0lfVGVsZXBob25lJywgJ2NpdDpudW1iZXInKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKVxuICBjb25zdCBnZXRFbWFpbCA9IHBpcGUoXG4gICAgZ2V0QWRkcmVzc1Jvb3QsXG4gICAgZmluZENoaWxkRWxlbWVudCgnY2l0OmVsZWN0cm9uaWNNYWlsQWRkcmVzcycsIGZhbHNlKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKVxuICBjb25zdCBkZWZhdWx0T3JnOiBPcmdhbml6YXRpb24gPSB7XG4gICAgbmFtZTogJ01pc3NpbmcgT3JnYW5pemF0aW9uJyxcbiAgICB0cmFuc2xhdGlvbnM6IHt9LFxuICB9XG5cbiAgbGV0IGRlZmF1bHRJbmRpdmlkdWFsOiBQYXJ0aWFsPEluZGl2aWR1YWw+ID0ge31cbiAgaWYgKG9yZ0NvbnRhY3QpIHtcbiAgICBkZWZhdWx0SW5kaXZpZHVhbCA9IHtcbiAgICAgIGVtYWlsOiBvcmdDb250YWN0LmVtYWlsLFxuICAgICAgLi4uKG9yZ0NvbnRhY3QuYWRkcmVzcyAmJiB7IGFkZHJlc3M6IG9yZ0NvbnRhY3QuYWRkcmVzcyB9KSxcbiAgICAgIC4uLihvcmdDb250YWN0LnBob25lICYmIHsgcGhvbmU6IG9yZ0NvbnRhY3QucGhvbmUgfSksXG4gICAgICAuLi4ob3JnQ29udGFjdC5wb3NpdGlvbiAmJiB7IHBvc2l0aW9uOiBvcmdDb250YWN0LnBvc2l0aW9uIH0pLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwaXBlKFxuICAgIGNvbWJpbmUoZ2V0UG9zaXRpb24sIGdldE5hbWVQYXJ0cywgZ2V0RW1haWwsIGdldEFkZHJlc3MsIGdldFBob25lKSxcbiAgICBtYXAoKFtwb3NpdGlvbiwgW2ZpcnN0TmFtZSwgbGFzdE5hbWVdLCBlbWFpbCwgYWRkcmVzcywgcGhvbmVdKSA9PiAoe1xuICAgICAgLi4uZGVmYXVsdEluZGl2aWR1YWwsXG4gICAgICBlbWFpbDogZW1haWwgfHwgZGVmYXVsdEluZGl2aWR1YWwuZW1haWwgfHwgJ21pc3NpbmdAbWlzc2luZy5jb20nLFxuICAgICAgcm9sZSxcbiAgICAgIG9yZ2FuaXphdGlvbjogb3JnYW5pemF0aW9uIHx8IGRlZmF1bHRPcmcsXG4gICAgICAuLi4ocG9zaXRpb24gJiYgeyBwb3NpdGlvbiB9KSxcbiAgICAgIC4uLihmaXJzdE5hbWUgJiYgeyBmaXJzdE5hbWUgfSksXG4gICAgICAuLi4obGFzdE5hbWUgJiYgeyBsYXN0TmFtZSB9KSxcbiAgICAgIC4uLihhZGRyZXNzICYmIHsgYWRkcmVzcyB9KSxcbiAgICAgIC4uLihwaG9uZSAmJiB7IHBob25lIH0pLFxuICAgIH0pKVxuICApXG59XG5cbi8vIGZyb20gY2l0OkNJX09yZ2FuaXNhdGlvblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPcmdhbml6YXRpb25JbmRpdmlkdWFscyhcbiAgcm9sZTogUm9sZVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgQXJyYXk8SW5kaXZpZHVhbD4+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgY29tYmluZShcbiAgICAgIGV4dHJhY3RPcmdhbml6YXRpb24oKSxcbiAgICAgIGV4dHJhY3RJbmRpdmlkdWFsKHJvbGUpLFxuICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKCdjaXQ6aW5kaXZpZHVhbCcsICdjaXQ6Q0lfSW5kaXZpZHVhbCcpXG4gICAgKSxcbiAgICBtYXAoKFtvcmcsIG9yZ0NvbnRhY3QsIGVsc10pID0+XG4gICAgICBlbHMubGVuZ3RoXG4gICAgICAgID8gZWxzLm1hcCgoZWwpID0+IGV4dHJhY3RJbmRpdmlkdWFsKHJvbGUsIG9yZywgb3JnQ29udGFjdCkoZWwpKVxuICAgICAgICA6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZW1haWw6IG9yZ0NvbnRhY3QuZW1haWwsXG4gICAgICAgICAgICAgIC4uLihvcmdDb250YWN0LmFkZHJlc3MgJiYgeyBhZGRyZXNzOiBvcmdDb250YWN0LmFkZHJlc3MgfSksXG4gICAgICAgICAgICAgIC4uLihvcmdDb250YWN0LnBob25lICYmIHsgcGhvbmU6IG9yZ0NvbnRhY3QucGhvbmUgfSksXG4gICAgICAgICAgICAgIC4uLihvcmdDb250YWN0LnBvc2l0aW9uICYmIHsgcG9zaXRpb246IG9yZ0NvbnRhY3QucG9zaXRpb24gfSksXG4gICAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogb3JnLFxuICAgICAgICAgICAgICByb2xlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgKVxuICApXG59XG5cbi8vIGZyb20gY2l0OkNJX1Jlc3BvbnNpYmlsaXR5XG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEluZGl2aWR1YWxzKCk6IENoYWluYWJsZUZ1bmN0aW9uPFxuICBYbWxFbGVtZW50LFxuICBBcnJheTxJbmRpdmlkdWFsPlxuPiB7XG4gIGNvbnN0IGdldFJvbGUgPSBwaXBlKGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDpyb2xlJyksIGV4dHJhY3RSb2xlKCkpXG4gIGNvbnN0IGdldEluZGl2aWR1YWxzID0gcGlwZShcbiAgICBjb21iaW5lKGdldFJvbGUsIGZpbmROZXN0ZWRFbGVtZW50cygnY2l0OnBhcnR5JywgJ2NpdDpDSV9JbmRpdmlkdWFsJykpLFxuICAgIChbcm9sZSwgZWxzXSkgPT4gZWxzLm1hcChleHRyYWN0SW5kaXZpZHVhbChyb2xlKSlcbiAgKVxuICBjb25zdCBnZXRPcmdJbmRpdmlkdWFscyA9IHBpcGUoXG4gICAgY29tYmluZShnZXRSb2xlLCBmaW5kTmVzdGVkRWxlbWVudHMoJ2NpdDpwYXJ0eScsICdjaXQ6Q0lfT3JnYW5pc2F0aW9uJykpLFxuICAgIG1hcCgoW3JvbGUsIGVsc10pID0+IGVscy5tYXAoZXh0cmFjdE9yZ2FuaXphdGlvbkluZGl2aWR1YWxzKHJvbGUpKSksXG4gICAgZmxhdHRlbkFycmF5KClcbiAgKVxuXG4gIHJldHVybiBwaXBlKGNvbWJpbmUoZ2V0SW5kaXZpZHVhbHMsIGdldE9yZ0luZGl2aWR1YWxzKSwgZmxhdHRlbkFycmF5KCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVW5pcXVlSWRlbnRpZmllcihyb290RWw6IFhtbEVsZW1lbnQpOiBzdHJpbmcge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudChcbiAgICAgICdtZGI6bWV0YWRhdGFJZGVudGlmaWVyJyxcbiAgICAgICdtY2M6TURfSWRlbnRpZmllcicsXG4gICAgICAnbWNjOmNvZGUnXG4gICAgKSxcbiAgICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT3duZXJPcmdhbml6YXRpb24ocm9vdEVsOiBYbWxFbGVtZW50KTogT3JnYW5pemF0aW9uIHtcbiAgY29uc3QgY29udGFjdHMgPSByZWFkQ29udGFjdHMocm9vdEVsKVxuICBjb25zdCBjb250YWN0c0ZvclJlc291cmNlID0gcmVhZENvbnRhY3RzRm9yUmVzb3VyY2Uocm9vdEVsKVxuICBjb25zdCBwb2ludE9mQ29udGFjdCA9IGNvbnRhY3RzLmZpbHRlcihcbiAgICAoYykgPT4gYy5yb2xlID09PSAncG9pbnRfb2ZfY29udGFjdCdcbiAgKVswXVxuICByZXR1cm4gKHBvaW50T2ZDb250YWN0IHx8IGNvbnRhY3RzWzBdIHx8IGNvbnRhY3RzRm9yUmVzb3VyY2VbMF0pLm9yZ2FuaXphdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvbnRhY3RzKHJvb3RFbDogWG1sRWxlbWVudCk6IEluZGl2aWR1YWxbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cygnbWRiOmNvbnRhY3QnLCAnY2l0OkNJX1Jlc3BvbnNpYmlsaXR5JyksXG4gICAgbWFwQXJyYXkoZXh0cmFjdEluZGl2aWR1YWxzKCkpLFxuICAgIGZsYXR0ZW5BcnJheSgpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvbnRhY3RzRm9yUmVzb3VyY2Uocm9vdEVsOiBYbWxFbGVtZW50KTogSW5kaXZpZHVhbFtdIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgY29tYmluZShcbiAgICAgIHBpcGUoXG4gICAgICAgIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICAgICAgICBmaW5kTmVzdGVkRWxlbWVudHMoXG4gICAgICAgICAgJ21yaTpjaXRhdGlvbicsXG4gICAgICAgICAgJ2NpdDpDSV9DaXRhdGlvbicsXG4gICAgICAgICAgJ2NpdDpjaXRlZFJlc3BvbnNpYmxlUGFydHknXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBwaXBlKFxuICAgICAgICBmaW5kSWRlbnRpZmljYXRpb24oKSxcbiAgICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnbXJpOnBvaW50T2ZDb250YWN0JywgZmFsc2UpXG4gICAgICApLFxuICAgICAgcGlwZShmaW5kRGlzdHJpYnV0aW9uKCksIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ21yZDpkaXN0cmlidXRvckNvbnRhY3QnKSlcbiAgICApLFxuICAgIGZsYXR0ZW5BcnJheSgpLFxuICAgIG1hcEFycmF5KGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDpDSV9SZXNwb25zaWJpbGl0eScsIGZhbHNlKSksXG4gICAgbWFwQXJyYXkoZXh0cmFjdEluZGl2aWR1YWxzKCkpLFxuICAgIGZsYXR0ZW5BcnJheSgpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZExhbmRpbmdQYWdlKHJvb3RFbDogWG1sRWxlbWVudCk6IFVSTCB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KFxuICAgICAgJ21kYjptZXRhZGF0YUxpbmthZ2UnLFxuICAgICAgJ2NpdDpDSV9PbmxpbmVSZXNvdXJjZScsXG4gICAgICAnY2l0OmxpbmthZ2UnXG4gICAgKSxcbiAgICBleHRyYWN0VXJsKClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkTGluZWFnZShcbiAgcm9vdEVsOiBYbWxFbGVtZW50LFxuICB0cmFuc2xhdGlvbnM6IFJlY29yZFRyYW5zbGF0aW9uc1xuKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ21kYjpyZXNvdXJjZUxpbmVhZ2UnLCAnbXJsOkxJX0xpbmVhZ2UnLCAnbXJsOnN0YXRlbWVudCcpLFxuICAgIGV4dHJhY3RMb2NhbGl6ZWRDaGFyYWN0ZXJTdHJpbmcoJ2xpbmVhZ2UnLCB0cmFuc2xhdGlvbnMpLFxuICAgIG1hcCgoW2xpbmVhZ2VdKSA9PiBsaW5lYWdlKVxuICApKHJvb3RFbClcbn1cblxuZnVuY3Rpb24gZXh0cmFjdERhdGVJbmZvKFxuICB0eXBlOiAnY3JlYXRpb24nIHwgJ3JldmlzaW9uJyB8ICdwdWJsaWNhdGlvbidcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIERhdGU+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkcmVuRWxlbWVudCgnbWRiOmRhdGVJbmZvJywgZmFsc2UpLFxuICAgIGZpbHRlckFycmF5KFxuICAgICAgKGVsKSA9PlxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDpDSV9EYXRlVHlwZUNvZGUnKSxcbiAgICAgICAgICByZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJylcbiAgICAgICAgKShlbCkgPT09IHR5cGVcbiAgICApLFxuICAgIGdldEF0SW5kZXgoMCksXG4gICAgZmluZENoaWxkRWxlbWVudCgnY2l0OmRhdGUnKSxcbiAgICBleHRyYWN0RGF0ZVRpbWUoKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkUmVjb3JkVXBkYXRlZChyb290RWw6IFhtbEVsZW1lbnQpOiBEYXRlIHtcbiAgcmV0dXJuIGV4dHJhY3REYXRlSW5mbygncmV2aXNpb24nKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkUmVjb3JkQ3JlYXRlZChyb290RWw6IFhtbEVsZW1lbnQpOiBEYXRlIHtcbiAgcmV0dXJuIGV4dHJhY3REYXRlSW5mbygnY3JlYXRpb24nKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkUmVjb3JkUHVibGlzaGVkKHJvb3RFbDogWG1sRWxlbWVudCk6IERhdGUge1xuICByZXR1cm4gZXh0cmFjdERhdGVJbmZvKCdwdWJsaWNhdGlvbicpKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZXVzZVR5cGUocm9vdEVsOiBYbWxFbGVtZW50KTogUmV1c2VUeXBlIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoXG4gICAgICAnbWRiOm1ldGFkYXRhU2NvcGUnLFxuICAgICAgJ21kYjpNRF9NZXRhZGF0YVNjb3BlJyxcbiAgICAgICdtZGI6cmVzb3VyY2VTY29wZScsXG4gICAgICAnbWNjOk1EX1Njb3BlQ29kZSdcbiAgICApLFxuICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSxcbiAgICBtYXAoKHNjb3BlQ29kZSk6IFJldXNlVHlwZSA9PiBnZXRSZXVzZVR5cGUoc2NvcGVDb2RlKSlcbiAgKShyb290RWwpXG59XG5cbmNvbnN0IGdldE1pbWVUeXBlID0gcGlwZShcbiAgZmluZFBhcmVudCgnbXJkOk1EX0Rpc3RyaWJ1dGlvbicpLFxuICBmaW5kTmVzdGVkRWxlbWVudChcbiAgICAnbXJkOmRpc3RyaWJ1dGlvbkZvcm1hdCcsXG4gICAgJ21yZDpNRF9Gb3JtYXQnLFxuICAgICdtcmQ6Zm9ybWF0U3BlY2lmaWNhdGlvbkNpdGF0aW9uJyxcbiAgICAnY2l0OkNJX0NpdGF0aW9uJyxcbiAgICAnY2l0OnRpdGxlJ1xuICApLFxuICBleHRyYWN0Q2hhcmFjdGVyU3RyaW5nKCksXG4gIG1hcChtYXRjaE1pbWVUeXBlKVxuKVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZE9ubGluZVJlc291cmNlcyhyb290RWw6IFhtbEVsZW1lbnQpOiBPbmxpbmVSZXNvdXJjZVtdIHtcbiAgbGV0IGdldE9ubGluZVJlc291cmNlczogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgT25saW5lUmVzb3VyY2VbXT5cbiAgaWYgKHJlYWRLaW5kKHJvb3RFbCkgPT09ICdkYXRhc2V0Jykge1xuICAgIGdldE9ubGluZVJlc291cmNlcyA9IGV4dHJhY3REYXRhc2V0T25saW5lUmVzb3VyY2VzKGdldE1pbWVUeXBlKVxuICB9IGVsc2UgaWYgKHJlYWRLaW5kKHJvb3RFbCkgPT09ICdzZXJ2aWNlJykge1xuICAgIGdldE9ubGluZVJlc291cmNlcyA9IGV4dHJhY3RTZXJ2aWNlT25saW5lUmVzb3VyY2VzKClcbiAgfSBlbHNlIHtcbiAgICBnZXRPbmxpbmVSZXNvdXJjZXMgPSBleHRyYWN0UmV1c2VPbmxpbmVSZXNvdXJjZXMoKVxuICB9XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmROZXN0ZWRFbGVtZW50cygnbXJkOmRpc3RyaWJ1dGlvbkluZm8nLCAnbXJkOk1EX0Rpc3RyaWJ1dGlvbicpLFxuICAgIG1hcEFycmF5KGdldE9ubGluZVJlc291cmNlcyksXG4gICAgZmxhdHRlbkFycmF5KClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkTG9jYWxlRWxlbWVudCgpOiBDaGFpbmFibGVGdW5jdGlvbjxcbiAgWG1sRWxlbWVudCxcbiAgTGFuZ3VhZ2VDb2RlXG4+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnbGFuOkxhbmd1YWdlQ29kZScpLFxuICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSxcbiAgICBtYXAoKGxhbmcpID0+IGdldExhbmcyRnJvbUxhbmczKGxhbmc/LnRvTG93ZXJDYXNlKCkpID8/IGxhbmcpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWREZWZhdWx0TGFuZ3VhZ2Uocm9vdEVsOiBYbWxFbGVtZW50KTogTGFuZ3VhZ2VDb2RlIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZENoaWxkRWxlbWVudCgnbWRiOmRlZmF1bHRMb2NhbGUnLCBmYWxzZSksXG4gICAgcmVhZExvY2FsZUVsZW1lbnQoKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRPdGhlckxhbmd1YWdlcyhyb290RWw6IFhtbEVsZW1lbnQpOiBMYW5ndWFnZUNvZGVbXSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ21kYjpvdGhlckxvY2FsZScsIGZhbHNlKSxcbiAgICBtYXBBcnJheShyZWFkTG9jYWxlRWxlbWVudCgpKSxcbiAgICBtYXAoKGxhbmd1YWdlcykgPT5cbiAgICAgIGxhbmd1YWdlcy5maWx0ZXIoKGxhbmcpOiBsYW5nIGlzIExhbmd1YWdlQ29kZSA9PiBsYW5nICE9PSBudWxsKVxuICAgIClcbiAgKShyb290RWwpXG59XG4iXX0=