geonetwork-ui 2.3.2 → 2.4.0-alpha.1.2ade9018

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 (1163) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +4 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/license.mjs +64 -0
  3. package/esm2022/libs/api/metadata-converter/src/lib/common/url.mjs +14 -0
  4. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +266 -0
  5. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/index.mjs +2 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.mjs +17 -0
  7. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +227 -0
  8. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.mjs +57 -0
  9. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.mjs +96 -0
  10. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.mjs +2 -0
  11. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.mjs +47 -0
  12. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +11 -1
  13. package/esm2022/libs/api/metadata-converter/src/lib/function-utils.mjs +1 -1
  14. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +2 -1
  15. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.converter.mjs +6 -5
  16. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +24 -8
  17. package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +4 -4
  18. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/index.mjs +2 -1
  19. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.mjs +2 -0
  20. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  21. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +12 -8
  22. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +27 -11
  23. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +53 -43
  24. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +104 -52
  25. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +107 -25
  26. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.mjs +31 -0
  27. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.mjs +1 -1
  28. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +151 -101
  29. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +118 -24
  30. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +4 -4
  31. package/esm2022/libs/api/repository/src/lib/gn4/auth/gravatar.service.mjs +4 -4
  32. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +4 -4
  33. package/esm2022/libs/api/repository/src/lib/gn4/favorites/favorites.service.mjs +4 -4
  34. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +156 -14
  35. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +5 -4
  36. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +6 -4
  37. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +25 -7
  38. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +118 -18
  39. package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +4 -4
  40. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +4 -4
  41. package/esm2022/libs/common/domain/src/lib/model/error/index.mjs +2 -0
  42. package/esm2022/libs/common/domain/src/lib/model/error/publication-version.error.mjs +8 -0
  43. package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +28 -1
  44. package/esm2022/libs/common/domain/src/lib/model/record/index.mjs +2 -1
  45. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  46. package/esm2022/libs/common/domain/src/lib/model/record/organization.model.mjs +1 -1
  47. package/esm2022/libs/common/domain/src/lib/model/record/translation.model.mjs +2 -0
  48. package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
  49. package/esm2022/libs/common/domain/src/lib/model/user/user.model.mjs +1 -1
  50. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  51. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  52. package/esm2022/libs/data-access/gn4/src/fixtures/site.fixtures.mjs +5 -5
  53. package/esm2022/libs/data-access/gn4/src/fixtures/ui.fixtures.mjs +3 -3
  54. package/esm2022/libs/data-access/gn4/src/openapi/api/atom.api.service.mjs +4 -4
  55. package/esm2022/libs/data-access/gn4/src/openapi/api/customstyle.api.service.mjs +4 -4
  56. package/esm2022/libs/data-access/gn4/src/openapi/api/formatters.api.service.mjs +4 -4
  57. package/esm2022/libs/data-access/gn4/src/openapi/api/groups.api.service.mjs +4 -4
  58. package/esm2022/libs/data-access/gn4/src/openapi/api/harvesters.api.service.mjs +4 -4
  59. package/esm2022/libs/data-access/gn4/src/openapi/api/identifiers.api.service.mjs +4 -4
  60. package/esm2022/libs/data-access/gn4/src/openapi/api/languages.api.service.mjs +4 -4
  61. package/esm2022/libs/data-access/gn4/src/openapi/api/links.api.service.mjs +4 -4
  62. package/esm2022/libs/data-access/gn4/src/openapi/api/logos.api.service.mjs +4 -4
  63. package/esm2022/libs/data-access/gn4/src/openapi/api/mapservers.api.service.mjs +4 -4
  64. package/esm2022/libs/data-access/gn4/src/openapi/api/mapservices.api.service.mjs +4 -4
  65. package/esm2022/libs/data-access/gn4/src/openapi/api/me.api.service.mjs +4 -4
  66. package/esm2022/libs/data-access/gn4/src/openapi/api/operations.api.service.mjs +4 -4
  67. package/esm2022/libs/data-access/gn4/src/openapi/api/pages.api.service.mjs +4 -4
  68. package/esm2022/libs/data-access/gn4/src/openapi/api/processes.api.service.mjs +4 -4
  69. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +6 -10
  70. package/esm2022/libs/data-access/gn4/src/openapi/api/regions.api.service.mjs +4 -4
  71. package/esm2022/libs/data-access/gn4/src/openapi/api/registries.api.service.mjs +4 -4
  72. package/esm2022/libs/data-access/gn4/src/openapi/api/related.api.service.mjs +4 -4
  73. package/esm2022/libs/data-access/gn4/src/openapi/api/search.api.service.mjs +4 -4
  74. package/esm2022/libs/data-access/gn4/src/openapi/api/selections.api.service.mjs +4 -4
  75. package/esm2022/libs/data-access/gn4/src/openapi/api/site.api.service.mjs +4 -4
  76. package/esm2022/libs/data-access/gn4/src/openapi/api/sources.api.service.mjs +4 -4
  77. package/esm2022/libs/data-access/gn4/src/openapi/api/standards.api.service.mjs +4 -4
  78. package/esm2022/libs/data-access/gn4/src/openapi/api/status.api.service.mjs +4 -4
  79. package/esm2022/libs/data-access/gn4/src/openapi/api/tags.api.service.mjs +4 -4
  80. package/esm2022/libs/data-access/gn4/src/openapi/api/tools.api.service.mjs +4 -4
  81. package/esm2022/libs/data-access/gn4/src/openapi/api/ui.api.service.mjs +4 -4
  82. package/esm2022/libs/data-access/gn4/src/openapi/api/userfeedback.api.service.mjs +4 -4
  83. package/esm2022/libs/data-access/gn4/src/openapi/api/users.api.service.mjs +4 -4
  84. package/esm2022/libs/data-access/gn4/src/openapi/api/usersearches.api.service.mjs +4 -4
  85. package/esm2022/libs/data-access/gn4/src/openapi/api/userselections.api.service.mjs +4 -4
  86. package/esm2022/libs/data-access/gn4/src/openapi/api.module.mjs +5 -5
  87. package/esm2022/libs/data-access/gn4/src/openapi/model/user.api.model.mjs +1 -1
  88. package/esm2022/libs/feature/auth/src/lib/feature-auth.module.mjs +5 -5
  89. package/esm2022/libs/feature/catalog/src/index.mjs +2 -1
  90. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +11 -8
  91. package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -4
  92. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +12 -12
  93. package/esm2022/libs/feature/catalog/src/lib/organization-url.token.mjs +4 -0
  94. package/esm2022/libs/feature/catalog/src/lib/records/records.service.mjs +7 -9
  95. package/esm2022/libs/feature/catalog/src/lib/site-title/site-title.component.mjs +4 -4
  96. package/esm2022/libs/feature/catalog/src/lib/source-label/source-label.component.mjs +4 -4
  97. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +4 -4
  98. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +7 -7
  99. package/esm2022/libs/feature/dataviz/src/lib/feature-dataviz.module.mjs +18 -12
  100. package/esm2022/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.mjs +4 -4
  101. package/esm2022/libs/feature/dataviz/src/lib/figure/figure.service.mjs +4 -4
  102. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +41 -51
  103. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +4 -4
  104. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +4 -4
  105. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  106. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +4 -1
  107. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +37 -8
  108. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +18 -7
  109. package/esm2022/libs/feature/editor/src/lib/+state/editor.models.mjs +1 -1
  110. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +12 -4
  111. package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +18 -6
  112. package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +17 -0
  113. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +80 -0
  114. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +95 -0
  115. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +71 -0
  116. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +72 -0
  117. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-array/form-field-array.component.mjs +4 -4
  118. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +109 -0
  119. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +147 -0
  120. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.mjs +19 -0
  121. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-file/form-field-file.component.mjs +4 -4
  122. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +50 -0
  123. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +13 -11
  124. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +79 -0
  125. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-object/form-field-object.component.mjs +4 -4
  126. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +151 -0
  127. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +191 -0
  128. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +44 -0
  129. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +104 -0
  130. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +14 -18
  131. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.mjs +11 -10
  132. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +141 -6
  133. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +78 -0
  134. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +73 -57
  135. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +53 -68
  136. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +5 -3
  137. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +15 -9
  138. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +5 -5
  139. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +11 -11
  140. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +4 -4
  141. package/esm2022/libs/feature/editor/src/lib/expressions.mjs +1 -1
  142. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +12 -9
  143. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +217 -45
  144. package/esm2022/libs/feature/editor/src/lib/models/editor-config.model.mjs +2 -0
  145. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +2 -1
  146. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +36 -45
  147. package/esm2022/libs/feature/editor/src/lib/services/wizard.service.mjs +4 -4
  148. package/esm2022/libs/feature/map/src/index.mjs +2 -9
  149. package/esm2022/libs/feature/map/src/lib/+state/map.actions.mjs +4 -7
  150. package/esm2022/libs/feature/map/src/lib/+state/map.facade.mjs +12 -18
  151. package/esm2022/libs/feature/map/src/lib/+state/map.reducer.mjs +13 -44
  152. package/esm2022/libs/feature/map/src/lib/+state/map.selectors.mjs +3 -2
  153. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +8 -8
  154. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +21 -20
  155. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +25 -16
  156. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +17 -16
  157. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +20 -15
  158. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +18 -13
  159. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +1 -2
  160. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +12 -71
  161. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +44 -30
  162. package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +4 -4
  163. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +45 -20
  164. package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +27 -0
  165. package/esm2022/libs/feature/map/src/lib/style/map-style.fixtures.mjs +3 -3
  166. package/esm2022/libs/feature/map/src/lib/style/map-style.service.mjs +4 -4
  167. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +14 -173
  168. package/esm2022/libs/feature/notifications/src/lib/feature-notifications.module.mjs +5 -5
  169. package/esm2022/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.mjs +4 -4
  170. package/esm2022/libs/feature/notifications/src/lib/notifications.service.mjs +4 -4
  171. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +4 -4
  172. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +44 -25
  173. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +15 -7
  174. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +51 -17
  175. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +22 -18
  176. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +22 -13
  177. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +41 -53
  178. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +5 -5
  179. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +7 -5
  180. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +2 -1
  181. package/esm2022/libs/feature/router/src/lib/default/container/search-router.container.directive.mjs +4 -4
  182. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  183. package/esm2022/libs/feature/router/src/lib/default/router.module.mjs +5 -5
  184. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +12 -5
  185. package/esm2022/libs/feature/router/src/lib/default/services/router-search.service.mjs +4 -4
  186. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +4 -4
  187. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +11 -4
  188. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  189. package/esm2022/libs/feature/search/src/lib/facets/facets-container/facets-container.component.mjs +4 -4
  190. package/esm2022/libs/feature/search/src/lib/facets/facets.module.mjs +5 -5
  191. package/esm2022/libs/feature/search/src/lib/facets/facets.service.mjs +4 -4
  192. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +4 -4
  193. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +11 -8
  194. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +4 -4
  195. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +6 -6
  196. package/esm2022/libs/feature/search/src/lib/records-metrics/records-metrics.component.mjs +4 -4
  197. package/esm2022/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +4 -4
  198. package/esm2022/libs/feature/search/src/lib/results-layout/results-layout.component.mjs +4 -4
  199. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +4 -4
  200. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +94 -0
  201. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +4 -4
  202. package/esm2022/libs/feature/search/src/lib/state/container/search-state.container.directive.mjs +4 -4
  203. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +4 -4
  204. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +11 -6
  205. package/esm2022/libs/feature/search/src/lib/state/selectors.mjs +4 -1
  206. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +10 -6
  207. package/esm2022/libs/feature/search/src/lib/utils/service/search.service.mjs +4 -4
  208. package/esm2022/libs/ui/catalog/src/lib/catalog-title/catalog-title.component.mjs +4 -4
  209. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
  210. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +7 -7
  211. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +9 -9
  212. package/esm2022/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.mjs +4 -4
  213. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +9 -11
  214. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +4 -4
  215. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +7 -10
  216. package/esm2022/libs/ui/dataviz/src/lib/table/table.component.mjs +4 -4
  217. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +3 -3
  218. package/esm2022/libs/ui/dataviz/src/lib/ui-dataviz.module.mjs +5 -5
  219. package/esm2022/libs/ui/elements/src/index.mjs +5 -4
  220. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +5 -5
  221. package/esm2022/libs/ui/elements/src/lib/avatar/avatar.component.mjs +4 -4
  222. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +27 -0
  223. package/esm2022/libs/ui/elements/src/lib/content-ghost/content-ghost.component.mjs +4 -4
  224. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +5 -5
  225. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +4 -4
  226. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +7 -5
  227. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +4 -4
  228. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +5 -5
  229. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +8 -7
  230. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +5 -5
  231. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +4 -4
  232. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +4 -4
  233. package/esm2022/libs/ui/elements/src/lib/metadata-info/linkify.directive.mjs +4 -4
  234. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +12 -12
  235. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +7 -13
  236. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +5 -5
  237. package/esm2022/libs/ui/elements/src/lib/notification/notification.component.mjs +5 -5
  238. package/esm2022/libs/ui/elements/src/lib/pagination/pagination.component.mjs +4 -4
  239. package/esm2022/libs/ui/elements/src/lib/pagination-buttons/pagination-buttons.component.mjs +4 -4
  240. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +7 -7
  241. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +26 -7
  242. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +4 -4
  243. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +22 -15
  244. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +4 -4
  245. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +4 -4
  246. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +5 -5
  247. package/esm2022/libs/ui/inputs/src/index.mjs +7 -1
  248. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +81 -31
  249. package/esm2022/libs/ui/inputs/src/lib/badge/badge.component.mjs +30 -0
  250. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +11 -4
  251. package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +4 -4
  252. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +4 -4
  253. package/esm2022/libs/ui/inputs/src/lib/chips-input/chips-input.component.mjs +4 -4
  254. package/esm2022/libs/ui/inputs/src/lib/copy-text-button/copy-text-button.component.mjs +4 -4
  255. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +14 -7
  256. package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +25 -13
  257. package/esm2022/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.mjs +4 -4
  258. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +4 -4
  259. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +4 -4
  260. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +28 -26
  261. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +87 -0
  262. package/esm2022/libs/ui/inputs/src/lib/files-drop/files-drop.directive.mjs +4 -4
  263. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +21 -17
  264. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +4 -4
  265. package/esm2022/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +4 -4
  266. package/esm2022/libs/ui/inputs/src/lib/search-input/search-input.component.mjs +8 -6
  267. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +4 -4
  268. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +34 -0
  269. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +9 -23
  270. package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +8 -19
  271. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +16 -24
  272. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +59 -0
  273. package/esm2022/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.mjs +4 -4
  274. package/esm2022/libs/ui/layout/src/index.mjs +4 -1
  275. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +4 -4
  276. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +4 -4
  277. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +4 -4
  278. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +4 -4
  279. package/esm2022/libs/ui/layout/src/lib/expandable-panel-button/expandable-panel-button.component.mjs +4 -4
  280. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +7 -5
  281. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +4 -4
  282. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +5 -5
  283. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +71 -0
  284. package/esm2022/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.mjs +29 -0
  285. package/esm2022/libs/ui/layout/src/lib/sortable-list/sortable-list.component.mjs +43 -0
  286. package/esm2022/libs/ui/layout/src/lib/sticky-header/sticky-header.component.mjs +4 -4
  287. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +5 -5
  288. package/esm2022/libs/ui/map/src/index.mjs +4 -3
  289. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +10 -8
  290. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +137 -0
  291. package/esm2022/libs/ui/map/src/lib/components/map-container/map-settings.token.mjs +13 -0
  292. package/esm2022/libs/ui/map/src/lib/map-utils.mjs +37 -0
  293. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  294. package/esm2022/libs/ui/search/src/lib/facets/facet-block/facet-block.component.mjs +7 -7
  295. package/esm2022/libs/ui/search/src/lib/facets/facet-item/facet-item.component.mjs +7 -7
  296. package/esm2022/libs/ui/search/src/lib/facets/facet-list/facet-list.component.mjs +4 -4
  297. package/esm2022/libs/ui/search/src/lib/facets/facets.module.mjs +5 -5
  298. package/esm2022/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.mjs +7 -7
  299. package/esm2022/libs/ui/search/src/lib/record-metric/record-metric.component.mjs +4 -4
  300. package/esm2022/libs/ui/search/src/lib/record-preview/record-preview.component.mjs +4 -4
  301. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +4 -4
  302. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +4 -4
  303. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +4 -4
  304. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -4
  305. package/esm2022/libs/ui/search/src/lib/record-preview-text/record-preview-text.component.mjs +4 -4
  306. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +4 -4
  307. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +4 -4
  308. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +4 -4
  309. package/esm2022/libs/ui/search/src/lib/results-list-item/results-list-item.component.mjs +4 -4
  310. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +67 -0
  311. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +140 -0
  312. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +5 -5
  313. package/esm2022/libs/ui/widgets/src/index.mjs +2 -2
  314. package/esm2022/libs/ui/widgets/src/lib/color-scale/color-scale.component.mjs +4 -4
  315. package/esm2022/libs/ui/widgets/src/lib/loading-mask/loading-mask.component.mjs +4 -4
  316. package/esm2022/libs/ui/widgets/src/lib/popover/popover.component.mjs +68 -0
  317. package/esm2022/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.mjs +7 -5
  318. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +4 -4
  319. package/esm2022/libs/ui/widgets/src/lib/spinning-loader/spinning-loader.component.mjs +4 -4
  320. package/esm2022/libs/ui/widgets/src/lib/step-bar/step-bar.component.mjs +4 -4
  321. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +5 -15
  322. package/esm2022/libs/util/app-config/src/index.mjs +2 -1
  323. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +10 -10
  324. package/esm2022/libs/util/app-config/src/lib/map-layers.mjs +27 -0
  325. package/esm2022/libs/util/i18n/src/index.mjs +2 -1
  326. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +1 -38
  327. package/esm2022/libs/util/i18n/src/lib/i18n.interceptor.mjs +4 -4
  328. package/esm2022/libs/util/i18n/src/lib/lang.service.mjs +5 -5
  329. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +40 -0
  330. package/esm2022/libs/util/i18n/src/lib/util-i18n.module.mjs +5 -5
  331. package/esm2022/libs/util/shared/src/lib/image-fallback.directive.mjs +4 -4
  332. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +4 -4
  333. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +1 -1
  334. package/esm2022/libs/util/shared/src/lib/services/log.service.mjs +4 -4
  335. package/esm2022/libs/util/shared/src/lib/services/proxy.service.mjs +4 -4
  336. package/esm2022/libs/util/shared/src/lib/services/theme.service.mjs +5 -4
  337. package/esm2022/libs/util/shared/src/lib/util-shared.module.mjs +5 -5
  338. package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -1
  339. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  340. package/esm2022/libs/util/shared/src/lib/utils/no-duplicate-file-name.mjs +19 -0
  341. package/esm2022/translations/de.json +180 -33
  342. package/esm2022/translations/en.json +188 -41
  343. package/esm2022/translations/es.json +158 -11
  344. package/esm2022/translations/fr.json +218 -71
  345. package/esm2022/translations/it.json +161 -14
  346. package/esm2022/translations/nl.json +158 -11
  347. package/esm2022/translations/pt.json +158 -11
  348. package/fesm2022/geonetwork-ui.mjs +9507 -5391
  349. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  350. package/libs/api/metadata-converter/src/index.d.ts +3 -0
  351. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  352. package/libs/api/metadata-converter/src/lib/common/license.d.ts +3 -0
  353. package/libs/api/metadata-converter/src/lib/common/license.d.ts.map +1 -0
  354. package/libs/api/metadata-converter/src/lib/common/url.d.ts +7 -0
  355. package/libs/api/metadata-converter/src/lib/common/url.d.ts.map +1 -0
  356. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts +13 -0
  357. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -0
  358. package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts +2 -0
  359. package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts.map +1 -0
  360. package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts +16 -0
  361. package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts.map +1 -0
  362. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts +21 -0
  363. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts.map +1 -0
  364. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts +15 -0
  365. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts.map +1 -0
  366. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts +8 -0
  367. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts.map +1 -0
  368. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts +2 -0
  369. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts.map +1 -0
  370. package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts +6 -0
  371. package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts.map +1 -0
  372. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -1
  373. package/libs/api/metadata-converter/src/lib/function-utils.d.ts +1 -1
  374. package/libs/api/metadata-converter/src/lib/function-utils.d.ts.map +1 -1
  375. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  376. package/libs/api/metadata-converter/src/lib/gn4/gn4.converter.d.ts.map +1 -1
  377. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +3 -3
  378. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  379. package/libs/api/metadata-converter/src/lib/gn4/types/index.d.ts +1 -0
  380. package/libs/api/metadata-converter/src/lib/gn4/types/index.d.ts.map +1 -1
  381. package/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.d.ts +27 -0
  382. package/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.d.ts.map +1 -0
  383. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +1 -0
  384. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  385. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
  386. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +6 -4
  387. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  388. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +5 -4
  389. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  390. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +3 -2
  391. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  392. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +23 -9
  393. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  394. package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts +5 -0
  395. package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts.map +1 -0
  396. package/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.d.ts +1 -1
  397. package/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.d.ts.map +1 -1
  398. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +20 -15
  399. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  400. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +104 -2
  401. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  402. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +35 -8
  403. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  404. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  405. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  406. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +3 -3
  407. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  408. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +20 -8
  409. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  410. package/libs/common/domain/src/lib/model/error/index.d.ts +2 -0
  411. package/libs/common/domain/src/lib/model/error/index.d.ts.map +1 -0
  412. package/libs/common/domain/src/lib/model/error/publication-version.error.d.ts +5 -0
  413. package/libs/common/domain/src/lib/model/error/publication-version.error.d.ts.map +1 -0
  414. package/libs/common/domain/src/lib/model/record/contact.model.d.ts +2 -1
  415. package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
  416. package/libs/common/domain/src/lib/model/record/index.d.ts +1 -0
  417. package/libs/common/domain/src/lib/model/record/index.d.ts.map +1 -1
  418. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +24 -16
  419. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  420. package/libs/common/domain/src/lib/model/record/organization.model.d.ts +3 -0
  421. package/libs/common/domain/src/lib/model/record/organization.model.d.ts.map +1 -1
  422. package/libs/common/domain/src/lib/model/record/translation.model.d.ts +26 -0
  423. package/libs/common/domain/src/lib/model/record/translation.model.d.ts.map +1 -0
  424. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +12 -5
  425. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
  426. package/libs/common/domain/src/lib/model/user/user.model.d.ts +1 -1
  427. package/libs/common/domain/src/lib/model/user/user.model.d.ts.map +1 -1
  428. package/libs/common/domain/src/lib/platform.service.interface.d.ts +20 -3
  429. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  430. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +51 -1
  431. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  432. package/libs/data-access/gn4/src/fixtures/site.fixtures.d.ts +2 -2
  433. package/libs/data-access/gn4/src/fixtures/site.fixtures.d.ts.map +1 -1
  434. package/libs/data-access/gn4/src/fixtures/ui.fixtures.d.ts +1 -1
  435. package/libs/data-access/gn4/src/fixtures/ui.fixtures.d.ts.map +1 -1
  436. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts +6 -6
  437. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  438. package/libs/data-access/gn4/src/openapi/model/user.api.model.d.ts +1 -1
  439. package/libs/feature/catalog/src/index.d.ts +1 -0
  440. package/libs/feature/catalog/src/index.d.ts.map +1 -1
  441. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +2 -1
  442. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  443. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  444. package/libs/feature/catalog/src/lib/organization-url.token.d.ts +3 -0
  445. package/libs/feature/catalog/src/lib/organization-url.token.d.ts.map +1 -0
  446. package/libs/feature/catalog/src/lib/records/records.service.d.ts.map +1 -1
  447. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -2
  448. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  449. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts +10 -8
  450. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts.map +1 -1
  451. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +13 -20
  452. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  453. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +6 -6
  454. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  455. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +3 -3
  456. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  457. package/libs/feature/editor/src/index.d.ts +1 -0
  458. package/libs/feature/editor/src/index.d.ts.map +1 -1
  459. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +11 -0
  460. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  461. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +13 -1
  462. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  463. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +14 -11
  464. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  465. package/libs/feature/editor/src/lib/+state/editor.models.d.ts +9 -1
  466. package/libs/feature/editor/src/lib/+state/editor.models.d.ts.map +1 -1
  467. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +13 -2
  468. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  469. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +7 -9
  470. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  471. package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts +8 -0
  472. package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts.map +1 -0
  473. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts +33 -0
  474. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -0
  475. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts +34 -0
  476. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -0
  477. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts +15 -0
  478. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -0
  479. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +16 -0
  480. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -0
  481. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts +38 -0
  482. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -0
  483. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +41 -0
  484. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -0
  485. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.d.ts +9 -0
  486. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.d.ts.map +1 -0
  487. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts +17 -0
  488. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -0
  489. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +6 -4
  490. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -1
  491. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +15 -0
  492. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +1 -0
  493. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +35 -0
  494. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -0
  495. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +44 -0
  496. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -0
  497. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +15 -0
  498. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts.map +1 -0
  499. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +31 -0
  500. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -0
  501. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts +4 -6
  502. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
  503. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.d.ts +4 -3
  504. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.d.ts.map +1 -1
  505. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts +28 -0
  506. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  507. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts +25 -0
  508. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -0
  509. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +9 -9
  510. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -1
  511. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +19 -25
  512. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  513. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +4 -2
  514. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  515. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts +7 -7
  516. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
  517. package/libs/feature/editor/src/lib/expressions.d.ts +1 -1
  518. package/libs/feature/editor/src/lib/expressions.d.ts.map +1 -1
  519. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +2 -1
  520. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  521. package/libs/feature/editor/src/lib/fields.config.d.ts +56 -2
  522. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  523. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts +42 -0
  524. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts.map +1 -0
  525. package/libs/feature/editor/src/lib/models/index.d.ts +1 -0
  526. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  527. package/libs/feature/editor/src/lib/services/editor.service.d.ts +8 -10
  528. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  529. package/libs/feature/map/src/index.d.ts +1 -8
  530. package/libs/feature/map/src/index.d.ts.map +1 -1
  531. package/libs/feature/map/src/lib/+state/map.actions.d.ts +13 -39
  532. package/libs/feature/map/src/lib/+state/map.actions.d.ts.map +1 -1
  533. package/libs/feature/map/src/lib/+state/map.facade.d.ts +9 -10
  534. package/libs/feature/map/src/lib/+state/map.facade.d.ts.map +1 -1
  535. package/libs/feature/map/src/lib/+state/map.reducer.d.ts +4 -2
  536. package/libs/feature/map/src/lib/+state/map.reducer.d.ts.map +1 -1
  537. package/libs/feature/map/src/lib/+state/map.selectors.d.ts +6 -1
  538. package/libs/feature/map/src/lib/+state/map.selectors.d.ts.map +1 -1
  539. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts +1 -1
  540. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  541. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts +8 -10
  542. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  543. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +1 -1
  544. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  545. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +3 -3
  546. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  547. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +2 -2
  548. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  549. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +2 -2
  550. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  551. package/libs/feature/map/src/lib/constant/index.d.ts +0 -1
  552. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  553. package/libs/feature/map/src/lib/feature-map.module.d.ts +12 -23
  554. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  555. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +7 -7
  556. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  557. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +5 -4
  558. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  559. package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts +14 -0
  560. package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts.map +1 -0
  561. package/libs/feature/map/src/lib/style/map-style.fixtures.d.ts +2 -2
  562. package/libs/feature/map/src/lib/style/map-style.fixtures.d.ts.map +1 -1
  563. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +0 -30
  564. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  565. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +3 -3
  566. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  567. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +4 -1
  568. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  569. package/libs/feature/record/src/lib/data-view-share/data-view-share.component.d.ts +4 -1
  570. package/libs/feature/record/src/lib/data-view-share/data-view-share.component.d.ts.map +1 -1
  571. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +4 -1
  572. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  573. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +10 -7
  574. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  575. package/libs/feature/record/src/lib/feature-record.module.d.ts +13 -10
  576. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  577. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +14 -20
  578. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  579. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  580. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
  581. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  582. package/libs/feature/router/src/lib/default/constants.d.ts +1 -0
  583. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  584. package/libs/feature/router/src/lib/default/router.config.d.ts +1 -0
  585. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  586. package/libs/feature/router/src/lib/default/router.service.d.ts +1 -0
  587. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  588. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +1 -0
  589. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  590. package/libs/feature/search/src/index.d.ts +1 -1
  591. package/libs/feature/search/src/index.d.ts.map +1 -1
  592. package/libs/feature/search/src/lib/feature-search.module.d.ts +2 -1
  593. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  594. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  595. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +37 -0
  596. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -0
  597. package/libs/feature/search/src/lib/state/search.facade.d.ts +2 -0
  598. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  599. package/libs/feature/search/src/lib/state/selectors.d.ts +1 -0
  600. package/libs/feature/search/src/lib/state/selectors.d.ts.map +1 -1
  601. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  602. package/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.d.ts +2 -2
  603. package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts +1 -1
  604. package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts.map +1 -1
  605. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +9 -9
  606. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  607. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -2
  608. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  609. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +2 -2
  610. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +1 -1
  611. package/libs/ui/elements/src/index.d.ts +4 -3
  612. package/libs/ui/elements/src/index.d.ts.map +1 -1
  613. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +18 -0
  614. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
  615. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +2 -2
  616. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  617. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -7
  618. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  619. package/libs/ui/elements/src/lib/error/error.component.d.ts +3 -1
  620. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -1
  621. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +2 -2
  622. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  623. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts +2 -2
  624. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  625. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -3
  626. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  627. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
  628. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +5 -1
  629. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  630. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +18 -15
  631. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  632. package/libs/ui/inputs/src/index.d.ts +6 -0
  633. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  634. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +15 -4
  635. package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
  636. package/libs/ui/inputs/src/lib/badge/badge.component.d.ts +11 -0
  637. package/libs/ui/inputs/src/lib/badge/badge.component.d.ts.map +1 -0
  638. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  639. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  640. package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
  641. package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts +4 -4
  642. package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
  643. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +5 -3
  644. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -1
  645. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts +24 -0
  646. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -0
  647. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +4 -5
  648. package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -1
  649. package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts +1 -1
  650. package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts.map +1 -1
  651. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts +17 -0
  652. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts.map +1 -0
  653. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +0 -4
  654. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  655. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +2 -4
  656. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
  657. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +33 -35
  658. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  659. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +21 -0
  660. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -0
  661. package/libs/ui/layout/src/index.d.ts +3 -0
  662. package/libs/ui/layout/src/index.d.ts.map +1 -1
  663. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts +2 -2
  664. package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts.map +1 -1
  665. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +1 -1
  666. package/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.d.ts +2 -2
  667. package/libs/ui/layout/src/lib/max-lines/max-lines.component.d.ts.map +1 -0
  668. package/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.d.ts +20 -0
  669. package/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.d.ts.map +1 -0
  670. package/libs/ui/layout/src/lib/sortable-list/sortable-list.component.d.ts +14 -0
  671. package/libs/ui/layout/src/lib/sortable-list/sortable-list.component.d.ts.map +1 -0
  672. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  673. package/libs/ui/map/src/index.d.ts +3 -2
  674. package/libs/ui/map/src/index.d.ts.map +1 -1
  675. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +3 -4
  676. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  677. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +37 -0
  678. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -0
  679. package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts +18 -0
  680. package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts.map +1 -0
  681. package/libs/ui/map/src/lib/map-utils.d.ts +7 -0
  682. package/libs/ui/map/src/lib/map-utils.d.ts.map +1 -0
  683. package/libs/ui/search/src/index.d.ts +1 -0
  684. package/libs/ui/search/src/index.d.ts.map +1 -1
  685. package/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.d.ts +3 -3
  686. package/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.d.ts.map +1 -1
  687. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +20 -0
  688. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -0
  689. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +36 -0
  690. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  691. package/libs/ui/widgets/src/index.d.ts +1 -1
  692. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  693. package/libs/ui/widgets/src/lib/popover/popover.component.d.ts +19 -0
  694. package/libs/ui/widgets/src/lib/popover/popover.component.d.ts.map +1 -0
  695. package/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.d.ts +1 -1
  696. package/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.d.ts.map +1 -1
  697. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +10 -12
  698. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +1 -1
  699. package/libs/util/app-config/src/index.d.ts +1 -0
  700. package/libs/util/app-config/src/index.d.ts.map +1 -1
  701. package/libs/util/app-config/src/lib/fixtures.d.ts +8 -8
  702. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  703. package/libs/util/app-config/src/lib/map-layers.d.ts +4 -0
  704. package/libs/util/app-config/src/lib/map-layers.d.ts.map +1 -0
  705. package/libs/util/i18n/src/index.d.ts +1 -0
  706. package/libs/util/i18n/src/index.d.ts.map +1 -1
  707. package/libs/util/i18n/src/lib/i18n.constants.d.ts +0 -35
  708. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  709. package/libs/util/i18n/src/lib/language-codes.d.ts +38 -0
  710. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -0
  711. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts +3 -3
  712. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  713. package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -6
  714. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  715. package/libs/util/shared/src/lib/services/theme.service.d.ts.map +1 -1
  716. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -1
  717. package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -1
  718. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  719. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  720. package/libs/util/shared/src/lib/utils/no-duplicate-file-name.d.ts +2 -0
  721. package/libs/util/shared/src/lib/utils/no-duplicate-file-name.d.ts.map +1 -0
  722. package/package.json +5 -3
  723. package/src/libs/api/metadata-converter/src/index.ts +3 -0
  724. package/src/libs/api/metadata-converter/src/lib/common/license.ts +66 -0
  725. package/src/libs/api/metadata-converter/src/lib/common/url.ts +15 -0
  726. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +500 -0
  727. package/src/libs/api/metadata-converter/src/lib/dcat-ap/index.ts +1 -0
  728. package/src/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.ts +17 -0
  729. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +463 -0
  730. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.ts +110 -0
  731. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/individual-name.ts +20 -0
  732. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/keyword.mapper.ts +16 -0
  733. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/role.mapper.ts +48 -0
  734. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.ts +127 -0
  735. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/status.mapper.ts +19 -0
  736. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/update-frequency.mapper.ts +67 -0
  737. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.ts +1 -0
  738. package/src/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.ts +101 -0
  739. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +13 -0
  740. package/src/libs/api/metadata-converter/src/lib/fixtures/eu.dcat-ap.records.ts +743 -0
  741. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +41 -5
  742. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +24 -5
  743. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +364 -17
  744. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +82 -4
  745. package/src/libs/api/metadata-converter/src/lib/fixtures/opendataswiss.records.ts +437 -0
  746. package/src/libs/api/metadata-converter/src/lib/fixtures/sextant.records.ts +487 -0
  747. package/src/libs/api/metadata-converter/src/lib/fixtures/vlaanderen.dcat-ap.records.ts +76 -0
  748. package/src/libs/api/metadata-converter/src/lib/function-utils.ts +1 -1
  749. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +1 -0
  750. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.converter.ts +2 -1
  751. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +31 -18
  752. package/src/libs/api/metadata-converter/src/lib/gn4/types/index.ts +1 -0
  753. package/src/libs/api/metadata-converter/src/lib/gn4/types/keywords.model.ts +27 -0
  754. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +1 -0
  755. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +16 -9
  756. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +57 -14
  757. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +112 -65
  758. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +118 -53
  759. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +283 -54
  760. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.ts +39 -0
  761. package/src/libs/api/metadata-converter/src/lib/iso19139/utils/keyword.mapper.ts +1 -1
  762. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +486 -289
  763. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +132 -28
  764. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +291 -16
  765. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +1 -0
  766. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +3 -1
  767. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +37 -5
  768. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +248 -31
  769. package/src/libs/common/domain/src/lib/model/error/index.ts +1 -0
  770. package/src/libs/common/domain/src/lib/model/error/publication-version.error.ts +9 -0
  771. package/src/libs/common/domain/src/lib/model/record/contact.model.ts +29 -1
  772. package/src/libs/common/domain/src/lib/model/record/index.ts +1 -0
  773. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +37 -20
  774. package/src/libs/common/domain/src/lib/model/record/organization.model.ts +5 -0
  775. package/src/libs/common/domain/src/lib/model/record/translation.model.ts +49 -0
  776. package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +13 -6
  777. package/src/libs/common/domain/src/lib/model/user/user.model.ts +1 -1
  778. package/src/libs/common/domain/src/lib/platform.service.interface.ts +38 -3
  779. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +72 -3
  780. package/src/libs/common/fixtures/src/index.ts +6 -1
  781. package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +156 -0
  782. package/src/libs/common/fixtures/src/lib/editor/index.ts +1 -0
  783. package/src/libs/common/fixtures/src/lib/elasticsearch/{aggregations-request.ts → aggregations-request.fixtures.ts} +1 -3
  784. package/src/libs/common/fixtures/src/lib/elasticsearch/{aggregations-response.ts → aggregations-response.fixtures.ts} +6 -8
  785. package/src/libs/common/fixtures/src/lib/elasticsearch/{full-response.ts → full-response.fixtures.ts} +1673 -3
  786. package/src/libs/common/fixtures/src/lib/elasticsearch/index.ts +5 -5
  787. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +1 -3
  788. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata.fixtures.ts +1739 -1742
  789. package/src/libs/common/fixtures/src/lib/elasticsearch/{search-requests.ts → search-requests.fixtures.ts} +1 -3
  790. package/src/libs/common/fixtures/src/lib/elasticsearch/{search-responses.ts → search-responses.fixtures.ts} +4 -6
  791. package/src/libs/common/fixtures/src/lib/geojson.fixtures.ts +57178 -57195
  792. package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +2 -4
  793. package/src/libs/common/fixtures/src/lib/individual.fixtures.ts +61 -0
  794. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +233 -164
  795. package/src/libs/common/fixtures/src/lib/map/index.ts +1 -0
  796. package/src/libs/common/fixtures/src/lib/map/map-context.fixtures.ts +53 -0
  797. package/src/libs/common/fixtures/src/lib/ol-feature.fixtures.ts +10 -0
  798. package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +65 -3
  799. package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +9 -7
  800. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +220 -16
  801. package/src/libs/common/fixtures/src/lib/repository.fixtures.ts +4 -4
  802. package/src/libs/common/fixtures/src/lib/search/aggregations.ts +2 -3
  803. package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +14 -15
  804. package/src/libs/common/fixtures/src/lib/user.fixtures.ts +45 -15
  805. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +4 -0
  806. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +2 -0
  807. package/src/libs/data-access/gn4/src/fixtures/site.fixtures.ts +4 -4
  808. package/src/libs/data-access/gn4/src/fixtures/ui.fixtures.ts +2 -2
  809. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +10 -14
  810. package/src/libs/data-access/gn4/src/openapi/model/user.api.model.ts +1 -1
  811. package/src/libs/data-access/gn4/src/spec.yaml +4 -13
  812. package/src/libs/feature/catalog/src/index.ts +1 -0
  813. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +5 -2
  814. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.html +1 -1
  815. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +2 -2
  816. package/src/libs/feature/catalog/src/lib/organization-url.token.ts +6 -0
  817. package/src/libs/feature/catalog/src/lib/records/records.service.ts +6 -8
  818. package/src/libs/feature/catalog/src/lib/sources/sources.fixture.ts +1 -1
  819. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +3 -3
  820. package/src/libs/feature/dataviz/src/lib/feature-dataviz.module.ts +8 -3
  821. package/src/libs/feature/dataviz/src/lib/figure/figure.fixtures.ts +2 -2
  822. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +5 -2
  823. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +38 -78
  824. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +6 -6
  825. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +4 -4
  826. package/src/libs/feature/editor/src/index.ts +1 -0
  827. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +14 -1
  828. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +97 -17
  829. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +27 -4
  830. package/src/libs/feature/editor/src/lib/+state/editor.models.ts +12 -1
  831. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +32 -9
  832. package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +32 -8
  833. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +15 -0
  834. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.ts +18 -0
  835. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.html +26 -0
  836. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +90 -0
  837. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.html +47 -0
  838. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +132 -0
  839. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.html +35 -0
  840. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +79 -0
  841. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +31 -0
  842. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +82 -0
  843. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +40 -0
  844. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +170 -0
  845. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.css +4 -0
  846. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +66 -0
  847. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +210 -0
  848. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.html +4 -0
  849. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.ts +21 -0
  850. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +10 -0
  851. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +78 -0
  852. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css +8 -0
  853. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +13 -5
  854. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +1 -0
  855. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts +86 -0
  856. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.css +0 -0
  857. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +43 -0
  858. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +186 -0
  859. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.css +0 -0
  860. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +71 -0
  861. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +241 -0
  862. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.css +0 -0
  863. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.html +6 -0
  864. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +48 -0
  865. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.css +0 -0
  866. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +11 -0
  867. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +123 -0
  868. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +15 -8
  869. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +11 -14
  870. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.html +5 -3
  871. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-simple/form-field-simple.component.ts +11 -4
  872. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +20 -1
  873. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +212 -1
  874. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.css +4 -0
  875. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.html +33 -0
  876. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +87 -0
  877. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +4 -0
  878. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +16 -14
  879. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +101 -90
  880. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +127 -83
  881. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +61 -75
  882. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +4 -2
  883. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +52 -9
  884. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +20 -7
  885. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +2 -6
  886. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +1 -1
  887. package/src/libs/feature/editor/src/lib/expressions.ts +1 -1
  888. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +4 -2
  889. package/src/libs/feature/editor/src/lib/fields.config.ts +258 -45
  890. package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +65 -0
  891. package/src/libs/feature/editor/src/lib/models/index.ts +1 -0
  892. package/src/libs/feature/editor/src/lib/services/editor.service.ts +48 -54
  893. package/src/libs/feature/map/src/index.ts +1 -8
  894. package/src/libs/feature/map/src/lib/+state/map.actions.ts +10 -25
  895. package/src/libs/feature/map/src/lib/+state/map.facade.ts +11 -15
  896. package/src/libs/feature/map/src/lib/+state/map.reducer.ts +16 -53
  897. package/src/libs/feature/map/src/lib/+state/map.selectors.ts +7 -2
  898. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +3 -0
  899. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +23 -22
  900. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +22 -11
  901. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +1 -1
  902. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +21 -19
  903. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +1 -1
  904. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +17 -10
  905. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +1 -1
  906. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +17 -10
  907. package/src/libs/feature/map/src/lib/constant/index.ts +0 -1
  908. package/src/libs/feature/map/src/lib/feature-map.module.ts +2 -41
  909. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +38 -20
  910. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +2 -2
  911. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +39 -6
  912. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.css +0 -0
  913. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.html +4 -0
  914. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.ts +29 -0
  915. package/src/libs/feature/map/src/lib/style/map-style.fixtures.ts +29 -27
  916. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -232
  917. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +3 -3
  918. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +36 -19
  919. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +6 -2
  920. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +11 -0
  921. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +59 -12
  922. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +29 -20
  923. package/src/libs/feature/record/src/lib/feature-record.module.ts +14 -5
  924. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +4 -4
  925. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +45 -72
  926. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +1 -3
  927. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +5 -1
  928. package/src/libs/feature/router/src/lib/default/constants.ts +1 -0
  929. package/src/libs/feature/router/src/lib/default/router.config.ts +1 -0
  930. package/src/libs/feature/router/src/lib/default/router.service.ts +13 -1
  931. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +8 -0
  932. package/src/libs/feature/search/src/index.ts +1 -1
  933. package/src/libs/feature/search/src/lib/feature-search.module.ts +2 -1
  934. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +2 -1
  935. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +2 -2
  936. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.css +0 -0
  937. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +15 -0
  938. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +114 -0
  939. package/src/libs/feature/search/src/lib/state/fixtures/search-state.fixtures.ts +2 -2
  940. package/src/libs/feature/search/src/lib/state/search.facade.ts +11 -0
  941. package/src/libs/feature/search/src/lib/state/selectors.ts +7 -0
  942. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +16 -2
  943. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +8 -6
  944. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  945. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +8 -1
  946. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +2 -3
  947. package/src/libs/ui/dataviz/src/lib/chart/chart.fixtures.ts +2 -2
  948. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +11 -3
  949. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +3 -7
  950. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +2 -2
  951. package/src/libs/ui/elements/src/index.ts +4 -3
  952. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +29 -29
  953. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.css +0 -0
  954. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +12 -0
  955. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +37 -0
  956. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +4 -4
  957. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +7 -7
  958. package/src/libs/ui/elements/src/lib/error/error.component.html +30 -6
  959. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -0
  960. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -3
  961. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +13 -17
  962. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -1
  963. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +7 -1
  964. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +14 -10
  965. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +14 -20
  966. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +0 -10
  967. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.html +1 -1
  968. package/src/libs/ui/elements/src/lib/notification/notification.component.html +1 -3
  969. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +2 -2
  970. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  971. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +22 -1
  972. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +11 -6
  973. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.html +1 -1
  974. package/src/libs/ui/inputs/src/index.ts +6 -0
  975. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.css +25 -19
  976. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +33 -15
  977. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +97 -30
  978. package/src/libs/ui/inputs/src/lib/badge/badge.component.css +0 -0
  979. package/src/libs/ui/inputs/src/lib/badge/badge.component.html +26 -0
  980. package/src/libs/ui/inputs/src/lib/badge/badge.component.ts +28 -0
  981. package/src/libs/ui/inputs/src/lib/button/button.component.ts +15 -1
  982. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +7 -2
  983. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +14 -5
  984. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +15 -2
  985. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.css +7 -2
  986. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.html +29 -24
  987. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +20 -16
  988. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +40 -26
  989. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.css +4 -0
  990. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.html +89 -0
  991. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +92 -0
  992. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +4 -0
  993. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +76 -68
  994. package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +17 -14
  995. package/src/libs/ui/inputs/src/lib/search-input/search-input.component.ts +5 -1
  996. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.css +32 -0
  997. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +14 -0
  998. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +39 -0
  999. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +3 -2
  1000. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +3 -28
  1001. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +4 -3
  1002. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +4 -16
  1003. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -9
  1004. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.css +9 -0
  1005. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.html +41 -0
  1006. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +56 -0
  1007. package/src/libs/ui/layout/src/index.ts +3 -0
  1008. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +8 -3
  1009. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +4 -3
  1010. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +1 -1
  1011. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -2
  1012. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.css +0 -0
  1013. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.html +1 -0
  1014. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.ts +9 -5
  1015. package/src/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.css +0 -0
  1016. package/src/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.html +15 -0
  1017. package/src/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.ts +44 -0
  1018. package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.css +18 -0
  1019. package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.html +37 -0
  1020. package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.ts +53 -0
  1021. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -1
  1022. package/src/libs/ui/map/src/index.ts +3 -2
  1023. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +1 -1
  1024. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +8 -5
  1025. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.css +0 -0
  1026. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +203 -0
  1027. package/src/libs/ui/map/src/lib/components/map-container/map-settings.token.ts +23 -0
  1028. package/src/libs/ui/map/src/lib/map-utils.ts +54 -0
  1029. package/src/libs/ui/search/src/index.ts +1 -0
  1030. package/src/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.ts +7 -6
  1031. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.css +0 -0
  1032. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +26 -0
  1033. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +74 -0
  1034. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +0 -0
  1035. package/src/libs/{feature → ui}/search/src/lib/results-table/results-table.component.html +51 -15
  1036. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +151 -0
  1037. package/src/libs/ui/widgets/src/index.ts +1 -1
  1038. package/src/libs/ui/widgets/src/lib/popover/popover.component.css +0 -0
  1039. package/src/libs/ui/widgets/src/lib/popover/popover.component.html +3 -0
  1040. package/src/libs/ui/widgets/src/lib/popover/popover.component.ts +85 -0
  1041. package/src/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.ts +4 -0
  1042. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -6
  1043. package/src/libs/util/app-config/src/index.ts +1 -0
  1044. package/src/libs/util/app-config/src/lib/fixtures.ts +9 -9
  1045. package/src/libs/util/app-config/src/lib/map-layers.ts +31 -0
  1046. package/src/libs/util/i18n/src/index.ts +1 -0
  1047. package/src/libs/util/i18n/src/lib/i18n.constants.ts +0 -43
  1048. package/src/libs/util/i18n/src/lib/lang.service.ts +1 -1
  1049. package/src/libs/util/i18n/src/lib/language-codes.ts +44 -0
  1050. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +4 -3
  1051. package/src/libs/util/shared/src/lib/links/link-utils.ts +6 -6
  1052. package/src/libs/util/shared/src/lib/services/theme.service.ts +1 -0
  1053. package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +4 -1
  1054. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  1055. package/src/libs/util/shared/src/lib/utils/no-duplicate-file-name.ts +23 -0
  1056. package/tailwind.base.config.js +1 -0
  1057. package/tailwind.base.css +77 -7
  1058. package/translations/de.json +180 -33
  1059. package/translations/en.json +188 -41
  1060. package/translations/es.json +158 -11
  1061. package/translations/fr.json +218 -71
  1062. package/translations/it.json +161 -14
  1063. package/translations/nl.json +158 -11
  1064. package/translations/pt.json +158 -11
  1065. package/translations/sk.json +160 -13
  1066. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +0 -15
  1067. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.mjs +0 -11
  1068. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.mjs +0 -2
  1069. package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +0 -2
  1070. package/esm2022/libs/feature/map/src/lib/+state/map.effects.mjs +0 -15
  1071. package/esm2022/libs/feature/map/src/lib/+state/map.models.mjs +0 -2
  1072. package/esm2022/libs/feature/map/src/lib/constant/map-options.mjs +0 -8
  1073. package/esm2022/libs/feature/map/src/lib/constant/style.constant.mjs +0 -17
  1074. package/esm2022/libs/feature/map/src/lib/feature-info/feature-info.service.mjs +0 -38
  1075. package/esm2022/libs/feature/map/src/lib/manager/map-instance.directive.mjs +0 -19
  1076. package/esm2022/libs/feature/map/src/lib/manager/map-manager.service.mjs +0 -19
  1077. package/esm2022/libs/feature/map/src/lib/map-container/map-container.component.mjs +0 -27
  1078. package/esm2022/libs/feature/map/src/lib/map-context/component/map-context.component.mjs +0 -46
  1079. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +0 -10
  1080. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +0 -289
  1081. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +0 -128
  1082. package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +0 -69
  1083. package/esm2022/libs/ui/map/src/lib/components/map/map.component.mjs +0 -40
  1084. package/esm2022/libs/ui/map/src/lib/ui-map.module.mjs +0 -33
  1085. package/esm2022/libs/ui/widgets/src/lib/badge/badge.component.mjs +0 -17
  1086. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +0 -8
  1087. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +0 -1
  1088. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts +0 -6
  1089. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.d.ts.map +0 -1
  1090. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts +0 -26
  1091. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts.map +0 -1
  1092. package/libs/feature/editor/src/lib/models/fields.model.d.ts +0 -15
  1093. package/libs/feature/editor/src/lib/models/fields.model.d.ts.map +0 -1
  1094. package/libs/feature/map/src/lib/+state/map.effects.d.ts +0 -9
  1095. package/libs/feature/map/src/lib/+state/map.effects.d.ts.map +0 -1
  1096. package/libs/feature/map/src/lib/+state/map.models.d.ts +0 -9
  1097. package/libs/feature/map/src/lib/+state/map.models.d.ts.map +0 -1
  1098. package/libs/feature/map/src/lib/constant/map-options.d.ts +0 -9
  1099. package/libs/feature/map/src/lib/constant/map-options.d.ts.map +0 -1
  1100. package/libs/feature/map/src/lib/constant/style.constant.d.ts +0 -4
  1101. package/libs/feature/map/src/lib/constant/style.constant.d.ts.map +0 -1
  1102. package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts +0 -16
  1103. package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts.map +0 -1
  1104. package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts +0 -9
  1105. package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts.map +0 -1
  1106. package/libs/feature/map/src/lib/manager/map-manager.service.d.ts +0 -11
  1107. package/libs/feature/map/src/lib/manager/map-manager.service.d.ts.map +0 -1
  1108. package/libs/feature/map/src/lib/map-container/map-container.component.d.ts +0 -12
  1109. package/libs/feature/map/src/lib/map-container/map-container.component.d.ts.map +0 -1
  1110. package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts +0 -26
  1111. package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts.map +0 -1
  1112. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +0 -77
  1113. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +0 -1
  1114. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +0 -26
  1115. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +0 -1
  1116. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +0 -33
  1117. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +0 -1
  1118. package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +0 -1
  1119. package/libs/ui/map/src/lib/components/map/map.component.d.ts +0 -19
  1120. package/libs/ui/map/src/lib/components/map/map.component.d.ts.map +0 -1
  1121. package/libs/ui/map/src/lib/ui-map.module.d.ts +0 -13
  1122. package/libs/ui/map/src/lib/ui-map.module.d.ts.map +0 -1
  1123. package/libs/ui/widgets/src/lib/badge/badge.component.d.ts +0 -7
  1124. package/libs/ui/widgets/src/lib/badge/badge.component.d.ts.map +0 -1
  1125. package/src/libs/common/fixtures/src/lib/ol-feature.fixture.ts +0 -7
  1126. package/src/libs/common/fixtures/src/lib/utils/freeze.ts +0 -10
  1127. package/src/libs/common/fixtures/src/lib/utils/index.ts +0 -1
  1128. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +0 -8
  1129. package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +0 -70
  1130. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.html +0 -4
  1131. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.ts +0 -15
  1132. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.html +0 -1
  1133. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.ts +0 -10
  1134. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.ts +0 -43
  1135. package/src/libs/feature/editor/src/lib/models/fields.model.ts +0 -29
  1136. package/src/libs/feature/map/src/lib/+state/map.effects.ts +0 -7
  1137. package/src/libs/feature/map/src/lib/+state/map.models.ts +0 -9
  1138. package/src/libs/feature/map/src/lib/constant/map-options.ts +0 -17
  1139. package/src/libs/feature/map/src/lib/feature-info/feature-info.service.ts +0 -42
  1140. package/src/libs/feature/map/src/lib/manager/map-instance.directive.ts +0 -10
  1141. package/src/libs/feature/map/src/lib/manager/map-manager.service.ts +0 -13
  1142. package/src/libs/feature/map/src/lib/map-container/map-container.component.html +0 -1
  1143. package/src/libs/feature/map/src/lib/map-container/map-container.component.ts +0 -26
  1144. package/src/libs/feature/map/src/lib/map-context/component/map-context.component.html +0 -1
  1145. package/src/libs/feature/map/src/lib/map-context/component/map-context.component.ts +0 -57
  1146. package/src/libs/feature/map/src/lib/map-context/map-context.fixtures.ts +0 -51
  1147. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +0 -95
  1148. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +0 -318
  1149. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +0 -164
  1150. package/src/libs/ui/map/src/lib/components/map/map.component.ts +0 -57
  1151. package/src/libs/ui/map/src/lib/ui-map.module.ts +0 -19
  1152. package/src/libs/ui/widgets/src/lib/badge/badge.component.html +0 -10
  1153. package/src/libs/ui/widgets/src/lib/badge/badge.component.ts +0 -11
  1154. /package/src/libs/feature/editor/src/lib/components/{overview-upload/overview-upload.component.css → contact-card/contact-card.component.css} +0 -0
  1155. /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css → generic-keywords/generic-keywords.component.css} +0 -0
  1156. /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-temporal-extent/form-field-temporal-extent.component.css → import-record/import-record.component.css} +0 -0
  1157. /package/src/libs/feature/{map/src/lib/map-container/map-container.component.css → editor/src/lib/components/online-resource-card/online-resource-card.component.css} +0 -0
  1158. /package/src/libs/feature/{map/src/lib/map-context/component/map-context.component.css → editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.css} +0 -0
  1159. /package/src/libs/feature/{search/src/lib/results-table/results-table.component.css → editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.css} +0 -0
  1160. /package/src/libs/{ui/elements/src/lib/max-lines/max-lines.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.css} +0 -0
  1161. /package/src/libs/{ui/map/src/lib/components/map/map.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.css} +0 -0
  1162. /package/src/libs/{ui/widgets/src/lib/badge/badge.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.css} +0 -0
  1163. /package/src/libs/ui/map/src/lib/components/{map/map.component.html → map-container/map-container.component.html} +0 -0
@@ -28,7 +28,8 @@ export function createDocument(rootEl) {
28
28
  if (rootEl.attributes[`xmlns:${namespace}`])
29
29
  return;
30
30
  if (!NAMESPACES[namespace]) {
31
- throw new Error(`No known URI for namespace ${namespace}`);
31
+ // the namespace is unknown but it might still be declared correctly: ignore it
32
+ return;
32
33
  }
33
34
  rootEl.attributes[`xmlns:${namespace}`] = NAMESPACES[namespace];
34
35
  }
@@ -92,6 +93,9 @@ export function allChildrenElement(element) {
92
93
  ...element.children.filter((el) => el instanceof XmlElement),
93
94
  ];
94
95
  }
96
+ export function firstChildElement(element) {
97
+ return allChildrenElement(element)[0] ?? null;
98
+ }
95
99
  /**
96
100
  * Will return all matching elements nested according to the given
97
101
  * names (similar to a path), starting form the input element;
@@ -142,16 +146,24 @@ export function findParent(parentName) {
142
146
  }
143
147
  export function readText() {
144
148
  return (el) => {
145
- const textNode = el && Array.isArray(el.children)
149
+ if (!el)
150
+ return null;
151
+ const textNode = Array.isArray(el.children)
146
152
  ? el.children.find((node) => node.type === 'text')
147
153
  : null;
148
- return textNode ? textNode.text : null;
154
+ return textNode ? textNode.text : '';
149
155
  };
150
156
  }
151
157
  export function readAttribute(attrName) {
152
158
  return (el) => (el && el.attributes[attrName]) || null;
153
159
  }
154
160
  export function xmlToString(el, indentationLevel = 0) {
161
+ const encodeEntities = (text) => {
162
+ return text
163
+ .replace(/&/g, '&')
164
+ .replace(/</g, '&lt;')
165
+ .replace(/>/g, '&gt;');
166
+ };
155
167
  if (el instanceof XmlDocument)
156
168
  return `<?xml version="1.0" encoding="UTF-8"?>${xmlToString(el.children[0])}`;
157
169
  if (el instanceof XmlText) {
@@ -159,10 +171,7 @@ export function xmlToString(el, indentationLevel = 0) {
159
171
  const isEmpty = !text || text.replace(/^\s+|\s+$/g, '') === '';
160
172
  if (isEmpty)
161
173
  return '';
162
- return text
163
- .replace(/&/g, '&amp;')
164
- .replace(/</g, '&lt;')
165
- .replace(/>/g, '&gt;');
174
+ return encodeEntities(text);
166
175
  }
167
176
  if (!(el instanceof XmlElement))
168
177
  return `<!-- unknown -->`;
@@ -174,7 +183,7 @@ export function xmlToString(el, indentationLevel = 0) {
174
183
  .map((elString, index, array) => index < array.length - 1 ? elString.replace(/\n\s*$/g, '') : elString)
175
184
  .join('')
176
185
  : '';
177
- const attrs = Object.keys(el.attributes).reduce((prev, curr) => prev + ` ${curr}="${el.attributes[curr]}"`, '');
186
+ const attrs = Object.keys(el.attributes).reduce((prev, curr) => prev + ` ${curr}="${encodeEntities(el.attributes[curr])}"`, '');
178
187
  const parentPadding = ' '.repeat(Math.max(0, indentationLevel - 1));
179
188
  if (children === '') {
180
189
  return `
@@ -193,7 +202,7 @@ function extractNamespace(name) {
193
202
  const colon = name.indexOf(':');
194
203
  return colon > -1 ? name.substring(0, colon) : null;
195
204
  }
196
- const NAMESPACES = {
205
+ export const NAMESPACES = {
197
206
  gmd: 'http://www.isotc211.org/2005/gmd',
198
207
  gco: 'http://www.isotc211.org/2005/gco',
199
208
  gfc: 'http://www.isotc211.org/2005/gfc',
@@ -228,14 +237,44 @@ const NAMESPACES = {
228
237
  cat: 'http://standards.iso.org/iso/19115/-3/cat/1.0',
229
238
  lan: 'http://standards.iso.org/iso/19115/-3/lan/1.0',
230
239
  mrc: 'http://standards.iso.org/iso/19115/-3/mrc/2.0',
240
+ rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
241
+ rdfs: 'http://www.w3.org/2000/01/rdf-schema#',
242
+ foaf: 'http://xmlns.com/foaf/0.1/',
243
+ xsd: 'http://www.w3.org/2001/XMLSchema#',
244
+ dcat: 'http://www.w3.org/ns/dcat#',
245
+ dct: 'http://purl.org/dc/terms/',
246
+ skos: 'http://www.w3.org/2004/02/skos/core#',
247
+ schema_org: 'http://schema.org/',
248
+ spdx: 'https://spdx.org/rdf/terms/#',
249
+ adms: 'http://www.w3.org/ns/adms#',
250
+ dqv: 'http://www.w3.org/ns/dqv#',
251
+ owl: 'http://www.w3.org/2002/07/owl#',
252
+ vcard: 'http://www.w3.org/2006/vcard/ns#',
253
+ time: 'http://www.w3.org/2006/time#',
254
+ locn: 'http://www.w3.org/ns/locn#',
255
+ mdcat: 'https://data.vlaanderen.be/ns/metadata-dcat#',
231
256
  };
232
257
  /**
258
+ * Creates a single element, without parent or children
233
259
  * @param name Full name with namespace, e.g.: gmd:MD_Metadata
234
260
  */
235
261
  export function createElement(name) {
236
262
  return () => new XmlElement(name, {}, []);
237
263
  }
238
- export function addAttribute(name, value) {
264
+ /**
265
+ * Creates a tree of nested elements according to the given hierarchy
266
+ * @param elementNames Full names with namespaces
267
+ */
268
+ export function createNestedElement(...elementNames) {
269
+ return () => {
270
+ let current = null;
271
+ for (const name of elementNames) {
272
+ current = current ? createChild(name)(current) : createElement(name)();
273
+ }
274
+ return current;
275
+ };
276
+ }
277
+ export function writeAttribute(name, value) {
239
278
  return (element) => {
240
279
  element.attributes[name] = value;
241
280
  return element;
@@ -248,18 +287,13 @@ function getTreeRoot(element) {
248
287
  }
249
288
  return root;
250
289
  }
251
- // stays on the parent element
252
- // if the given elements are part of a subtree, will add the root of subtree
253
- export function appendChildren(...childrenFns) {
254
- return (element) => {
255
- if (!element)
256
- return null;
257
- element.children.push(...childrenFns.map((fn) => fn()).map(getTreeRoot));
258
- element.children.forEach((el) => (el.parent = element));
259
- return element;
260
- };
261
- }
262
- // switch to the tip of the subtree
290
+ /**
291
+ * Appends the element returned by the given function to the children of the current active one
292
+ * Note that if the function returns the tip of a subtree that was just created (i.e. not attached to the main document),
293
+ * then the whole subtree will be attached to the current element as children (instead of just the tip of the subtree).
294
+ * The created element (or tip of the created subtree) is returned and becomes the active element.
295
+ * @param childrenFn
296
+ */
263
297
  export function appendChildTree(childrenFn) {
264
298
  return (element) => {
265
299
  if (!element)
@@ -271,7 +305,27 @@ export function appendChildTree(childrenFn) {
271
305
  return treeTip;
272
306
  };
273
307
  }
274
- // switches to the child element
308
+ /**
309
+ * Leaves the current element as the active one; all elements returned by the given functions will be added as
310
+ * children to this current element.
311
+ * Note that if a function returns the tip of a subtree that was just created (i.e. not attached to the main document),
312
+ * then the whole subtree will be attached to the current element as children (instead of just the tip of the subtree).
313
+ * @param childrenFns Each function takes the parent as input and should return an element; if the returned value is
314
+ * falsy then it will be ignored
315
+ */
316
+ export function appendChildren(...childrenFns) {
317
+ return (element) => {
318
+ if (!element)
319
+ return null;
320
+ childrenFns.filter((fn) => fn).forEach((fn) => appendChildTree(fn)(element));
321
+ return element;
322
+ };
323
+ }
324
+ /**
325
+ * Creates an element, append it to the children of the current active element and switches to the
326
+ * new element as the active one.
327
+ * @param childName
328
+ */
275
329
  export function createChild(childName) {
276
330
  return (element) => {
277
331
  if (!element)
@@ -282,9 +336,34 @@ export function createChild(childName) {
282
336
  return child;
283
337
  };
284
338
  }
339
+ /**
340
+ * Creates a tree of nested elements according to the given hierarchy, appends it to the children of the current
341
+ * active element and switches to the tip of the newly created tree of elements as the active one.
342
+ * @param elementNames Full names with namespaces
343
+ */
344
+ export function createNestedChild(...elementNames) {
345
+ return (element) => {
346
+ let current = element;
347
+ for (const name of elementNames) {
348
+ current = createChild(name)(current);
349
+ }
350
+ return current;
351
+ };
352
+ }
353
+ /**
354
+ * Returns the matching children if found, or create a new element, append it to the current active element
355
+ * and switch to it as the active one.
356
+ * @param name
357
+ */
285
358
  export function findChildOrCreate(name) {
286
359
  return fallback(findChildElement(name, false), createChild(name));
287
360
  }
361
+ /**
362
+ * For each element name in the given hierarchy, either switch to a matching element if found,
363
+ * or create a new one, append it to the children of the previous one and switch to it as the active one.
364
+ * Eventually, the tip of the hierarchy (either existing or new element) becomes the active element.
365
+ * @param elementNames
366
+ */
288
367
  export function findNestedChildOrCreate(...elementNames) {
289
368
  return (element) => {
290
369
  let current = element;
@@ -359,4 +438,19 @@ export function renameElements(rootElement, replaceMap) {
359
438
  doReplace(rootElement);
360
439
  return rootElement;
361
440
  }
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIveG1sLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBRVIsV0FBVyxFQUNYLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFM0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxLQUFLO0lBQ3RDLFlBQVksT0FBTztRQUNqQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDaEIsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLFNBQWlCO0lBQzlDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQTtJQUNkLElBQUk7UUFDRixHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0tBQzFCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLElBQUksYUFBYSxDQUFDLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQzVEO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFrQjtJQUMvQyxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFBO0lBRTNDLFNBQVMsd0JBQXdCLENBQUMsSUFBWTtRQUM1QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QyxJQUFJLFNBQVMsS0FBSyxPQUFPLElBQUksU0FBUyxLQUFLLElBQUk7WUFBRSxPQUFNO1FBQ3ZELElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLFNBQVMsRUFBRSxDQUFDO1lBQUUsT0FBTTtRQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLFNBQVMsRUFBRSxDQUFDLENBQUE7U0FDM0Q7UUFDRCxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsU0FBUyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUVELFNBQVMsaUJBQWlCLENBQUMsRUFBYztRQUN2Qyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFO1lBQ2hDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFBO1NBQy9CO1FBQ0QsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDdkMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN6QixPQUFPLElBQUksV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtBQUNsQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQVk7SUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvQixPQUFPLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUN0RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDL0IsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDbkQsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE9BQW1CO0lBQ3pDLE9BQU8sT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUE7QUFDM0IsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBbUI7SUFDaEQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZLFVBQVUsQ0FBZSxDQUFBO0FBQzdFLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsSUFBWSxFQUNaLE1BQU0sR0FBRyxJQUFJO0lBRWIsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQ1osTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pDLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJO1lBQ3pCLElBQUksY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksRUFBRTtnQkFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUNoQjtZQUVELElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMxQyxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTthQUN2RDtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQTthQUNaO1FBQ0gsQ0FBQztRQUVELE9BQU8sRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ1IsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsSUFBWSxFQUNaLE1BQU0sR0FBRyxJQUFJO0lBRWIsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQTtBQUNqRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQW1CO0lBQ3BELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUMzRCxPQUFPO1FBQ0wsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxZQUFZLFVBQVUsQ0FBQztLQUN4QyxDQUFBO0FBQ3hCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxHQUFHLFlBQXNCO0lBRXpCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUNaLFNBQVMsT0FBTyxDQUFDLFdBQW1CO1lBQ2xDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtZQUM5RCxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNwQixJQUFJLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLEVBQUU7b0JBQ3pELE9BQU8sSUFBSSxDQUFBO2lCQUNaO2dCQUNELElBQUksV0FBVyxLQUFLLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUMzQyxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7aUJBQ3ZCO2dCQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ2hDLE9BQU87d0JBQ0wsR0FBRyxJQUFJO3dCQUNQLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7cUJBQ3RELENBQUE7aUJBQ0Y7Z0JBQ0QsT0FBTyxJQUFJLENBQUE7WUFDYixDQUFDLENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDUixDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixHQUFHLFlBQXNCO0lBRXpCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUNaLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDckQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUN2QyxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsK0VBQStFO0FBQy9FLE1BQU0sVUFBVSxVQUFVLENBQ3hCLFVBQWtCO0lBRWxCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUNaLElBQUksTUFBTSxHQUE2QixFQUFFLENBQUMsTUFBb0IsQ0FBQTtRQUM5RCxPQUFPLE1BQU0sSUFBSSxNQUFNLFlBQVksVUFBVSxFQUFFO1lBQzdDLElBQUksY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxVQUFVLENBQUM7Z0JBQ3ZFLE9BQU8sTUFBTSxDQUFBO1lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUE7U0FDdkI7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUTtJQUN0QixPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDWixNQUFNLFFBQVEsR0FDWixFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQzlCLENBQUMsQ0FBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQWE7WUFDL0QsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUNWLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDeEMsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQzNCLFFBQWdCO0lBRWhCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUE7QUFDeEQsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQ3pCLEVBQW1ELEVBQ25ELGdCQUFnQixHQUFHLENBQUM7SUFFcEIsSUFBSSxFQUFFLFlBQVksV0FBVztRQUMzQixPQUFPLHlDQUF5QyxXQUFXLENBQ3pELEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQ2YsRUFBRSxDQUFBO0lBQ0wsSUFBSSxFQUFFLFlBQVksT0FBTyxFQUFFO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7UUFDcEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQzlELElBQUksT0FBTztZQUFFLE9BQU8sRUFBRSxDQUFBO1FBQ3RCLE9BQU8sSUFBSTthQUNSLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7S0FDekI7SUFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFLFlBQVksVUFBVSxDQUFDO1FBQUUsT0FBTyxrQkFBa0IsQ0FBQTtJQUUxRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDL0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUTthQUNSLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNsRCxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDekIsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUM5QixLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQ3RFO2FBQ0EsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNiLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDTixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQzdDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFDMUQsRUFBRSxDQUNILENBQUE7SUFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdEUsSUFBSSxRQUFRLEtBQUssRUFBRSxFQUFFO1FBQ25CLE9BQU87RUFDVCxPQUFPLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxLQUFLO0VBQzFCLGFBQWEsRUFBRSxDQUFBO0tBQ2Q7SUFDRCxPQUFPO0VBQ1AsT0FBTyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxJQUFJLFFBQVEsS0FBSyxFQUFFLENBQUMsSUFBSTtFQUNsRCxhQUFhLEVBQUUsQ0FBQTtBQUNqQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFZO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDL0IsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDckQsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHO0lBQ2pCLEdBQUcsRUFBRSxrQ0FBa0M7SUFDdkMsR0FBRyxFQUFFLGtDQUFrQztJQUN2QyxHQUFHLEVBQUUsa0NBQWtDO0lBQ3ZDLEdBQUcsRUFBRSxnQ0FBZ0M7SUFDckMsR0FBRyxFQUFFLDJDQUEyQztJQUNoRCxHQUFHLEVBQUUsa0NBQWtDO0lBQ3ZDLEdBQUcsRUFBRSxrQ0FBa0M7SUFDdkMsR0FBRyxFQUFFLGtDQUFrQztJQUN2QyxHQUFHLEVBQUUsa0NBQWtDO0lBQ3ZDLEdBQUcsRUFBRSxrQ0FBa0M7SUFDdkMsS0FBSyxFQUFFLDhCQUE4QjtJQUNyQyxHQUFHLEVBQUUsK0NBQStDO0lBQ3BELEdBQUcsRUFBRSwrQ0FBK0M7SUFDcEQsR0FBRyxFQUFFLCtDQUErQztJQUNwRCxHQUFHLEVBQUUsK0NBQStDO0lBQ3BELEdBQUcsRUFBRSwrQ0FBK0M7SUFDcEQsR0FBRyxFQUFFLCtDQUErQztJQUNwRCxHQUFHLEVBQUUsK0NBQStDO0lBQ3BELEdBQUcsRUFBRSwrQ0FBK0M7SUFDcEQsR0FBRyxFQUFFLCtDQUErQztJQUNwRCxHQUFHLEVBQUUsK0NBQStDO0lBQ3BELEdBQUcsRUFBRSwrQ0FBK0M7SUFDcEQsR0FBRyxFQUFFLCtDQUErQztJQUNwRCxHQUFHLEVBQUUsK0NBQStDO0lBQ3BELEdBQUcsRUFBRSwrQ0FBK0M7SUFDcEQsR0FBRyxFQUFFLCtDQUErQztJQUNwRCxHQUFHLEVBQUUsK0NBQStDO0lBQ3BELEdBQUcsRUFBRSwrQ0FBK0M7SUFDcEQsR0FBRyxFQUFFLCtDQUErQztJQUNwRCxHQUFHLEVBQUUsK0NBQStDO0lBQ3BELEdBQUcsRUFBRSwrQ0FBK0M7SUFDcEQsR0FBRyxFQUFFLCtDQUErQztJQUNwRCxHQUFHLEVBQUUsK0NBQStDO0lBQ3BELEdBQUcsRUFBRSwrQ0FBK0M7Q0FDckQsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsSUFBWTtJQUVaLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsSUFBWSxFQUNaLEtBQWE7SUFFYixPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDakIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUE7UUFDaEMsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLE9BQW1CO0lBQ3RDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQTtJQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLFlBQVksVUFBVSxFQUFFO1FBQ3hDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO0tBQ25CO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsOEJBQThCO0FBQzlCLDRFQUE0RTtBQUM1RSxNQUFNLFVBQVUsY0FBYyxDQUM1QixHQUFHLFdBQXVEO0lBRTFELE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNqQixJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFBO1FBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtRQUN4RSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDdkQsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsZUFBZSxDQUM3QixVQUErQztJQUUvQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDakIsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQTtRQUN6QixNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQTtRQUM1QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDL0IsUUFBUSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUE7UUFDekIsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELGdDQUFnQztBQUNoQyxNQUFNLFVBQVUsV0FBVyxDQUN6QixTQUFpQjtJQUVqQixPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDakIsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQTtRQUN6QixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQTtRQUN4QyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM1QixLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQTtRQUN0QixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLElBQVk7SUFFWixPQUFPLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDbkUsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsR0FBRyxZQUFzQjtJQUV6QixPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDakIsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3JCLEtBQUssTUFBTSxJQUFJLElBQUksWUFBWSxFQUFFO1lBQy9CLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtTQUMzQztRQUNELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUM1QixJQUFZO0lBRVosT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2pCLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUE7UUFDekIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2xDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFlBQVksT0FBTyxDQUNuQixDQUFBO1FBQ1osSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7U0FDekM7YUFBTTtZQUNMLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1NBQ25CO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2pCLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUE7UUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3BELE9BQU8sQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO1FBQ3JCLE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRCw0QkFBNEI7QUFDNUIsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUFZO0lBRVosT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2pCLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxJQUFJLENBQUE7UUFDekIsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNyQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1IsS0FBSyxZQUFZLFVBQVU7WUFDM0IsY0FBYyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FDekQsQ0FBQTtRQUNELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzNDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQ3hDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN6QyxDQUFBO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQzVCLFVBQTREO0lBRTVELE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNqQixNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM1QyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzFELE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQ3hDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixLQUFLLFlBQVksVUFBVSxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDeEUsQ0FBQTtRQUNELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQzVCLFdBQXVCLEVBQ3ZCLFVBQWtDO0lBRWxDLFNBQVMsU0FBUyxDQUFDLE9BQW1CO1FBQ3BDLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxVQUFVLEVBQUU7WUFDOUIsT0FBTyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ3hDO2FBQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxFQUFFO1lBQ25FLE9BQU8sQ0FBQyxJQUFJLEdBQUcsR0FDYixVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FDdkMsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUE7U0FDbkM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDcEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7U0FDcEM7SUFDSCxDQUFDO0lBQ0QsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3RCLE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBwYXJzZVhtbCxcbiAgWG1sQ29tbWVudCxcbiAgWG1sRG9jdW1lbnQsXG4gIFhtbEVsZW1lbnQsXG4gIFhtbFRleHQsXG59IGZyb20gJ0ByZ3JvdmUvcGFyc2UteG1sJ1xuaW1wb3J0IHsgQ2hhaW5hYmxlRnVuY3Rpb24sIGZhbGxiYWNrIH0gZnJvbSAnLi9mdW5jdGlvbi11dGlscydcbmV4cG9ydCB7IFhtbERvY3VtZW50LCBYbWxFbGVtZW50IH0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5cbmV4cG9ydCBjbGFzcyBYbWxQYXJzZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlcyBhIFhNTCBkb2N1bWVudCBhcyBzdHJpbmcsIHJldHVybiBhIGRvY3VtZW50IG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VYbWxTdHJpbmcoeG1sU3RyaW5nOiBzdHJpbmcpOiBYbWxEb2N1bWVudCB7XG4gIGxldCBkb2MgPSBudWxsXG4gIHRyeSB7XG4gICAgZG9jID0gcGFyc2VYbWwoeG1sU3RyaW5nKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IFhtbFBhcnNlRXJyb3IoZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogZSlcbiAgfVxuICByZXR1cm4gZG9jXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEb2N1bWVudChyb290RWw6IFhtbEVsZW1lbnQpOiBYbWxEb2N1bWVudCB7XG4gIHJvb3RFbC5hdHRyaWJ1dGVzID0gcm9vdEVsLmF0dHJpYnV0ZXMgfHwge31cblxuICBmdW5jdGlvbiBjb2xsZWN0TmFtZXNwYWNlRnJvbU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgbmFtZXNwYWNlID0gZXh0cmFjdE5hbWVzcGFjZShuYW1lKVxuICAgIGlmIChuYW1lc3BhY2UgPT09ICd4bWxucycgfHwgbmFtZXNwYWNlID09PSBudWxsKSByZXR1cm5cbiAgICBpZiAocm9vdEVsLmF0dHJpYnV0ZXNbYHhtbG5zOiR7bmFtZXNwYWNlfWBdKSByZXR1cm5cbiAgICBpZiAoIU5BTUVTUEFDRVNbbmFtZXNwYWNlXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBrbm93biBVUkkgZm9yIG5hbWVzcGFjZSAke25hbWVzcGFjZX1gKVxuICAgIH1cbiAgICByb290RWwuYXR0cmlidXRlc1tgeG1sbnM6JHtuYW1lc3BhY2V9YF0gPSBOQU1FU1BBQ0VTW25hbWVzcGFjZV1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbGxlY3ROYW1lc3BhY2VzKGVsOiBYbWxFbGVtZW50KSB7XG4gICAgY29sbGVjdE5hbWVzcGFjZUZyb21OYW1lKGVsLm5hbWUpXG4gICAgZm9yIChjb25zdCBhdHRyIGluIGVsLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbGxlY3ROYW1lc3BhY2VGcm9tTmFtZShhdHRyKVxuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbiA9IGFsbENoaWxkcmVuRWxlbWVudChlbClcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGNvbGxlY3ROYW1lc3BhY2VzKVxuICB9XG5cbiAgY29sbGVjdE5hbWVzcGFjZXMocm9vdEVsKVxuICByZXR1cm4gbmV3IFhtbERvY3VtZW50KFtyb290RWxdKVxufVxuXG4vKipcbiAqIFdpbGwgZG8gbm90aGluZyBpZiBubyBuYW1lc3BhY2UgcHJlc2VudFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBOYW1lc3BhY2UobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY29sb24gPSBuYW1lLmluZGV4T2YoJzonKVxuICByZXR1cm4gY29sb24gPiAtMSA/IG5hbWUuc3Vic3RyaW5nKGNvbG9uICsgMSkgOiBuYW1lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lc3BhY2UobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY29sb24gPSBuYW1lLmluZGV4T2YoJzonKVxuICByZXR1cm4gY29sb24gPiAtMSA/IG5hbWUuc3Vic3RyaW5nKDAsIGNvbG9uKSA6ICcnXG59XG5cbmZ1bmN0aW9uIGdldEVsZW1lbnROYW1lKGVsZW1lbnQ6IFhtbEVsZW1lbnQpOiBzdHJpbmcge1xuICByZXR1cm4gZWxlbWVudC5uYW1lIHx8ICcnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290RWxlbWVudCh4bWxEb2M6IFhtbERvY3VtZW50KTogWG1sRWxlbWVudCB7XG4gIHJldHVybiB4bWxEb2MuY2hpbGRyZW4uZmluZCgoZWwpID0+IGVsIGluc3RhbmNlb2YgWG1sRWxlbWVudCkgYXMgWG1sRWxlbWVudFxufVxuXG4vKipcbiAqIFdpbGwgcmV0dXJuIGFsbCBtYXRjaGluZyBlbGVtZW50cyAobmFtZXNwYWNlIHdpbGwgYmUgaWdub3JlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDaGlsZHJlbkVsZW1lbnQoXG4gIG5hbWU6IHN0cmluZyxcbiAgbmVzdGVkID0gdHJ1ZVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgQXJyYXk8WG1sRWxlbWVudD4+IHtcbiAgcmV0dXJuIChlbCkgPT4ge1xuICAgIGNvbnN0IHN0cmlwcGVkTmFtZSA9IHN0cmlwTmFtZXNwYWNlKG5hbWUpXG4gICAgZnVuY3Rpb24gcmVkdWNlcihwcmV2LCBjdXJyKSB7XG4gICAgICBpZiAoc3RyaXBOYW1lc3BhY2UoZ2V0RWxlbWVudE5hbWUoY3VycikpID09PSBzdHJpcHBlZE5hbWUpIHtcbiAgICAgICAgcHJldi5wdXNoKGN1cnIpXG4gICAgICB9XG5cbiAgICAgIGlmIChuZXN0ZWQgJiYgQXJyYXkuaXNBcnJheShjdXJyLmNoaWxkcmVuKSkge1xuICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmN1cnIuY2hpbGRyZW4ucmVkdWNlKHJlZHVjZXIsIFtdKV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsICYmIEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pXG4gICAgICA/IGVsLmNoaWxkcmVuLnJlZHVjZShyZWR1Y2VyLCBbXSlcbiAgICAgIDogW11cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZENoaWxkRWxlbWVudChcbiAgbmFtZTogc3RyaW5nLFxuICBuZXN0ZWQgPSB0cnVlXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWwpID0+IGZpbmRDaGlsZHJlbkVsZW1lbnQobmFtZSwgbmVzdGVkKShlbClbMF0gfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsQ2hpbGRyZW5FbGVtZW50KGVsZW1lbnQ6IFhtbEVsZW1lbnQpOiBBcnJheTxYbWxFbGVtZW50PiB7XG4gIGlmICghZWxlbWVudCB8fCAhQXJyYXkuaXNBcnJheShlbGVtZW50LmNoaWxkcmVuKSkgcmV0dXJuIFtdXG4gIHJldHVybiBbXG4gICAgLi4uZWxlbWVudC5jaGlsZHJlbi5maWx0ZXIoKGVsKSA9PiBlbCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQpLFxuICBdIGFzIEFycmF5PFhtbEVsZW1lbnQ+XG59XG5cbi8qKlxuICogV2lsbCByZXR1cm4gYWxsIG1hdGNoaW5nIGVsZW1lbnRzIG5lc3RlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuXG4gKiBuYW1lcyAoc2ltaWxhciB0byBhIHBhdGgpLCBzdGFydGluZyBmb3JtIHRoZSBpbnB1dCBlbGVtZW50O1xuICogcmV0dXJucyBhbiBlbXB0eSBhcnJheSBpZiBubyBtYXRjaGluZyBlbGVtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTmVzdGVkRWxlbWVudHMoXG4gIC4uLmVsZW1lbnROYW1lczogc3RyaW5nW11cbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIEFycmF5PFhtbEVsZW1lbnQ+PiB7XG4gIHJldHVybiAoZWwpID0+IHtcbiAgICBmdW5jdGlvbiBsb29rRm9yKGVsTmFtZUluZGV4OiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IHN0cmlwcGVkTmFtZSA9IHN0cmlwTmFtZXNwYWNlKGVsZW1lbnROYW1lc1tlbE5hbWVJbmRleF0pXG4gICAgICByZXR1cm4gKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgaWYgKHN0cmlwTmFtZXNwYWNlKGdldEVsZW1lbnROYW1lKGN1cnIpKSAhPT0gc3RyaXBwZWROYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxOYW1lSW5kZXggPT09IGVsZW1lbnROYW1lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCBjdXJyXVxuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnIuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAuLi5jdXJyLmNoaWxkcmVuLnJlZHVjZShsb29rRm9yKGVsTmFtZUluZGV4ICsgMSksIFtdKSxcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZWwgJiYgQXJyYXkuaXNBcnJheShlbC5jaGlsZHJlbilcbiAgICAgID8gZWwuY2hpbGRyZW4ucmVkdWNlKGxvb2tGb3IoMCksIFtdKVxuICAgICAgOiBbXVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTmVzdGVkRWxlbWVudChcbiAgLi4uZWxlbWVudE5hbWVzOiBzdHJpbmdbXVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsKSA9PiB7XG4gICAgY29uc3QgZm91bmQgPSBmaW5kTmVzdGVkRWxlbWVudHMoLi4uZWxlbWVudE5hbWVzKShlbClcbiAgICByZXR1cm4gZm91bmQubGVuZ3RoID8gZm91bmRbMF0gOiBudWxsXG4gIH1cbn1cblxuLy8gV2lsbCBsb29rIHRocm91Z2ggYWxsIHRoZSBwYXJlbnRzOyByZXR1cm5zIG51bGwgaWYgbm8gbWF0Y2hpbmcgcGFyZW50IGZvdW5kLlxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQYXJlbnQoXG4gIHBhcmVudE5hbWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsKSA9PiB7XG4gICAgbGV0IHBhcmVudDogWG1sRWxlbWVudCB8IFhtbERvY3VtZW50ID0gZWwucGFyZW50IGFzIFhtbEVsZW1lbnRcbiAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQpIHtcbiAgICAgIGlmIChzdHJpcE5hbWVzcGFjZShnZXRFbGVtZW50TmFtZShwYXJlbnQpKSA9PT0gc3RyaXBOYW1lc3BhY2UocGFyZW50TmFtZSkpXG4gICAgICAgIHJldHVybiBwYXJlbnRcbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFRleHQoKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgc3RyaW5nPiB7XG4gIHJldHVybiAoZWwpID0+IHtcbiAgICBjb25zdCB0ZXh0Tm9kZSA9XG4gICAgICBlbCAmJiBBcnJheS5pc0FycmF5KGVsLmNoaWxkcmVuKVxuICAgICAgICA/IChlbC5jaGlsZHJlbi5maW5kKChub2RlKSA9PiBub2RlLnR5cGUgPT09ICd0ZXh0JykgYXMgWG1sVGV4dClcbiAgICAgICAgOiBudWxsXG4gICAgcmV0dXJuIHRleHROb2RlID8gdGV4dE5vZGUudGV4dCA6IG51bGxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEF0dHJpYnV0ZShcbiAgYXR0ck5hbWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgc3RyaW5nPiB7XG4gIHJldHVybiAoZWwpID0+IChlbCAmJiBlbC5hdHRyaWJ1dGVzW2F0dHJOYW1lXSkgfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24geG1sVG9TdHJpbmcoXG4gIGVsOiBYbWxFbGVtZW50IHwgWG1sVGV4dCB8IFhtbENvbW1lbnQgfCBYbWxEb2N1bWVudCxcbiAgaW5kZW50YXRpb25MZXZlbCA9IDBcbikge1xuICBpZiAoZWwgaW5zdGFuY2VvZiBYbWxEb2N1bWVudClcbiAgICByZXR1cm4gYDw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PiR7eG1sVG9TdHJpbmcoXG4gICAgICBlbC5jaGlsZHJlblswXVxuICAgICl9YFxuICBpZiAoZWwgaW5zdGFuY2VvZiBYbWxUZXh0KSB7XG4gICAgY29uc3QgdGV4dCA9IGVsLnRleHRcbiAgICBjb25zdCBpc0VtcHR5ID0gIXRleHQgfHwgdGV4dC5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJykgPT09ICcnXG4gICAgaWYgKGlzRW1wdHkpIHJldHVybiAnJ1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKVxuICB9XG4gIGlmICghKGVsIGluc3RhbmNlb2YgWG1sRWxlbWVudCkpIHJldHVybiBgPCEtLSB1bmtub3duIC0tPmBcblxuICBjb25zdCBwYWRkaW5nID0gJyAgICAnLnJlcGVhdChpbmRlbnRhdGlvbkxldmVsKVxuICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pXG4gICAgPyBlbC5jaGlsZHJlblxuICAgICAgICAubWFwKChlbCkgPT4geG1sVG9TdHJpbmcoZWwsIGluZGVudGF0aW9uTGV2ZWwgKyAxKSlcbiAgICAgICAgLmZpbHRlcigoZWwpID0+IGVsICE9PSAnJylcbiAgICAgICAgLm1hcCgoZWxTdHJpbmcsIGluZGV4LCBhcnJheSkgPT5cbiAgICAgICAgICBpbmRleCA8IGFycmF5Lmxlbmd0aCAtIDEgPyBlbFN0cmluZy5yZXBsYWNlKC9cXG5cXHMqJC9nLCAnJykgOiBlbFN0cmluZ1xuICAgICAgICApXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogJydcbiAgY29uc3QgYXR0cnMgPSBPYmplY3Qua2V5cyhlbC5hdHRyaWJ1dGVzKS5yZWR1Y2UoXG4gICAgKHByZXYsIGN1cnIpID0+IHByZXYgKyBgICR7Y3Vycn09XCIke2VsLmF0dHJpYnV0ZXNbY3Vycl19XCJgLFxuICAgICcnXG4gIClcbiAgY29uc3QgcGFyZW50UGFkZGluZyA9ICcgICAgJy5yZXBlYXQoTWF0aC5tYXgoMCwgaW5kZW50YXRpb25MZXZlbCAtIDEpKVxuICBpZiAoY2hpbGRyZW4gPT09ICcnKSB7XG4gICAgcmV0dXJuIGBcbiR7cGFkZGluZ308JHtlbC5uYW1lfSR7YXR0cnN9Lz5cbiR7cGFyZW50UGFkZGluZ31gXG4gIH1cbiAgcmV0dXJuIGBcbiR7cGFkZGluZ308JHtlbC5uYW1lfSR7YXR0cnN9PiR7Y2hpbGRyZW59PC8ke2VsLm5hbWV9PlxuJHtwYXJlbnRQYWRkaW5nfWBcbn1cblxuLyoqXG4gKiBAcGFyYW0gbmFtZVxuICogQHJldHVybnMgbmFtZXNwYWNlLCBudWxsIGlmIG5vbmUgZm91bmRcbiAqL1xuZnVuY3Rpb24gZXh0cmFjdE5hbWVzcGFjZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgY29sb24gPSBuYW1lLmluZGV4T2YoJzonKVxuICByZXR1cm4gY29sb24gPiAtMSA/IG5hbWUuc3Vic3RyaW5nKDAsIGNvbG9uKSA6IG51bGxcbn1cblxuY29uc3QgTkFNRVNQQUNFUyA9IHtcbiAgZ21kOiAnaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9nbWQnLFxuICBnY286ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L2djbycsXG4gIGdmYzogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ2ZjJyxcbiAgZ21sOiAnaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC9nbWwvMy4yJyxcbiAgeHNpOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UnLFxuICBzcnY6ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L3NydicsXG4gIGdteDogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ214JyxcbiAgZ3RzOiAnaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9ndHMnLFxuICBnc3I6ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L2dzcicsXG4gIGdtaTogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ21pJyxcbiAgeGxpbms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyxcbiAgbWRiOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZGIvMi4wJyxcbiAgbWRxOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTE1Ny8tMi9tZHEvMS4wJyxcbiAgbXNyOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tc3IvMi4wJyxcbiAgbXJzOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcnMvMS4wJyxcbiAgbW1pOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tbWkvMS4wJyxcbiAgbXJsOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmwvMi4wJyxcbiAgbWR0OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZHQvMi4wJyxcbiAgbXJkOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmQvMS4wJyxcbiAgbWRzOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZHMvMi4wJyxcbiAgbXBjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcGMvMS4wJyxcbiAgbWNjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tY2MvMS4wJyxcbiAgbWFjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tYWMvMi4wJyxcbiAgbWNvOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tY28vMS4wJyxcbiAgbWRhOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZGEvMS4wJyxcbiAgbWV4OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZXgvMS4wJyxcbiAgZ2V4OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9nZXgvMS4wJyxcbiAgZ2N4OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9nY3gvMS4wJyxcbiAgbWFzOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tYXMvMS4wJyxcbiAgbXJpOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmkvMS4wJyxcbiAgY2l0OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9jaXQvMi4wJyxcbiAgY2F0OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9jYXQvMS4wJyxcbiAgbGFuOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9sYW4vMS4wJyxcbiAgbXJjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmMvMi4wJyxcbn1cblxuLyoqXG4gKiBAcGFyYW0gbmFtZSBGdWxsIG5hbWUgd2l0aCBuYW1lc3BhY2UsIGUuZy46IGdtZDpNRF9NZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudChcbiAgbmFtZTogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjx2b2lkLCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoKSA9PiBuZXcgWG1sRWxlbWVudChuYW1lLCB7fSwgW10pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRBdHRyaWJ1dGUoXG4gIG5hbWU6IHN0cmluZyxcbiAgdmFsdWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBlbGVtZW50LmF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZVxuICAgIHJldHVybiBlbGVtZW50XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFRyZWVSb290KGVsZW1lbnQ6IFhtbEVsZW1lbnQpOiBYbWxFbGVtZW50IHtcbiAgbGV0IHJvb3QgPSBlbGVtZW50XG4gIHdoaWxlIChyb290LnBhcmVudCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQpIHtcbiAgICByb290ID0gcm9vdC5wYXJlbnRcbiAgfVxuICByZXR1cm4gcm9vdFxufVxuXG4vLyBzdGF5cyBvbiB0aGUgcGFyZW50IGVsZW1lbnRcbi8vIGlmIHRoZSBnaXZlbiBlbGVtZW50cyBhcmUgcGFydCBvZiBhIHN1YnRyZWUsIHdpbGwgYWRkIHRoZSByb290IG9mIHN1YnRyZWVcbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDaGlsZHJlbihcbiAgLi4uY2hpbGRyZW5GbnM6IEFycmF5PENoYWluYWJsZUZ1bmN0aW9uPHZvaWQsIFhtbEVsZW1lbnQ+PlxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBudWxsXG4gICAgZWxlbWVudC5jaGlsZHJlbi5wdXNoKC4uLmNoaWxkcmVuRm5zLm1hcCgoZm4pID0+IGZuKCkpLm1hcChnZXRUcmVlUm9vdCkpXG4gICAgZWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKChlbCkgPT4gKGVsLnBhcmVudCA9IGVsZW1lbnQpKVxuICAgIHJldHVybiBlbGVtZW50XG4gIH1cbn1cblxuLy8gc3dpdGNoIHRvIHRoZSB0aXAgb2YgdGhlIHN1YnRyZWVcbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDaGlsZFRyZWUoXG4gIGNoaWxkcmVuRm46IENoYWluYWJsZUZ1bmN0aW9uPHZvaWQsIFhtbEVsZW1lbnQ+XG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0cmVlVGlwID0gY2hpbGRyZW5GbigpXG4gICAgY29uc3QgdHJlZVJvb3QgPSBnZXRUcmVlUm9vdCh0cmVlVGlwKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4ucHVzaCh0cmVlUm9vdClcbiAgICB0cmVlUm9vdC5wYXJlbnQgPSBlbGVtZW50XG4gICAgcmV0dXJuIHRyZWVUaXBcbiAgfVxufVxuXG4vLyBzd2l0Y2hlcyB0byB0aGUgY2hpbGQgZWxlbWVudFxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoaWxkKFxuICBjaGlsZE5hbWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBudWxsXG4gICAgY29uc3QgY2hpbGQgPSBjcmVhdGVFbGVtZW50KGNoaWxkTmFtZSkoKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4ucHVzaChjaGlsZClcbiAgICBjaGlsZC5wYXJlbnQgPSBlbGVtZW50XG4gICAgcmV0dXJuIGNoaWxkXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDaGlsZE9yQ3JlYXRlKFxuICBuYW1lOiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIGZhbGxiYWNrKGZpbmRDaGlsZEVsZW1lbnQobmFtZSwgZmFsc2UpLCBjcmVhdGVDaGlsZChuYW1lKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKFxuICAuLi5lbGVtZW50TmFtZXM6IHN0cmluZ1tdXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGxldCBjdXJyZW50ID0gZWxlbWVudFxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBlbGVtZW50TmFtZXMpIHtcbiAgICAgIGN1cnJlbnQgPSBmaW5kQ2hpbGRPckNyZWF0ZShuYW1lKShjdXJyZW50KVxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUZXh0Q29udGVudChcbiAgdGV4dDogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0ZXh0RWwgPSBlbGVtZW50LmNoaWxkcmVuLmZpbmQoXG4gICAgICAoZWwpID0+IGVsIGluc3RhbmNlb2YgWG1sVGV4dFxuICAgICkgYXMgWG1sVGV4dFxuICAgIGlmICghdGV4dEVsKSB7XG4gICAgICBlbGVtZW50LmNoaWxkcmVuLnB1c2gobmV3IFhtbFRleHQodGV4dCkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRleHRFbC50ZXh0ID0gdGV4dFxuICAgIH1cbiAgICByZXR1cm4gZWxlbWVudFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVBbGxDaGlsZHJlbigpOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIG51bGxcbiAgICBlbGVtZW50LmNoaWxkcmVuLmZvckVhY2goKGVsKSA9PiAoZWwucGFyZW50ID0gbnVsbCkpXG4gICAgZWxlbWVudC5jaGlsZHJlbiA9IFtdXG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgfVxufVxuXG4vLyBzdGF5cyBvbiB0aGUgc2FtZSBlbGVtZW50XG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW5CeU5hbWUoXG4gIG5hbWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBudWxsXG4gICAgY29uc3Qgc3RyaXBwZWROYW1lID0gc3RyaXBOYW1lc3BhY2UobmFtZSlcbiAgICBjb25zdCByZW1vdmVkID0gZWxlbWVudC5jaGlsZHJlbi5maWx0ZXIoXG4gICAgICAoY2hpbGQpID0+XG4gICAgICAgIGNoaWxkIGluc3RhbmNlb2YgWG1sRWxlbWVudCAmJlxuICAgICAgICBzdHJpcE5hbWVzcGFjZShnZXRFbGVtZW50TmFtZShjaGlsZCkpID09PSBzdHJpcHBlZE5hbWVcbiAgICApXG4gICAgcmVtb3ZlZC5mb3JFYWNoKChlbCkgPT4gKGVsLnBhcmVudCA9IG51bGwpKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4gPSBlbGVtZW50LmNoaWxkcmVuLmZpbHRlcihcbiAgICAgIChjaGlsZCkgPT4gcmVtb3ZlZC5pbmRleE9mKGNoaWxkKSA9PT0gLTFcbiAgICApXG4gICAgcmV0dXJuIGVsZW1lbnRcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW4oXG4gIGNoaWxkcmVuRm46IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIEFycmF5PFhtbEVsZW1lbnQ+PlxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBjaGlsZHJlblRvUmVtb3ZlID0gY2hpbGRyZW5GbihlbGVtZW50KVxuICAgIGNoaWxkcmVuVG9SZW1vdmUuZm9yRWFjaCgoY2hpbGQpID0+IChjaGlsZC5wYXJlbnQgPSBudWxsKSlcbiAgICBlbGVtZW50LmNoaWxkcmVuID0gZWxlbWVudC5jaGlsZHJlbi5maWx0ZXIoXG4gICAgICAoY2hpbGQpID0+XG4gICAgICAgIGNoaWxkIGluc3RhbmNlb2YgWG1sRWxlbWVudCAmJiBjaGlsZHJlblRvUmVtb3ZlLmluZGV4T2YoY2hpbGQpID09PSAtMVxuICAgIClcbiAgICByZXR1cm4gZWxlbWVudFxuICB9XG59XG5cbi8qKlxuICogUmVuYW1lcyBlbGVtZW50cyBpbiB0aGUgWE1MIHRyZWUgYWNjb3JkaW5nIHRvIHRoZSBtYXBcbiAqIEVpdGhlciBzcGVjaWZ5IGEgZnVsbCBlbGVtZW50IG5hbWUgbGlrZSAnZ21kOk1EX01ldGFkYXRhJyBvciBzaW1wbHkgYSBuYW1lc3BhY2UgbGlrZSAnZ21kJ1xuICogQHBhcmFtIHJvb3RFbGVtZW50XG4gKiBAcGFyYW0gcmVwbGFjZU1hcFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuYW1lRWxlbWVudHMoXG4gIHJvb3RFbGVtZW50OiBYbWxFbGVtZW50LFxuICByZXBsYWNlTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4pIHtcbiAgZnVuY3Rpb24gZG9SZXBsYWNlKGVsZW1lbnQ6IFhtbEVsZW1lbnQpIHtcbiAgICBpZiAoZWxlbWVudC5uYW1lIGluIHJlcGxhY2VNYXApIHtcbiAgICAgIGVsZW1lbnQubmFtZSA9IHJlcGxhY2VNYXBbZWxlbWVudC5uYW1lXVxuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5uYW1lICYmIGdldE5hbWVzcGFjZShlbGVtZW50Lm5hbWUpIGluIHJlcGxhY2VNYXApIHtcbiAgICAgIGVsZW1lbnQubmFtZSA9IGAke1xuICAgICAgICByZXBsYWNlTWFwW2dldE5hbWVzcGFjZShlbGVtZW50Lm5hbWUpXVxuICAgICAgfToke3N0cmlwTmFtZXNwYWNlKGVsZW1lbnQubmFtZSl9YFxuICAgIH1cbiAgICBpZiAoZWxlbWVudC5jaGlsZHJlbikge1xuICAgICAgZWxlbWVudC5jaGlsZHJlbi5mb3JFYWNoKGRvUmVwbGFjZSlcbiAgICB9XG4gIH1cbiAgZG9SZXBsYWNlKHJvb3RFbGVtZW50KVxuICByZXR1cm4gcm9vdEVsZW1lbnRcbn1cbiJdfQ==
441
+ /**
442
+ * This function use the DOMParser to check if the given xmlString is a valid XML file or throw an error
443
+ * (Generated by chatGPT)
444
+ * @param xmlString
445
+ */
446
+ export function assertValidXml(xmlString) {
447
+ const parser = new DOMParser();
448
+ const xmlDoc = parser.parseFromString(xmlString, 'application/xml');
449
+ const parserError = xmlDoc.querySelector('parsererror');
450
+ if (parserError) {
451
+ console.error(parserError);
452
+ throw new Error('File is not a valid XML.');
453
+ }
454
+ return xmlDoc;
455
+ }
456
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIveG1sLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBRVIsV0FBVyxFQUNYLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFM0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxLQUFLO0lBQ3RDLFlBQVksT0FBTztRQUNqQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDaEIsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLFNBQWlCO0lBQzlDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQTtJQUNkLElBQUk7UUFDRixHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0tBQzFCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLElBQUksYUFBYSxDQUFDLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQzVEO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFrQjtJQUMvQyxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFBO0lBRTNDLFNBQVMsd0JBQXdCLENBQUMsSUFBWTtRQUM1QyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QyxJQUFJLFNBQVMsS0FBSyxPQUFPLElBQUks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QUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUN4QzthQUFNLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsRUFBRTtZQUNuRSxPQUFPLENBQUMsSUFBSSxHQUFHLEdBQ2IsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQ3ZDLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO1NBQ25DO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQ3BDO0lBQ0gsQ0FBQztJQUNELFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN0QixPQUFPLFdBQVcsQ0FBQTtBQUNwQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBaUI7SUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQTtJQUM5QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO0lBQ25FLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUE7SUFFdkQsSUFBSSxXQUFXLEVBQUU7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtLQUM1QztJQUVELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHBhcnNlWG1sLFxuICBYbWxDb21tZW50LFxuICBYbWxEb2N1bWVudCxcbiAgWG1sRWxlbWVudCxcbiAgWG1sVGV4dCxcbn0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5pbXBvcnQgeyBDaGFpbmFibGVGdW5jdGlvbiwgZmFsbGJhY2sgfSBmcm9tICcuL2Z1bmN0aW9uLXV0aWxzJ1xuXG5leHBvcnQgeyBYbWxEb2N1bWVudCwgWG1sRWxlbWVudCB9IGZyb20gJ0ByZ3JvdmUvcGFyc2UteG1sJ1xuXG5leHBvcnQgY2xhc3MgWG1sUGFyc2VFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpXG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBYTUwgZG9jdW1lbnQgYXMgc3RyaW5nLCByZXR1cm4gYSBkb2N1bWVudCBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWG1sU3RyaW5nKHhtbFN0cmluZzogc3RyaW5nKTogWG1sRG9jdW1lbnQge1xuICBsZXQgZG9jID0gbnVsbFxuICB0cnkge1xuICAgIGRvYyA9IHBhcnNlWG1sKHhtbFN0cmluZylcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBYbWxQYXJzZUVycm9yKGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IGUpXG4gIH1cbiAgcmV0dXJuIGRvY1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnQocm9vdEVsOiBYbWxFbGVtZW50KTogWG1sRG9jdW1lbnQge1xuICByb290RWwuYXR0cmlidXRlcyA9IHJvb3RFbC5hdHRyaWJ1dGVzIHx8IHt9XG5cbiAgZnVuY3Rpb24gY29sbGVjdE5hbWVzcGFjZUZyb21OYW1lKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IGV4dHJhY3ROYW1lc3BhY2UobmFtZSlcbiAgICBpZiAobmFtZXNwYWNlID09PSAneG1sbnMnIHx8IG5hbWVzcGFjZSA9PT0gbnVsbCkgcmV0dXJuXG4gICAgaWYgKHJvb3RFbC5hdHRyaWJ1dGVzW2B4bWxuczoke25hbWVzcGFjZX1gXSkgcmV0dXJuXG4gICAgaWYgKCFOQU1FU1BBQ0VTW25hbWVzcGFjZV0pIHtcbiAgICAgIC8vIHRoZSBuYW1lc3BhY2UgaXMgdW5rbm93biBidXQgaXQgbWlnaHQgc3RpbGwgYmUgZGVjbGFyZWQgY29ycmVjdGx5OiBpZ25vcmUgaXRcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICByb290RWwuYXR0cmlidXRlc1tgeG1sbnM6JHtuYW1lc3BhY2V9YF0gPSBOQU1FU1BBQ0VTW25hbWVzcGFjZV1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbGxlY3ROYW1lc3BhY2VzKGVsOiBYbWxFbGVtZW50KSB7XG4gICAgY29sbGVjdE5hbWVzcGFjZUZyb21OYW1lKGVsLm5hbWUpXG4gICAgZm9yIChjb25zdCBhdHRyIGluIGVsLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbGxlY3ROYW1lc3BhY2VGcm9tTmFtZShhdHRyKVxuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbiA9IGFsbENoaWxkcmVuRWxlbWVudChlbClcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGNvbGxlY3ROYW1lc3BhY2VzKVxuICB9XG5cbiAgY29sbGVjdE5hbWVzcGFjZXMocm9vdEVsKVxuICByZXR1cm4gbmV3IFhtbERvY3VtZW50KFtyb290RWxdKVxufVxuXG4vKipcbiAqIFdpbGwgZG8gbm90aGluZyBpZiBubyBuYW1lc3BhY2UgcHJlc2VudFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBOYW1lc3BhY2UobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY29sb24gPSBuYW1lLmluZGV4T2YoJzonKVxuICByZXR1cm4gY29sb24gPiAtMSA/IG5hbWUuc3Vic3RyaW5nKGNvbG9uICsgMSkgOiBuYW1lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lc3BhY2UobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgY29sb24gPSBuYW1lLmluZGV4T2YoJzonKVxuICByZXR1cm4gY29sb24gPiAtMSA/IG5hbWUuc3Vic3RyaW5nKDAsIGNvbG9uKSA6ICcnXG59XG5cbmZ1bmN0aW9uIGdldEVsZW1lbnROYW1lKGVsZW1lbnQ6IFhtbEVsZW1lbnQpOiBzdHJpbmcge1xuICByZXR1cm4gZWxlbWVudC5uYW1lIHx8ICcnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290RWxlbWVudCh4bWxEb2M6IFhtbERvY3VtZW50KTogWG1sRWxlbWVudCB7XG4gIHJldHVybiB4bWxEb2MuY2hpbGRyZW4uZmluZCgoZWwpID0+IGVsIGluc3RhbmNlb2YgWG1sRWxlbWVudCkgYXMgWG1sRWxlbWVudFxufVxuXG4vKipcbiAqIFdpbGwgcmV0dXJuIGFsbCBtYXRjaGluZyBlbGVtZW50cyAobmFtZXNwYWNlIHdpbGwgYmUgaWdub3JlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDaGlsZHJlbkVsZW1lbnQoXG4gIG5hbWU6IHN0cmluZyxcbiAgbmVzdGVkID0gdHJ1ZVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgQXJyYXk8WG1sRWxlbWVudD4+IHtcbiAgcmV0dXJuIChlbCkgPT4ge1xuICAgIGNvbnN0IHN0cmlwcGVkTmFtZSA9IHN0cmlwTmFtZXNwYWNlKG5hbWUpXG4gICAgZnVuY3Rpb24gcmVkdWNlcihwcmV2LCBjdXJyKSB7XG4gICAgICBpZiAoc3RyaXBOYW1lc3BhY2UoZ2V0RWxlbWVudE5hbWUoY3VycikpID09PSBzdHJpcHBlZE5hbWUpIHtcbiAgICAgICAgcHJldi5wdXNoKGN1cnIpXG4gICAgICB9XG5cbiAgICAgIGlmIChuZXN0ZWQgJiYgQXJyYXkuaXNBcnJheShjdXJyLmNoaWxkcmVuKSkge1xuICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmN1cnIuY2hpbGRyZW4ucmVkdWNlKHJlZHVjZXIsIFtdKV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsICYmIEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pXG4gICAgICA/IGVsLmNoaWxkcmVuLnJlZHVjZShyZWR1Y2VyLCBbXSlcbiAgICAgIDogW11cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZENoaWxkRWxlbWVudChcbiAgbmFtZTogc3RyaW5nLFxuICBuZXN0ZWQgPSB0cnVlXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWwpID0+IGZpbmRDaGlsZHJlbkVsZW1lbnQobmFtZSwgbmVzdGVkKShlbClbMF0gfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsQ2hpbGRyZW5FbGVtZW50KGVsZW1lbnQ6IFhtbEVsZW1lbnQpOiBBcnJheTxYbWxFbGVtZW50PiB7XG4gIGlmICghZWxlbWVudCB8fCAhQXJyYXkuaXNBcnJheShlbGVtZW50LmNoaWxkcmVuKSkgcmV0dXJuIFtdXG4gIHJldHVybiBbXG4gICAgLi4uZWxlbWVudC5jaGlsZHJlbi5maWx0ZXIoKGVsKSA9PiBlbCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQpLFxuICBdIGFzIEFycmF5PFhtbEVsZW1lbnQ+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdENoaWxkRWxlbWVudChlbGVtZW50OiBYbWxFbGVtZW50KTogWG1sRWxlbWVudCB7XG4gIHJldHVybiBhbGxDaGlsZHJlbkVsZW1lbnQoZWxlbWVudClbMF0gPz8gbnVsbFxufVxuXG4vKipcbiAqIFdpbGwgcmV0dXJuIGFsbCBtYXRjaGluZyBlbGVtZW50cyBuZXN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlblxuICogbmFtZXMgKHNpbWlsYXIgdG8gYSBwYXRoKSwgc3RhcnRpbmcgZm9ybSB0aGUgaW5wdXQgZWxlbWVudDtcbiAqIHJldHVybnMgYW4gZW1wdHkgYXJyYXkgaWYgbm8gbWF0Y2hpbmcgZWxlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE5lc3RlZEVsZW1lbnRzKFxuICAuLi5lbGVtZW50TmFtZXM6IHN0cmluZ1tdXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBBcnJheTxYbWxFbGVtZW50Pj4ge1xuICByZXR1cm4gKGVsKSA9PiB7XG4gICAgZnVuY3Rpb24gbG9va0ZvcihlbE5hbWVJbmRleDogbnVtYmVyKSB7XG4gICAgICBjb25zdCBzdHJpcHBlZE5hbWUgPSBzdHJpcE5hbWVzcGFjZShlbGVtZW50TmFtZXNbZWxOYW1lSW5kZXhdKVxuICAgICAgcmV0dXJuIChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIGlmIChzdHJpcE5hbWVzcGFjZShnZXRFbGVtZW50TmFtZShjdXJyKSkgIT09IHN0cmlwcGVkTmFtZSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsTmFtZUluZGV4ID09PSBlbGVtZW50TmFtZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgY3Vycl1cbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyLmNoaWxkcmVuKSkge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgLi4uY3Vyci5jaGlsZHJlbi5yZWR1Y2UobG9va0ZvcihlbE5hbWVJbmRleCArIDEpLCBbXSksXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsICYmIEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pXG4gICAgICA/IGVsLmNoaWxkcmVuLnJlZHVjZShsb29rRm9yKDApLCBbXSlcbiAgICAgIDogW11cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZE5lc3RlZEVsZW1lbnQoXG4gIC4uLmVsZW1lbnROYW1lczogc3RyaW5nW11cbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbCkgPT4ge1xuICAgIGNvbnN0IGZvdW5kID0gZmluZE5lc3RlZEVsZW1lbnRzKC4uLmVsZW1lbnROYW1lcykoZWwpXG4gICAgcmV0dXJuIGZvdW5kLmxlbmd0aCA/IGZvdW5kWzBdIDogbnVsbFxuICB9XG59XG5cbi8vIFdpbGwgbG9vayB0aHJvdWdoIGFsbCB0aGUgcGFyZW50czsgcmV0dXJucyBudWxsIGlmIG5vIG1hdGNoaW5nIHBhcmVudCBmb3VuZC5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUGFyZW50KFxuICBwYXJlbnROYW1lOiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbCkgPT4ge1xuICAgIGxldCBwYXJlbnQ6IFhtbEVsZW1lbnQgfCBYbWxEb2N1bWVudCA9IGVsLnBhcmVudCBhcyBYbWxFbGVtZW50XG4gICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQgaW5zdGFuY2VvZiBYbWxFbGVtZW50KSB7XG4gICAgICBpZiAoc3RyaXBOYW1lc3BhY2UoZ2V0RWxlbWVudE5hbWUocGFyZW50KSkgPT09IHN0cmlwTmFtZXNwYWNlKHBhcmVudE5hbWUpKVxuICAgICAgICByZXR1cm4gcGFyZW50XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50XG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRUZXh0KCk6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIHN0cmluZz4ge1xuICByZXR1cm4gKGVsKSA9PiB7XG4gICAgaWYgKCFlbCkgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0ZXh0Tm9kZSA9IEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pXG4gICAgICA/IChlbC5jaGlsZHJlbi5maW5kKChub2RlKSA9PiBub2RlLnR5cGUgPT09ICd0ZXh0JykgYXMgWG1sVGV4dClcbiAgICAgIDogbnVsbFxuICAgIHJldHVybiB0ZXh0Tm9kZSA/IHRleHROb2RlLnRleHQgOiAnJ1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQXR0cmlidXRlKFxuICBhdHRyTmFtZTogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBzdHJpbmc+IHtcbiAgcmV0dXJuIChlbCkgPT4gKGVsICYmIGVsLmF0dHJpYnV0ZXNbYXR0ck5hbWVdKSB8fCBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB4bWxUb1N0cmluZyhcbiAgZWw6IFhtbEVsZW1lbnQgfCBYbWxUZXh0IHwgWG1sQ29tbWVudCB8IFhtbERvY3VtZW50LFxuICBpbmRlbnRhdGlvbkxldmVsID0gMFxuKSB7XG4gIGNvbnN0IGVuY29kZUVudGl0aWVzID0gKHRleHQ6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKVxuICB9XG4gIGlmIChlbCBpbnN0YW5jZW9mIFhtbERvY3VtZW50KVxuICAgIHJldHVybiBgPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+JHt4bWxUb1N0cmluZyhcbiAgICAgIGVsLmNoaWxkcmVuWzBdXG4gICAgKX1gXG4gIGlmIChlbCBpbnN0YW5jZW9mIFhtbFRleHQpIHtcbiAgICBjb25zdCB0ZXh0ID0gZWwudGV4dFxuICAgIGNvbnN0IGlzRW1wdHkgPSAhdGV4dCB8fCB0ZXh0LnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKSA9PT0gJydcbiAgICBpZiAoaXNFbXB0eSkgcmV0dXJuICcnXG4gICAgcmV0dXJuIGVuY29kZUVudGl0aWVzKHRleHQpXG4gIH1cbiAgaWYgKCEoZWwgaW5zdGFuY2VvZiBYbWxFbGVtZW50KSkgcmV0dXJuIGA8IS0tIHVua25vd24gLS0+YFxuXG4gIGNvbnN0IHBhZGRpbmcgPSAnICAgICcucmVwZWF0KGluZGVudGF0aW9uTGV2ZWwpXG4gIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuaXNBcnJheShlbC5jaGlsZHJlbilcbiAgICA/IGVsLmNoaWxkcmVuXG4gICAgICAgIC5tYXAoKGVsKSA9PiB4bWxUb1N0cmluZyhlbCwgaW5kZW50YXRpb25MZXZlbCArIDEpKVxuICAgICAgICAuZmlsdGVyKChlbCkgPT4gZWwgIT09ICcnKVxuICAgICAgICAubWFwKChlbFN0cmluZywgaW5kZXgsIGFycmF5KSA9PlxuICAgICAgICAgIGluZGV4IDwgYXJyYXkubGVuZ3RoIC0gMSA/IGVsU3RyaW5nLnJlcGxhY2UoL1xcblxccyokL2csICcnKSA6IGVsU3RyaW5nXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiAnJ1xuICBjb25zdCBhdHRycyA9IE9iamVjdC5rZXlzKGVsLmF0dHJpYnV0ZXMpLnJlZHVjZShcbiAgICAocHJldiwgY3VycikgPT4gcHJldiArIGAgJHtjdXJyfT1cIiR7ZW5jb2RlRW50aXRpZXMoZWwuYXR0cmlidXRlc1tjdXJyXSl9XCJgLFxuICAgICcnXG4gIClcbiAgY29uc3QgcGFyZW50UGFkZGluZyA9ICcgICAgJy5yZXBlYXQoTWF0aC5tYXgoMCwgaW5kZW50YXRpb25MZXZlbCAtIDEpKVxuICBpZiAoY2hpbGRyZW4gPT09ICcnKSB7XG4gICAgcmV0dXJuIGBcbiR7cGFkZGluZ308JHtlbC5uYW1lfSR7YXR0cnN9Lz5cbiR7cGFyZW50UGFkZGluZ31gXG4gIH1cblxuICByZXR1cm4gYFxuJHtwYWRkaW5nfTwke2VsLm5hbWV9JHthdHRyc30+JHtjaGlsZHJlbn08LyR7ZWwubmFtZX0+XG4ke3BhcmVudFBhZGRpbmd9YFxufVxuXG4vKipcbiAqIEBwYXJhbSBuYW1lXG4gKiBAcmV0dXJucyBuYW1lc3BhY2UsIG51bGwgaWYgbm9uZSBmb3VuZFxuICovXG5mdW5jdGlvbiBleHRyYWN0TmFtZXNwYWNlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBjb2xvbiA9IG5hbWUuaW5kZXhPZignOicpXG4gIHJldHVybiBjb2xvbiA+IC0xID8gbmFtZS5zdWJzdHJpbmcoMCwgY29sb24pIDogbnVsbFxufVxuXG5leHBvcnQgY29uc3QgTkFNRVNQQUNFUyA9IHtcbiAgZ21kOiAnaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9nbWQnLFxuICBnY286ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L2djbycsXG4gIGdmYzogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ2ZjJyxcbiAgZ21sOiAnaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC9nbWwvMy4yJyxcbiAgeHNpOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UnLFxuICBzcnY6ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L3NydicsXG4gIGdteDogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ214JyxcbiAgZ3RzOiAnaHR0cDovL3d3dy5pc290YzIxMS5vcmcvMjAwNS9ndHMnLFxuICBnc3I6ICdodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L2dzcicsXG4gIGdtaTogJ2h0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ21pJyxcbiAgeGxpbms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyxcbiAgbWRiOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZGIvMi4wJyxcbiAgbWRxOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTE1Ny8tMi9tZHEvMS4wJyxcbiAgbXNyOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tc3IvMi4wJyxcbiAgbXJzOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcnMvMS4wJyxcbiAgbW1pOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tbWkvMS4wJyxcbiAgbXJsOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmwvMi4wJyxcbiAgbWR0OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZHQvMi4wJyxcbiAgbXJkOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmQvMS4wJyxcbiAgbWRzOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZHMvMi4wJyxcbiAgbXBjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcGMvMS4wJyxcbiAgbWNjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tY2MvMS4wJyxcbiAgbWFjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tYWMvMi4wJyxcbiAgbWNvOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tY28vMS4wJyxcbiAgbWRhOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZGEvMS4wJyxcbiAgbWV4OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tZXgvMS4wJyxcbiAgZ2V4OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9nZXgvMS4wJyxcbiAgZ2N4OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9nY3gvMS4wJyxcbiAgbWFzOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tYXMvMS4wJyxcbiAgbXJpOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmkvMS4wJyxcbiAgY2l0OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9jaXQvMi4wJyxcbiAgY2F0OiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9jYXQvMS4wJyxcbiAgbGFuOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9sYW4vMS4wJyxcbiAgbXJjOiAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9tcmMvMi4wJyxcbiAgcmRmOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIycsXG4gIHJkZnM6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjJyxcbiAgZm9hZjogJ2h0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvJyxcbiAgeHNkOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjJyxcbiAgZGNhdDogJ2h0dHA6Ly93d3cudzMub3JnL25zL2RjYXQjJyxcbiAgZGN0OiAnaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLycsXG4gIHNrb3M6ICdodHRwOi8vd3d3LnczLm9yZy8yMDA0LzAyL3Nrb3MvY29yZSMnLFxuICBzY2hlbWFfb3JnOiAnaHR0cDovL3NjaGVtYS5vcmcvJyxcbiAgc3BkeDogJ2h0dHBzOi8vc3BkeC5vcmcvcmRmL3Rlcm1zLyMnLFxuICBhZG1zOiAnaHR0cDovL3d3dy53My5vcmcvbnMvYWRtcyMnLFxuICBkcXY6ICdodHRwOi8vd3d3LnczLm9yZy9ucy9kcXYjJyxcbiAgb3dsOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNy9vd2wjJyxcbiAgdmNhcmQ6ICdodHRwOi8vd3d3LnczLm9yZy8yMDA2L3ZjYXJkL25zIycsXG4gIHRpbWU6ICdodHRwOi8vd3d3LnczLm9yZy8yMDA2L3RpbWUjJyxcbiAgbG9jbjogJ2h0dHA6Ly93d3cudzMub3JnL25zL2xvY24jJyxcbiAgbWRjYXQ6ICdodHRwczovL2RhdGEudmxhYW5kZXJlbi5iZS9ucy9tZXRhZGF0YS1kY2F0IycsXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNpbmdsZSBlbGVtZW50LCB3aXRob3V0IHBhcmVudCBvciBjaGlsZHJlblxuICogQHBhcmFtIG5hbWUgRnVsbCBuYW1lIHdpdGggbmFtZXNwYWNlLCBlLmcuOiBnbWQ6TURfTWV0YWRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQoXG4gIG5hbWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248dm9pZCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKCkgPT4gbmV3IFhtbEVsZW1lbnQobmFtZSwge30sIFtdKVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0cmVlIG9mIG5lc3RlZCBlbGVtZW50cyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGhpZXJhcmNoeVxuICogQHBhcmFtIGVsZW1lbnROYW1lcyBGdWxsIG5hbWVzIHdpdGggbmFtZXNwYWNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmVzdGVkRWxlbWVudChcbiAgLi4uZWxlbWVudE5hbWVzOiBzdHJpbmdbXVxuKTogQ2hhaW5hYmxlRnVuY3Rpb248dm9pZCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGxldCBjdXJyZW50ID0gbnVsbFxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBlbGVtZW50TmFtZXMpIHtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50ID8gY3JlYXRlQ2hpbGQobmFtZSkoY3VycmVudCkgOiBjcmVhdGVFbGVtZW50KG5hbWUpKClcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVBdHRyaWJ1dGUoXG4gIG5hbWU6IHN0cmluZyxcbiAgdmFsdWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBlbGVtZW50LmF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZVxuICAgIHJldHVybiBlbGVtZW50XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFRyZWVSb290KGVsZW1lbnQ6IFhtbEVsZW1lbnQpOiBYbWxFbGVtZW50IHtcbiAgbGV0IHJvb3QgPSBlbGVtZW50XG4gIHdoaWxlIChyb290LnBhcmVudCBpbnN0YW5jZW9mIFhtbEVsZW1lbnQpIHtcbiAgICByb290ID0gcm9vdC5wYXJlbnRcbiAgfVxuICByZXR1cm4gcm9vdFxufVxuXG4vKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnQgcmV0dXJuZWQgYnkgdGhlIGdpdmVuIGZ1bmN0aW9uIHRvIHRoZSBjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBhY3RpdmUgb25lXG4gKiBOb3RlIHRoYXQgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRpcCBvZiBhIHN1YnRyZWUgdGhhdCB3YXMganVzdCBjcmVhdGVkIChpLmUuIG5vdCBhdHRhY2hlZCB0byB0aGUgbWFpbiBkb2N1bWVudCksXG4gKiB0aGVuIHRoZSB3aG9sZSBzdWJ0cmVlIHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCBhcyBjaGlsZHJlbiAoaW5zdGVhZCBvZiBqdXN0IHRoZSB0aXAgb2YgdGhlIHN1YnRyZWUpLlxuICogVGhlIGNyZWF0ZWQgZWxlbWVudCAob3IgdGlwIG9mIHRoZSBjcmVhdGVkIHN1YnRyZWUpIGlzIHJldHVybmVkIGFuZCBiZWNvbWVzIHRoZSBhY3RpdmUgZWxlbWVudC5cbiAqIEBwYXJhbSBjaGlsZHJlbkZuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDaGlsZFRyZWUoXG4gIGNoaWxkcmVuRm46IENoYWluYWJsZUZ1bmN0aW9uPHZvaWQsIFhtbEVsZW1lbnQ+XG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0cmVlVGlwID0gY2hpbGRyZW5GbigpXG4gICAgY29uc3QgdHJlZVJvb3QgPSBnZXRUcmVlUm9vdCh0cmVlVGlwKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4ucHVzaCh0cmVlUm9vdClcbiAgICB0cmVlUm9vdC5wYXJlbnQgPSBlbGVtZW50XG4gICAgcmV0dXJuIHRyZWVUaXBcbiAgfVxufVxuXG4vKipcbiAqIExlYXZlcyB0aGUgY3VycmVudCBlbGVtZW50IGFzIHRoZSBhY3RpdmUgb25lOyBhbGwgZWxlbWVudHMgcmV0dXJuZWQgYnkgdGhlIGdpdmVuIGZ1bmN0aW9ucyB3aWxsIGJlIGFkZGVkIGFzXG4gKiBjaGlsZHJlbiB0byB0aGlzIGN1cnJlbnQgZWxlbWVudC5cbiAqIE5vdGUgdGhhdCBpZiBhIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRpcCBvZiBhIHN1YnRyZWUgdGhhdCB3YXMganVzdCBjcmVhdGVkIChpLmUuIG5vdCBhdHRhY2hlZCB0byB0aGUgbWFpbiBkb2N1bWVudCksXG4gKiB0aGVuIHRoZSB3aG9sZSBzdWJ0cmVlIHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCBhcyBjaGlsZHJlbiAoaW5zdGVhZCBvZiBqdXN0IHRoZSB0aXAgb2YgdGhlIHN1YnRyZWUpLlxuICogQHBhcmFtIGNoaWxkcmVuRm5zIEVhY2ggZnVuY3Rpb24gdGFrZXMgdGhlIHBhcmVudCBhcyBpbnB1dCBhbmQgc2hvdWxkIHJldHVybiBhbiBlbGVtZW50OyBpZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXNcbiAqIGZhbHN5IHRoZW4gaXQgd2lsbCBiZSBpZ25vcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDaGlsZHJlbihcbiAgLi4uY2hpbGRyZW5GbnM6IEFycmF5PENoYWluYWJsZUZ1bmN0aW9uPHZvaWQsIFhtbEVsZW1lbnQ+PlxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBudWxsXG4gICAgY2hpbGRyZW5GbnMuZmlsdGVyKChmbikgPT4gZm4pLmZvckVhY2goKGZuKSA9PiBhcHBlbmRDaGlsZFRyZWUoZm4pKGVsZW1lbnQpKVxuICAgIHJldHVybiBlbGVtZW50XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVsZW1lbnQsIGFwcGVuZCBpdCB0byB0aGUgY2hpbGRyZW4gb2YgdGhlIGN1cnJlbnQgYWN0aXZlIGVsZW1lbnQgYW5kIHN3aXRjaGVzIHRvIHRoZVxuICogbmV3IGVsZW1lbnQgYXMgdGhlIGFjdGl2ZSBvbmUuXG4gKiBAcGFyYW0gY2hpbGROYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGlsZChcbiAgY2hpbGROYW1lOiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbGVtZW50KSA9PiB7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGNoaWxkID0gY3JlYXRlRWxlbWVudChjaGlsZE5hbWUpKClcbiAgICBlbGVtZW50LmNoaWxkcmVuLnB1c2goY2hpbGQpXG4gICAgY2hpbGQucGFyZW50ID0gZWxlbWVudFxuICAgIHJldHVybiBjaGlsZFxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRyZWUgb2YgbmVzdGVkIGVsZW1lbnRzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gaGllcmFyY2h5LCBhcHBlbmRzIGl0IHRvIHRoZSBjaGlsZHJlbiBvZiB0aGUgY3VycmVudFxuICogYWN0aXZlIGVsZW1lbnQgYW5kIHN3aXRjaGVzIHRvIHRoZSB0aXAgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgdHJlZSBvZiBlbGVtZW50cyBhcyB0aGUgYWN0aXZlIG9uZS5cbiAqIEBwYXJhbSBlbGVtZW50TmFtZXMgRnVsbCBuYW1lcyB3aXRoIG5hbWVzcGFjZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5lc3RlZENoaWxkKFxuICAuLi5lbGVtZW50TmFtZXM6IHN0cmluZ1tdXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGxldCBjdXJyZW50ID0gZWxlbWVudFxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBlbGVtZW50TmFtZXMpIHtcbiAgICAgIGN1cnJlbnQgPSBjcmVhdGVDaGlsZChuYW1lKShjdXJyZW50KVxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudFxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbWF0Y2hpbmcgY2hpbGRyZW4gaWYgZm91bmQsIG9yIGNyZWF0ZSBhIG5ldyBlbGVtZW50LCBhcHBlbmQgaXQgdG8gdGhlIGN1cnJlbnQgYWN0aXZlIGVsZW1lbnRcbiAqIGFuZCBzd2l0Y2ggdG8gaXQgYXMgdGhlIGFjdGl2ZSBvbmUuXG4gKiBAcGFyYW0gbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZENoaWxkT3JDcmVhdGUoXG4gIG5hbWU6IHN0cmluZ1xuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gZmFsbGJhY2soZmluZENoaWxkRWxlbWVudChuYW1lLCBmYWxzZSksIGNyZWF0ZUNoaWxkKG5hbWUpKVxufVxuXG4vKipcbiAqIEZvciBlYWNoIGVsZW1lbnQgbmFtZSBpbiB0aGUgZ2l2ZW4gaGllcmFyY2h5LCBlaXRoZXIgc3dpdGNoIHRvIGEgbWF0Y2hpbmcgZWxlbWVudCBpZiBmb3VuZCxcbiAqIG9yIGNyZWF0ZSBhIG5ldyBvbmUsIGFwcGVuZCBpdCB0byB0aGUgY2hpbGRyZW4gb2YgdGhlIHByZXZpb3VzIG9uZSBhbmQgc3dpdGNoIHRvIGl0IGFzIHRoZSBhY3RpdmUgb25lLlxuICogRXZlbnR1YWxseSwgdGhlIHRpcCBvZiB0aGUgaGllcmFyY2h5IChlaXRoZXIgZXhpc3Rpbmcgb3IgbmV3IGVsZW1lbnQpIGJlY29tZXMgdGhlIGFjdGl2ZSBlbGVtZW50LlxuICogQHBhcmFtIGVsZW1lbnROYW1lc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoXG4gIC4uLmVsZW1lbnROYW1lczogc3RyaW5nW11cbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbGVtZW50KSA9PiB7XG4gICAgbGV0IGN1cnJlbnQgPSBlbGVtZW50XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIGVsZW1lbnROYW1lcykge1xuICAgICAgY3VycmVudCA9IGZpbmRDaGlsZE9yQ3JlYXRlKG5hbWUpKGN1cnJlbnQpXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFRleHRDb250ZW50KFxuICB0ZXh0OiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbGVtZW50KSA9PiB7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IHRleHRFbCA9IGVsZW1lbnQuY2hpbGRyZW4uZmluZChcbiAgICAgIChlbCkgPT4gZWwgaW5zdGFuY2VvZiBYbWxUZXh0XG4gICAgKSBhcyBYbWxUZXh0XG4gICAgaWYgKCF0ZXh0RWwpIHtcbiAgICAgIGVsZW1lbnQuY2hpbGRyZW4ucHVzaChuZXcgWG1sVGV4dCh0ZXh0KSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGV4dEVsLnRleHQgPSB0ZXh0XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFsbENoaWxkcmVuKCk6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIChlbGVtZW50KSA9PiB7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm4gbnVsbFxuICAgIGVsZW1lbnQuY2hpbGRyZW4uZm9yRWFjaCgoZWwpID0+IChlbC5wYXJlbnQgPSBudWxsKSlcbiAgICBlbGVtZW50LmNoaWxkcmVuID0gW11cbiAgICByZXR1cm4gZWxlbWVudFxuICB9XG59XG5cbi8vIHN0YXlzIG9uIHRoZSBzYW1lIGVsZW1lbnRcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDaGlsZHJlbkJ5TmFtZShcbiAgbmFtZTogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIG51bGxcbiAgICBjb25zdCBzdHJpcHBlZE5hbWUgPSBzdHJpcE5hbWVzcGFjZShuYW1lKVxuICAgIGNvbnN0IHJlbW92ZWQgPSBlbGVtZW50LmNoaWxkcmVuLmZpbHRlcihcbiAgICAgIChjaGlsZCkgPT5cbiAgICAgICAgY2hpbGQgaW5zdGFuY2VvZiBYbWxFbGVtZW50ICYmXG4gICAgICAgIHN0cmlwTmFtZXNwYWNlKGdldEVsZW1lbnROYW1lKGNoaWxkKSkgPT09IHN0cmlwcGVkTmFtZVxuICAgIClcbiAgICByZW1vdmVkLmZvckVhY2goKGVsKSA9PiAoZWwucGFyZW50ID0gbnVsbCkpXG4gICAgZWxlbWVudC5jaGlsZHJlbiA9IGVsZW1lbnQuY2hpbGRyZW4uZmlsdGVyKFxuICAgICAgKGNoaWxkKSA9PiByZW1vdmVkLmluZGV4T2YoY2hpbGQpID09PSAtMVxuICAgIClcbiAgICByZXR1cm4gZWxlbWVudFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDaGlsZHJlbihcbiAgY2hpbGRyZW5GbjogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgQXJyYXk8WG1sRWxlbWVudD4+XG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiAoZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGNoaWxkcmVuVG9SZW1vdmUgPSBjaGlsZHJlbkZuKGVsZW1lbnQpXG4gICAgY2hpbGRyZW5Ub1JlbW92ZS5mb3JFYWNoKChjaGlsZCkgPT4gKGNoaWxkLnBhcmVudCA9IG51bGwpKVxuICAgIGVsZW1lbnQuY2hpbGRyZW4gPSBlbGVtZW50LmNoaWxkcmVuLmZpbHRlcihcbiAgICAgIChjaGlsZCkgPT5cbiAgICAgICAgY2hpbGQgaW5zdGFuY2VvZiBYbWxFbGVtZW50ICYmIGNoaWxkcmVuVG9SZW1vdmUuaW5kZXhPZihjaGlsZCkgPT09IC0xXG4gICAgKVxuICAgIHJldHVybiBlbGVtZW50XG4gIH1cbn1cblxuLyoqXG4gKiBSZW5hbWVzIGVsZW1lbnRzIGluIHRoZSBYTUwgdHJlZSBhY2NvcmRpbmcgdG8gdGhlIG1hcFxuICogRWl0aGVyIHNwZWNpZnkgYSBmdWxsIGVsZW1lbnQgbmFtZSBsaWtlICdnbWQ6TURfTWV0YWRhdGEnIG9yIHNpbXBseSBhIG5hbWVzcGFjZSBsaWtlICdnbWQnXG4gKiBAcGFyYW0gcm9vdEVsZW1lbnRcbiAqIEBwYXJhbSByZXBsYWNlTWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5hbWVFbGVtZW50cyhcbiAgcm9vdEVsZW1lbnQ6IFhtbEVsZW1lbnQsXG4gIHJlcGxhY2VNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbikge1xuICBmdW5jdGlvbiBkb1JlcGxhY2UoZWxlbWVudDogWG1sRWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50Lm5hbWUgaW4gcmVwbGFjZU1hcCkge1xuICAgICAgZWxlbWVudC5uYW1lID0gcmVwbGFjZU1hcFtlbGVtZW50Lm5hbWVdXG4gICAgfSBlbHNlIGlmIChlbGVtZW50Lm5hbWUgJiYgZ2V0TmFtZXNwYWNlKGVsZW1lbnQubmFtZSkgaW4gcmVwbGFjZU1hcCkge1xuICAgICAgZWxlbWVudC5uYW1lID0gYCR7XG4gICAgICAgIHJlcGxhY2VNYXBbZ2V0TmFtZXNwYWNlKGVsZW1lbnQubmFtZSldXG4gICAgICB9OiR7c3RyaXBOYW1lc3BhY2UoZWxlbWVudC5uYW1lKX1gXG4gICAgfVxuICAgIGlmIChlbGVtZW50LmNoaWxkcmVuKSB7XG4gICAgICBlbGVtZW50LmNoaWxkcmVuLmZvckVhY2goZG9SZXBsYWNlKVxuICAgIH1cbiAgfVxuICBkb1JlcGxhY2Uocm9vdEVsZW1lbnQpXG4gIHJldHVybiByb290RWxlbWVudFxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gdXNlIHRoZSBET01QYXJzZXIgdG8gY2hlY2sgaWYgdGhlIGdpdmVuIHhtbFN0cmluZyBpcyBhIHZhbGlkIFhNTCBmaWxlIG9yIHRocm93IGFuIGVycm9yXG4gKiAoR2VuZXJhdGVkIGJ5IGNoYXRHUFQpXG4gKiBAcGFyYW0geG1sU3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZFhtbCh4bWxTdHJpbmc6IHN0cmluZyk6IERvY3VtZW50IHtcbiAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpXG4gIGNvbnN0IHhtbERvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoeG1sU3RyaW5nLCAnYXBwbGljYXRpb24veG1sJylcbiAgY29uc3QgcGFyc2VyRXJyb3IgPSB4bWxEb2MucXVlcnlTZWxlY3RvcigncGFyc2VyZXJyb3InKVxuXG4gIGlmIChwYXJzZXJFcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IocGFyc2VyRXJyb3IpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIGlzIG5vdCBhIHZhbGlkIFhNTC4nKVxuICB9XG5cbiAgcmV0dXJuIHhtbERvY1xufVxuIl19
@@ -23,10 +23,10 @@ export class AuthService {
23
23
  this.translateService = translateService;
24
24
  this.baseLoginUrl = this.baseLoginUrlToken || DEFAULT_GN4_LOGIN_URL;
25
25
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AuthService, deps: [{ token: LOGIN_URL, optional: true }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AuthService, providedIn: 'root' }); }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, deps: [{ token: LOGIN_URL, optional: true }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, providedIn: 'root' }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AuthService, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, decorators: [{
30
30
  type: Injectable,
31
31
  args: [{
32
32
  providedIn: 'root',
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
37
37
  type: Inject,
38
38
  args: [LOGIN_URL]
39
39
  }] }, { type: i1.TranslateService }]; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMvbGliL2duNC9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7QUFFdEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsbUVBQW1FLENBQUE7QUFDeEcsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFTLFVBQVUsQ0FBQyxDQUFBO0FBSy9ELE1BQU0sT0FBTyxXQUFXO0lBRXRCLElBQUksUUFBUTtRQUNWLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUE7UUFDL0IsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUE7UUFDdkQsMEVBQTBFO1FBQzFFLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLHNCQUFzQixFQUFFO1lBQ25FLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtTQUNwQztRQUNELE9BQU8sT0FBTzthQUNYLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3JELE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQzthQUN0RCxPQUFPLENBQ04sVUFBVSxFQUNWLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FDdEQsQ0FBQTtJQUNMLENBQUM7SUFDRCxZQUdVLGlCQUF5QixFQUN6QixnQkFBa0M7UUFEbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFwQjVDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLHFCQUFxQixDQUFBO0lBcUIzRCxDQUFDOzhHQXRCTyxXQUFXLGtCQW1CWixTQUFTO2tIQW5CUixXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQW1CSSxRQUFROzswQkFDUixNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBMQU5HXzJfVE9fM19NQVBQRVIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfR040X0xPR0lOX1VSTCA9IGAvZ2VvbmV0d29yay9zcnYvXFwke2xhbmczfS9jYXRhbG9nLnNpZ25pbj9yZWRpcmVjdD1cXCR7Y3VycmVudF91cmx9YFxuZXhwb3J0IGNvbnN0IExPR0lOX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdsb2dpblVybCcpXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIGJhc2VMb2dpblVybCA9IHRoaXMuYmFzZUxvZ2luVXJsVG9rZW4gfHwgREVGQVVMVF9HTjRfTE9HSU5fVVJMXG4gIGdldCBsb2dpblVybCgpIHtcbiAgICBsZXQgYmFzZVVybCA9IHRoaXMuYmFzZUxvZ2luVXJsXG4gICAgY29uc3QgbG9jYXRpb25IYXNRdWVyeVBhcmFtcyA9ICEhd2luZG93LmxvY2F0aW9uLnNlYXJjaFxuICAgIC8vIHRoaXMgaXMgc3BlY2lmaWMgdG8gZ2VvcmNoZXN0cmEgbG9naW4gVVJMIGJhc2VkIG9uIGEgP2xvZ2luIHF1ZXJ5IHBhcmFtXG4gICAgaWYgKGJhc2VVcmwuc3RhcnRzV2l0aCgnJHtjdXJyZW50X3VybH0/JykgJiYgbG9jYXRpb25IYXNRdWVyeVBhcmFtcykge1xuICAgICAgYmFzZVVybCA9IGJhc2VVcmwucmVwbGFjZSgnPycsICcmJylcbiAgICB9XG4gICAgcmV0dXJuIGJhc2VVcmxcbiAgICAgIC5yZXBsYWNlKCcke2N1cnJlbnRfdXJsfScsIHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpKVxuICAgICAgLnJlcGxhY2UoJyR7bGFuZzJ9JywgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgICcke2xhbmczfScsXG4gICAgICAgIExBTkdfMl9UT18zX01BUFBFUlt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmddXG4gICAgICApXG4gIH1cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KExPR0lOX1VSTClcbiAgICBwcml2YXRlIGJhc2VMb2dpblVybFRva2VuOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cbn1cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMvbGliL2duNC9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7QUFFdEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsbUVBQW1FLENBQUE7QUFDeEcsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxDQUFTLFVBQVUsQ0FBQyxDQUFBO0FBSy9ELE1BQU0sT0FBTyxXQUFXO0lBRXRCLElBQUksUUFBUTtRQUNWLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUE7UUFDL0IsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUE7UUFDdkQsMEVBQTBFO1FBQzFFLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLHNCQUFzQixFQUFFO1lBQ25FLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtTQUNwQztRQUNELE9BQU8sT0FBTzthQUNYLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3JELE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQzthQUN0RCxPQUFPLENBQ04sVUFBVSxFQUNWLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FDdEQsQ0FBQTtJQUNMLENBQUM7SUFDRCxZQUdVLGlCQUF5QixFQUN6QixnQkFBa0M7UUFEbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFwQjVDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLHFCQUFxQixDQUFBO0lBcUIzRCxDQUFDOytHQXRCTyxXQUFXLGtCQW1CWixTQUFTO21IQW5CUixXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQW1CSSxRQUFROzswQkFDUixNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBMQU5HXzJfVE9fM19NQVBQRVIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfR040X0xPR0lOX1VSTCA9IGAvZ2VvbmV0d29yay9zcnYvXFwke2xhbmczfS9jYXRhbG9nLnNpZ25pbj9yZWRpcmVjdD1cXCR7Y3VycmVudF91cmx9YFxuZXhwb3J0IGNvbnN0IExPR0lOX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdsb2dpblVybCcpXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIGJhc2VMb2dpblVybCA9IHRoaXMuYmFzZUxvZ2luVXJsVG9rZW4gfHwgREVGQVVMVF9HTjRfTE9HSU5fVVJMXG4gIGdldCBsb2dpblVybCgpIHtcbiAgICBsZXQgYmFzZVVybCA9IHRoaXMuYmFzZUxvZ2luVXJsXG4gICAgY29uc3QgbG9jYXRpb25IYXNRdWVyeVBhcmFtcyA9ICEhd2luZG93LmxvY2F0aW9uLnNlYXJjaFxuICAgIC8vIHRoaXMgaXMgc3BlY2lmaWMgdG8gZ2VvcmNoZXN0cmEgbG9naW4gVVJMIGJhc2VkIG9uIGEgP2xvZ2luIHF1ZXJ5IHBhcmFtXG4gICAgaWYgKGJhc2VVcmwuc3RhcnRzV2l0aCgnJHtjdXJyZW50X3VybH0/JykgJiYgbG9jYXRpb25IYXNRdWVyeVBhcmFtcykge1xuICAgICAgYmFzZVVybCA9IGJhc2VVcmwucmVwbGFjZSgnPycsICcmJylcbiAgICB9XG4gICAgcmV0dXJuIGJhc2VVcmxcbiAgICAgIC5yZXBsYWNlKCcke2N1cnJlbnRfdXJsfScsIHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpKVxuICAgICAgLnJlcGxhY2UoJyR7bGFuZzJ9JywgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgICcke2xhbmczfScsXG4gICAgICAgIExBTkdfMl9UT18zX01BUFBFUlt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmddXG4gICAgICApXG4gIH1cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KExPR0lOX1VSTClcbiAgICBwcml2YXRlIGJhc2VMb2dpblVybFRva2VuOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cbn1cbiJdfQ==
@@ -27,13 +27,13 @@ export class GravatarService {
27
27
  }
28
28
  return iconUrl;
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GravatarService, deps: [{ token: i1.Gn4SettingsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
31
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GravatarService, providedIn: 'root' }); }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravatarService, deps: [{ token: i1.Gn4SettingsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
31
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravatarService, providedIn: 'root' }); }
32
32
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GravatarService, decorators: [{
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravatarService, decorators: [{
34
34
  type: Injectable,
35
35
  args: [{
36
36
  providedIn: 'root',
37
37
  }]
38
38
  }], ctorParameters: function () { return [{ type: i1.Gn4SettingsService }]; } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhdmF0YXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjL2xpYi9nbjQvYXV0aC9ncmF2YXRhci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDckUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUE7OztBQUtqRCxNQUFNLE9BQU8sZUFBZTtJQVExQixZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVBsRCxpQkFBWSxHQUFHLGtDQUFrQyxDQUFBO1FBQ2pELHVCQUFrQixHQUFHLElBQUksQ0FBQTtRQUVoQixlQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ25FLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDeEQsQ0FBQTtJQUU0RCxDQUFDO0lBRTlELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUN4RCxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLE1BQU0sU0FBUyxFQUFFLENBQUMsQ0FDakUsQ0FBQTtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBYztRQUNwQyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDaEIsSUFBSTtZQUNGLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7U0FDNUQ7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sRUFBRSxDQUFBO1NBQ1Y7UUFDRCxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDOzhHQTdCVSxlQUFlO2tIQUFmLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQXZhdGFyU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4vYXZhdGFyLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgR240U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2V0dGluZ3MvZ240LXNldHRpbmdzLnNlcnZpY2UnXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZhdGFyU2VydmljZSBpbXBsZW1lbnRzIEF2YXRhclNlcnZpY2VJbnRlcmZhY2Uge1xuICBwcml2YXRlIEdSQVZBVEFSX1VSTCA9ICdodHRwczovL3d3dy5ncmF2YXRhci5jb20vYXZhdGFyLydcbiAgcHJpdmF0ZSBHUkFWQVRBUl9JREVOVElDT04gPSAnbXAnXG5cbiAgcHJpdmF0ZSByZWFkb25seSBpZGVudGljb24kID0gdGhpcy5nbjRTZXR0aW5nc1NlcnZpY2UuaWRlbnRpY29uJC5waXBlKFxuICAgIG1hcCgoaWRlbnRpY29uKSA9PiBpZGVudGljb24/LnJlcGxhY2UoJ2dyYXZhdGFyOicsICcnKSlcbiAgKVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ240U2V0dGluZ3NTZXJ2aWNlOiBHbjRTZXR0aW5nc1NlcnZpY2UpIHt9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRQcm9maWxlSWNvbignJylcbiAgfVxuXG4gIGdldFByb2ZpbGVJY29uKGhhc2g6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpY29uJC5waXBlKFxuICAgICAgbWFwKChpZGVudGljb24pID0+IGlkZW50aWNvbiB8fCB0aGlzLkdSQVZBVEFSX0lERU5USUNPTiksXG4gICAgICBtYXAoKGlkZW50aWNvbikgPT4gYCR7dGhpcy5HUkFWQVRBUl9VUkx9JHtoYXNofT9kPSR7aWRlbnRpY29ufWApXG4gICAgKVxuICB9XG5cbiAgYXN5bmMgZ2V0UHJvZmlsZUljb25VcmwodXNlcklkOiBzdHJpbmcpIHtcbiAgICBsZXQgaWNvblVybCA9ICcnXG4gICAgdHJ5IHtcbiAgICAgIGljb25VcmwgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmdldFByb2ZpbGVJY29uKHVzZXJJZCkpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgICByZXR1cm4gaWNvblVybFxuICB9XG59XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhdmF0YXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjL2xpYi9nbjQvYXV0aC9ncmF2YXRhci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDckUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUE7OztBQUtqRCxNQUFNLE9BQU8sZUFBZTtJQVExQixZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVBsRCxpQkFBWSxHQUFHLGtDQUFrQyxDQUFBO1FBQ2pELHVCQUFrQixHQUFHLElBQUksQ0FBQTtRQUVoQixlQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ25FLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDeEQsQ0FBQTtJQUU0RCxDQUFDO0lBRTlELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUN4RCxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLE1BQU0sU0FBUyxFQUFFLENBQUMsQ0FDakUsQ0FBQTtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBYztRQUNwQyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDaEIsSUFBSTtZQUNGLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7U0FDNUQ7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sRUFBRSxDQUFBO1NBQ1Y7UUFDRCxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDOytHQTdCVSxlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQXZhdGFyU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4vYXZhdGFyLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgR240U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2V0dGluZ3MvZ240LXNldHRpbmdzLnNlcnZpY2UnXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZhdGFyU2VydmljZSBpbXBsZW1lbnRzIEF2YXRhclNlcnZpY2VJbnRlcmZhY2Uge1xuICBwcml2YXRlIEdSQVZBVEFSX1VSTCA9ICdodHRwczovL3d3dy5ncmF2YXRhci5jb20vYXZhdGFyLydcbiAgcHJpdmF0ZSBHUkFWQVRBUl9JREVOVElDT04gPSAnbXAnXG5cbiAgcHJpdmF0ZSByZWFkb25seSBpZGVudGljb24kID0gdGhpcy5nbjRTZXR0aW5nc1NlcnZpY2UuaWRlbnRpY29uJC5waXBlKFxuICAgIG1hcCgoaWRlbnRpY29uKSA9PiBpZGVudGljb24/LnJlcGxhY2UoJ2dyYXZhdGFyOicsICcnKSlcbiAgKVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ240U2V0dGluZ3NTZXJ2aWNlOiBHbjRTZXR0aW5nc1NlcnZpY2UpIHt9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRQcm9maWxlSWNvbignJylcbiAgfVxuXG4gIGdldFByb2ZpbGVJY29uKGhhc2g6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpY29uJC5waXBlKFxuICAgICAgbWFwKChpZGVudGljb24pID0+IGlkZW50aWNvbiB8fCB0aGlzLkdSQVZBVEFSX0lERU5USUNPTiksXG4gICAgICBtYXAoKGlkZW50aWNvbikgPT4gYCR7dGhpcy5HUkFWQVRBUl9VUkx9JHtoYXNofT9kPSR7aWRlbnRpY29ufWApXG4gICAgKVxuICB9XG5cbiAgYXN5bmMgZ2V0UHJvZmlsZUljb25VcmwodXNlcklkOiBzdHJpbmcpIHtcbiAgICBsZXQgaWNvblVybCA9ICcnXG4gICAgdHJ5IHtcbiAgICAgIGljb25VcmwgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmdldFByb2ZpbGVJY29uKHVzZXJJZCkpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgICByZXR1cm4gaWNvblVybFxuICB9XG59XG4iXX0=