geonetwork-ui 2.7.0-dev.0d8b7bca9 → 2.7.0-dev.1296cd46b

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 (478) hide show
  1. package/esm2022/index.mjs +1 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +4 -7
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +20 -20
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +3 -3
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -3
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.mjs +4 -1
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +9 -5
  10. package/esm2022/libs/api/repository/src/index.mjs +2 -2
  11. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +5 -5
  12. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +4 -6
  13. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +55 -12
  14. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +3 -3
  15. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +26 -3
  16. package/esm2022/libs/api/repository/src/lib/gn4/organizations/index.mjs +3 -5
  17. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organization-strategy.token.mjs +5 -0
  18. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +3 -3
  19. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +3 -3
  20. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-service.factory.mjs +6 -0
  21. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +54 -26
  22. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +3 -1
  23. package/esm2022/libs/api/repository/src/lib/metadata-language.token.mjs +3 -0
  24. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +15 -1
  25. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  26. package/esm2022/libs/feature/catalog/src/index.mjs +1 -2
  27. package/esm2022/libs/feature/catalog/src/lib/organization-url.token.mjs +3 -1
  28. package/esm2022/libs/feature/catalog/src/lib/site-title/site-title.component.mjs +5 -4
  29. package/esm2022/libs/feature/catalog/src/lib/source-label/source-label.component.mjs +4 -3
  30. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +3 -3
  31. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -5
  32. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  33. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +4 -4
  34. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +8 -2
  35. package/esm2022/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.mjs +80 -0
  36. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +3 -3
  37. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.mjs +55 -0
  38. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +8 -3
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -1
  40. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +6 -36
  41. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +77 -3
  42. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +10 -5
  43. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +3 -5
  44. package/esm2022/libs/feature/notifications/src/index.mjs +1 -2
  45. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +4 -2
  46. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +14 -4
  47. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +5 -43
  48. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +10 -5
  49. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +18 -6
  50. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +4 -2
  51. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -2
  52. package/esm2022/libs/feature/router/src/lib/default/container/search-router.container.directive.mjs +3 -2
  53. package/esm2022/libs/feature/router/src/lib/default/router.module.mjs +2 -5
  54. package/esm2022/libs/feature/router/src/lib/default/state/query-params.utils.mjs +4 -3
  55. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +3 -2
  56. package/esm2022/libs/feature/search/src/index.mjs +1 -2
  57. package/esm2022/libs/feature/search/src/lib/facets/facets-container/facets-container.component.mjs +12 -5
  58. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +24 -17
  59. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +4 -100
  60. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +9 -5
  61. package/esm2022/libs/feature/search/src/lib/records-metrics/records-metrics.component.mjs +6 -5
  62. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +9 -5
  63. package/esm2022/libs/feature/search/src/lib/results-layout/results-layout.component.mjs +7 -6
  64. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +19 -12
  65. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +2 -1
  66. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +7 -6
  67. package/esm2022/libs/feature/search/src/lib/state/container/search-state.container.directive.mjs +3 -2
  68. package/esm2022/libs/feature/search/src/lib/state/reducer.mjs +5 -2
  69. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +8 -2
  70. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +10 -4
  71. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +8 -2
  72. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +5 -4
  73. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +12 -5
  74. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +14 -4
  75. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +4 -4
  76. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +8 -2
  77. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +21 -46
  78. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +7 -7
  79. package/esm2022/libs/ui/elements/src/lib/notification/notification.component.mjs +8 -2
  80. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +1 -6
  81. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +5 -4
  82. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +14 -4
  83. package/esm2022/libs/ui/search/src/index.mjs +1 -3
  84. package/esm2022/libs/ui/search/src/lib/facets/facet-block/facet-block.component.mjs +14 -30
  85. package/esm2022/libs/ui/search/src/lib/facets/facet-item/facet-item.component.mjs +6 -27
  86. package/esm2022/libs/ui/search/src/lib/facets/facet-list/facet-list.component.mjs +7 -4
  87. package/esm2022/libs/ui/search/src/lib/record-metric/record-metric.component.mjs +5 -4
  88. package/esm2022/libs/ui/search/src/lib/record-preview/record-preview.component.mjs +5 -2
  89. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +5 -4
  90. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +36 -7
  91. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +11 -5
  92. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +5 -4
  93. package/esm2022/libs/ui/search/src/lib/record-preview-text/record-preview-text.component.mjs +5 -4
  94. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +5 -4
  95. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +5 -4
  96. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +12 -6
  97. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +4 -2
  98. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +5 -4
  99. package/esm2022/libs/ui/search/src/lib/results-list-item/results-list-item.component.mjs +5 -3
  100. package/esm2022/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.mjs +14 -4
  101. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
  102. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -2
  103. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  104. package/esm2022/libs/util/app-config/src/lib/parse-utils.mjs +5 -4
  105. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +50 -9
  106. package/esm2022/libs/util/shared/src/index.mjs +2 -2
  107. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +36 -9
  108. package/esm2022/libs/util/shared/src/lib/record/index.mjs +3 -0
  109. package/esm2022/libs/util/shared/src/lib/record/quality-score.util.mjs +46 -0
  110. package/esm2022/libs/util/shared/src/lib/record/record.util.mjs +56 -0
  111. package/esm2022/libs/util/shared/src/lib/utils/geojson.mjs +58 -1
  112. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +3 -1
  113. package/esm2022/libs/util/shared/src/lib/utils/mobile-screen.mjs +9 -0
  114. package/esm2022/libs/util/shared/src/lib/utils/scroll.mjs +40 -0
  115. package/esm2022/translations/de.json +60 -20
  116. package/esm2022/translations/en.json +61 -21
  117. package/esm2022/translations/es.json +47 -7
  118. package/esm2022/translations/fr.json +67 -27
  119. package/esm2022/translations/it.json +60 -20
  120. package/esm2022/translations/nl.json +47 -7
  121. package/esm2022/translations/pt.json +47 -7
  122. package/esm2022/translations/sk.json +51 -11
  123. package/fesm2022/geonetwork-ui.mjs +8173 -8032
  124. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  125. package/index.d.ts +0 -1
  126. package/index.d.ts.map +1 -1
  127. package/index.ts +0 -1
  128. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts.map +1 -1
  129. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +1 -1
  130. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  131. package/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.d.ts.map +1 -1
  132. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +2 -2
  133. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  134. package/libs/api/repository/src/index.d.ts +1 -1
  135. package/libs/api/repository/src/index.d.ts.map +1 -1
  136. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  137. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -2
  138. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  139. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts +5 -1
  140. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  141. package/libs/api/repository/src/lib/gn4/organizations/index.d.ts +2 -3
  142. package/libs/api/repository/src/lib/gn4/organizations/index.d.ts.map +1 -1
  143. package/libs/api/repository/src/lib/gn4/organizations/organization-strategy.token.d.ts +4 -0
  144. package/libs/api/repository/src/lib/gn4/organizations/organization-strategy.token.d.ts.map +1 -0
  145. package/libs/api/repository/src/lib/gn4/organizations/organizations-service.factory.d.ts +9 -0
  146. package/libs/api/repository/src/lib/gn4/organizations/organizations-service.factory.d.ts.map +1 -0
  147. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +13 -8
  148. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  149. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +2 -0
  150. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  151. package/libs/api/repository/src/lib/metadata-language.token.d.ts +5 -0
  152. package/libs/api/repository/src/lib/metadata-language.token.d.ts.map +1 -0
  153. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +5 -1
  154. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  155. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -0
  156. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  157. package/libs/feature/catalog/src/index.d.ts +0 -1
  158. package/libs/feature/catalog/src/index.d.ts.map +1 -1
  159. package/libs/feature/catalog/src/lib/organization-url.token.d.ts +1 -0
  160. package/libs/feature/catalog/src/lib/organization-url.token.d.ts.map +1 -1
  161. package/libs/feature/catalog/src/lib/site-title/site-title.component.d.ts +1 -1
  162. package/libs/feature/catalog/src/lib/site-title/site-title.component.d.ts.map +1 -1
  163. package/libs/feature/catalog/src/lib/source-label/source-label.component.d.ts +1 -1
  164. package/libs/feature/catalog/src/lib/source-label/source-label.component.d.ts.map +1 -1
  165. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
  166. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -1
  167. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  168. package/libs/feature/editor/src/index.d.ts +1 -0
  169. package/libs/feature/editor/src/index.d.ts.map +1 -1
  170. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +1 -1
  171. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  172. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  173. package/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.d.ts +19 -0
  174. package/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.d.ts.map +1 -0
  175. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.d.ts +20 -0
  176. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.d.ts.map +1 -0
  177. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +1 -0
  178. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  179. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -0
  180. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  181. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +3 -10
  182. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  183. package/libs/feature/editor/src/lib/fields.config.d.ts +8 -1
  184. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  185. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  186. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -2
  187. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  188. package/libs/feature/notifications/src/index.d.ts +0 -1
  189. package/libs/feature/notifications/src/index.d.ts.map +1 -1
  190. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  191. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  192. package/libs/feature/record/src/lib/feature-record.module.d.ts +4 -11
  193. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  194. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  195. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  196. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts.map +1 -1
  197. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  198. package/libs/feature/router/src/lib/default/container/search-router.container.directive.d.ts +1 -1
  199. package/libs/feature/router/src/lib/default/container/search-router.container.directive.d.ts.map +1 -1
  200. package/libs/feature/router/src/lib/default/router.module.d.ts +4 -5
  201. package/libs/feature/router/src/lib/default/router.module.d.ts.map +1 -1
  202. package/libs/feature/router/src/lib/default/state/query-params.utils.d.ts.map +1 -1
  203. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  204. package/libs/feature/search/src/index.d.ts +0 -1
  205. package/libs/feature/search/src/index.d.ts.map +1 -1
  206. package/libs/feature/search/src/lib/facets/facets-container/facets-container.component.d.ts +1 -1
  207. package/libs/feature/search/src/lib/facets/facets-container/facets-container.component.d.ts.map +1 -1
  208. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +1 -0
  209. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  210. package/libs/feature/search/src/lib/feature-search.module.d.ts +3 -26
  211. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  212. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +1 -1
  213. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
  214. package/libs/feature/search/src/lib/records-metrics/records-metrics.component.d.ts +1 -1
  215. package/libs/feature/search/src/lib/records-metrics/records-metrics.component.d.ts.map +1 -1
  216. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +1 -1
  217. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -1
  218. package/libs/feature/search/src/lib/results-layout/results-layout.component.d.ts +1 -1
  219. package/libs/feature/search/src/lib/results-layout/results-layout.component.d.ts.map +1 -1
  220. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +1 -1
  221. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  222. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +1 -1
  223. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  224. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts +1 -1
  225. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts.map +1 -1
  226. package/libs/feature/search/src/lib/state/container/search-state.container.directive.d.ts +1 -1
  227. package/libs/feature/search/src/lib/state/container/search-state.container.directive.d.ts.map +1 -1
  228. package/libs/feature/search/src/lib/state/reducer.d.ts.map +1 -1
  229. package/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.d.ts.map +1 -1
  230. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  231. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  232. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +2 -1
  233. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  234. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts +1 -1
  235. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +1 -0
  236. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -1
  237. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -1
  238. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  239. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  240. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +7 -7
  241. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  242. package/libs/ui/elements/src/lib/notification/notification.component.d.ts.map +1 -1
  243. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  244. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +1 -0
  245. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -1
  246. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  247. package/libs/ui/search/src/index.d.ts +0 -2
  248. package/libs/ui/search/src/index.d.ts.map +1 -1
  249. package/libs/ui/search/src/lib/facets/facet-block/facet-block.component.d.ts +1 -11
  250. package/libs/ui/search/src/lib/facets/facet-block/facet-block.component.d.ts.map +1 -1
  251. package/libs/ui/search/src/lib/facets/facet-item/facet-item.component.d.ts +1 -11
  252. package/libs/ui/search/src/lib/facets/facet-item/facet-item.component.d.ts.map +1 -1
  253. package/libs/ui/search/src/lib/facets/facet-list/facet-list.component.d.ts +1 -1
  254. package/libs/ui/search/src/lib/facets/facet-list/facet-list.component.d.ts.map +1 -1
  255. package/libs/ui/search/src/lib/record-metric/record-metric.component.d.ts +1 -1
  256. package/libs/ui/search/src/lib/record-metric/record-metric.component.d.ts.map +1 -1
  257. package/libs/ui/search/src/lib/record-preview/record-preview.component.d.ts +1 -1
  258. package/libs/ui/search/src/lib/record-preview/record-preview.component.d.ts.map +1 -1
  259. package/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.d.ts +1 -1
  260. package/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.d.ts.map +1 -1
  261. package/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.d.ts +1 -1
  262. package/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.d.ts.map +1 -1
  263. package/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.d.ts +1 -1
  264. package/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.d.ts.map +1 -1
  265. package/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.d.ts +1 -1
  266. package/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.d.ts.map +1 -1
  267. package/libs/ui/search/src/lib/record-preview-text/record-preview-text.component.d.ts +1 -1
  268. package/libs/ui/search/src/lib/record-preview-text/record-preview-text.component.d.ts.map +1 -1
  269. package/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.d.ts +1 -1
  270. package/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.d.ts.map +1 -1
  271. package/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.d.ts +1 -1
  272. package/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.d.ts.map +1 -1
  273. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +1 -1
  274. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -1
  275. package/libs/ui/search/src/lib/results-list/results-layout.config.d.ts +1 -1
  276. package/libs/ui/search/src/lib/results-list/results-layout.config.d.ts.map +1 -1
  277. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts +1 -1
  278. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  279. package/libs/ui/search/src/lib/results-list-item/results-list-item.component.d.ts +1 -1
  280. package/libs/ui/search/src/lib/results-list-item/results-list-item.component.d.ts.map +1 -1
  281. package/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.d.ts.map +1 -1
  282. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  283. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  284. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  285. package/libs/util/app-config/src/lib/parse-utils.d.ts.map +1 -1
  286. package/libs/util/i18n/src/lib/language-codes.d.ts +91 -31
  287. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  288. package/libs/util/shared/src/index.d.ts +1 -1
  289. package/libs/util/shared/src/index.d.ts.map +1 -1
  290. package/libs/util/shared/src/lib/links/link-utils.d.ts +27 -8
  291. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  292. package/libs/util/shared/src/lib/record/index.d.ts +3 -0
  293. package/libs/util/shared/src/lib/record/index.d.ts.map +1 -0
  294. package/libs/util/shared/src/lib/record/quality-score.util.d.ts +13 -0
  295. package/libs/util/shared/src/lib/record/quality-score.util.d.ts.map +1 -0
  296. package/libs/util/shared/src/lib/record/record.util.d.ts +3 -0
  297. package/libs/util/shared/src/lib/record/record.util.d.ts.map +1 -0
  298. package/libs/util/shared/src/lib/utils/geojson.d.ts +7 -2
  299. package/libs/util/shared/src/lib/utils/geojson.d.ts.map +1 -1
  300. package/libs/util/shared/src/lib/utils/index.d.ts +2 -0
  301. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  302. package/libs/util/shared/src/lib/utils/mobile-screen.d.ts +2 -0
  303. package/libs/util/shared/src/lib/utils/mobile-screen.d.ts.map +1 -0
  304. package/libs/util/shared/src/lib/utils/scroll.d.ts +12 -0
  305. package/libs/util/shared/src/lib/utils/scroll.d.ts.map +1 -0
  306. package/package.json +11 -10
  307. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +3 -6
  308. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/status.mapper.ts +3 -0
  309. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +47 -22
  310. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +2 -2
  311. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +2 -2
  312. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -2
  313. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +3 -3
  314. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/status.mapper.ts +3 -0
  315. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +10 -6
  316. package/src/libs/api/repository/src/index.ts +1 -1
  317. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -4
  318. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +3 -5
  319. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +65 -14
  320. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
  321. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +38 -2
  322. package/src/libs/api/repository/src/lib/gn4/organizations/index.ts +2 -11
  323. package/src/libs/api/repository/src/lib/gn4/organizations/organization-strategy.token.ts +10 -0
  324. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +2 -2
  325. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +2 -2
  326. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-service.factory.ts +33 -0
  327. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +57 -46
  328. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +8 -0
  329. package/src/libs/api/repository/src/lib/metadata-language.token.ts +8 -0
  330. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +21 -1
  331. package/src/libs/common/domain/src/lib/platform.service.interface.ts +2 -0
  332. package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +0 -3
  333. package/src/libs/feature/catalog/src/index.ts +0 -1
  334. package/src/libs/feature/catalog/src/lib/organization-url.token.ts +5 -0
  335. package/src/libs/feature/catalog/src/lib/site-title/site-title.component.ts +4 -0
  336. package/src/libs/feature/catalog/src/lib/source-label/source-label.component.ts +3 -0
  337. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +2 -5
  338. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +7 -5
  339. package/src/libs/feature/editor/src/index.ts +1 -0
  340. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +3 -3
  341. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +8 -1
  342. package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.css +0 -0
  343. package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.html +37 -0
  344. package/src/libs/feature/editor/src/lib/components/metadata-quality-panel/metadata-quality-panel.component.ts +90 -0
  345. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +2 -1
  346. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.css +0 -0
  347. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.html +22 -0
  348. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.ts +57 -0
  349. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +6 -0
  350. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +5 -0
  351. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
  352. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +2 -18
  353. package/src/libs/feature/editor/src/lib/fields.config.ts +85 -3
  354. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +8 -1
  355. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -8
  356. package/src/libs/feature/notifications/src/index.ts +0 -1
  357. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +3 -1
  358. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +7 -2
  359. package/src/libs/feature/record/src/lib/feature-record.module.ts +1 -21
  360. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +5 -2
  361. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +15 -4
  362. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -0
  363. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -2
  364. package/src/libs/feature/router/src/lib/default/container/search-router.container.directive.ts +1 -0
  365. package/src/libs/feature/router/src/lib/default/router.module.ts +0 -3
  366. package/src/libs/feature/router/src/lib/default/state/query-params.utils.ts +5 -2
  367. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +2 -1
  368. package/src/libs/feature/search/src/index.ts +0 -1
  369. package/src/libs/feature/search/src/lib/facets/facets-container/facets-container.component.ts +14 -1
  370. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +23 -16
  371. package/src/libs/feature/search/src/lib/feature-search.module.ts +0 -61
  372. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +12 -1
  373. package/src/libs/feature/search/src/lib/records-metrics/records-metrics.component.ts +5 -0
  374. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +11 -0
  375. package/src/libs/feature/search/src/lib/results-layout/results-layout.component.ts +5 -0
  376. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +21 -1
  377. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +1 -1
  378. package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +5 -0
  379. package/src/libs/feature/search/src/lib/state/container/search-state.container.directive.ts +1 -0
  380. package/src/libs/feature/search/src/lib/state/reducer.ts +4 -1
  381. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +4 -1
  382. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -1
  383. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +4 -1
  384. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +4 -1
  385. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +12 -11
  386. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +7 -1
  387. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +4 -1
  388. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +11 -2
  389. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +7 -2
  390. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +1 -0
  391. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +5 -1
  392. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +8 -1
  393. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +1 -0
  394. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +21 -58
  395. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +6 -6
  396. package/src/libs/ui/elements/src/lib/notification/notification.component.ts +8 -1
  397. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +0 -6
  398. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +7 -1
  399. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +3 -1
  400. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +7 -2
  401. package/src/libs/ui/search/src/index.ts +0 -2
  402. package/src/libs/ui/search/src/lib/facets/facet-block/facet-block.component.ts +12 -11
  403. package/src/libs/ui/search/src/lib/facets/facet-item/facet-item.component.ts +5 -11
  404. package/src/libs/ui/search/src/lib/facets/facet-list/facet-list.component.ts +6 -0
  405. package/src/libs/ui/search/src/lib/record-metric/record-metric.component.ts +4 -0
  406. package/src/libs/ui/search/src/lib/record-preview/record-preview.component.ts +3 -0
  407. package/src/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.ts +4 -0
  408. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.ts +33 -1
  409. package/src/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.ts +10 -0
  410. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.ts +4 -0
  411. package/src/libs/ui/search/src/lib/record-preview-text/record-preview-text.component.ts +4 -0
  412. package/src/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.ts +4 -0
  413. package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.ts +4 -0
  414. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +11 -1
  415. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +5 -3
  416. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +4 -0
  417. package/src/libs/ui/search/src/lib/results-list-item/results-list-item.component.ts +3 -0
  418. package/src/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.ts +6 -1
  419. package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
  420. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -1
  421. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  422. package/src/libs/util/app-config/src/lib/parse-utils.ts +4 -7
  423. package/src/libs/util/i18n/src/lib/language-codes.ts +62 -11
  424. package/src/libs/util/shared/src/index.ts +1 -1
  425. package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -8
  426. package/src/libs/util/shared/src/lib/record/index.ts +2 -0
  427. package/src/libs/util/shared/src/lib/record/quality-score.util.ts +72 -0
  428. package/src/libs/util/shared/src/lib/{record.util.ts → record/record.util.ts} +1 -1
  429. package/src/libs/util/shared/src/lib/utils/geojson.ts +72 -2
  430. package/src/libs/util/shared/src/lib/utils/index.ts +2 -0
  431. package/src/libs/util/shared/src/lib/utils/mobile-screen.ts +14 -0
  432. package/src/libs/util/shared/src/lib/utils/scroll.ts +48 -0
  433. package/translations/de.json +60 -20
  434. package/translations/en.json +61 -21
  435. package/translations/es.json +47 -7
  436. package/translations/fr.json +67 -27
  437. package/translations/it.json +60 -20
  438. package/translations/nl.json +47 -7
  439. package/translations/pt.json +47 -7
  440. package/translations/sk.json +51 -11
  441. package/esm2022/libs/api/repository/src/lib/metadata-language.mjs +0 -3
  442. package/esm2022/libs/feature/auth/src/index.mjs +0 -2
  443. package/esm2022/libs/feature/auth/src/lib/feature-auth.module.mjs +0 -17
  444. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +0 -57
  445. package/esm2022/libs/feature/notifications/src/lib/feature-notifications.module.mjs +0 -18
  446. package/esm2022/libs/feature/search/src/lib/facets/facets.module.mjs +0 -21
  447. package/esm2022/libs/ui/search/src/lib/facets/facets.module.mjs +0 -23
  448. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +0 -168
  449. package/esm2022/libs/util/app-config/src/lib/constants.mjs +0 -439
  450. package/esm2022/libs/util/shared/src/lib/record.util.mjs +0 -56
  451. package/libs/api/repository/src/lib/metadata-language.d.ts +0 -3
  452. package/libs/api/repository/src/lib/metadata-language.d.ts.map +0 -1
  453. package/libs/feature/auth/src/index.d.ts +0 -2
  454. package/libs/feature/auth/src/index.d.ts.map +0 -1
  455. package/libs/feature/auth/src/lib/feature-auth.module.d.ts +0 -8
  456. package/libs/feature/auth/src/lib/feature-auth.module.d.ts.map +0 -1
  457. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +0 -14
  458. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +0 -1
  459. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts +0 -7
  460. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts.map +0 -1
  461. package/libs/feature/search/src/lib/facets/facets.module.d.ts +0 -11
  462. package/libs/feature/search/src/lib/facets/facets.module.d.ts.map +0 -1
  463. package/libs/ui/search/src/lib/facets/facets.module.d.ts +0 -13
  464. package/libs/ui/search/src/lib/facets/facets.module.d.ts.map +0 -1
  465. package/libs/ui/search/src/lib/ui-search.module.d.ts +0 -36
  466. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +0 -1
  467. package/libs/util/app-config/src/lib/constants.d.ts +0 -2
  468. package/libs/util/app-config/src/lib/constants.d.ts.map +0 -1
  469. package/libs/util/shared/src/lib/record.util.d.ts +0 -3
  470. package/libs/util/shared/src/lib/record.util.d.ts.map +0 -1
  471. package/src/libs/api/repository/src/lib/metadata-language.ts +0 -3
  472. package/src/libs/feature/auth/src/index.ts +0 -1
  473. package/src/libs/feature/auth/src/lib/feature-auth.module.ts +0 -12
  474. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +0 -71
  475. package/src/libs/feature/notifications/src/lib/feature-notifications.module.ts +0 -10
  476. package/src/libs/feature/search/src/lib/facets/facets.module.ts +0 -12
  477. package/src/libs/ui/search/src/lib/facets/facets.module.ts +0 -14
  478. package/src/libs/ui/search/src/lib/ui-search.module.ts +0 -108
@@ -1,4 +1,4 @@
1
- import { LANGUAGE_CODES_ISO_3 } from './constants';
1
+ import { toLang2 } from '../../../../../libs/util/i18n/src';
2
2
  const flatten = (base, obj, keepLevel = false) => Object.keys(obj).reduce((prev, curr) => {
3
3
  const path = base ? `${base}.${curr}` : curr;
4
4
  const val = obj[curr];
@@ -80,9 +80,10 @@ export function parseMultiConfigSection(fullConfigObj, sectionName, mandatoryKey
80
80
  return result;
81
81
  }
82
82
  export function checkMetadataLanguage(parsedConfigSection, outWarnings) {
83
- if (LANGUAGE_CODES_ISO_3.indexOf(parsedConfigSection.metadata_language.toLowerCase()) === -1) {
84
- outWarnings.push(`In the [global] section: metadata_language = "${parsedConfigSection.metadata_language}" is not in ISO 639-2/B format`);
83
+ const lang2 = toLang2(parsedConfigSection.metadata_language.toLowerCase());
84
+ if (lang2?.length !== 2) {
85
+ outWarnings.push(`In the [global] section: metadata_language = "${parsedConfigSection.metadata_language}" is not a recognized ISO 639 language code`);
85
86
  }
86
87
  return parsedConfigSection;
87
88
  }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvYXBwLWNvbmZpZy9zcmMvbGliL3BhcnNlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVsRCxNQUFNLE9BQU8sR0FBRyxDQUNkLElBQVksRUFDWixHQUE0QixFQUM1QixTQUFTLEdBQUcsS0FBSyxFQUNqQixFQUFFLENBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQzVDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyQixJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUE4QixDQUFDLEVBQUUsQ0FBQTtJQUN6RSxDQUFDO1NBQU0sSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUQsT0FBTztZQUNMLEdBQUcsSUFBSTtZQUNQLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxHQUE4QixDQUFDO1NBQ2pELENBQUE7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO0lBQ2pDLENBQUM7QUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7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LENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxXQUFXLGdDQUFnQyxDQUFDLENBQUE7UUFDekUsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ3RDLGtCQUFrQixDQUNoQixFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQzFCLFdBQVcsRUFDWCxhQUFhLEVBQ2IsWUFBWSxFQUNaLFdBQVcsRUFDWCxTQUFTLENBQ1YsQ0FDRixDQUFBO0lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLG1CQUF3QixFQUN4QixXQUFxQjtJQUVyQixJQUNFLG9CQUFvQixDQUFDLE9BQU8sQ0FDMUIsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQ3BELEtBQUssQ0FBQyxDQUFDLEVBQ1IsQ0FBQztRQUNELFdBQVcsQ0FBQyxJQUFJLENBQ2QsaURBQWlELG1CQUFtQixDQUFDLGlCQUFpQixnQ0FBZ0MsQ0FDdkgsQ0FBQTtJQUNILENBQUM7SUFDRCxPQUFPLG1CQUFtQixDQUFBO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMQU5HVUFHRV9DT0RFU19JU09fMyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuXG5jb25zdCBmbGF0dGVuID0gKFxuICBiYXNlOiBzdHJpbmcsXG4gIG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGtlZXBMZXZlbCA9IGZhbHNlXG4pID0+XG4gIE9iamVjdC5rZXlzKG9iaikucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IGJhc2UgPyBgJHtiYXNlfS4ke2N1cnJ9YCA6IGN1cnJcbiAgICBjb25zdCB2YWwgPSBvYmpbY3Vycl1cbiAgICBpZiAoa2VlcExldmVsKSB7XG4gICAgICByZXR1cm4geyAuLi5wcmV2LCBbcGF0aF06IGZsYXR0ZW4oJycsIHZhbCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgLi4uZmxhdHRlbihwYXRoLCB2YWwgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyAuLi5wcmV2LCBbcGF0aF06IHZhbCB9XG4gICAgfVxuICB9LCB7fSlcblxuY29uc3QgY2hlY2tLZXlzID0gKFxuICBpbnB1dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgbWFuZGF0b3J5OiBzdHJpbmdbXSxcbiAgb3B0aW9uYWw6IHN0cmluZ1tdXG4pID0+IHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGlucHV0KVxuICBjb25zdCBtaXNzaW5nID0gbWFuZGF0b3J5LmZpbHRlcigoa2V5KSA9PiBrZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEpXG4gIGNvbnN0IHVucmVjb2duaXplZCA9IGtleXMuZmlsdGVyKFxuICAgIChrZXkpID0+IG1hbmRhdG9yeS5pbmRleE9mKGtleSkgPT09IC0xICYmIG9wdGlvbmFsLmluZGV4T2Yoa2V5KSA9PT0gLTFcbiAgKVxuICByZXR1cm4ge1xuICAgIG1pc3NpbmcsXG4gICAgdW5yZWNvZ25pemVkLFxuICB9XG59XG5cbi8qKlxuICogT25seSBrZWVwcyByZWNvZ25pemVkIGtleXMsIGZsYXR0ZW4gbmVzdGVkIHZhbHVlcyAodG8gYWxsb3cgaGF2aW5nIFwiLlwiIGluIGtleXMpLFxuICogcHVzaGVzIHdhcm5pbmdzIGFuZCBlcnJvcnMgdG8gdGhlIGdpdmVuIGFycmF5czsgcmV0dXJucyBudWxsIGluIGNhc2Ugb2YgZXJyb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29uZmlnU2VjdGlvbihcbiAgZnVsbENvbmZpZ09iajogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuICBzZWN0aW9uTmFtZTogc3RyaW5nLFxuICBtYW5kYXRvcnlLZXlzOiBzdHJpbmdbXSxcbiAgb3B0aW9uYWxLZXlzOiBzdHJpbmdbXSxcbiAgb3V0V2FybmluZ3M6IHN0cmluZ1tdLFxuICBvdXRFcnJvcnM6IHN0cmluZ1tdXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGwge1xuICBpZiAodHlwZW9mIGZ1bGxDb25maWdPYmpbc2VjdGlvbk5hbWVdICE9PSAnb2JqZWN0Jykge1xuICAgIGlmIChtYW5kYXRvcnlLZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcbiAgICBvdXRFcnJvcnMucHVzaChgVGhlIFske3NlY3Rpb25OYW1lfV0gbWFuZGF0b3J5IHNlY3Rpb24gaXMgbWlzc2luZy5gKVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBzZWN0aW9uQ29uZiA9IGZ1bGxDb25maWdPYmpbc2VjdGlvbk5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgY29uc3Qga2V5c0NoZWNrID0gY2hlY2tLZXlzKHNlY3Rpb25Db25mLCBtYW5kYXRvcnlLZXlzLCBvcHRpb25hbEtleXMpXG5cbiAgaWYgKGtleXNDaGVjay5taXNzaW5nLmxlbmd0aCkge1xuICAgIC8vIG5vdGU6IHRoaXMgaXMgbm90IHRocm93biB0byBhbGxvdyBtZXJnaW5nIHNldmVyYWwgRXJyb3JzIGRvd24gdGhlIGxpbmVcbiAgICBvdXRFcnJvcnMucHVzaChcbiAgICAgIGBJbiB0aGUgWyR7c2VjdGlvbk5hbWV9XSBzZWN0aW9uOiAke2tleXNDaGVjay5taXNzaW5nLmpvaW4oJywgJyl9YFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9IGVsc2UgaWYgKGtleXNDaGVjay51bnJlY29nbml6ZWQubGVuZ3RoKSB7XG4gICAgb3V0V2FybmluZ3MucHVzaChcbiAgICAgIGBJbiB0aGUgWyR7c2VjdGlvbk5hbWV9XSBzZWN0aW9uOiAke2tleXNDaGVjay51bnJlY29nbml6ZWQuam9pbignLCAnKX1gXG4gICAgKVxuICAgIGtleXNDaGVjay51bnJlY29nbml6ZWQuZm9yRWFjaCgoa2V5KSA9PiBkZWxldGUgc2VjdGlvbkNvbmZba2V5XSlcbiAgfVxuXG4gIHJldHVybiBzZWN0aW9uQ29uZlxufVxuXG4vKipcbiAqIFNhbWUgYXMgcGFyc2VDb25maWdTZWN0aW9uIGJ1dCBrZWVwcyBhbGwga2V5cywgcmVjb2duaXplZCBvciBub3RcbiAqIEFsc28gdGhlIGZpcnN0IGxldmVsIGlzIHRoZSBsYW5ndWFnZSBjb2RlIChlLmcuICdlbicpXG4gKiBUaGlzIGlzIG9wdGlvbmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRyYW5zbGF0aW9uc0NvbmZpZ1NlY3Rpb24oXG4gIGZ1bGxDb25maWdPYmo6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+PixcbiAgc2VjdGlvbk5hbWU6IHN0cmluZ1xuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBpZiAodHlwZW9mIGZ1bGxDb25maWdPYmpbc2VjdGlvbk5hbWVdICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB7fVxuICB9XG4gIHJldHVybiBmbGF0dGVuKCcnLCBmdWxsQ29uZmlnT2JqW3NlY3Rpb25OYW1lXSwgdHJ1ZSlcbn1cblxuLyoqXG4gKiBTYW1lIGFzIHBhcnNlQ29uZmlnU2VjdGlvbiBidXQgaGFuZGxlcyBhbiBhcnJheSBvZiBjb25maWdzOyB0aGlzIGlzXG4gKiBjb25zaWRlcmVkIG9wdGlvbmFsOyByZXR1cm5zIG51bGwgaW4gY2FzZSBvZiBlcnJvciBpbiBhdCBsZWFzdCBvbmUgb2ZcbiAqIHRoZSBzZWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNdWx0aUNvbmZpZ1NlY3Rpb24oXG4gIGZ1bGxDb25maWdPYmo6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+LFxuICBzZWN0aW9uTmFtZTogc3RyaW5nLFxuICBtYW5kYXRvcnlLZXlzOiBzdHJpbmdbXSxcbiAgb3B0aW9uYWxLZXlzOiBzdHJpbmdbXSxcbiAgb3V0V2FybmluZ3M6IHN0cmluZ1tdLFxuICBvdXRFcnJvcnM6IHN0cmluZ1tdXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIHwgbnVsbCB7XG4gIGNvbnN0IHNlY3Rpb25zID0gZnVsbENvbmZpZ09ialtzZWN0aW9uTmFtZV1cbiAgaWYgKCFzZWN0aW9ucykge1xuICAgIHJldHVybiBbXVxuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheShzZWN0aW9ucykpIHtcbiAgICBvdXRFcnJvcnMucHVzaChgRXhwZWN0ZWQgW1ske3NlY3Rpb25OYW1lfV1dIHRvIGJlIGFuIGFycmF5IG9mIHNlY3Rpb25zLmApXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCByZXN1bHQgPSBzZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+XG4gICAgcGFyc2VDb25maWdTZWN0aW9uKFxuICAgICAgeyBbc2VjdGlvbk5hbWVdOiBzZWN0aW9uIH0sXG4gICAgICBzZWN0aW9uTmFtZSxcbiAgICAgIG1hbmRhdG9yeUtleXMsXG4gICAgICBvcHRpb25hbEtleXMsXG4gICAgICBvdXRXYXJuaW5ncyxcbiAgICAgIG91dEVycm9yc1xuICAgIClcbiAgKVxuICBpZiAocmVzdWx0LnNvbWUoKHIpID0+IHIgPT09IG51bGwpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja01ldGFkYXRhTGFuZ3VhZ2UoXG4gIHBhcnNlZENvbmZpZ1NlY3Rpb246IGFueSxcbiAgb3V0V2FybmluZ3M6IHN0cmluZ1tdXG4pIHtcbiAgaWYgKFxuICAgIExBTkdVQUdFX0NPREVTX0lTT18zLmluZGV4T2YoXG4gICAgICBwYXJzZWRDb25maWdTZWN0aW9uLm1ldGFkYXRhX2xhbmd1YWdlLnRvTG93ZXJDYXNlKClcbiAgICApID09PSAtMVxuICApIHtcbiAgICBvdXRXYXJuaW5ncy5wdXNoKFxuICAgICAgYEluIHRoZSBbZ2xvYmFsXSBzZWN0aW9uOiBtZXRhZGF0YV9sYW5ndWFnZSA9IFwiJHtwYXJzZWRDb25maWdTZWN0aW9uLm1ldGFkYXRhX2xhbmd1YWdlfVwiIGlzIG5vdCBpbiBJU08gNjM5LTIvQiBmb3JtYXRgXG4gICAgKVxuICB9XG4gIHJldHVybiBwYXJzZWRDb25maWdTZWN0aW9uXG59XG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvYXBwLWNvbmZpZy9zcmMvbGliL3BhcnNlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUUzRCxNQUFNLE9BQU8sR0FBRyxDQUNkLElBQVksRUFDWixHQUE0QixFQUM1QixTQUFTLEdBQUcsS0FBSyxFQUNqQixFQUFFLENBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQzVDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyQixJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUE4QixDQUFDLEVBQUUsQ0FBQTtJQUN6RSxDQUFDO1NBQU0sSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUQsT0FBTztZQUNMLEdBQUcsSUFBSTtZQUNQLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxHQUE4QixDQUFDO1NBQ2pELENBQUE7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO0lBQ2pDLENBQUM7QUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7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LENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxXQUFXLGdDQUFnQyxDQUFDLENBQUE7UUFDekUsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ3RDLGtCQUFrQixDQUNoQixFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQzFCLFdBQVcsRUFDWCxhQUFhLEVBQ2IsWUFBWSxFQUNaLFdBQVcsRUFDWCxTQUFTLENBQ1YsQ0FDRixDQUFBO0lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLG1CQUF3QixFQUN4QixXQUFxQjtJQUVyQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUMxRSxJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDeEIsV0FBVyxDQUFDLElBQUksQ0FDZCxpREFBaUQsbUJBQW1CLENBQUMsaUJBQWlCLDZDQUE2QyxDQUNwSSxDQUFBO0lBQ0gsQ0FBQztJQUNELE9BQU8sbUJBQW1CLENBQUE7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvTGFuZzIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5cbmNvbnN0IGZsYXR0ZW4gPSAoXG4gIGJhc2U6IHN0cmluZyxcbiAgb2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAga2VlcExldmVsID0gZmFsc2VcbikgPT5cbiAgT2JqZWN0LmtleXMob2JqKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYmFzZSA/IGAke2Jhc2V9LiR7Y3Vycn1gIDogY3VyclxuICAgIGNvbnN0IHZhbCA9IG9ialtjdXJyXVxuICAgIGlmIChrZWVwTGV2ZWwpIHtcbiAgICAgIHJldHVybiB7IC4uLnByZXYsIFtwYXRoXTogZmxhdHRlbignJywgdmFsIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICAuLi5mbGF0dGVuKHBhdGgsIHZhbCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiksXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IC4uLnByZXYsIFtwYXRoXTogdmFsIH1cbiAgICB9XG4gIH0sIHt9KVxuXG5jb25zdCBjaGVja0tleXMgPSAoXG4gIGlucHV0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICBtYW5kYXRvcnk6IHN0cmluZ1tdLFxuICBvcHRpb25hbDogc3RyaW5nW11cbikgPT4ge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaW5wdXQpXG4gIGNvbnN0IG1pc3NpbmcgPSBtYW5kYXRvcnkuZmlsdGVyKChrZXkpID0+IGtleXMuaW5kZXhPZihrZXkpID09PSAtMSlcbiAgY29uc3QgdW5yZWNvZ25pemVkID0ga2V5cy5maWx0ZXIoXG4gICAgKGtleSkgPT4gbWFuZGF0b3J5LmluZGV4T2Yoa2V5KSA9PT0gLTEgJiYgb3B0aW9uYWwuaW5kZXhPZihrZXkpID09PSAtMVxuICApXG4gIHJldHVybiB7XG4gICAgbWlzc2luZyxcbiAgICB1bnJlY29nbml6ZWQsXG4gIH1cbn1cblxuLyoqXG4gKiBPbmx5IGtlZXBzIHJlY29nbml6ZWQga2V5cywgZmxhdHRlbiBuZXN0ZWQgdmFsdWVzICh0byBhbGxvdyBoYXZpbmcgXCIuXCIgaW4ga2V5cyksXG4gKiBwdXNoZXMgd2FybmluZ3MgYW5kIGVycm9ycyB0byB0aGUgZ2l2ZW4gYXJyYXlzOyByZXR1cm5zIG51bGwgaW4gY2FzZSBvZiBlcnJvclxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25maWdTZWN0aW9uKFxuICBmdWxsQ29uZmlnT2JqOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4gIHNlY3Rpb25OYW1lOiBzdHJpbmcsXG4gIG1hbmRhdG9yeUtleXM6IHN0cmluZ1tdLFxuICBvcHRpb25hbEtleXM6IHN0cmluZ1tdLFxuICBvdXRXYXJuaW5nczogc3RyaW5nW10sXG4gIG91dEVycm9yczogc3RyaW5nW11cbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgZnVsbENvbmZpZ09ialtzZWN0aW9uTmFtZV0gIT09ICdvYmplY3QnKSB7XG4gICAgaWYgKG1hbmRhdG9yeUtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuICAgIG91dEVycm9ycy5wdXNoKGBUaGUgWyR7c2VjdGlvbk5hbWV9XSBtYW5kYXRvcnkgc2VjdGlvbiBpcyBtaXNzaW5nLmApXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IHNlY3Rpb25Db25mID0gZnVsbENvbmZpZ09ialtzZWN0aW9uTmFtZV0gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBjb25zdCBrZXlzQ2hlY2sgPSBjaGVja0tleXMoc2VjdGlvbkNvbmYsIG1hbmRhdG9yeUtleXMsIG9wdGlvbmFsS2V5cylcblxuICBpZiAoa2V5c0NoZWNrLm1pc3NpbmcubGVuZ3RoKSB7XG4gICAgLy8gbm90ZTogdGhpcyBpcyBub3QgdGhyb3duIHRvIGFsbG93IG1lcmdpbmcgc2V2ZXJhbCBFcnJvcnMgZG93biB0aGUgbGluZVxuICAgIG91dEVycm9ycy5wdXNoKFxuICAgICAgYEluIHRoZSBbJHtzZWN0aW9uTmFtZX1dIHNlY3Rpb246ICR7a2V5c0NoZWNrLm1pc3Npbmcuam9pbignLCAnKX1gXG4gICAgKVxuICAgIHJldHVybiBudWxsXG4gIH0gZWxzZSBpZiAoa2V5c0NoZWNrLnVucmVjb2duaXplZC5sZW5ndGgpIHtcbiAgICBvdXRXYXJuaW5ncy5wdXNoKFxuICAgICAgYEluIHRoZSBbJHtzZWN0aW9uTmFtZX1dIHNlY3Rpb246ICR7a2V5c0NoZWNrLnVucmVjb2duaXplZC5qb2luKCcsICcpfWBcbiAgICApXG4gICAga2V5c0NoZWNrLnVucmVjb2duaXplZC5mb3JFYWNoKChrZXkpID0+IGRlbGV0ZSBzZWN0aW9uQ29uZltrZXldKVxuICB9XG5cbiAgcmV0dXJuIHNlY3Rpb25Db25mXG59XG5cbi8qKlxuICogU2FtZSBhcyBwYXJzZUNvbmZpZ1NlY3Rpb24gYnV0IGtlZXBzIGFsbCBrZXlzLCByZWNvZ25pemVkIG9yIG5vdFxuICogQWxzbyB0aGUgZmlyc3QgbGV2ZWwgaXMgdGhlIGxhbmd1YWdlIGNvZGUgKGUuZy4gJ2VuJylcbiAqIFRoaXMgaXMgb3B0aW9uYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVHJhbnNsYXRpb25zQ29uZmlnU2VjdGlvbihcbiAgZnVsbENvbmZpZ09iajogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuICBzZWN0aW9uTmFtZTogc3RyaW5nXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGlmICh0eXBlb2YgZnVsbENvbmZpZ09ialtzZWN0aW9uTmFtZV0gIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbiAgcmV0dXJuIGZsYXR0ZW4oJycsIGZ1bGxDb25maWdPYmpbc2VjdGlvbk5hbWVdLCB0cnVlKVxufVxuXG4vKipcbiAqIFNhbWUgYXMgcGFyc2VDb25maWdTZWN0aW9uIGJ1dCBoYW5kbGVzIGFuIGFycmF5IG9mIGNvbmZpZ3M7IHRoaXMgaXNcbiAqIGNvbnNpZGVyZWQgb3B0aW9uYWw7IHJldHVybnMgbnVsbCBpbiBjYXNlIG9mIGVycm9yIGluIGF0IGxlYXN0IG9uZSBvZlxuICogdGhlIHNlY3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU11bHRpQ29uZmlnU2VjdGlvbihcbiAgZnVsbENvbmZpZ09iajogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4sXG4gIHNlY3Rpb25OYW1lOiBzdHJpbmcsXG4gIG1hbmRhdG9yeUtleXM6IHN0cmluZ1tdLFxuICBvcHRpb25hbEtleXM6IHN0cmluZ1tdLFxuICBvdXRXYXJuaW5nczogc3RyaW5nW10sXG4gIG91dEVycm9yczogc3RyaW5nW11cbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gfCBudWxsIHtcbiAgY29uc3Qgc2VjdGlvbnMgPSBmdWxsQ29uZmlnT2JqW3NlY3Rpb25OYW1lXVxuICBpZiAoIXNlY3Rpb25zKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KHNlY3Rpb25zKSkge1xuICAgIG91dEVycm9ycy5wdXNoKGBFeHBlY3RlZCBbWyR7c2VjdGlvbk5hbWV9XV0gdG8gYmUgYW4gYXJyYXkgb2Ygc2VjdGlvbnMuYClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT5cbiAgICBwYXJzZUNvbmZpZ1NlY3Rpb24oXG4gICAgICB7IFtzZWN0aW9uTmFtZV06IHNlY3Rpb24gfSxcbiAgICAgIHNlY3Rpb25OYW1lLFxuICAgICAgbWFuZGF0b3J5S2V5cyxcbiAgICAgIG9wdGlvbmFsS2V5cyxcbiAgICAgIG91dFdhcm5pbmdzLFxuICAgICAgb3V0RXJyb3JzXG4gICAgKVxuICApXG4gIGlmIChyZXN1bHQuc29tZSgocikgPT4gciA9PT0gbnVsbCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTWV0YWRhdGFMYW5ndWFnZShcbiAgcGFyc2VkQ29uZmlnU2VjdGlvbjogYW55LFxuICBvdXRXYXJuaW5nczogc3RyaW5nW11cbikge1xuICBjb25zdCBsYW5nMiA9IHRvTGFuZzIocGFyc2VkQ29uZmlnU2VjdGlvbi5tZXRhZGF0YV9sYW5ndWFnZS50b0xvd2VyQ2FzZSgpKVxuICBpZiAobGFuZzI/Lmxlbmd0aCAhPT0gMikge1xuICAgIG91dFdhcm5pbmdzLnB1c2goXG4gICAgICBgSW4gdGhlIFtnbG9iYWxdIHNlY3Rpb246IG1ldGFkYXRhX2xhbmd1YWdlID0gXCIke3BhcnNlZENvbmZpZ1NlY3Rpb24ubWV0YWRhdGFfbGFuZ3VhZ2V9XCIgaXMgbm90IGEgcmVjb2duaXplZCBJU08gNjM5IGxhbmd1YWdlIGNvZGVgXG4gICAgKVxuICB9XG4gIHJldHVybiBwYXJzZWRDb25maWdTZWN0aW9uXG59XG4iXX0=
@@ -1,19 +1,31 @@
1
1
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
2
+ /**
3
+ * Taken from https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
4
+ * Note: some languages have multiple 3-char codes, like 'fre' and 'fra'; in that case, the one to be used
5
+ * in priority is the one defined last
6
+ */
2
7
  const LANG_3_TO_2_MAPPER = {
3
8
  eng: 'en',
9
+ nld: 'nl', // duplicate for "dut"
4
10
  dut: 'nl',
11
+ fra: 'fr', // duplicate for "fre"
5
12
  fre: 'fr',
13
+ deu: 'de', // duplicate for "ger"
6
14
  ger: 'de',
7
15
  kor: 'ko',
8
16
  spa: 'es',
17
+ ces: 'cs', // duplicate for "cze"
9
18
  cze: 'cs',
10
19
  cat: 'ca',
11
20
  fin: 'fi',
21
+ isl: 'is', // duplicate for "ice"
12
22
  ice: 'is',
13
23
  ita: 'it',
14
24
  por: 'pt',
15
25
  rus: 'ru',
26
+ zho: 'zh', // duplicate for "chi"
16
27
  chi: 'zh',
28
+ slk: 'sk', // duplicate for "slo"
17
29
  slo: 'sk',
18
30
  roh: 'rm',
19
31
  ara: 'ar',
@@ -24,8 +36,10 @@ const LANG_3_TO_2_MAPPER = {
24
36
  tur: 'tr',
25
37
  arm: 'hy',
26
38
  aze: 'az',
39
+ kat: 'ka', // duplicate for "geo"
27
40
  geo: 'ka',
28
41
  ukr: 'uk',
42
+ cym: 'cy', // duplicate for "wel"
29
43
  wel: 'cy',
30
44
  };
31
45
  export const LANGUAGE_NAMES = {
@@ -60,15 +74,42 @@ export const LANGUAGE_NAMES = {
60
74
  export const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce((mapperObject, langEntry) => {
61
75
  return { ...mapperObject, [langEntry[1]]: langEntry[0] };
62
76
  }, {});
63
- export function getLang3FromLang2(lang2) {
64
- return LANG_2_TO_3_MAPPER[lang2] ?? lang2;
77
+ /**
78
+ * Converts a language code in any format to the ISO 639-2 format (3 characters)
79
+ * Returns the given string if the corresponding language code could not be recognized
80
+ */
81
+ export function toLang3(lang) {
82
+ if (!lang) {
83
+ // also handle falsy values just in case
84
+ return lang;
85
+ }
86
+ if (lang.length === 3) {
87
+ return LANG_2_TO_3_MAPPER[LANG_3_TO_2_MAPPER[lang.toLowerCase()]] ?? lang;
88
+ }
89
+ const lang2 = lang.toLowerCase().substring(0, 2);
90
+ return LANG_2_TO_3_MAPPER[lang2] ?? lang;
65
91
  }
66
- export function getLang2FromLang3(lang3) {
67
- return LANG_3_TO_2_MAPPER[lang3] ?? lang3;
68
- }
69
- export function getLocalizedIndexKey(lang2) {
70
- const lang3 = getLang3FromLang2(lang2);
71
- return lang3 ? `lang${lang3}` : null;
92
+ /**
93
+ * Converts a language code in any format to the ISO 639-1 format (2 characters)
94
+ * Returns the given string if the corresponding language code could not be recognized
95
+ */
96
+ export function toLang2(lang) {
97
+ if (!lang) {
98
+ // also handle falsy values just in case
99
+ return lang;
100
+ }
101
+ if (lang.length === 3) {
102
+ return LANG_3_TO_2_MAPPER[lang.toLowerCase()] ?? lang;
103
+ }
104
+ const lang2 = lang.toLowerCase().substring(0, 2);
105
+ if (lang2 in LANG_2_TO_3_MAPPER) {
106
+ return lang2;
107
+ }
108
+ if (lang.match(/[a-z]{2}_[A-Z]{2}/)) {
109
+ // remove locale code even if the language code is not known
110
+ return lang2;
111
+ }
112
+ return lang;
72
113
  }
73
114
  marker('language.en');
74
115
  marker('language.nl');
@@ -97,4 +138,4 @@ marker('language.az');
97
138
  marker('language.ka');
98
139
  marker('language.uk');
99
140
  marker('language.cy');
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UtY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMvbGliL2xhbmd1YWdlLWNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUVoRSxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtDQUNWLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsRUFBRSxFQUFFLFNBQVM7SUFDYixFQUFFLEVBQUUsWUFBWTtJQUNoQixFQUFFLEVBQUUsVUFBVTtJQUNkLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLEtBQUs7SUFDVCxFQUFFLEVBQUUsU0FBUztJQUNiLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLFFBQVE7SUFDWixFQUFFLEVBQUUsT0FBTztJQUNYLEVBQUUsRUFBRSxVQUFVO0lBQ2QsRUFBRSxFQUFFLFVBQVU7SUFDZCxFQUFFLEVBQUUsV0FBVztJQUNmLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsWUFBWTtJQUNoQixFQUFFLEVBQUUsV0FBVztJQUNmLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLE9BQU87SUFDWCxFQUFFLEVBQUUsT0FBTztJQUNYLEVBQUUsRUFBRSxRQUFRO0lBQ1osRUFBRSxFQUFFLFNBQVM7SUFDYixFQUFFLEVBQUUsUUFBUTtJQUNaLEVBQUUsRUFBRSxTQUFTO0lBQ2IsRUFBRSxFQUFFLGlCQUFpQjtJQUNyQixFQUFFLEVBQUUsU0FBUztJQUNiLEVBQUUsRUFBRSxZQUFZO0lBQ2hCLEdBQUcsRUFBRSxTQUFTO0NBQ2YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQ3pFLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxFQUFFO0lBQzFCLE9BQU8sRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0FBQzFELENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQTtBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFhO0lBQzdDLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFBO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBYTtJQUM3QyxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQTtBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQWE7SUFDaEQsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUN0QyxDQUFDO0FBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5cbmNvbnN0IExBTkdfM19UT18yX01BUFBFUiA9IHtcbiAgZW5nOiAnZW4nLFxuICBkdXQ6ICdubCcsXG4gIGZyZTogJ2ZyJyxcbiAgZ2VyOiAnZGUnLFxuICBrb3I6ICdrbycsXG4gIHNwYTogJ2VzJyxcbiAgY3plOiAnY3MnLFxuICBjYXQ6ICdjYScsXG4gIGZpbjogJ2ZpJyxcbiAgaWNlOiAnaXMnLFxuICBpdGE6ICdpdCcsXG4gIHBvcjogJ3B0JyxcbiAgcnVzOiAncnUnLFxuICBjaGk6ICd6aCcsXG4gIHNsbzogJ3NrJyxcbiAgcm9oOiAncm0nLFxuICBhcmE6ICdhcicsXG4gIGRhbjogJ2RhJyxcbiAgbm9yOiAnbm8nLFxuICBwb2w6ICdwbCcsXG4gIHN3ZTogJ3N2JyxcbiAgdHVyOiAndHInLFxuICBhcm06ICdoeScsXG4gIGF6ZTogJ2F6JyxcbiAgZ2VvOiAna2EnLFxuICB1a3I6ICd1aycsXG4gIHdlbDogJ2N5Jyxcbn1cblxuZXhwb3J0IGNvbnN0IExBTkdVQUdFX05BTUVTID0ge1xuICBlbjogJ0VuZ2xpc2gnLFxuICBubDogJ05lZGVybGFuZHMnLFxuICBmcjogJ0ZyYW7Dp2FpcycsXG4gIGRlOiAnRGV1dHNjaCcsXG4gIGtvOiAn7ZWc6rWt7Ja0JyxcbiAgZXM6ICdFc3Bhw7FvbCcsXG4gIGNzOiAnxIxlxaF0aW5hJyxcbiAgY2E6ICdDYXRhbMOgJyxcbiAgZmk6ICdTdW9taScsXG4gIGlzOiAnw41zbGVuc2thJyxcbiAgaXQ6ICdJdGFsaWFubycsXG4gIHB0OiAnUG9ydHVndcOqcycsXG4gIHJ1OiAn0KDRg9GB0YHQutC40LknLFxuICB6aDogJ+S4reaWhycsXG4gIHNrOiAnU2xvdmVuxI1pbmEnLFxuICBybTogJ1J1bWFudHNjaCcsXG4gIGFyOiAn2KfZhNi52LHYqNmK2KknLFxuICBkYTogJ0RhbnNrJyxcbiAgbm86ICdOb3JzaycsXG4gIHBsOiAnUG9sc2tpJyxcbiAgc3Y6ICdTd2VkaXNoJyxcbiAgdHI6ICdUw7xya8OnZScsXG4gIGh5OiAn1bDVodW11aXWgNWl1bYnLFxuICBhejogJ0F6yZlyYmF5Y2FuIGRpbGknLFxuICBrYTogJ+GDpeGDkOGDoOGDl+GDo+GDmuGDmCcsXG4gIHVrOiAn0YPQutGA0LDRl9C90YHRjNC60LAnLFxuICB3ZWw6ICdDeW1yYWVnJyxcbn1cblxuZXhwb3J0IGNvbnN0IExBTkdfMl9UT18zX01BUFBFUiA9IE9iamVjdC5lbnRyaWVzKExBTkdfM19UT18yX01BUFBFUikucmVkdWNlKFxuICAobWFwcGVyT2JqZWN0LCBsYW5nRW50cnkpID0+IHtcbiAgICByZXR1cm4geyAuLi5tYXBwZXJPYmplY3QsIFtsYW5nRW50cnlbMV1dOiBsYW5nRW50cnlbMF0gfVxuICB9LFxuICB7fVxuKVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFuZzNGcm9tTGFuZzIobGFuZzI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBMQU5HXzJfVE9fM19NQVBQRVJbbGFuZzJdID8/IGxhbmcyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYW5nMkZyb21MYW5nMyhsYW5nMzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIExBTkdfM19UT18yX01BUFBFUltsYW5nM10gPz8gbGFuZzNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsaXplZEluZGV4S2V5KGxhbmcyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBsYW5nMyA9IGdldExhbmczRnJvbUxhbmcyKGxhbmcyKVxuICByZXR1cm4gbGFuZzMgPyBgbGFuZyR7bGFuZzN9YCA6IG51bGxcbn1cblxubWFya2VyKCdsYW5ndWFnZS5lbicpXG5tYXJrZXIoJ2xhbmd1YWdlLm5sJylcbm1hcmtlcignbGFuZ3VhZ2UuZnInKVxubWFya2VyKCdsYW5ndWFnZS5kZScpXG5tYXJrZXIoJ2xhbmd1YWdlLmtvJylcbm1hcmtlcignbGFuZ3VhZ2UuZXMnKVxubWFya2VyKCdsYW5ndWFnZS5jcycpXG5tYXJrZXIoJ2xhbmd1YWdlLmNhJylcbm1hcmtlcignbGFuZ3VhZ2UuZmknKVxubWFya2VyKCdsYW5ndWFnZS5pcycpXG5tYXJrZXIoJ2xhbmd1YWdlLml0Jylcbm1hcmtlcignbGFuZ3VhZ2UucHQnKVxubWFya2VyKCdsYW5ndWFnZS5ydScpXG5tYXJrZXIoJ2xhbmd1YWdlLnpoJylcbm1hcmtlcignbGFuZ3VhZ2Uuc2snKVxubWFya2VyKCdsYW5ndWFnZS5ybScpXG5tYXJrZXIoJ2xhbmd1YWdlLmFyJylcbm1hcmtlcignbGFuZ3VhZ2UuZGEnKVxubWFya2VyKCdsYW5ndWFnZS5ubycpXG5tYXJrZXIoJ2xhbmd1YWdlLnBsJylcbm1hcmtlcignbGFuZ3VhZ2Uuc3YnKVxubWFya2VyKCdsYW5ndWFnZS50cicpXG5tYXJrZXIoJ2xhbmd1YWdlLmh5Jylcbm1hcmtlcignbGFuZ3VhZ2UuYXonKVxubWFya2VyKCdsYW5ndWFnZS5rYScpXG5tYXJrZXIoJ2xhbmd1YWdlLnVrJylcbm1hcmtlcignbGFuZ3VhZ2UuY3knKVxuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UtY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMvbGliL2xhbmd1YWdlLWNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUVoRTs7OztHQUlHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJLEVBQUUsc0JBQXNCO0lBQ2pDLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUksRUFBRSxzQkFBc0I7SUFDakMsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSSxFQUFFLHNCQUFzQjtJQUNqQyxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSSxFQUFFLHNCQUFzQjtJQUNqQyxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSSxFQUFFLHNCQUFzQjtJQUNqQyxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJLEVBQUUsc0JBQXNCO0lBQ2pDLEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUksRUFBRSxzQkFBc0I7SUFDakMsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUs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QUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7UUFDcEMsNERBQTREO1FBQzVELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuXG4vKipcbiAqIFRha2VuIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9JU09fNjM5X2xhbmd1YWdlX2NvZGVzXG4gKiBOb3RlOiBzb21lIGxhbmd1YWdlcyBoYXZlIG11bHRpcGxlIDMtY2hhciBjb2RlcywgbGlrZSAnZnJlJyBhbmQgJ2ZyYSc7IGluIHRoYXQgY2FzZSwgdGhlIG9uZSB0byBiZSB1c2VkXG4gKiBpbiBwcmlvcml0eSBpcyB0aGUgb25lIGRlZmluZWQgbGFzdFxuICovXG5jb25zdCBMQU5HXzNfVE9fMl9NQVBQRVIgPSB7XG4gIGVuZzogJ2VuJyxcbiAgbmxkOiAnbmwnLCAvLyBkdXBsaWNhdGUgZm9yIFwiZHV0XCJcbiAgZHV0OiAnbmwnLFxuICBmcmE6ICdmcicsIC8vIGR1cGxpY2F0ZSBmb3IgXCJmcmVcIlxuICBmcmU6ICdmcicsXG4gIGRldTogJ2RlJywgLy8gZHVwbGljYXRlIGZvciBcImdlclwiXG4gIGdlcjogJ2RlJyxcbiAga29yOiAna28nLFxuICBzcGE6ICdlcycsXG4gIGNlczogJ2NzJywgLy8gZHVwbGljYXRlIGZvciBcImN6ZVwiXG4gIGN6ZTogJ2NzJyxcbiAgY2F0OiAnY2EnLFxuICBmaW46ICdmaScsXG4gIGlzbDogJ2lzJywgLy8gZHVwbGljYXRlIGZvciBcImljZVwiXG4gIGljZTogJ2lzJyxcbiAgaXRhOiAnaXQnLFxuICBwb3I6ICdwdCcsXG4gIHJ1czogJ3J1JyxcbiAgemhvOiAnemgnLCAvLyBkdXBsaWNhdGUgZm9yIFwiY2hpXCJcbiAgY2hpOiAnemgnLFxuICBzbGs6ICdzaycsIC8vIGR1cGxpY2F0ZSBmb3IgXCJzbG9cIlxuICBzbG86ICdzaycsXG4gIHJvaDogJ3JtJyxcbiAgYXJhOiAnYXInLFxuICBkYW46ICdkYScsXG4gIG5vcjogJ25vJyxcbiAgcG9sOiAncGwnLFxuICBzd2U6ICdzdicsXG4gIHR1cjogJ3RyJyxcbiAgYXJtOiAnaHknLFxuICBhemU6ICdheicsXG4gIGthdDogJ2thJywgLy8gZHVwbGljYXRlIGZvciBcImdlb1wiXG4gIGdlbzogJ2thJyxcbiAgdWtyOiAndWsnLFxuICBjeW06ICdjeScsIC8vIGR1cGxpY2F0ZSBmb3IgXCJ3ZWxcIlxuICB3ZWw6ICdjeScsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9OQU1FUyA9IHtcbiAgZW46ICdFbmdsaXNoJyxcbiAgbmw6ICdOZWRlcmxhbmRzJyxcbiAgZnI6ICdGcmFuw6dhaXMnLFxuICBkZTogJ0RldXRzY2gnLFxuICBrbzogJ+2VnOq1reyWtCcsXG4gIGVzOiAnRXNwYcOxb2wnLFxuICBjczogJ8SMZcWhdGluYScsXG4gIGNhOiAnQ2F0YWzDoCcsXG4gIGZpOiAnU3VvbWknLFxuICBpczogJ8ONc2xlbnNrYScsXG4gIGl0OiAnSXRhbGlhbm8nLFxuICBwdDogJ1BvcnR1Z3XDqnMnLFxuICBydTogJ9Cg0YPRgdGB0LrQuNC5JyxcbiAgemg6ICfkuK3mlocnLFxuICBzazogJ1Nsb3ZlbsSNaW5hJyxcbiAgcm06ICdSdW1hbnRzY2gnLFxuICBhcjogJ9in2YTYudix2KjZitipJyxcbiAgZGE6ICdEYW5zaycsXG4gIG5vOiAnTm9yc2snLFxuICBwbDogJ1BvbHNraScsXG4gIHN2OiAnU3dlZGlzaCcsXG4gIHRyOiAnVMO8cmvDp2UnLFxuICBoeTogJ9Ww1aHVtdWl1oDVpdW2JyxcbiAgYXo6ICdBesmZcmJheWNhbiBkaWxpJyxcbiAga2E6ICfhg6Xhg5Dhg6Dhg5fhg6Phg5rhg5gnLFxuICB1azogJ9GD0LrRgNCw0ZfQvdGB0YzQutCwJyxcbiAgd2VsOiAnQ3ltcmFlZycsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIExhbmd1YWdlQ29kZTMgPSBrZXlvZiB0eXBlb2YgTEFOR18zX1RPXzJfTUFQUEVSXG5leHBvcnQgdHlwZSBMYW5ndWFnZUNvZGUyID0gKHR5cGVvZiBMQU5HXzNfVE9fMl9NQVBQRVIpW0xhbmd1YWdlQ29kZTNdXG5cbmV4cG9ydCBjb25zdCBMQU5HXzJfVE9fM19NQVBQRVIgPSBPYmplY3QuZW50cmllcyhMQU5HXzNfVE9fMl9NQVBQRVIpLnJlZHVjZShcbiAgKG1hcHBlck9iamVjdCwgbGFuZ0VudHJ5KSA9PiB7XG4gICAgcmV0dXJuIHsgLi4ubWFwcGVyT2JqZWN0LCBbbGFuZ0VudHJ5WzFdXTogbGFuZ0VudHJ5WzBdIH1cbiAgfSxcbiAge31cbikgYXMgUmVjb3JkPExhbmd1YWdlQ29kZTIsIExhbmd1YWdlQ29kZTM+XG5cbi8qKlxuICogVGhpcyBjYW4gYmU6XG4gKiAtIGFuIElTTyA2MzktMiBsYW5ndWFnZSBjb2RlIGluIDMgY2hhcmFjdGVycyAoZS5nLiAnZW5nJywgJ2ZyZScsICdnZXInKVxuICogLSBhbiBJU08gNjM5LTEgbGFuZ3VhZ2UgY29kZSBpbiAyIGNoYXJhY3RlcnMgKGUuZy4gJ2VuJywgJ2ZyJywgJ2RlJylcbiAqIC0gYSAyLWNoYXJhY3RlciBsYW5ndWFnZSBjb2RlIHdpdGggbG9jYWxlIChlLmcuICdmcl9GUicsICdmcl9DQScpXG4gKi9cbmV4cG9ydCB0eXBlIExhbmd1YWdlQ29kZUxpa2UgPSBMYW5ndWFnZUNvZGUyIHwgTGFuZ3VhZ2VDb2RlMyB8IHN0cmluZ1xuXG4vKipcbiAqIENvbnZlcnRzIGEgbGFuZ3VhZ2UgY29kZSBpbiBhbnkgZm9ybWF0IHRvIHRoZSBJU08gNjM5LTIgZm9ybWF0ICgzIGNoYXJhY3RlcnMpXG4gKiBSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGFuZ3VhZ2UgY29kZSBjb3VsZCBub3QgYmUgcmVjb2duaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9MYW5nMyhsYW5nOiBMYW5ndWFnZUNvZGVMaWtlKTogTGFuZ3VhZ2VDb2RlMyB8IHN0cmluZyB7XG4gIGlmICghbGFuZykge1xuICAgIC8vIGFsc28gaGFuZGxlIGZhbHN5IHZhbHVlcyBqdXN0IGluIGNhc2VcbiAgICByZXR1cm4gbGFuZ1xuICB9XG4gIGlmIChsYW5nLmxlbmd0aCA9PT0gMykge1xuICAgIHJldHVybiBMQU5HXzJfVE9fM19NQVBQRVJbTEFOR18zX1RPXzJfTUFQUEVSW2xhbmcudG9Mb3dlckNhc2UoKV1dID8/IGxhbmdcbiAgfVxuICBjb25zdCBsYW5nMiA9IGxhbmcudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoMCwgMilcbiAgcmV0dXJuIExBTkdfMl9UT18zX01BUFBFUltsYW5nMl0gPz8gbGFuZ1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbGFuZ3VhZ2UgY29kZSBpbiBhbnkgZm9ybWF0IHRvIHRoZSBJU08gNjM5LTEgZm9ybWF0ICgyIGNoYXJhY3RlcnMpXG4gKiBSZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcgaWYgdGhlIGNvcnJlc3BvbmRpbmcgbGFuZ3VhZ2UgY29kZSBjb3VsZCBub3QgYmUgcmVjb2duaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9MYW5nMihsYW5nOiBMYW5ndWFnZUNvZGVMaWtlKTogTGFuZ3VhZ2VDb2RlMiB8IHN0cmluZyB7XG4gIGlmICghbGFuZykge1xuICAgIC8vIGFsc28gaGFuZGxlIGZhbHN5IHZhbHVlcyBqdXN0IGluIGNhc2VcbiAgICByZXR1cm4gbGFuZ1xuICB9XG4gIGlmIChsYW5nLmxlbmd0aCA9PT0gMykge1xuICAgIHJldHVybiBMQU5HXzNfVE9fMl9NQVBQRVJbbGFuZy50b0xvd2VyQ2FzZSgpXSA/PyBsYW5nXG4gIH1cbiAgY29uc3QgbGFuZzIgPSBsYW5nLnRvTG93ZXJDYXNlKCkuc3Vic3RyaW5nKDAsIDIpXG4gIGlmIChsYW5nMiBpbiBMQU5HXzJfVE9fM19NQVBQRVIpIHtcbiAgICByZXR1cm4gbGFuZzJcbiAgfVxuICBpZiAobGFuZy5tYXRjaCgvW2Etel17Mn1fW0EtWl17Mn0vKSkge1xuICAgIC8vIHJlbW92ZSBsb2NhbGUgY29kZSBldmVuIGlmIHRoZSBsYW5ndWFnZSBjb2RlIGlzIG5vdCBrbm93blxuICAgIHJldHVybiBsYW5nMlxuICB9XG4gIHJldHVybiBsYW5nXG59XG5cbm1hcmtlcignbGFuZ3VhZ2UuZW4nKVxubWFya2VyKCdsYW5ndWFnZS5ubCcpXG5tYXJrZXIoJ2xhbmd1YWdlLmZyJylcbm1hcmtlcignbGFuZ3VhZ2UuZGUnKVxubWFya2VyKCdsYW5ndWFnZS5rbycpXG5tYXJrZXIoJ2xhbmd1YWdlLmVzJylcbm1hcmtlcignbGFuZ3VhZ2UuY3MnKVxubWFya2VyKCdsYW5ndWFnZS5jYScpXG5tYXJrZXIoJ2xhbmd1YWdlLmZpJylcbm1hcmtlcignbGFuZ3VhZ2UuaXMnKVxubWFya2VyKCdsYW5ndWFnZS5pdCcpXG5tYXJrZXIoJ2xhbmd1YWdlLnB0Jylcbm1hcmtlcignbGFuZ3VhZ2UucnUnKVxubWFya2VyKCdsYW5ndWFnZS56aCcpXG5tYXJrZXIoJ2xhbmd1YWdlLnNrJylcbm1hcmtlcignbGFuZ3VhZ2Uucm0nKVxubWFya2VyKCdsYW5ndWFnZS5hcicpXG5tYXJrZXIoJ2xhbmd1YWdlLmRhJylcbm1hcmtlcignbGFuZ3VhZ2Uubm8nKVxubWFya2VyKCdsYW5ndWFnZS5wbCcpXG5tYXJrZXIoJ2xhbmd1YWdlLnN2Jylcbm1hcmtlcignbGFuZ3VhZ2UudHInKVxubWFya2VyKCdsYW5ndWFnZS5oeScpXG5tYXJrZXIoJ2xhbmd1YWdlLmF6Jylcbm1hcmtlcignbGFuZ3VhZ2Uua2EnKVxubWFya2VyKCdsYW5ndWFnZS51aycpXG5tYXJrZXIoJ2xhbmd1YWdlLmN5JylcbiJdfQ==
@@ -3,5 +3,5 @@ export * from './lib/utils';
3
3
  export * from './lib/links';
4
4
  export * from './lib/image-fallback.directive';
5
5
  export * from './lib/gn-ui-version';
6
- export * from './lib/record.util';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsZ0NBQWdDLENBQUE7QUFDOUMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpbmtzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1hZ2UtZmFsbGJhY2suZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ24tdWktdmVyc2lvbidcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlY29yZC51dGlsJ1xuIl19
6
+ export * from './lib/record';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsZ0NBQWdDLENBQUE7QUFDOUMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLGNBQWMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9saW5rcydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ltYWdlLWZhbGxiYWNrLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2duLXVpLXZlcnNpb24nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWNvcmQnXG4iXX0=
@@ -11,8 +11,8 @@ export const FORMATS = {
11
11
  excel: {
12
12
  extensions: [
13
13
  'excel',
14
- 'xls',
15
14
  'xlsx',
15
+ 'xls',
16
16
  'ms-excel',
17
17
  'openxmlformats-officedocument',
18
18
  ],
@@ -63,10 +63,17 @@ export const FORMATS = {
63
63
  mimeTypes: ['application/geopackage+sqlite3'],
64
64
  },
65
65
  zip: {
66
- extensions: ['zip', 'tar.gz'],
66
+ extensions: ['zip', 'tar.gz', 'gz', '7z', '7zip'],
67
67
  priority: 8,
68
68
  color: '#B0CB52',
69
- mimeTypes: ['application/zip', 'application/x-zip'],
69
+ mimeTypes: [
70
+ 'application/zip',
71
+ 'application/x-zip',
72
+ 'application/x-compressed',
73
+ 'application/x-7z-compressed',
74
+ 'application/gzip',
75
+ 'application/x-gzip',
76
+ ],
70
77
  },
71
78
  pdf: {
72
79
  extensions: ['pdf'],
@@ -80,39 +87,57 @@ export const FORMATS = {
80
87
  color: '#C4A98F',
81
88
  mimeTypes: ['image/jpg'],
82
89
  },
90
+ png: {
91
+ extensions: ['png'],
92
+ priority: 10,
93
+ color: '#8B5A3C',
94
+ mimeTypes: ['image/png'],
95
+ },
96
+ tiff: {
97
+ extensions: ['tiff', 'tif', 'geotiff', 'geotif'],
98
+ priority: 11,
99
+ color: '#6B4423',
100
+ mimeTypes: ['image/tiff'],
101
+ },
83
102
  svg: {
84
103
  extensions: ['svg'],
85
- priority: 10,
104
+ priority: 12,
86
105
  color: '#EB6D82',
87
106
  mimeTypes: ['image/svg+xml'],
88
107
  },
89
108
  dxf: {
90
109
  extensions: ['dxf'],
91
- priority: 11,
110
+ priority: 13,
92
111
  color: '#DCCD00',
93
112
  mimeTypes: ['application/x-dxf', 'image/x-dxf'],
94
113
  },
95
114
  html: {
96
115
  extensions: ['html', 'htm'],
97
- priority: 12,
116
+ priority: 14,
98
117
  color: '#C0C9B6',
99
118
  mimeTypes: ['text/html'],
100
119
  },
101
120
  fgb: {
102
121
  extensions: ['fgb', 'flatgeobuf'],
103
- priority: 13,
122
+ priority: 15,
104
123
  color: '#A8111C',
105
124
  mimeTypes: ['application/flatgeobuf'],
106
125
  },
107
126
  jsonfg: {
108
127
  extensions: ['jsonfg', 'jsonfgc'],
109
- priority: 14,
128
+ priority: 16,
110
129
  color: '#009EE0',
111
130
  mimeTypes: [
112
131
  'application/vnd.ogc.fg+json',
113
132
  'application/vnd.ogc.fg+json;compatibility=geojson',
114
133
  ],
115
134
  },
135
+ webp: {
136
+ extensions: ['webp'],
137
+ priority: 17,
138
+ color: '#5A9E6F',
139
+ mimeTypes: ['image/webp'],
140
+ },
116
141
  };
117
142
  export function getFormatPriority(linkFormat) {
118
143
  for (const format in FORMATS) {
@@ -161,6 +186,8 @@ export function getFileFormat(link) {
161
186
  }
162
187
  export function isFormatInQueryParam(link, alias) {
163
188
  const queryParams = link.url.searchParams;
189
+ if (!queryParams)
190
+ return false;
164
191
  for (const [key, value] of queryParams.entries()) {
165
192
  if (key === 'format' || key === 'f') {
166
193
  return value === alias;
@@ -276,4 +303,4 @@ export function wmsLayerFlatten(layerFull) {
276
303
  export function getMimeTypeForFormat(format) {
277
304
  return format in FORMATS ? FORMATS[format.toLowerCase()].mimeTypes[0] : null;
278
305
  }
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjL2xpYi9saW5rcy9saW5rLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQU1oRSxPQUFPLEVBQ0wsY0FBYyxFQUNkLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sd0JBQXdCLENBQUE7QUFFL0IsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFFN0MsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCLEdBQUcsRUFBRTtRQUNILFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNuQixRQUFRLEVBQUUsQ0FBQztRQUNYLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztLQUMzQztJQUNELEtBQUssRUFBRTtRQUNMLFVBQVUsRUFBRTtZQUNWLE9BQU87WUFDUCxLQUFLO1lBQ0wsTUFBTTtZQUNOLFVBQVU7WUFDViwrQkFBK0I7U0FDaEM7UUFDRCxRQUFRLEVBQUUsQ0FBQztRQUNYLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRTtZQUNULDBCQUEwQjtZQUMxQixtRUFBbUU7U0FDcEU7S0FDRjtJQUNELE9BQU8sRUFBRTtRQUNQLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN2QixRQUFRLEVBQUUsQ0FBQztRQUNYLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixFQUFFLDBCQUEwQixDQUFDO0tBQ2hFO0lBQ0QsSUFBSSxFQUFFO1FBQ0osVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3BCLFFBQVEsRUFBRSxDQUFDO1FBQ1gsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFLENBQUMsa0JB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U0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB7XG4gIERhdGFzZXRPbmxpbmVSZXNvdXJjZSxcbiAgU2VydmljZU9ubGluZVJlc291cmNlLFxuICBTZXJ2aWNlUHJvdG9jb2wsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7XG4gIE9nY0FwaUVuZHBvaW50LFxuICBXZnNFbmRwb2ludCxcbiAgV21zRW5kcG9pbnQsXG4gIFdtdHNFbmRwb2ludCxcbn0gZnJvbSAnQGNhbXB0b2NhbXAvb2djLWNsaWVudCdcblxubWFya2VyKCdkb3dubG9hZHMud2ZzLmZlYXR1cmV0eXBlLm5vdC5mb3VuZCcpXG5cbmV4cG9ydCBjb25zdCBGT1JNQVRTID0ge1xuICBjc3Y6IHtcbiAgICBleHRlbnNpb25zOiBbJ2NzdiddLFxuICAgIHByaW9yaXR5OiAxLFxuICAgIGNvbG9yOiAnI0Y2QTkyNCcsXG4gICAgbWltZVR5cGVzOiBbJ3RleHQvY3N2JywgJ2FwcGxpY2F0aW9uL2NzdiddLFxuICB9LFxuICBleGNlbDoge1xuICAgIGV4dGVuc2lvbnM6IFtcbiAgICAgICdleGNlbCcsXG4gICAgICAneGxzJyxcbiAgICAgICd4bHN4JyxcbiAgICAgICdtcy1leGNlbCcsXG4gICAgICAnb3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQnLFxuICAgIF0sXG4gICAgcHJpb3JpdHk6IDIsXG4gICAgY29sb3I6ICcjRkZERTEwJyxcbiAgICBtaW1lVHlwZXM6IFtcbiAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLFxuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgICBdLFxuICB9LFxuICBnZW9qc29uOiB7XG4gICAgZXh0ZW5zaW9uczogWydnZW9qc29uJ10sXG4gICAgcHJpb3JpdHk6IDMsXG4gICAgY29sb3I6ICcjMjkzQzZGJyxcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vZ2VvK2pzb24nLCAnYXBwbGljYXRpb24vdm5kLmdlbytqc29uJ10sXG4gIH0sXG4gIGpzb246IHtcbiAgICBleHRlbnNpb25zOiBbJ2pzb24nXSxcbiAgICBwcmlvcml0eTogMyxcbiAgICBjb2xvcjogJyM4NEQwRjAnLFxuICAgIG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi9qc29uJ10sXG4gIH0sXG4gIHNocDoge1xuICAgIGV4dGVuc2lvbnM6IFsnc2hwJywgJ3NoYXBlJywgJ3ppcHBlZC1zaGFwZWZpbGUnXSxcbiAgICBwcmlvcml0eTogNCxcbiAgICBjb2xvcjogJyMwMDkwMzYnLFxuICAgIG1pbWVUeXBlczogWyd4LWdpcy94LXNoYXBlZmlsZSddLFxuICB9LFxuICBnbWw6IHtcbiAgICBleHRlbnNpb25zOiBbJ2dtbCddLFxuICAgIHByaW9yaXR5OiA1LFxuICAgIGNvbG9yOiAnI0U3NTExMycsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL2dtbCt4bWwnLCAndGV4dC94bWw7IHN1YnR5cGU9Z21sJ10sXG4gIH0sXG4gIGttbDoge1xuICAgIGV4dGVuc2lvbnM6IFsna21sJywgJ2tteiddLFxuICAgIHByaW9yaXR5OiA2LFxuICAgIGNvbG9yOiAnI0Y0QjVEMCcsXG4gICAgbWltZVR5cGVzOiBbXG4gICAgICAnYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbWwreG1sJyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmtteicsXG4gICAgXSxcbiAgfSxcbiAgZ3BrZzoge1xuICAgIGV4dGVuc2lvbnM6IFsnZ3BrZycsICdnZW9wYWNrYWdlJ10sXG4gICAgcHJpb3JpdHk6IDcsXG4gICAgY29sb3I6ICcjN0Q1RDlGJyxcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vZ2VvcGFja2FnZStzcWxpdGUzJ10sXG4gIH0sXG4gIHppcDoge1xuICAgIGV4dGVuc2lvbnM6IFsnemlwJywgJ3Rhci5neiddLFxuICAgIHByaW9yaXR5OiA4LFxuICAgIGNvbG9yOiAnI0IwQ0I1MicsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL3ppcCcsICdhcHBsaWNhdGlvbi94LXppcCddLFxuICB9LFxuICBwZGY6IHtcbiAgICBleHRlbnNpb25zOiBbJ3BkZiddLFxuICAgIHByaW9yaXR5OiA5LFxuICAgIGNvbG9yOiAnIzQ5NTc5RScsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL3BkZiddLFxuICB9LFxuICBqcGc6IHtcbiAgICBleHRlbnNpb25zOiBbJ2pwZycsICdqcGVnJywgJ2pmaWYnLCAncGpwZWcnLCAncGpwJ10sXG4gICAgcHJpb3JpdHk6IDksXG4gICAgY29sb3I6ICcjQzRBOThGJyxcbiAgICBtaW1lVHlwZXM6IFsnaW1hZ2UvanBnJ10sXG4gIH0sXG4gIHN2Zzoge1xuICAgIGV4dGVuc2lvbnM6IFsnc3ZnJ10sXG4gICAgcHJpb3JpdHk6IDEwLFxuICAgIGNvbG9yOiAnI0VCNkQ4MicsXG4gICAgbWltZVR5cGVzOiBbJ2ltYWdlL3N2Zyt4bWwnXSxcbiAgfSxcbiAgZHhmOiB7XG4gICAgZXh0ZW5zaW9uczogWydkeGYnXSxcbiAgICBwcmlvcml0eTogMTEsXG4gICAgY29sb3I6ICcjRENDRDAwJyxcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24veC1keGYnLCAnaW1hZ2UveC1keGYnXSxcbiAgfSxcbiAgaHRtbDoge1xuICAgIGV4dGVuc2lvbnM6IFsnaHRtbCcsICdodG0nXSxcbiAgICBwcmlvcml0eTogMTIsXG4gICAgY29sb3I6ICcjQzBDOUI2JyxcbiAgICBtaW1lVHlwZXM6IFsndGV4dC9odG1sJ10sXG4gIH0sXG4gIGZnYjoge1xuICAgIGV4dGVuc2lvbnM6IFsnZmdiJywgJ2ZsYXRnZW9idWYnXSxcbiAgICBwcmlvcml0eTogMTMsXG4gICAgY29sb3I6ICcjQTgxMTFDJyxcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vZmxhdGdlb2J1ZiddLFxuICB9LFxuICBqc29uZmc6IHtcbiAgICBleHRlbnNpb25zOiBbJ2pzb25mZycsICdqc29uZmdjJ10sXG4gICAgcHJpb3JpdHk6IDE0LFxuICAgIGNvbG9yOiAnIzAwOUVFMCcsXG4gICAgbWltZVR5cGVzOiBbXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm9nYy5mZytqc29uJyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQub2djLmZnK2pzb247Y29tcGF0aWJpbGl0eT1nZW9qc29uJyxcbiAgICBdLFxuICB9LFxufSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBGaWxlRm9ybWF0ID0ga2V5b2YgdHlwZW9mIEZPUk1BVFNcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdFByaW9yaXR5KGxpbmtGb3JtYXQ6IEZpbGVGb3JtYXQpOiBudW1iZXIge1xuICBmb3IgKGNvbnN0IGZvcm1hdCBpbiBGT1JNQVRTKSB7XG4gICAgZm9yIChjb25zdCBleHQgb2YgRk9STUFUU1tmb3JtYXRdLmV4dGVuc2lvbnMpIHtcbiAgICAgIGlmIChuZXcgUmVnRXhwKGAke2V4dH1gLCAnaScpLnRlc3QobGlua0Zvcm1hdCkpIHtcbiAgICAgICAgaWYgKEZPUk1BVFNbZm9ybWF0XS5wcmlvcml0eSA9PT0gMCkgcmV0dXJuIDBcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEZPUk1BVFMpLmxlbmd0aCAtIEZPUk1BVFNbZm9ybWF0XS5wcmlvcml0eVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gMFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlua1ByaW9yaXR5KFxuICBsaW5rOiBEYXRhc2V0T25saW5lUmVzb3VyY2UgfCBTZXJ2aWNlT25saW5lUmVzb3VyY2Vcbik6IG51bWJlciB7XG4gIHJldHVybiBnZXRGb3JtYXRQcmlvcml0eShnZXRGaWxlRm9ybWF0KGxpbmspKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZUZvcm1hdEZyb21TZXJ2aWNlT3V0cHV0KFxuICBzZXJ2aWNlT3V0cHV0OiBzdHJpbmdcbik6IEZpbGVGb3JtYXQgfCBudWxsIHtcbiAgZnVuY3Rpb24gZm9ybWF0TWF0Y2hlcihmb3JtYXQ6ICh0eXBlb2YgRk9STUFUUylbRmlsZUZvcm1hdF0pOiBib29sZWFuIHtcbiAgICBjb25zdCBvdXRwdXQgPSBzZXJ2aWNlT3V0cHV0LnRvTG93ZXJDYXNlKClcbiAgICByZXR1cm4gKFxuICAgICAgZm9ybWF0LmV4dGVuc2lvbnMuc29tZSgoZXh0ZW5zaW9uOiBzdHJpbmcpID0+XG4gICAgICAgIG91dHB1dC5pbmNsdWRlcyhleHRlbnNpb24pXG4gICAgICApIHx8XG4gICAgICBmb3JtYXQubWltZVR5cGVzLnNvbWUoKG1pbWVUeXBlOiBzdHJpbmcpID0+IG91dHB1dC5pbmNsdWRlcyhtaW1lVHlwZSkpXG4gICAgKVxuICB9XG4gIGZvciAoY29uc3QgZm9ybWF0TmFtZSBpbiBGT1JNQVRTKSB7XG4gICAgaWYgKGZvcm1hdE1hdGNoZXIoRk9STUFUU1tmb3JtYXROYW1lXSkpIHtcbiAgICAgIHJldHVybiBmb3JtYXROYW1lIGFzIEZpbGVGb3JtYXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVGb3JtYXQoXG4gIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSB8IFNlcnZpY2VPbmxpbmVSZXNvdXJjZVxuKTogRmlsZUZvcm1hdCB7XG4gIGlmICgnbWltZVR5cGUnIGluIGxpbmspIHtcbiAgICBjb25zdCBtaW1lVHlwZUZvcm1hdCA9IG1pbWVUeXBlVG9Gb3JtYXQobGluay5taW1lVHlwZSlcbiAgICBpZiAobWltZVR5cGVGb3JtYXQgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBtaW1lVHlwZUZvcm1hdFxuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IGZvcm1hdCBpbiBGT1JNQVRTKSB7XG4gICAgZm9yIChjb25zdCBhbGlhcyBvZiBGT1JNQVRTW2Zvcm1hdF0uZXh0ZW5zaW9ucykge1xuICAgICAgaWYgKGNoZWNrRmlsZUZvcm1hdChsaW5rLCBhbGlhcykpIHJldHVybiBmb3JtYXQgYXMgRmlsZUZvcm1hdFxuICAgICAgaWYgKGlzRm9ybWF0SW5RdWVyeVBhcmFtKGxpbmssIGFsaWFzKSkgcmV0dXJuIGZvcm1hdCBhcyBGaWxlRm9ybWF0XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zvcm1hdEluUXVlcnlQYXJhbShcbiAgbGluazogRGF0YXNldE9ubGluZVJlc291cmNlIHwgU2VydmljZU9ubGluZVJlc291cmNlLFxuICBhbGlhczogc3RyaW5nXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcXVlcnlQYXJhbXMgPSBsaW5rLnVybC5zZWFyY2hQYXJhbXNcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgcXVlcnlQYXJhbXMuZW50cmllcygpKSB7XG4gICAgaWYgKGtleSA9PT0gJ2Zvcm1hdCcgfHwga2V5ID09PSAnZicpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gYWxpYXNcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW1lVHlwZVRvRm9ybWF0KG1pbWVUeXBlOiBzdHJpbmcpOiBGaWxlRm9ybWF0IHtcbiAgZm9yIChjb25zdCBmb3JtYXQgaW4gRk9STUFUUykge1xuICAgIGZvciAoY29uc3QgbXQgb2YgRk9STUFUU1tmb3JtYXRdLm1pbWVUeXBlcykge1xuICAgICAgaWYgKG1pbWVUeXBlID09PSBtdCkgcmV0dXJuIGZvcm1hdCBhcyBGaWxlRm9ybWF0XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0ZpbGVGb3JtYXQoXG4gIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSB8IFNlcnZpY2VPbmxpbmVSZXNvdXJjZSxcbiAgZm9ybWF0OiBGaWxlRm9ybWF0XG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAoJ25hbWUnIGluIGxpbmsgJiZcbiAgICAgIG5ldyBSZWdFeHAoYFsuL10ke2Zvcm1hdH1gLCAnaScpLnRlc3QobGluay5uYW1lLnRvTG93ZXJDYXNlKCkpKSB8fFxuICAgICgndXJsJyBpbiBsaW5rICYmXG4gICAgICBuZXcgUmVnRXhwKGBbLi9dJHtmb3JtYXR9YCwgJ2knKS50ZXN0KGxpbmsudXJsLnRvU3RyaW5nKCkpKSB8fFxuICAgICgnbmFtZScgaW4gbGluayAmJiBsaW5rLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmb3JtYXQpKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYWRnZUNvbG9yKGxpbmtGb3JtYXQ6IEZpbGVGb3JtYXQpOiBzdHJpbmcge1xuICBmb3IgKGNvbnN0IGZvcm1hdCBpbiBGT1JNQVRTKSB7XG4gICAgZm9yIChjb25zdCBhbGlhcyBvZiBGT1JNQVRTW2Zvcm1hdF0uZXh0ZW5zaW9ucykge1xuICAgICAgaWYgKG5ldyBSZWdFeHAoYCR7YWxpYXN9YCwgJ2knKS50ZXN0KGxpbmtGb3JtYXQpKVxuICAgICAgICByZXR1cm4gRk9STUFUU1tmb3JtYXRdLmNvbG9yXG4gICAgfVxuICB9XG4gIHJldHVybiAndmFyKC0tY29sb3ItZ3JheS03MDApJyAvLyBEZWZhdWx0IGNvbG9yID9cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmtJZChsaW5rOiBEYXRhc2V0T25saW5lUmVzb3VyY2UpOiBzdHJpbmcge1xuICBjb25zdCBocmVmID0gbGluay51cmwuaHJlZiA/PyBsaW5rLnVybFxuICByZXR1cm4gYCR7Z2V0TGlua0xhYmVsKGxpbmspXG4gICAgLnJlcGxhY2UoL8ODwqkvZywgJ2UnKVxuICAgIC5yZXBsYWNlKC/Dg8KoL2csICdlJylcbiAgICAubm9ybWFsaXplKCdORkQnKVxuICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyl9LSR7aHJlZn1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rTGFiZWwoXG4gIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSB8IFNlcnZpY2VPbmxpbmVSZXNvdXJjZVxuKTogc3RyaW5nIHtcbiAgbGV0IGZvcm1hdCA9ICcnXG4gIHN3aXRjaCAobGluay50eXBlKSB7XG4gICAgY2FzZSAnc2VydmljZSc6XG4gICAgICB7XG4gICAgICAgIHN3aXRjaCAobGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wpIHtcbiAgICAgICAgICBjYXNlICd3ZnMnOlxuICAgICAgICAgICAgZm9ybWF0ID0gJ1dGUydcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAnd21zJzpcbiAgICAgICAgICAgIGZvcm1hdCA9ICdXTVMnXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ3dtdHMnOlxuICAgICAgICAgICAgZm9ybWF0ID0gJ1dNVFMnXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ3Rtcyc6XG4gICAgICAgICAgICBmb3JtYXQgPSAnVE1TJ1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlICdlc3JpUmVzdCc6XG4gICAgICAgICAgICBmb3JtYXQgPSAnUkVTVCdcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIGZvcm1hdCA9IGdldEZpbGVGb3JtYXQobGluaylcbiAgfVxuICBjb25zdCBsYWJlbCA9IGxpbmsuZGVzY3JpcHRpb24gfHwgKCduYW1lJyBpbiBsaW5rID8gbGluay5uYW1lIDogJycpXG4gIHJldHVybiBmb3JtYXQgPyBgJHtsYWJlbH0gKCR7Zm9ybWF0fSlgIDogbGFiZWxcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldExheWVycyh1cmw6IHN0cmluZywgc2VydmljZVByb3RvY29sOiBTZXJ2aWNlUHJvdG9jb2wpIHtcbiAgc3dpdGNoIChzZXJ2aWNlUHJvdG9jb2wpIHtcbiAgICBjYXNlICdvZ2NGZWF0dXJlcyc6IHtcbiAgICAgIGNvbnN0IGxheWVycyA9IGF3YWl0IG5ldyBPZ2NBcGlFbmRwb2ludCh1cmwpLmFsbENvbGxlY3Rpb25zXG4gICAgICByZXR1cm4gbGF5ZXJzXG4gICAgfVxuICAgIGNhc2UgJ3dmcyc6IHtcbiAgICAgIGNvbnN0IGVuZHBvaW50V2ZzID0gYXdhaXQgbmV3IFdmc0VuZHBvaW50KHVybCkuaXNSZWFkeSgpXG4gICAgICBjb25zdCBmZWF0dXJlVHlwZXMgPSBhd2FpdCBlbmRwb2ludFdmcy5nZXRGZWF0dXJlVHlwZXMoKVxuICAgICAgY29uc3QgbGF5ZXJzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGZlYXR1cmVUeXBlcy5tYXAoYXN5bmMgKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZW5kcG9pbnRXZnMuZ2V0RmVhdHVyZVR5cGVGdWxsKGNvbGxlY3Rpb24ubmFtZSlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIHJldHVybiBsYXllcnNcbiAgICB9XG4gICAgY2FzZSAnd21zJzoge1xuICAgICAgY29uc3QgZW5kcG9pbnRXbXMgPSBhd2FpdCBuZXcgV21zRW5kcG9pbnQodXJsKS5pc1JlYWR5KClcbiAgICAgIGNvbnN0IGxheWVycyA9IChcbiAgICAgICAgYXdhaXQgZW5kcG9pbnRXbXNcbiAgICAgICAgICAuZ2V0TGF5ZXJzKClcbiAgICAgICAgICAuZmxhdE1hcCh3bXNMYXllckZsYXR0ZW4pXG4gICAgICAgICAgLmZpbHRlcigobCkgPT4gbC5uYW1lKVxuICAgICAgKS5tYXAoKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIGVuZHBvaW50V21zLmdldExheWVyQnlOYW1lKGNvbGxlY3Rpb24ubmFtZSlcbiAgICAgIH0pXG4gICAgICByZXR1cm4gbGF5ZXJzXG4gICAgfVxuICAgIGNhc2UgJ3dtdHMnOiB7XG4gICAgICBjb25zdCBlbmRwb2ludFdtdHMgPSBhd2FpdCBuZXcgV210c0VuZHBvaW50KHVybCkuaXNSZWFkeSgpXG4gICAgICByZXR1cm4gZW5kcG9pbnRXbXRzLmdldExheWVycygpXG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdtc0xheWVyRmxhdHRlbihsYXllckZ1bGwpIHtcbiAgY29uc3QgbGF5ZXIgPSB7XG4gICAgdGl0bGU6IGxheWVyRnVsbC50aXRsZSxcbiAgICBuYW1lOiBsYXllckZ1bGwubmFtZSxcbiAgICBhYnN0cmFjdDogbGF5ZXJGdWxsLmFic3RyYWN0LFxuICB9XG5cbiAgcmV0dXJuICdjaGlsZHJlbicgaW4gbGF5ZXJGdWxsICYmIEFycmF5LmlzQXJyYXkobGF5ZXJGdWxsLmNoaWxkcmVuKVxuICAgID8gW2xheWVyLCAuLi5sYXllckZ1bGwuY2hpbGRyZW4uZmxhdE1hcCh3bXNMYXllckZsYXR0ZW4pXVxuICAgIDogW2xheWVyXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWltZVR5cGVGb3JGb3JtYXQoZm9ybWF0OiBGaWxlRm9ybWF0KTogc3RyaW5nIHwgbnVsbCB7XG4gIHJldHVybiBmb3JtYXQgaW4gRk9STUFUUyA/IEZPUk1BVFNbZm9ybWF0LnRvTG93ZXJDYXNlKCldLm1pbWVUeXBlc1swXSA6IG51bGxcbn1cbiJdfQ==
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjL2xpYi9saW5rcy9saW5rLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQU1oRSxPQUFPLEVBQ0wsY0FBYyxFQUNkLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sd0JBQXdCLENBQUE7QUFFL0IsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFFN0MsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCLEdBQUcsRUFBRTtRQUNILFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNuQixRQUFRLEVBQUUsQ0FBQztRQUNYLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztLQUMzQztJQUNELEtBQUssRUFBRTtRQUNMLFVBQVUsRUFBRTtZQUNWLE9BQU87WUFDUCxNQUFNO1lBQ04sS0FBSztZQUNMLFVBQVU7WUFDViwrQkFBK0I7U0FDaEM7UUFDRCxRQUFRLEVBQUUsQ0FBQztRQUNYLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRTtZQUNULDBCQUEwQjtZQUMxQixtRUFBbUU7U0FDcEU7S0FDRjtJQUNELE9BQU8sRUFBRTtRQUNQLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN2QixRQUFRLEVBQUUsQ0FBQztRQUNYLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRSxDQUFDLHNCQUFzQixFQUFFLDBCQUEwQixDQUFDO0tBQ2hFO0lBQ0QsSUFBSSxFQUFFO1FBQ0osVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3BCLFFBQVEsRUFBRSxDQUFDO1FBQ1gsS0FBSyxFQUFFLFNBQVM7UUFDaEIsU0FBUyxFQUFFLENBQUMsa0JB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O1FBQ2pDLENBQUM7UUFDRDtZQUNFLE9BQU8sU0FBUyxDQUFBO0lBQ3BCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxTQUFTO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHO1FBQ1osS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1FBQ3RCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtRQUNwQixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7S0FDN0IsQ0FBQTtJQUVELE9BQU8sVUFBVSxJQUFJLFNBQVMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE1BQWtCO0lBQ3JELE9BQU8sTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQge1xuICBEYXRhc2V0T25saW5lUmVzb3VyY2UsXG4gIFNlcnZpY2VPbmxpbmVSZXNvdXJjZSxcbiAgU2VydmljZVByb3RvY29sLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQge1xuICBPZ2NBcGlFbmRwb2ludCxcbiAgV2ZzRW5kcG9pbnQsXG4gIFdtc0VuZHBvaW50LFxuICBXbXRzRW5kcG9pbnQsXG59IGZyb20gJ0BjYW1wdG9jYW1wL29nYy1jbGllbnQnXG5cbm1hcmtlcignZG93bmxvYWRzLndmcy5mZWF0dXJldHlwZS5ub3QuZm91bmQnKVxuXG5leHBvcnQgY29uc3QgRk9STUFUUyA9IHtcbiAgY3N2OiB7XG4gICAgZXh0ZW5zaW9uczogWydjc3YnXSxcbiAgICBwcmlvcml0eTogMSxcbiAgICBjb2xvcjogJyNGNkE5MjQnLFxuICAgIG1pbWVUeXBlczogWyd0ZXh0L2NzdicsICdhcHBsaWNhdGlvbi9jc3YnXSxcbiAgfSxcbiAgZXhjZWw6IHtcbiAgICBleHRlbnNpb25zOiBbXG4gICAgICAnZXhjZWwnLFxuICAgICAgJ3hsc3gnLFxuICAgICAgJ3hscycsXG4gICAgICAnbXMtZXhjZWwnLFxuICAgICAgJ29wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50JyxcbiAgICBdLFxuICAgIHByaW9yaXR5OiAyLFxuICAgIGNvbG9yOiAnI0ZGREUxMCcsXG4gICAgbWltZVR5cGVzOiBbXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyxcbiAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gICAgXSxcbiAgfSxcbiAgZ2VvanNvbjoge1xuICAgIGV4dGVuc2lvbnM6IFsnZ2VvanNvbiddLFxuICAgIHByaW9yaXR5OiAzLFxuICAgIGNvbG9yOiAnIzI5M0M2RicsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL2dlbytqc29uJywgJ2FwcGxpY2F0aW9uL3ZuZC5nZW8ranNvbiddLFxuICB9LFxuICBqc29uOiB7XG4gICAgZXh0ZW5zaW9uczogWydqc29uJ10sXG4gICAgcHJpb3JpdHk6IDMsXG4gICAgY29sb3I6ICcjODREMEYwJyxcbiAgICBtaW1lVHlwZXM6IFsnYXBwbGljYXRpb24vanNvbiddLFxuICB9LFxuICBzaHA6IHtcbiAgICBleHRlbnNpb25zOiBbJ3NocCcsICdzaGFwZScsICd6aXBwZWQtc2hhcGVmaWxlJ10sXG4gICAgcHJpb3JpdHk6IDQsXG4gICAgY29sb3I6ICcjMDA5MDM2JyxcbiAgICBtaW1lVHlwZXM6IFsneC1naXMveC1zaGFwZWZpbGUnXSxcbiAgfSxcbiAgZ21sOiB7XG4gICAgZXh0ZW5zaW9uczogWydnbWwnXSxcbiAgICBwcmlvcml0eTogNSxcbiAgICBjb2xvcjogJyNFNzUxMTMnLFxuICAgIG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi9nbWwreG1sJywgJ3RleHQveG1sOyBzdWJ0eXBlPWdtbCddLFxuICB9LFxuICBrbWw6IHtcbiAgICBleHRlbnNpb25zOiBbJ2ttbCcsICdrbXonXSxcbiAgICBwcmlvcml0eTogNixcbiAgICBjb2xvcjogJyNGNEI1RDAnLFxuICAgIG1pbWVUeXBlczogW1xuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua21sK3htbCcsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbXonLFxuICAgIF0sXG4gIH0sXG4gIGdwa2c6IHtcbiAgICBleHRlbnNpb25zOiBbJ2dwa2cnLCAnZ2VvcGFja2FnZSddLFxuICAgIHByaW9yaXR5OiA3LFxuICAgIGNvbG9yOiAnIzdENUQ5RicsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL2dlb3BhY2thZ2Urc3FsaXRlMyddLFxuICB9LFxuICB6aXA6IHtcbiAgICBleHRlbnNpb25zOiBbJ3ppcCcsICd0YXIuZ3onLCAnZ3onLCAnN3onLCAnN3ppcCddLFxuICAgIHByaW9yaXR5OiA4LFxuICAgIGNvbG9yOiAnI0IwQ0I1MicsXG4gICAgbWltZVR5cGVzOiBbXG4gICAgICAnYXBwbGljYXRpb24vemlwJyxcbiAgICAgICdhcHBsaWNhdGlvbi94LXppcCcsXG4gICAgICAnYXBwbGljYXRpb24veC1jb21wcmVzc2VkJyxcbiAgICAgICdhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWQnLFxuICAgICAgJ2FwcGxpY2F0aW9uL2d6aXAnLFxuICAgICAgJ2FwcGxpY2F0aW9uL3gtZ3ppcCcsXG4gICAgXSxcbiAgfSxcbiAgcGRmOiB7XG4gICAgZXh0ZW5zaW9uczogWydwZGYnXSxcbiAgICBwcmlvcml0eTogOSxcbiAgICBjb2xvcjogJyM0OTU3OUUnLFxuICAgIG1pbWVUeXBlczogWydhcHBsaWNhdGlvbi9wZGYnXSxcbiAgfSxcbiAganBnOiB7XG4gICAgZXh0ZW5zaW9uczogWydqcGcnLCAnanBlZycsICdqZmlmJywgJ3BqcGVnJywgJ3BqcCddLFxuICAgIHByaW9yaXR5OiA5LFxuICAgIGNvbG9yOiAnI0M0QTk4RicsXG4gICAgbWltZVR5cGVzOiBbJ2ltYWdlL2pwZyddLFxuICB9LFxuICBwbmc6IHtcbiAgICBleHRlbnNpb25zOiBbJ3BuZyddLFxuICAgIHByaW9yaXR5OiAxMCxcbiAgICBjb2xvcjogJyM4QjVBM0MnLFxuICAgIG1pbWVUeXBlczogWydpbWFnZS9wbmcnXSxcbiAgfSxcbiAgdGlmZjoge1xuICAgIGV4dGVuc2lvbnM6IFsndGlmZicsICd0aWYnLCAnZ2VvdGlmZicsICdnZW90aWYnXSxcbiAgICBwcmlvcml0eTogMTEsXG4gICAgY29sb3I6ICcjNkI0NDIzJyxcbiAgICBtaW1lVHlwZXM6IFsnaW1hZ2UvdGlmZiddLFxuICB9LFxuICBzdmc6IHtcbiAgICBleHRlbnNpb25zOiBbJ3N2ZyddLFxuICAgIHByaW9yaXR5OiAxMixcbiAgICBjb2xvcjogJyNFQjZEODInLFxuICAgIG1pbWVUeXBlczogWydpbWFnZS9zdmcreG1sJ10sXG4gIH0sXG4gIGR4Zjoge1xuICAgIGV4dGVuc2lvbnM6IFsnZHhmJ10sXG4gICAgcHJpb3JpdHk6IDEzLFxuICAgIGNvbG9yOiAnI0RDQ0QwMCcsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL3gtZHhmJywgJ2ltYWdlL3gtZHhmJ10sXG4gIH0sXG4gIGh0bWw6IHtcbiAgICBleHRlbnNpb25zOiBbJ2h0bWwnLCAnaHRtJ10sXG4gICAgcHJpb3JpdHk6IDE0LFxuICAgIGNvbG9yOiAnI0MwQzlCNicsXG4gICAgbWltZVR5cGVzOiBbJ3RleHQvaHRtbCddLFxuICB9LFxuICBmZ2I6IHtcbiAgICBleHRlbnNpb25zOiBbJ2ZnYicsICdmbGF0Z2VvYnVmJ10sXG4gICAgcHJpb3JpdHk6IDE1LFxuICAgIGNvbG9yOiAnI0E4MTExQycsXG4gICAgbWltZVR5cGVzOiBbJ2FwcGxpY2F0aW9uL2ZsYXRnZW9idWYnXSxcbiAgfSxcbiAganNvbmZnOiB7XG4gICAgZXh0ZW5zaW9uczogWydqc29uZmcnLCAnanNvbmZnYyddLFxuICAgIHByaW9yaXR5OiAxNixcbiAgICBjb2xvcjogJyMwMDlFRTAnLFxuICAgIG1pbWVUeXBlczogW1xuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vZ2MuZmcranNvbicsXG4gICAgICAnYXBwbGljYXRpb24vdm5kLm9nYy5mZytqc29uO2NvbXBhdGliaWxpdHk9Z2VvanNvbicsXG4gICAgXSxcbiAgfSxcbiAgd2VicDoge1xuICAgIGV4dGVuc2lvbnM6IFsnd2VicCddLFxuICAgIHByaW9yaXR5OiAxNyxcbiAgICBjb2xvcjogJyM1QTlFNkYnLFxuICAgIG1pbWVUeXBlczogWydpbWFnZS93ZWJwJ10sXG4gIH0sXG59IGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIEZpbGVGb3JtYXQgPSBrZXlvZiB0eXBlb2YgRk9STUFUU1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0UHJpb3JpdHkobGlua0Zvcm1hdDogRmlsZUZvcm1hdCk6IG51bWJlciB7XG4gIGZvciAoY29uc3QgZm9ybWF0IGluIEZPUk1BVFMpIHtcbiAgICBmb3IgKGNvbnN0IGV4dCBvZiBGT1JNQVRTW2Zvcm1hdF0uZXh0ZW5zaW9ucykge1xuICAgICAgaWYgKG5ldyBSZWdFeHAoYCR7ZXh0fWAsICdpJykudGVzdChsaW5rRm9ybWF0KSkge1xuICAgICAgICBpZiAoRk9STUFUU1tmb3JtYXRdLnByaW9yaXR5ID09PSAwKSByZXR1cm4gMFxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoRk9STUFUUykubGVuZ3RoIC0gRk9STUFUU1tmb3JtYXRdLnByaW9yaXR5XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiAwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rUHJpb3JpdHkoXG4gIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSB8IFNlcnZpY2VPbmxpbmVSZXNvdXJjZVxuKTogbnVtYmVyIHtcbiAgcmV0dXJuIGdldEZvcm1hdFByaW9yaXR5KGdldEZpbGVGb3JtYXQobGluaykpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlRm9ybWF0RnJvbVNlcnZpY2VPdXRwdXQoXG4gIHNlcnZpY2VPdXRwdXQ6IHN0cmluZ1xuKTogRmlsZUZvcm1hdCB8IG51bGwge1xuICBmdW5jdGlvbiBmb3JtYXRNYXRjaGVyKGZvcm1hdDogKHR5cGVvZiBGT1JNQVRTKVtGaWxlRm9ybWF0XSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG91dHB1dCA9IHNlcnZpY2VPdXRwdXQudG9Mb3dlckNhc2UoKVxuICAgIHJldHVybiAoXG4gICAgICBmb3JtYXQuZXh0ZW5zaW9ucy5zb21lKChleHRlbnNpb246IHN0cmluZykgPT5cbiAgICAgICAgb3V0cHV0LmluY2x1ZGVzKGV4dGVuc2lvbilcbiAgICAgICkgfHxcbiAgICAgIGZvcm1hdC5taW1lVHlwZXMuc29tZSgobWltZVR5cGU6IHN0cmluZykgPT4gb3V0cHV0LmluY2x1ZGVzKG1pbWVUeXBlKSlcbiAgICApXG4gIH1cbiAgZm9yIChjb25zdCBmb3JtYXROYW1lIGluIEZPUk1BVFMpIHtcbiAgICBpZiAoZm9ybWF0TWF0Y2hlcihGT1JNQVRTW2Zvcm1hdE5hbWVdKSkge1xuICAgICAgcmV0dXJuIGZvcm1hdE5hbWUgYXMgRmlsZUZvcm1hdFxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZUZvcm1hdChcbiAgbGluazogRGF0YXNldE9ubGluZVJlc291cmNlIHwgU2VydmljZU9ubGluZVJlc291cmNlXG4pOiBGaWxlRm9ybWF0IHtcbiAgaWYgKCdtaW1lVHlwZScgaW4gbGluaykge1xuICAgIGNvbnN0IG1pbWVUeXBlRm9ybWF0ID0gbWltZVR5cGVUb0Zvcm1hdChsaW5rLm1pbWVUeXBlKVxuICAgIGlmIChtaW1lVHlwZUZvcm1hdCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG1pbWVUeXBlRm9ybWF0XG4gICAgfVxuICB9XG4gIGZvciAoY29uc3QgZm9ybWF0IGluIEZPUk1BVFMpIHtcbiAgICBmb3IgKGNvbnN0IGFsaWFzIG9mIEZPUk1BVFNbZm9ybWF0XS5leHRlbnNpb25zKSB7XG4gICAgICBpZiAoY2hlY2tGaWxlRm9ybWF0KGxpbmssIGFsaWFzKSkgcmV0dXJuIGZvcm1hdCBhcyBGaWxlRm9ybWF0XG4gICAgICBpZiAoaXNGb3JtYXRJblF1ZXJ5UGFyYW0obGluaywgYWxpYXMpKSByZXR1cm4gZm9ybWF0IGFzIEZpbGVGb3JtYXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRm9ybWF0SW5RdWVyeVBhcmFtKFxuICBsaW5rOiBEYXRhc2V0T25saW5lUmVzb3VyY2UgfCBTZXJ2aWNlT25saW5lUmVzb3VyY2UsXG4gIGFsaWFzOiBzdHJpbmdcbik6IGJvb2xlYW4ge1xuICBjb25zdCBxdWVyeVBhcmFtcyA9IGxpbmsudXJsLnNlYXJjaFBhcmFtc1xuICBpZiAoIXF1ZXJ5UGFyYW1zKSByZXR1cm4gZmFsc2VcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgcXVlcnlQYXJhbXMuZW50cmllcygpKSB7XG4gICAgaWYgKGtleSA9PT0gJ2Zvcm1hdCcgfHwga2V5ID09PSAnZicpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gYWxpYXNcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW1lVHlwZVRvRm9ybWF0KG1pbWVUeXBlOiBzdHJpbmcpOiBGaWxlRm9ybWF0IHtcbiAgZm9yIChjb25zdCBmb3JtYXQgaW4gRk9STUFUUykge1xuICAgIGZvciAoY29uc3QgbXQgb2YgRk9STUFUU1tmb3JtYXRdLm1pbWVUeXBlcykge1xuICAgICAgaWYgKG1pbWVUeXBlID09PSBtdCkgcmV0dXJuIGZvcm1hdCBhcyBGaWxlRm9ybWF0XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0ZpbGVGb3JtYXQoXG4gIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSB8IFNlcnZpY2VPbmxpbmVSZXNvdXJjZSxcbiAgZm9ybWF0OiBGaWxlRm9ybWF0XG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAoJ25hbWUnIGluIGxpbmsgJiZcbiAgICAgIG5ldyBSZWdFeHAoYFsuL10ke2Zvcm1hdH1gLCAnaScpLnRlc3QobGluay5uYW1lLnRvTG93ZXJDYXNlKCkpKSB8fFxuICAgICgndXJsJyBpbiBsaW5rICYmXG4gICAgICBuZXcgUmVnRXhwKGBbLi9dJHtmb3JtYXR9YCwgJ2knKS50ZXN0KGxpbmsudXJsLnRvU3RyaW5nKCkpKSB8fFxuICAgICgnbmFtZScgaW4gbGluayAmJiBsaW5rLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmb3JtYXQpKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYWRnZUNvbG9yKGxpbmtGb3JtYXQ6IEZpbGVGb3JtYXQpOiBzdHJpbmcge1xuICBmb3IgKGNvbnN0IGZvcm1hdCBpbiBGT1JNQVRTKSB7XG4gICAgZm9yIChjb25zdCBhbGlhcyBvZiBGT1JNQVRTW2Zvcm1hdF0uZXh0ZW5zaW9ucykge1xuICAgICAgaWYgKG5ldyBSZWdFeHAoYCR7YWxpYXN9YCwgJ2knKS50ZXN0KGxpbmtGb3JtYXQpKVxuICAgICAgICByZXR1cm4gRk9STUFUU1tmb3JtYXRdLmNvbG9yXG4gICAgfVxuICB9XG4gIHJldHVybiAndmFyKC0tY29sb3ItZ3JheS03MDApJyAvLyBEZWZhdWx0IGNvbG9yID9cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmtJZChsaW5rOiBEYXRhc2V0T25saW5lUmVzb3VyY2UpOiBzdHJpbmcge1xuICBjb25zdCBocmVmID0gbGluay51cmwuaHJlZiA/PyBsaW5rLnVybFxuICByZXR1cm4gYCR7Z2V0TGlua0xhYmVsKGxpbmspXG4gICAgLnJlcGxhY2UoL8ODwqkvZywgJ2UnKVxuICAgIC5yZXBsYWNlKC/Dg8KoL2csICdlJylcbiAgICAubm9ybWFsaXplKCdORkQnKVxuICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyl9LSR7aHJlZn1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rTGFiZWwoXG4gIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSB8IFNlcnZpY2VPbmxpbmVSZXNvdXJjZVxuKTogc3RyaW5nIHtcbiAgbGV0IGZvcm1hdCA9ICcnXG4gIHN3aXRjaCAobGluay50eXBlKSB7XG4gICAgY2FzZSAnc2VydmljZSc6XG4gICAgICB7XG4gICAgICAgIHN3aXRjaCAobGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wpIHtcbiAgICAgICAgICBjYXNlICd3ZnMnOlxuICAgICAgICAgICAgZm9ybWF0ID0gJ1dGUydcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAnd21zJzpcbiAgICAgICAgICAgIGZvcm1hdCA9ICdXTVMnXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ3dtdHMnOlxuICAgICAgICAgICAgZm9ybWF0ID0gJ1dNVFMnXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ3Rtcyc6XG4gICAgICAgICAgICBmb3JtYXQgPSAnVE1TJ1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlICdlc3JpUmVzdCc6XG4gICAgICAgICAgICBmb3JtYXQgPSAnUkVTVCdcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIGZvcm1hdCA9IGdldEZpbGVGb3JtYXQobGluaylcbiAgfVxuICBjb25zdCBsYWJlbCA9IGxpbmsuZGVzY3JpcHRpb24gfHwgKCduYW1lJyBpbiBsaW5rID8gbGluay5uYW1lIDogJycpXG4gIHJldHVybiBmb3JtYXQgPyBgJHtsYWJlbH0gKCR7Zm9ybWF0fSlgIDogbGFiZWxcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldExheWVycyh1cmw6IHN0cmluZywgc2VydmljZVByb3RvY29sOiBTZXJ2aWNlUHJvdG9jb2wpIHtcbiAgc3dpdGNoIChzZXJ2aWNlUHJvdG9jb2wpIHtcbiAgICBjYXNlICdvZ2NGZWF0dXJlcyc6IHtcbiAgICAgIGNvbnN0IGxheWVycyA9IGF3YWl0IG5ldyBPZ2NBcGlFbmRwb2ludCh1cmwpLmFsbENvbGxlY3Rpb25zXG4gICAgICByZXR1cm4gbGF5ZXJzXG4gICAgfVxuICAgIGNhc2UgJ3dmcyc6IHtcbiAgICAgIGNvbnN0IGVuZHBvaW50V2ZzID0gYXdhaXQgbmV3IFdmc0VuZHBvaW50KHVybCkuaXNSZWFkeSgpXG4gICAgICBjb25zdCBmZWF0dXJlVHlwZXMgPSBhd2FpdCBlbmRwb2ludFdmcy5nZXRGZWF0dXJlVHlwZXMoKVxuICAgICAgY29uc3QgbGF5ZXJzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGZlYXR1cmVUeXBlcy5tYXAoYXN5bmMgKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZW5kcG9pbnRXZnMuZ2V0RmVhdHVyZVR5cGVGdWxsKGNvbGxlY3Rpb24ubmFtZSlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIHJldHVybiBsYXllcnNcbiAgICB9XG4gICAgY2FzZSAnd21zJzoge1xuICAgICAgY29uc3QgZW5kcG9pbnRXbXMgPSBhd2FpdCBuZXcgV21zRW5kcG9pbnQodXJsKS5pc1JlYWR5KClcbiAgICAgIGNvbnN0IGxheWVycyA9IChcbiAgICAgICAgYXdhaXQgZW5kcG9pbnRXbXNcbiAgICAgICAgICAuZ2V0TGF5ZXJzKClcbiAgICAgICAgICAuZmxhdE1hcCh3bXNMYXllckZsYXR0ZW4pXG4gICAgICAgICAgLmZpbHRlcigobCkgPT4gbC5uYW1lKVxuICAgICAgKS5tYXAoKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIGVuZHBvaW50V21zLmdldExheWVyQnlOYW1lKGNvbGxlY3Rpb24ubmFtZSlcbiAgICAgIH0pXG4gICAgICByZXR1cm4gbGF5ZXJzXG4gICAgfVxuICAgIGNhc2UgJ3dtdHMnOiB7XG4gICAgICBjb25zdCBlbmRwb2ludFdtdHMgPSBhd2FpdCBuZXcgV210c0VuZHBvaW50KHVybCkuaXNSZWFkeSgpXG4gICAgICByZXR1cm4gZW5kcG9pbnRXbXRzLmdldExheWVycygpXG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdtc0xheWVyRmxhdHRlbihsYXllckZ1bGwpIHtcbiAgY29uc3QgbGF5ZXIgPSB7XG4gICAgdGl0bGU6IGxheWVyRnVsbC50aXRsZSxcbiAgICBuYW1lOiBsYXllckZ1bGwubmFtZSxcbiAgICBhYnN0cmFjdDogbGF5ZXJGdWxsLmFic3RyYWN0LFxuICB9XG5cbiAgcmV0dXJuICdjaGlsZHJlbicgaW4gbGF5ZXJGdWxsICYmIEFycmF5LmlzQXJyYXkobGF5ZXJGdWxsLmNoaWxkcmVuKVxuICAgID8gW2xheWVyLCAuLi5sYXllckZ1bGwuY2hpbGRyZW4uZmxhdE1hcCh3bXNMYXllckZsYXR0ZW4pXVxuICAgIDogW2xheWVyXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWltZVR5cGVGb3JGb3JtYXQoZm9ybWF0OiBGaWxlRm9ybWF0KTogc3RyaW5nIHwgbnVsbCB7XG4gIHJldHVybiBmb3JtYXQgaW4gRk9STUFUUyA/IEZPUk1BVFNbZm9ybWF0LnRvTG93ZXJDYXNlKCldLm1pbWVUeXBlc1swXSA6IG51bGxcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './quality-score.util';
2
+ export * from './record.util';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9saWIvcmVjb3JkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxlQUFlLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3F1YWxpdHktc2NvcmUudXRpbCdcbmV4cG9ydCAqIGZyb20gJy4vcmVjb3JkLnV0aWwnXG4iXX0=
@@ -0,0 +1,46 @@
1
+ const ValidatorMapper = {
2
+ title: (record) => !!record?.title,
3
+ abstract: (record) => !!record?.abstract,
4
+ keywords: (record) => (record?.keywords?.length ?? 0) > 0,
5
+ legalConstraints: (record) => !!(record?.legalConstraints?.length &&
6
+ record.legalConstraints.some((c) => c?.text?.trim().length > 0)),
7
+ contacts: (record) => !!record?.contacts?.[0]?.email &&
8
+ record.contacts[0].email !== 'missing@missing.com',
9
+ updateFrequency: (record) => !!record?.updateFrequency && record.updateFrequency !== 'unknown',
10
+ topics: (record) => (record?.topics?.length ?? 0) > 0,
11
+ organisation: (record) => !!record?.contacts?.[0]?.organization?.name,
12
+ source: (record) => !!record?.extras?.sourcesIdentifiers,
13
+ };
14
+ export function getAllKeysValidator() {
15
+ return Object.keys(ValidatorMapper);
16
+ }
17
+ function getMappersFromKind(kind) {
18
+ let kindKeys = [];
19
+ const commonsKeys = [
20
+ 'title',
21
+ 'abstract',
22
+ 'keywords',
23
+ 'legalConstraints',
24
+ 'contacts',
25
+ ];
26
+ switch (kind) {
27
+ case 'reuse':
28
+ kindKeys = ['topics', 'organisation', 'source'];
29
+ break;
30
+ case 'service':
31
+ kindKeys = [];
32
+ break;
33
+ case 'dataset':
34
+ default:
35
+ kindKeys = ['updateFrequency', 'topics', 'organisation'];
36
+ }
37
+ return [...commonsKeys, ...kindKeys];
38
+ }
39
+ export function getQualityValidators(record, propsToValidate) {
40
+ const filteredProps = propsToValidate.filter((prop) => getMappersFromKind(record.kind).includes(prop));
41
+ return filteredProps.map((name) => ({
42
+ name,
43
+ validator: () => ValidatorMapper[name](record),
44
+ }));
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGl0eS1zY29yZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMvbGliL3JlY29yZC9xdWFsaXR5LXNjb3JlLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxlQUFlLEdBQXFCO0lBQ3hDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLO0lBQ2xDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRO0lBQ3hDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3pELGdCQUFnQixFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDM0IsQ0FBQyxDQUFDLENBQ0EsTUFBTSxFQUFFLGdCQUFnQixFQUFFLE1BQU07UUFDaEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQ2hFO0lBQ0gsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDbkIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLO1FBQzlCLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLHFCQUFxQjtJQUNwRCxlQUFlLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUMxQixDQUFDLENBQUMsTUFBTSxFQUFFLGVBQWUsSUFBSSxNQUFNLENBQUMsZUFBZSxLQUFLLFNBQVM7SUFDbkUsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDckQsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJO0lBQ3JFLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsa0JBQWtCO0NBQ2hELENBQUE7QUFJVixNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFnQjtJQUMxQyxJQUFJLFFBQVEsR0FBMEIsRUFBRSxDQUFBO0lBQ3hDLE1BQU0sV0FBVyxHQUEwQjtRQUN6QyxPQUFPO1FBQ1AsVUFBVTtRQUNWLFVBQVU7UUFDVixrQkFBa0I7UUFDbEIsVUFBVTtLQUNYLENBQUE7SUFFRCxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxPQUFPO1lBQ1YsUUFBUSxHQUFHLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUMvQyxNQUFLO1FBQ1AsS0FBSyxTQUFTO1lBQ1osUUFBUSxHQUFHLEVBQUUsQ0FBQTtZQUNiLE1BQUs7UUFDUCxLQUFLLFNBQVMsQ0FBQztRQUNmO1lBQ0UsUUFBUSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBQzVELENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxXQUFXLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxNQUE4QixFQUM5QixlQUFzQztJQUV0QyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDcEQsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDL0MsQ0FBQTtJQUVELE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJO1FBQ0osU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7S0FDL0MsQ0FBQyxDQUFDLENBQUE7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgUmVjb3JkS2luZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG50eXBlIFRWYWxpZGF0b3JNYXBwZXIgPSB7XG4gIFtrZXk6IHN0cmluZ106IChtZXRhZGF0YTogUGFydGlhbDxDYXRhbG9nUmVjb3JkPikgPT4gYm9vbGVhblxufVxuXG5jb25zdCBWYWxpZGF0b3JNYXBwZXI6IFRWYWxpZGF0b3JNYXBwZXIgPSB7XG4gIHRpdGxlOiAocmVjb3JkKSA9PiAhIXJlY29yZD8udGl0bGUsXG4gIGFic3RyYWN0OiAocmVjb3JkKSA9PiAhIXJlY29yZD8uYWJzdHJhY3QsXG4gIGtleXdvcmRzOiAocmVjb3JkKSA9PiAocmVjb3JkPy5rZXl3b3Jkcz8ubGVuZ3RoID8/IDApID4gMCxcbiAgbGVnYWxDb25zdHJhaW50czogKHJlY29yZCkgPT5cbiAgICAhIShcbiAgICAgIHJlY29yZD8ubGVnYWxDb25zdHJhaW50cz8ubGVuZ3RoICYmXG4gICAgICByZWNvcmQubGVnYWxDb25zdHJhaW50cy5zb21lKChjKSA9PiBjPy50ZXh0Py50cmltKCkubGVuZ3RoID4gMClcbiAgICApLFxuICBjb250YWN0czogKHJlY29yZCkgPT5cbiAgICAhIXJlY29yZD8uY29udGFjdHM/LlswXT8uZW1haWwgJiZcbiAgICByZWNvcmQuY29udGFjdHNbMF0uZW1haWwgIT09ICdtaXNzaW5nQG1pc3NpbmcuY29tJyxcbiAgdXBkYXRlRnJlcXVlbmN5OiAocmVjb3JkKSA9PlxuICAgICEhcmVjb3JkPy51cGRhdGVGcmVxdWVuY3kgJiYgcmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeSAhPT0gJ3Vua25vd24nLFxuICB0b3BpY3M6IChyZWNvcmQpID0+IChyZWNvcmQ/LnRvcGljcz8ubGVuZ3RoID8/IDApID4gMCxcbiAgb3JnYW5pc2F0aW9uOiAocmVjb3JkKSA9PiAhIXJlY29yZD8uY29udGFjdHM/LlswXT8ub3JnYW5pemF0aW9uPy5uYW1lLFxuICBzb3VyY2U6IChyZWNvcmQpID0+ICEhcmVjb3JkPy5leHRyYXM/LnNvdXJjZXNJZGVudGlmaWVycyxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgVmFsaWRhdG9yTWFwcGVyS2V5cyA9IGtleW9mIHR5cGVvZiBWYWxpZGF0b3JNYXBwZXIgJiBzdHJpbmdcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbEtleXNWYWxpZGF0b3IoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhWYWxpZGF0b3JNYXBwZXIpXG59XG5cbmZ1bmN0aW9uIGdldE1hcHBlcnNGcm9tS2luZChraW5kOiBSZWNvcmRLaW5kKSB7XG4gIGxldCBraW5kS2V5cyA9IDxWYWxpZGF0b3JNYXBwZXJLZXlzW10+W11cbiAgY29uc3QgY29tbW9uc0tleXMgPSA8VmFsaWRhdG9yTWFwcGVyS2V5c1tdPltcbiAgICAndGl0bGUnLFxuICAgICdhYnN0cmFjdCcsXG4gICAgJ2tleXdvcmRzJyxcbiAgICAnbGVnYWxDb25zdHJhaW50cycsXG4gICAgJ2NvbnRhY3RzJyxcbiAgXVxuXG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgJ3JldXNlJzpcbiAgICAgIGtpbmRLZXlzID0gWyd0b3BpY3MnLCAnb3JnYW5pc2F0aW9uJywgJ3NvdXJjZSddXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAga2luZEtleXMgPSBbXVxuICAgICAgYnJlYWtcbiAgICBjYXNlICdkYXRhc2V0JzpcbiAgICBkZWZhdWx0OlxuICAgICAga2luZEtleXMgPSBbJ3VwZGF0ZUZyZXF1ZW5jeScsICd0b3BpY3MnLCAnb3JnYW5pc2F0aW9uJ11cbiAgfVxuXG4gIHJldHVybiBbLi4uY29tbW9uc0tleXMsIC4uLmtpbmRLZXlzXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVhbGl0eVZhbGlkYXRvcnMoXG4gIHJlY29yZDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPixcbiAgcHJvcHNUb1ZhbGlkYXRlOiBWYWxpZGF0b3JNYXBwZXJLZXlzW11cbikge1xuICBjb25zdCBmaWx0ZXJlZFByb3BzID0gcHJvcHNUb1ZhbGlkYXRlLmZpbHRlcigocHJvcCkgPT5cbiAgICBnZXRNYXBwZXJzRnJvbUtpbmQocmVjb3JkLmtpbmQpLmluY2x1ZGVzKHByb3ApXG4gIClcblxuICByZXR1cm4gZmlsdGVyZWRQcm9wcy5tYXAoKG5hbWUpID0+ICh7XG4gICAgbmFtZSxcbiAgICB2YWxpZGF0b3I6ICgpID0+IFZhbGlkYXRvck1hcHBlcltuYW1lXShyZWNvcmQpLFxuICB9KSlcbn1cbiJdfQ==
@@ -0,0 +1,56 @@
1
+ export function updateLanguages(record, defaultLanguage, otherLanguages) {
2
+ function updateFieldTranslations(target, fieldName) {
3
+ const fieldTranslations = {};
4
+ for (const lang of otherLanguages) {
5
+ const prevValue = record.defaultLanguage === lang
6
+ ? target[fieldName]
7
+ : target.translations?.[fieldName]?.[lang];
8
+ fieldTranslations[lang] = prevValue ?? '';
9
+ }
10
+ const defaultPrevValue = record.defaultLanguage === defaultLanguage
11
+ ? target[fieldName]
12
+ : target.translations?.[fieldName]?.[defaultLanguage];
13
+ return {
14
+ ...target,
15
+ [fieldName]: defaultPrevValue ?? '',
16
+ translations: {
17
+ ...target.translations,
18
+ [fieldName]: fieldTranslations,
19
+ },
20
+ };
21
+ }
22
+ function updateTranslations(target, fieldNames) {
23
+ let result = target;
24
+ for (const field of fieldNames) {
25
+ result = updateFieldTranslations(result, field);
26
+ }
27
+ return result;
28
+ }
29
+ const updatedRecord = updateTranslations(record, [
30
+ 'title',
31
+ 'abstract',
32
+ 'lineage',
33
+ ]);
34
+ updatedRecord.keywords = updatedRecord.keywords.map((k) => updateTranslations(k, ['label', 'description']));
35
+ updatedRecord.onlineResources = updatedRecord.onlineResources.map((o) => updateTranslations(o, ['name', 'description']));
36
+ updatedRecord.licenses = updatedRecord.licenses.map((l) => updateTranslations(l, ['text']));
37
+ updatedRecord.legalConstraints = updatedRecord.legalConstraints.map((c) => updateTranslations(c, ['text']));
38
+ updatedRecord.securityConstraints = updatedRecord.securityConstraints.map((c) => updateTranslations(c, ['text']));
39
+ updatedRecord.otherConstraints = updatedRecord.otherConstraints.map((c) => updateTranslations(c, ['text']));
40
+ updatedRecord.contacts = updatedRecord.contacts.map((c) => ({
41
+ ...c,
42
+ organization: updateTranslations(c.organization, ['name']),
43
+ }));
44
+ updatedRecord.contactsForResource = updatedRecord.contactsForResource.map((c) => ({
45
+ ...c,
46
+ organization: updateTranslations(c.organization, ['name']),
47
+ }));
48
+ updatedRecord.ownerOrganization = updateTranslations(updatedRecord.ownerOrganization, ['name']);
49
+ if (updatedRecord.kind === 'dataset') {
50
+ updatedRecord.spatialExtents = updatedRecord.spatialExtents.map((e) => updateTranslations(e, ['description']));
51
+ }
52
+ updatedRecord.defaultLanguage = defaultLanguage;
53
+ updatedRecord.otherLanguages = otherLanguages;
54
+ return updatedRecord;
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYy9saWIvcmVjb3JkL3JlY29yZC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCQSxNQUFNLFVBQVUsZUFBZSxDQUM3QixNQUFTLEVBQ1QsZUFBNkIsRUFDN0IsY0FBOEI7SUFFOUIsU0FBUyx1QkFBdUIsQ0FDOUIsTUFBUyxFQUNULFNBQWlCO1FBRWpCLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFBO1FBQzVCLEtBQUssTUFBTSxJQUFJLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbEMsTUFBTSxTQUFTLEdBQ2IsTUFBTSxDQUFDLGVBQWUsS0FBSyxJQUFJO2dCQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzlDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUE7UUFDM0MsQ0FBQztRQUNELE1BQU0sZ0JBQWdCLEdBQ3BCLE1BQU0sQ0FBQyxlQUFlLEtBQUssZUFBZTtZQUN4QyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNuQixDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDekQsT0FBTztZQUNMLEdBQUcsTUFBTTtZQUNULENBQUMsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLElBQUksRUFBRTtZQUNuQyxZQUFZLEVBQUU7Z0JBQ1osR0FBRyxNQUFNLENBQUMsWUFBWTtnQkFDdEIsQ0FBQyxTQUFTLENBQUMsRUFBRSxpQkFBaUI7YUFDL0I7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELFNBQVMsa0JBQWtC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QWUsQ0FBQTtJQUMvQyxhQUFhLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQTtJQUM3QyxPQUFPLGFBQWEsQ0FBQTtBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZVJlY29yZCxcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgQ29uc3RyYWludCxcbiAgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbiAgRGF0YXNldFNwYXRpYWxFeHRlbnQsXG4gIEtleXdvcmQsXG4gIExhbmd1YWdlQ29kZSxcbiAgT25saW5lTGlua1Jlc291cmNlLFxuICBPcmdhbml6YXRpb24sXG4gIFNlcnZpY2VFbmRwb2ludCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG50eXBlIFRyYW5zbGF0ZWRSZWNvcmRPYmplY3RzID1cbiAgfCBCYXNlUmVjb3JkXG4gIHwgQ29uc3RyYWludFxuICB8IEtleXdvcmRcbiAgfCBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICB8IERhdGFzZXREb3dubG9hZERpc3RyaWJ1dGlvblxuICB8IE9ubGluZUxpbmtSZXNvdXJjZVxuICB8IFNlcnZpY2VFbmRwb2ludFxuICB8IERhdGFzZXRTcGF0aWFsRXh0ZW50XG4gIHwgT3JnYW5pemF0aW9uXG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVMYW5ndWFnZXM8VCBleHRlbmRzIENhdGFsb2dSZWNvcmQ+KFxuICByZWNvcmQ6IFQsXG4gIGRlZmF1bHRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlLFxuICBvdGhlckxhbmd1YWdlczogTGFuZ3VhZ2VDb2RlW11cbik6IFQge1xuICBmdW5jdGlvbiB1cGRhdGVGaWVsZFRyYW5zbGF0aW9uczxUIGV4dGVuZHMgVHJhbnNsYXRlZFJlY29yZE9iamVjdHM+KFxuICAgIHRhcmdldDogVCxcbiAgICBmaWVsZE5hbWU6IHN0cmluZ1xuICApOiBUIHtcbiAgICBjb25zdCBmaWVsZFRyYW5zbGF0aW9ucyA9IHt9XG4gICAgZm9yIChjb25zdCBsYW5nIG9mIG90aGVyTGFuZ3VhZ2VzKSB7XG4gICAgICBjb25zdCBwcmV2VmFsdWUgPVxuICAgICAgICByZWNvcmQuZGVmYXVsdExhbmd1YWdlID09PSBsYW5nXG4gICAgICAgICAgPyB0YXJnZXRbZmllbGROYW1lXVxuICAgICAgICAgIDogdGFyZ2V0LnRyYW5zbGF0aW9ucz8uW2ZpZWxkTmFtZV0/LltsYW5nXVxuICAgICAgZmllbGRUcmFuc2xhdGlvbnNbbGFuZ10gPSBwcmV2VmFsdWUgPz8gJydcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdFByZXZWYWx1ZSA9XG4gICAgICByZWNvcmQuZGVmYXVsdExhbmd1YWdlID09PSBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgICAgPyB0YXJnZXRbZmllbGROYW1lXVxuICAgICAgICA6IHRhcmdldC50cmFuc2xhdGlvbnM/LltmaWVsZE5hbWVdPy5bZGVmYXVsdExhbmd1YWdlXVxuICAgIHJldHVybiB7XG4gICAgICAuLi50YXJnZXQsXG4gICAgICBbZmllbGROYW1lXTogZGVmYXVsdFByZXZWYWx1ZSA/PyAnJyxcbiAgICAgIHRyYW5zbGF0aW9uczoge1xuICAgICAgICAuLi50YXJnZXQudHJhbnNsYXRpb25zLFxuICAgICAgICBbZmllbGROYW1lXTogZmllbGRUcmFuc2xhdGlvbnMsXG4gICAgICB9LFxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVUcmFuc2xhdGlvbnM8VCBleHRlbmRzIFRyYW5zbGF0ZWRSZWNvcmRPYmplY3RzPihcbiAgICB0YXJnZXQ6IFQsXG4gICAgZmllbGROYW1lczogc3RyaW5nW11cbiAgKTogVCB7XG4gICAgbGV0IHJlc3VsdDogVCA9IHRhcmdldFxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGROYW1lcykge1xuICAgICAgcmVzdWx0ID0gdXBkYXRlRmllbGRUcmFuc2xhdGlvbnMocmVzdWx0LCBmaWVsZClcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgY29uc3QgdXBkYXRlZFJlY29yZCA9IHVwZGF0ZVRyYW5zbGF0aW9ucyhyZWNvcmQsIFtcbiAgICAndGl0bGUnLFxuICAgICdhYnN0cmFjdCcsXG4gICAgJ2xpbmVhZ2UnLFxuICBdKVxuICB1cGRhdGVkUmVjb3JkLmtleXdvcmRzID0gdXBkYXRlZFJlY29yZC5rZXl3b3Jkcy5tYXAoKGspID0+XG4gICAgdXBkYXRlVHJhbnNsYXRpb25zKGssIFsnbGFiZWwnLCAnZGVzY3JpcHRpb24nXSlcbiAgKVxuICB1cGRhdGVkUmVjb3JkLm9ubGluZVJlc291cmNlcyA9IHVwZGF0ZWRSZWNvcmQub25saW5lUmVzb3VyY2VzLm1hcCgobykgPT5cbiAgICB1cGRhdGVUcmFuc2xhdGlvbnMobywgWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10pXG4gIClcbiAgdXBkYXRlZFJlY29yZC5saWNlbnNlcyA9IHVwZGF0ZWRSZWNvcmQubGljZW5zZXMubWFwKChsKSA9PlxuICAgIHVwZGF0ZVRyYW5zbGF0aW9ucyhsLCBbJ3RleHQnXSlcbiAgKVxuICB1cGRhdGVkUmVjb3JkLmxlZ2FsQ29uc3RyYWludHMgPSB1cGRhdGVkUmVjb3JkLmxlZ2FsQ29uc3RyYWludHMubWFwKChjKSA9PlxuICAgIHVwZGF0ZVRyYW5zbGF0aW9ucyhjLCBbJ3RleHQnXSlcbiAgKVxuICB1cGRhdGVkUmVjb3JkLnNlY3VyaXR5Q29uc3RyYWludHMgPSB1cGRhdGVkUmVjb3JkLnNlY3VyaXR5Q29uc3RyYWludHMubWFwKFxuICAgIChjKSA9PiB1cGRhdGVUcmFuc2xhdGlvbnMoYywgWyd0ZXh0J10pXG4gIClcbiAgdXBkYXRlZFJlY29yZC5vdGhlckNvbnN0cmFpbnRzID0gdXBkYXRlZFJlY29yZC5vdGhlckNvbnN0cmFpbnRzLm1hcCgoYykgPT5cbiAgICB1cGRhdGVUcmFuc2xhdGlvbnMoYywgWyd0ZXh0J10pXG4gIClcbiAgdXBkYXRlZFJlY29yZC5jb250YWN0cyA9IHVwZGF0ZWRSZWNvcmQuY29udGFjdHMubWFwKChjKSA9PiAoe1xuICAgIC4uLmMsXG4gICAgb3JnYW5pemF0aW9uOiB1cGRhdGVUcmFuc2xhdGlvbnMoYy5vcmdhbml6YXRpb24sIFsnbmFtZSddKSxcbiAgfSkpXG4gIHVwZGF0ZWRSZWNvcmQuY29udGFjdHNGb3JSZXNvdXJjZSA9IHVwZGF0ZWRSZWNvcmQuY29udGFjdHNGb3JSZXNvdXJjZS5tYXAoXG4gICAgKGMpID0+ICh7XG4gICAgICAuLi5jLFxuICAgICAgb3JnYW5pemF0aW9uOiB1cGRhdGVUcmFuc2xhdGlvbnMoYy5vcmdhbml6YXRpb24sIFsnbmFtZSddKSxcbiAgICB9KVxuICApXG4gIHVwZGF0ZWRSZWNvcmQub3duZXJPcmdhbml6YXRpb24gPSB1cGRhdGVUcmFuc2xhdGlvbnMoXG4gICAgdXBkYXRlZFJlY29yZC5vd25lck9yZ2FuaXphdGlvbixcbiAgICBbJ25hbWUnXVxuICApXG5cbiAgaWYgKHVwZGF0ZWRSZWNvcmQua2luZCA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgdXBkYXRlZFJlY29yZC5zcGF0aWFsRXh0ZW50cyA9IHVwZGF0ZWRSZWNvcmQuc3BhdGlhbEV4dGVudHMubWFwKChlKSA9PlxuICAgICAgdXBkYXRlVHJhbnNsYXRpb25zKGUsIFsnZGVzY3JpcHRpb24nXSlcbiAgICApXG4gIH1cblxuICB1cGRhdGVkUmVjb3JkLmRlZmF1bHRMYW5ndWFnZSA9IGRlZmF1bHRMYW5ndWFnZVxuICB1cGRhdGVkUmVjb3JkLm90aGVyTGFuZ3VhZ2VzID0gb3RoZXJMYW5ndWFnZXNcbiAgcmV0dXJuIHVwZGF0ZWRSZWNvcmRcbn1cbiJdfQ==