geonetwork-ui 2.4.0-dev.344a92f2 → 2.4.0-dev.3b6b95eb

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 (429) 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 +254 -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 +196 -0
  8. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.mjs +46 -0
  9. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.mjs +74 -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 +27 -0
  12. package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +11 -1
  13. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +3 -3
  14. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +8 -23
  15. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +3 -3
  16. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +27 -37
  17. package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +35 -3
  18. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +78 -39
  19. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +34 -26
  20. package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +1 -1
  21. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  22. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  23. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -4
  24. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
  25. package/esm2022/libs/feature/dataviz/src/lib/feature-dataviz.module.mjs +10 -7
  26. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +40 -50
  27. package/esm2022/libs/feature/editor/src/index.mjs +2 -1
  28. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +5 -5
  29. package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +3 -3
  30. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +95 -0
  31. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +72 -0
  32. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +109 -0
  33. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -8
  34. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +38 -60
  35. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +10 -7
  36. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +191 -0
  37. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +5 -4
  38. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +2 -2
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +10 -6
  40. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +3 -3
  41. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +17 -3
  42. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +5 -5
  43. package/esm2022/libs/feature/map/src/index.mjs +2 -9
  44. package/esm2022/libs/feature/map/src/lib/+state/map.actions.mjs +4 -7
  45. package/esm2022/libs/feature/map/src/lib/+state/map.facade.mjs +9 -15
  46. package/esm2022/libs/feature/map/src/lib/+state/map.reducer.mjs +13 -44
  47. package/esm2022/libs/feature/map/src/lib/+state/map.selectors.mjs +3 -2
  48. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +15 -15
  49. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +16 -10
  50. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +10 -8
  51. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -7
  52. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -6
  53. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +1 -2
  54. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +4 -44
  55. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +43 -29
  56. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +17 -8
  57. package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +27 -0
  58. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +4 -168
  59. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +21 -17
  60. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +14 -8
  61. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +40 -52
  62. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +1 -1
  63. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +11 -6
  64. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +7 -7
  65. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +1 -6
  66. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  67. package/esm2022/libs/ui/inputs/src/lib/badge/badge.component.mjs +3 -3
  68. package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +3 -3
  69. package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +3 -3
  70. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +3 -3
  71. package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +2 -2
  72. package/esm2022/libs/ui/inputs/src/lib/search-input/search-input.component.mjs +6 -4
  73. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +5 -3
  74. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +2 -7
  75. package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +20 -4
  76. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
  77. package/esm2022/libs/ui/layout/src/lib/sortable-list/sortable-list.component.mjs +3 -3
  78. package/esm2022/libs/ui/map/src/index.mjs +4 -3
  79. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +8 -6
  80. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +137 -0
  81. package/esm2022/libs/ui/map/src/lib/components/map-container/map-settings.token.mjs +13 -0
  82. package/esm2022/libs/ui/map/src/lib/map-utils.mjs +37 -0
  83. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +3 -3
  84. package/esm2022/libs/util/app-config/src/index.mjs +2 -1
  85. package/esm2022/libs/util/app-config/src/lib/map-layers.mjs +27 -0
  86. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  87. package/esm2022/libs/util/shared/src/lib/utils/no-duplicate-file-name.mjs +19 -0
  88. package/esm2022/translations/de.json +19 -0
  89. package/esm2022/translations/en.json +51 -32
  90. package/esm2022/translations/es.json +19 -0
  91. package/esm2022/translations/fr.json +82 -63
  92. package/esm2022/translations/it.json +19 -0
  93. package/esm2022/translations/nl.json +19 -0
  94. package/esm2022/translations/pt.json +19 -0
  95. package/fesm2022/geonetwork-ui.mjs +6871 -6029
  96. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  97. package/libs/api/metadata-converter/src/index.d.ts +3 -0
  98. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  99. package/libs/api/metadata-converter/src/lib/common/license.d.ts +3 -0
  100. package/libs/api/metadata-converter/src/lib/common/license.d.ts.map +1 -0
  101. package/libs/api/metadata-converter/src/lib/common/url.d.ts +7 -0
  102. package/libs/api/metadata-converter/src/lib/common/url.d.ts.map +1 -0
  103. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts +13 -0
  104. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -0
  105. package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts +2 -0
  106. package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts.map +1 -0
  107. package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts +16 -0
  108. package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts.map +1 -0
  109. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts +20 -0
  110. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts.map +1 -0
  111. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts +9 -0
  112. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts.map +1 -0
  113. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts +8 -0
  114. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts.map +1 -0
  115. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts +2 -0
  116. package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts.map +1 -0
  117. package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts +6 -0
  118. package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts.map +1 -0
  119. package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -1
  120. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
  121. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +0 -1
  122. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  123. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  124. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +4 -6
  125. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  126. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +58 -0
  127. package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
  128. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +12 -7
  129. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  130. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -15
  131. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  132. package/libs/common/domain/src/lib/model/record/contact.model.d.ts +1 -1
  133. package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
  134. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -3
  135. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  136. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +7 -0
  137. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  138. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +2 -1
  139. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  140. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts +10 -9
  141. package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts.map +1 -1
  142. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +13 -20
  143. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  144. package/libs/feature/editor/src/index.d.ts +1 -0
  145. package/libs/feature/editor/src/index.d.ts.map +1 -1
  146. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  147. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts +34 -0
  148. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -0
  149. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +16 -0
  150. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -0
  151. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts +38 -0
  152. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -0
  153. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +1 -1
  154. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  155. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +6 -13
  156. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +1 -1
  157. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +1 -1
  158. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  159. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +44 -0
  160. 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
  161. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +1 -1
  162. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  163. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  164. package/libs/feature/editor/src/lib/fields.config.d.ts +2 -0
  165. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  166. package/libs/feature/editor/src/lib/services/editor.service.d.ts +2 -2
  167. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  168. package/libs/feature/map/src/index.d.ts +1 -8
  169. package/libs/feature/map/src/index.d.ts.map +1 -1
  170. package/libs/feature/map/src/lib/+state/map.actions.d.ts +13 -39
  171. package/libs/feature/map/src/lib/+state/map.actions.d.ts.map +1 -1
  172. package/libs/feature/map/src/lib/+state/map.facade.d.ts +9 -10
  173. package/libs/feature/map/src/lib/+state/map.facade.d.ts.map +1 -1
  174. package/libs/feature/map/src/lib/+state/map.reducer.d.ts +4 -2
  175. package/libs/feature/map/src/lib/+state/map.reducer.d.ts.map +1 -1
  176. package/libs/feature/map/src/lib/+state/map.selectors.d.ts +6 -1
  177. package/libs/feature/map/src/lib/+state/map.selectors.d.ts.map +1 -1
  178. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts +3 -5
  179. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
  180. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  181. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +2 -2
  182. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  183. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +1 -1
  184. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  185. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +1 -1
  186. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  187. package/libs/feature/map/src/lib/constant/index.d.ts +0 -1
  188. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  189. package/libs/feature/map/src/lib/feature-map.module.d.ts +12 -18
  190. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  191. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +7 -7
  192. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  193. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +4 -3
  194. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  195. package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts +14 -0
  196. package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts.map +1 -0
  197. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +0 -30
  198. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  199. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +8 -5
  200. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  201. package/libs/feature/record/src/lib/feature-record.module.d.ts +13 -11
  202. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  203. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -19
  204. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  205. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +4 -3
  206. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  207. package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts +1 -1
  208. package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts.map +1 -1
  209. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +9 -10
  210. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  211. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  212. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
  213. package/libs/ui/inputs/src/index.d.ts +1 -0
  214. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  215. package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts +1 -1
  216. package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts.map +1 -1
  217. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts +1 -0
  218. package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts.map +1 -1
  219. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -26
  220. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  221. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +6 -3
  222. package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
  223. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +1 -1
  224. package/libs/ui/map/src/index.d.ts +3 -2
  225. package/libs/ui/map/src/index.d.ts.map +1 -1
  226. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +3 -4
  227. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  228. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +37 -0
  229. package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -0
  230. package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts +18 -0
  231. package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts.map +1 -0
  232. package/libs/ui/map/src/lib/map-utils.d.ts +7 -0
  233. package/libs/ui/map/src/lib/map-utils.d.ts.map +1 -0
  234. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +1 -1
  235. package/libs/util/app-config/src/index.d.ts +1 -0
  236. package/libs/util/app-config/src/index.d.ts.map +1 -1
  237. package/libs/util/app-config/src/lib/map-layers.d.ts +4 -0
  238. package/libs/util/app-config/src/lib/map-layers.d.ts.map +1 -0
  239. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  240. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  241. package/libs/util/shared/src/lib/utils/no-duplicate-file-name.d.ts +2 -0
  242. package/libs/util/shared/src/lib/utils/no-duplicate-file-name.d.ts.map +1 -0
  243. package/package.json +5 -3
  244. package/src/libs/api/metadata-converter/src/index.ts +3 -0
  245. package/src/libs/api/metadata-converter/src/lib/common/license.ts +66 -0
  246. package/src/libs/api/metadata-converter/src/lib/common/url.ts +15 -0
  247. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +378 -0
  248. package/src/libs/api/metadata-converter/src/lib/dcat-ap/index.ts +1 -0
  249. package/src/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.ts +17 -0
  250. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +370 -0
  251. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.ts +95 -0
  252. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/individual-name.ts +20 -0
  253. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/keyword.mapper.ts +16 -0
  254. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/role.mapper.ts +48 -0
  255. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.ts +97 -0
  256. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/status.mapper.ts +19 -0
  257. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/update-frequency.mapper.ts +67 -0
  258. package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.ts +1 -0
  259. package/src/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.ts +68 -0
  260. package/src/libs/api/metadata-converter/src/lib/find-converter.ts +13 -0
  261. package/src/libs/api/metadata-converter/src/lib/fixtures/eu.dcat-ap.records.ts +272 -0
  262. package/src/libs/api/metadata-converter/src/lib/fixtures/opendataswiss.records.ts +110 -0
  263. package/src/libs/api/metadata-converter/src/lib/fixtures/sextant.records.ts +85 -0
  264. package/src/libs/api/metadata-converter/src/lib/fixtures/vlaanderen.dcat-ap.records.ts +73 -0
  265. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +1 -2
  266. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +7 -35
  267. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +1 -2
  268. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +85 -120
  269. package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +37 -2
  270. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +132 -68
  271. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +57 -30
  272. package/src/libs/common/domain/src/lib/model/record/contact.model.ts +1 -1
  273. package/src/libs/common/domain/src/lib/platform.service.interface.ts +2 -2
  274. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +10 -0
  275. package/src/libs/common/fixtures/src/index.ts +3 -0
  276. package/src/libs/common/fixtures/src/lib/individual.fixtures.ts +61 -0
  277. package/src/libs/common/fixtures/src/lib/map/index.ts +1 -0
  278. package/src/libs/common/fixtures/src/lib/map/map-context.fixtures.ts +53 -0
  279. package/src/libs/common/fixtures/src/lib/user.fixtures.ts +13 -0
  280. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +5 -1
  281. package/src/libs/feature/dataviz/src/lib/feature-dataviz.module.ts +6 -2
  282. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +5 -2
  283. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +38 -78
  284. package/src/libs/feature/editor/src/index.ts +1 -0
  285. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +11 -4
  286. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +1 -1
  287. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.html +47 -0
  288. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +132 -0
  289. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +31 -0
  290. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +82 -0
  291. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +40 -0
  292. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +170 -0
  293. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +1 -1
  294. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +6 -8
  295. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +1 -4
  296. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts +41 -83
  297. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +20 -11
  298. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +9 -5
  299. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.css +0 -0
  300. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +71 -0
  301. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +241 -0
  302. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +4 -3
  303. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +1 -1
  304. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +15 -0
  305. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +7 -3
  306. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +2 -6
  307. package/src/libs/feature/editor/src/lib/fields.config.ts +18 -2
  308. package/src/libs/feature/editor/src/lib/services/editor.service.ts +7 -3
  309. package/src/libs/feature/map/src/index.ts +1 -8
  310. package/src/libs/feature/map/src/lib/+state/map.actions.ts +10 -25
  311. package/src/libs/feature/map/src/lib/+state/map.facade.ts +11 -15
  312. package/src/libs/feature/map/src/lib/+state/map.reducer.ts +16 -53
  313. package/src/libs/feature/map/src/lib/+state/map.selectors.ts +7 -2
  314. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +12 -15
  315. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +17 -11
  316. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +11 -12
  317. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +12 -10
  318. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +11 -9
  319. package/src/libs/feature/map/src/lib/constant/index.ts +0 -1
  320. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -26
  321. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +38 -20
  322. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +2 -2
  323. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +15 -5
  324. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.css +0 -0
  325. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.html +4 -0
  326. package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.ts +29 -0
  327. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +1 -229
  328. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +27 -18
  329. package/src/libs/feature/record/src/lib/feature-record.module.ts +11 -3
  330. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +4 -4
  331. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +44 -71
  332. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +1 -1
  333. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +4 -1
  334. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +4 -2
  335. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +8 -1
  336. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +0 -3
  337. package/src/libs/ui/inputs/src/index.ts +1 -0
  338. package/src/libs/ui/inputs/src/lib/badge/badge.component.html +1 -2
  339. package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +2 -1
  340. package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.html +2 -1
  341. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.html +8 -8
  342. package/src/libs/ui/inputs/src/lib/search-input/search-input.component.ts +5 -1
  343. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +1 -1
  344. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +3 -1
  345. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
  346. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.html +5 -1
  347. package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +25 -2
  348. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +1 -1
  349. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +2 -2
  350. package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.html +1 -1
  351. package/src/libs/ui/map/src/index.ts +3 -2
  352. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +1 -1
  353. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +8 -5
  354. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.css +0 -0
  355. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +203 -0
  356. package/src/libs/ui/map/src/lib/components/map-container/map-settings.token.ts +23 -0
  357. package/src/libs/ui/map/src/lib/map-utils.ts +54 -0
  358. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +18 -14
  359. package/src/libs/util/app-config/src/index.ts +1 -0
  360. package/src/libs/util/app-config/src/lib/map-layers.ts +31 -0
  361. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  362. package/src/libs/util/shared/src/lib/utils/no-duplicate-file-name.ts +23 -0
  363. package/tailwind.base.css +3 -2
  364. package/translations/de.json +19 -0
  365. package/translations/en.json +51 -32
  366. package/translations/es.json +19 -0
  367. package/translations/fr.json +82 -63
  368. package/translations/it.json +19 -0
  369. package/translations/nl.json +19 -0
  370. package/translations/pt.json +19 -0
  371. package/translations/sk.json +19 -0
  372. package/esm2022/libs/feature/map/src/lib/+state/map.effects.mjs +0 -15
  373. package/esm2022/libs/feature/map/src/lib/+state/map.models.mjs +0 -2
  374. package/esm2022/libs/feature/map/src/lib/constant/map-options.mjs +0 -8
  375. package/esm2022/libs/feature/map/src/lib/constant/style.constant.mjs +0 -17
  376. package/esm2022/libs/feature/map/src/lib/feature-info/feature-info.service.mjs +0 -38
  377. package/esm2022/libs/feature/map/src/lib/manager/map-instance.directive.mjs +0 -19
  378. package/esm2022/libs/feature/map/src/lib/manager/map-manager.service.mjs +0 -19
  379. package/esm2022/libs/feature/map/src/lib/map-container/map-container.component.mjs +0 -27
  380. package/esm2022/libs/feature/map/src/lib/map-context/component/map-context.component.mjs +0 -46
  381. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +0 -10
  382. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +0 -289
  383. package/esm2022/libs/ui/map/src/lib/components/map/map.component.mjs +0 -40
  384. package/esm2022/libs/ui/map/src/lib/ui-map.module.mjs +0 -33
  385. package/libs/feature/map/src/lib/+state/map.effects.d.ts +0 -9
  386. package/libs/feature/map/src/lib/+state/map.effects.d.ts.map +0 -1
  387. package/libs/feature/map/src/lib/+state/map.models.d.ts +0 -9
  388. package/libs/feature/map/src/lib/+state/map.models.d.ts.map +0 -1
  389. package/libs/feature/map/src/lib/constant/map-options.d.ts +0 -9
  390. package/libs/feature/map/src/lib/constant/map-options.d.ts.map +0 -1
  391. package/libs/feature/map/src/lib/constant/style.constant.d.ts +0 -4
  392. package/libs/feature/map/src/lib/constant/style.constant.d.ts.map +0 -1
  393. package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts +0 -16
  394. package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts.map +0 -1
  395. package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts +0 -9
  396. package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts.map +0 -1
  397. package/libs/feature/map/src/lib/manager/map-manager.service.d.ts +0 -11
  398. package/libs/feature/map/src/lib/manager/map-manager.service.d.ts.map +0 -1
  399. package/libs/feature/map/src/lib/map-container/map-container.component.d.ts +0 -12
  400. package/libs/feature/map/src/lib/map-container/map-container.component.d.ts.map +0 -1
  401. package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts +0 -26
  402. package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts.map +0 -1
  403. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +0 -77
  404. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +0 -1
  405. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +0 -26
  406. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +0 -1
  407. package/libs/ui/map/src/lib/components/map/map.component.d.ts +0 -19
  408. package/libs/ui/map/src/lib/components/map/map.component.d.ts.map +0 -1
  409. package/libs/ui/map/src/lib/ui-map.module.d.ts +0 -13
  410. package/libs/ui/map/src/lib/ui-map.module.d.ts.map +0 -1
  411. package/src/libs/feature/map/src/lib/+state/map.effects.ts +0 -7
  412. package/src/libs/feature/map/src/lib/+state/map.models.ts +0 -9
  413. package/src/libs/feature/map/src/lib/constant/map-options.ts +0 -17
  414. package/src/libs/feature/map/src/lib/feature-info/feature-info.service.ts +0 -42
  415. package/src/libs/feature/map/src/lib/manager/map-instance.directive.ts +0 -10
  416. package/src/libs/feature/map/src/lib/manager/map-manager.service.ts +0 -13
  417. package/src/libs/feature/map/src/lib/map-container/map-container.component.html +0 -1
  418. package/src/libs/feature/map/src/lib/map-container/map-container.component.ts +0 -26
  419. package/src/libs/feature/map/src/lib/map-context/component/map-context.component.html +0 -1
  420. package/src/libs/feature/map/src/lib/map-context/component/map-context.component.ts +0 -57
  421. package/src/libs/feature/map/src/lib/map-context/map-context.fixtures.ts +0 -55
  422. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +0 -95
  423. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +0 -318
  424. package/src/libs/ui/map/src/lib/components/map/map.component.ts +0 -57
  425. package/src/libs/ui/map/src/lib/ui-map.module.ts +0 -19
  426. /package/src/libs/feature/{map/src/lib/map-container/map-container.component.css → editor/src/lib/components/import-record/import-record.component.css} +0 -0
  427. /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
  428. /package/src/libs/{ui/map/src/lib/components/map/map.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.css} +0 -0
  429. /package/src/libs/ui/map/src/lib/components/{map/map.component.html → map-container/map-container.component.html} +0 -0
@@ -1,4 +1,4 @@
1
- import { addAttribute, allChildrenElement, appendChildren, appendChildTree, createChild, createElement, findChildElement, findChildOrCreate, findChildrenElement, findNestedChildOrCreate, findNestedElement, findNestedElements, readAttribute, removeAllChildren, removeChildren, removeChildrenByName, setTextContent, } from '../xml-utils';
1
+ import { addAttribute, allChildrenElement, appendChildren, appendChildTree, createChild, createElement, findChildElement, findChildOrCreate, findChildrenElement, findNestedChildOrCreate, findNestedElement, findNestedElements, readAttribute, removeChildren, removeChildrenByName, setTextContent, } from '../xml-utils';
2
2
  import { fallback, filterArray, getAtIndex, map, mapArray, noop, pipe, } from '../function-utils';
3
3
  import { appendKeywords, appendOnlineResource, appendServiceOnlineResources, createDistributionInfo, findOrCreateDistribution, findOrCreateIdentification, getProgressCode, getRoleCode, removeKeywords, writeCharacterString, writeDateTime, writeLinkage, } from '../iso19139/write-parts';
4
4
  import { findIdentification } from '../iso19139/read-parts';
@@ -21,55 +21,40 @@ export function writeRecordUpdated(record, rootEl) {
21
21
  }
22
22
  export function writeRecordCreated(record, rootEl) {
23
23
  removeRecordDate('creation')(rootEl);
24
- if (!('recordCreated' in record))
24
+ if (!record.recordCreated)
25
25
  return;
26
26
  appendRecordDate(record.recordCreated, 'creation')(rootEl);
27
27
  }
28
28
  export function writeRecordPublished(record, rootEl) {
29
29
  removeRecordDate('publication')(rootEl);
30
- if (!('recordPublished' in record))
30
+ if (!record.recordPublished)
31
31
  return;
32
32
  appendRecordDate(record.recordPublished, 'publication')(rootEl);
33
33
  }
34
34
  function removeResourceDate(type) {
35
- return pipe(findIdentification(), findNestedElement('mri:citation', 'cit:CI_Citation'), removeChildren(pipe(findChildrenElement('cit:date', false), filterArray(pipe(findChildElement('cit:CI_DateTypeCode'), readAttribute('codeListValue'), map((value) => value === type))))));
35
+ return pipe(findOrCreateIdentification(), findNestedChildOrCreate('mri:citation', 'cit:CI_Citation'), removeChildren(pipe(findChildrenElement('cit:date', false), filterArray(pipe(findChildElement('cit:CI_DateTypeCode'), readAttribute('codeListValue'), map((value) => value === type))))));
36
36
  }
37
37
  function appendResourceDate(date, type) {
38
38
  return pipe(findIdentification(), findNestedElement('mri:citation', 'cit:CI_Citation'), appendChildren(pipe(createElement('cit:date'), createChild('cit:CI_Date'), appendChildren(pipe(createElement('cit:date'), writeDateTime(date)), pipe(createElement('cit:dateType'), createChild('cit:CI_DateTypeCode'), addAttribute('codeList', 'https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode'), addAttribute('codeListValue', type), setTextContent(type))))));
39
39
  }
40
40
  export function writeResourceUpdated(record, rootEl) {
41
41
  removeResourceDate('revision')(rootEl);
42
- if (!('resourceUpdated' in record))
42
+ if (!record.resourceUpdated)
43
43
  return;
44
44
  appendResourceDate(record.resourceUpdated, 'revision')(rootEl);
45
45
  }
46
46
  export function writeResourceCreated(record, rootEl) {
47
47
  removeResourceDate('creation')(rootEl);
48
- if (!('resourceCreated' in record))
48
+ if (!record.resourceCreated)
49
49
  return;
50
50
  appendResourceDate(record.resourceCreated, 'creation')(rootEl);
51
51
  }
52
52
  export function writeResourcePublished(record, rootEl) {
53
53
  removeResourceDate('publication')(rootEl);
54
- if (!('resourcePublished' in record))
54
+ if (!record.resourcePublished)
55
55
  return;
56
56
  appendResourceDate(record.resourcePublished, 'publication')(rootEl);
57
57
  }
58
- export function writeOwnerOrganization(record, rootEl) {
59
- // if no contact matches the owner org, create an empty one
60
- const ownerContact = record.contacts.find((contact) => contact.organization.name === record.ownerOrganization.name);
61
- pipe(findChildOrCreate('mdb:contact'), removeAllChildren(), appendResponsibleParty(ownerContact
62
- ? {
63
- ...ownerContact,
64
- // owner responsible party is always point of contact
65
- role: 'point_of_contact',
66
- }
67
- : {
68
- organization: record.ownerOrganization,
69
- email: 'missing@missing.com',
70
- role: 'point_of_contact',
71
- }))(rootEl);
72
- }
73
58
  export function appendResponsibleParty(contact) {
74
59
  const fullName = namePartsToFull(contact.firstName, contact.lastName);
75
60
  const createIndividual = pipe(createElement('cit:individual'), createChild('cit:CI_Individual'), fullName
@@ -138,4 +123,4 @@ export function writeOnlineResources(record, rootEl) {
138
123
  pipe(fallback(pipe(findNestedElements('gmd:distributionInfo', 'gmd:MD_Distribution'), getAtIndex(index)), appendChildTree(createDistributionInfo())), appendOnlineResource(onlineResource, appendOnlineResourceFormat))(rootEl);
139
124
  });
140
125
  }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtcGFydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTExNS0zL3dyaXRlLXBhcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFDTCxZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsY0FBYyxHQUVmLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFVBQVUsRUFDVixHQUFHLEVBQ0gsUUFBUSxFQUNSLElBQUksRUFDSixJQUFJLEdBQ0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQ0wsY0FBYyxFQUNkLG9CQUFvQixFQUNwQiw0QkFBNEIsRUFDNUIsc0JBQXNCLEVBQ3RCLHdCQUF3QixFQUN4QiwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixZQUFZLEdBQ2IsTUFBTSx5QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFbkUsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxNQUFxQixFQUNyQixNQUFrQjtJQUVsQixJQUFJLENBQ0YsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsRUFDM0MsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsRUFDdEMsaUJBQWlCLENBQUMs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QixDQUFDLENBQ2pFLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDWCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBEYXRhc2V0UmVjb3JkLFxuICBJbmRpdmlkdWFsLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQge1xuICBhZGRBdHRyaWJ1dGUsXG4gIGFsbENoaWxkcmVuRWxlbWVudCxcbiAgYXBwZW5kQ2hpbGRyZW4sXG4gIGFwcGVuZENoaWxkVHJlZSxcbiAgY3JlYXRlQ2hpbGQsXG4gIGNyZWF0ZUVsZW1lbnQsXG4gIGZpbmRDaGlsZEVsZW1lbnQsXG4gIGZpbmRDaGlsZE9yQ3JlYXRlLFxuICBmaW5kQ2hpbGRyZW5FbGVtZW50LFxuICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSxcbiAgZmluZE5lc3RlZEVsZW1lbnQsXG4gIGZpbmROZXN0ZWRFbGVtZW50cyxcbiAgcmVhZEF0dHJpYnV0ZSxcbiAgcmVtb3ZlQWxsQ2hpbGRyZW4sXG4gIHJlbW92ZUNoaWxkcmVuLFxuICByZW1vdmVDaGlsZHJlbkJ5TmFtZSxcbiAgc2V0VGV4dENvbnRlbnQsXG4gIFhtbEVsZW1lbnQsXG59IGZyb20gJy4uL3htbC11dGlscydcbmltcG9ydCB7XG4gIGZhbGxiYWNrLFxuICBmaWx0ZXJBcnJheSxcbiAgZ2V0QXRJbmRleCxcbiAgbWFwLFxuICBtYXBBcnJheSxcbiAgbm9vcCxcbiAgcGlwZSxcbn0gZnJvbSAnLi4vZnVuY3Rpb24tdXRpbHMnXG5pbXBvcnQge1xuICBhcHBlbmRLZXl3b3JkcyxcbiAgYXBwZW5kT25saW5lUmVzb3VyY2UsXG4gIGFwcGVuZFNlcnZpY2VPbmxpbmVSZXNvdXJjZXMsXG4gIGNyZWF0ZURpc3RyaWJ1dGlvbkluZm8sXG4gIGZpbmRPckNyZWF0ZURpc3RyaWJ1dGlvbixcbiAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24sXG4gIGdldFByb2dyZXNzQ29kZSxcbiAgZ2V0Um9sZUNvZGUsXG4gIHJlbW92ZUtleXdvcmRzLFxuICB3cml0ZUNoYXJhY3RlclN0cmluZyxcbiAgd3JpdGVEYXRlVGltZSxcbiAgd3JpdGVMaW5rYWdlLFxufSBmcm9tICcuLi9pc28xOTEzOS93cml0ZS1wYXJ0cydcbmltcG9ydCB7IGZpbmRJZGVudGlmaWNhdGlvbiB9IGZyb20gJy4uL2lzbzE5MTM5L3JlYWQtcGFydHMnXG5pbXBvcnQgeyBuYW1lUGFydHNUb0Z1bGwgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy9pbmRpdmlkdWFsLW5hbWUnXG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVVuaXF1ZUlkZW50aWZpZXIoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnbWRiOm1ldGFkYXRhSWRlbnRpZmllcicpLFxuICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdtY2M6TURfSWRlbnRpZmllcicpLFxuICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdtY2M6Y29kZScpLFxuICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHJlY29yZC51bmlxdWVJZGVudGlmaWVyKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlS2luZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKFxuICAgICAgJ21kYjptZXRhZGF0YVNjb3BlJyxcbiAgICAgICdtZGI6TURfTWV0YWRhdGFTY29wZScsXG4gICAgICAnbWRiOnJlc291cmNlU2NvcGUnLFxuICAgICAgJ21jYzpNRF9TY29wZUNvZGUnXG4gICAgKSxcbiAgICBhZGRBdHRyaWJ1dGUoXG4gICAgICAnY29kZUxpc3QnLFxuICAgICAgJ2h0dHBzOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTE1L3Jlc291cmNlcy9Db2RlbGlzdHMvY2F0L2NvZGVsaXN0cy54bWwjTURfU2NvcGVDb2RlJ1xuICAgICksXG4gICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgcmVjb3JkLmtpbmQpLFxuICAgIHNldFRleHRDb250ZW50KHJlY29yZC5raW5kKVxuICApKHJvb3RFbClcbn1cblxuZnVuY3Rpb24gcmVtb3ZlUmVjb3JkRGF0ZSh0eXBlOiAncmV2aXNpb24nIHwgJ2NyZWF0aW9uJyB8ICdwdWJsaWNhdGlvbicpIHtcbiAgcmV0dXJuIHJlbW92ZUNoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdtZGI6ZGF0ZUluZm8nLCBmYWxzZSksXG4gICAgICBmaWx0ZXJBcnJheShcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBmaW5kQ2hpbGRFbGVtZW50KCdjaXQ6Q0lfRGF0ZVR5cGVDb2RlJyksXG4gICAgICAgICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpLFxuICAgICAgICAgIG1hcCgodmFsdWUpID0+IHZhbHVlID09PSB0eXBlKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmZ1bmN0aW9uIGFwcGVuZFJlY29yZERhdGUoXG4gIGRhdGU6IERhdGUsXG4gIHR5cGU6ICdyZXZpc2lvbicgfCAnY3JlYXRpb24nIHwgJ3B1YmxpY2F0aW9uJ1xuKSB7XG4gIHJldHVybiBhcHBlbmRDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgY3JlYXRlRWxlbWVudCgnbWRiOmRhdGVJbmZvJyksXG4gICAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX0RhdGUnKSxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2NpdDpkYXRlJyksIHdyaXRlRGF0ZVRpbWUoZGF0ZSkpLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2NpdDpkYXRlVHlwZScpLFxuICAgICAgICAgIGNyZWF0ZUNoaWxkKCdjaXQ6Q0lfRGF0ZVR5cGVDb2RlJyksXG4gICAgICAgICAgYWRkQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwczovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS9yZXNvdXJjZXMvQ29kZWxpc3RzL2NhdC9jb2RlbGlzdHMueG1sI0NJX0RhdGVUeXBlQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIHR5cGUpLFxuICAgICAgICAgIHNldFRleHRDb250ZW50KHR5cGUpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVjb3JkVXBkYXRlZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICByZW1vdmVSZWNvcmREYXRlKCdyZXZpc2lvbicpKHJvb3RFbClcbiAgYXBwZW5kUmVjb3JkRGF0ZShyZWNvcmQucmVjb3JkVXBkYXRlZCwgJ3JldmlzaW9uJykocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVSZWNvcmRDcmVhdGVkKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHJlbW92ZVJlY29yZERhdGUoJ2NyZWF0aW9uJykocm9vdEVsKVxuICBpZiAoISgncmVjb3JkQ3JlYXRlZCcgaW4gcmVjb3JkKSkgcmV0dXJuXG4gIGFwcGVuZFJlY29yZERhdGUocmVjb3JkLnJlY29yZENyZWF0ZWQsICdjcmVhdGlvbicpKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVjb3JkUHVibGlzaGVkKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHJlbW92ZVJlY29yZERhdGUoJ3B1YmxpY2F0aW9uJykocm9vdEVsKVxuICBpZiAoISgncmVjb3JkUHVibGlzaGVkJyBpbiByZWNvcmQpKSByZXR1cm5cbiAgYXBwZW5kUmVjb3JkRGF0ZShyZWNvcmQucmVjb3JkUHVibGlzaGVkLCAncHVibGljYXRpb24nKShyb290RWwpXG59XG5cbmZ1bmN0aW9uIHJlbW92ZVJlc291cmNlRGF0ZSh0eXBlOiAncmV2aXNpb24nIHwgJ2NyZWF0aW9uJyB8ICdwdWJsaWNhdGlvbicpIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZElkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ21yaTpjaXRhdGlvbicsICdjaXQ6Q0lfQ2l0YXRpb24nKSxcbiAgICByZW1vdmVDaGlsZHJlbihcbiAgICAgIHBpcGUoXG4gICAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2NpdDpkYXRlJywgZmFsc2UpLFxuICAgICAgICBmaWx0ZXJBcnJheShcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgZmluZENoaWxkRWxlbWVudCgnY2l0OkNJX0RhdGVUeXBlQ29kZScpLFxuICAgICAgICAgICAgcmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpLFxuICAgICAgICAgICAgbWFwKCh2YWx1ZSkgPT4gdmFsdWUgPT09IHR5cGUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmZ1bmN0aW9uIGFwcGVuZFJlc291cmNlRGF0ZShcbiAgZGF0ZTogRGF0ZSxcbiAgdHlwZTogJ3JldmlzaW9uJyB8ICdjcmVhdGlvbicgfCAncHVibGljYXRpb24nXG4pIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZElkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZEVsZW1lbnQoJ21yaTpjaXRhdGlvbicsICdjaXQ6Q0lfQ2l0YXRpb24nKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIHBpcGUoXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2NpdDpkYXRlJyksXG4gICAgICAgIGNyZWF0ZUNoaWxkKCdjaXQ6Q0lfRGF0ZScpLFxuICAgICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2NpdDpkYXRlJyksIHdyaXRlRGF0ZVRpbWUoZGF0ZSkpLFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6ZGF0ZVR5cGUnKSxcbiAgICAgICAgICAgIGNyZWF0ZUNoaWxkKCdjaXQ6Q0lfRGF0ZVR5cGVDb2RlJyksXG4gICAgICAgICAgICBhZGRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgICAgICdodHRwczovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS9yZXNvdXJjZXMvQ29kZWxpc3RzL2NhdC9jb2RlbGlzdHMueG1sI0NJX0RhdGVUeXBlQ29kZSdcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCB0eXBlKSxcbiAgICAgICAgICAgIHNldFRleHRDb250ZW50KHR5cGUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVJlc291cmNlVXBkYXRlZChcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICByZW1vdmVSZXNvdXJjZURhdGUoJ3JldmlzaW9uJykocm9vdEVsKVxuICBpZiAoISgncmVzb3VyY2VVcGRhdGVkJyBpbiByZWNvcmQpKSByZXR1cm5cbiAgYXBwZW5kUmVzb3VyY2VEYXRlKHJlY29yZC5yZXNvdXJjZVVwZGF0ZWQsICdyZXZpc2lvbicpKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVzb3VyY2VDcmVhdGVkKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHJlbW92ZVJlc291cmNlRGF0ZSgnY3JlYXRpb24nKShyb290RWwpXG4gIGlmICghKCdyZXNvdXJjZUNyZWF0ZWQnIGluIHJlY29yZCkpIHJldHVyblxuICBhcHBlbmRSZXNvdXJjZURhdGUocmVjb3JkLnJlc291cmNlQ3JlYXRlZCwgJ2NyZWF0aW9uJykocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVSZXNvdXJjZVB1Ymxpc2hlZChcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICByZW1vdmVSZXNvdXJjZURhdGUoJ3B1YmxpY2F0aW9uJykocm9vdEVsKVxuICBpZiAoISgncmVzb3VyY2VQdWJsaXNoZWQnIGluIHJlY29yZCkpIHJldHVyblxuICBhcHBlbmRSZXNvdXJjZURhdGUocmVjb3JkLnJlc291cmNlUHVibGlzaGVkLCAncHVibGljYXRpb24nKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZU93bmVyT3JnYW5pemF0aW9uKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIC8vIGlmIG5vIGNvbnRhY3QgbWF0Y2hlcyB0aGUgb3duZXIgb3JnLCBjcmVhdGUgYW4gZW1wdHkgb25lXG4gIGNvbnN0IG93bmVyQ29udGFjdDogSW5kaXZpZHVhbCA9IHJlY29yZC5jb250YWN0cy5maW5kKFxuICAgIChjb250YWN0KSA9PiBjb250YWN0Lm9yZ2FuaXphdGlvbi5uYW1lID09PSByZWNvcmQub3duZXJPcmdhbml6YXRpb24ubmFtZVxuICApXG4gIHBpcGUoXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ21kYjpjb250YWN0JyksXG4gICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKSxcbiAgICBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KFxuICAgICAgb3duZXJDb250YWN0XG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4ub3duZXJDb250YWN0LFxuICAgICAgICAgICAgLy8gb3duZXIgcmVzcG9uc2libGUgcGFydHkgaXMgYWx3YXlzIHBvaW50IG9mIGNvbnRhY3RcbiAgICAgICAgICAgIHJvbGU6ICdwb2ludF9vZl9jb250YWN0JyxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgb3JnYW5pemF0aW9uOiByZWNvcmQub3duZXJPcmdhbml6YXRpb24sXG4gICAgICAgICAgICBlbWFpbDogJ21pc3NpbmdAbWlzc2luZy5jb20nLFxuICAgICAgICAgICAgcm9sZTogJ3BvaW50X29mX2NvbnRhY3QnLFxuICAgICAgICAgIH1cbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kUmVzcG9uc2libGVQYXJ0eShjb250YWN0OiBJbmRpdmlkdWFsKSB7XG4gIGNvbnN0IGZ1bGxOYW1lID0gbmFtZVBhcnRzVG9GdWxsKGNvbnRhY3QuZmlyc3ROYW1lLCBjb250YWN0Lmxhc3ROYW1lKVxuXG4gIGNvbnN0IGNyZWF0ZUluZGl2aWR1YWwgPSBwaXBlKFxuICAgIGNyZWF0ZUVsZW1lbnQoJ2NpdDppbmRpdmlkdWFsJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2NpdDpDSV9JbmRpdmlkdWFsJyksXG4gICAgZnVsbE5hbWVcbiAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdjaXQ6bmFtZScpLCB3cml0ZUNoYXJhY3RlclN0cmluZyhmdWxsTmFtZSkpXG4gICAgICAgIClcbiAgICAgIDogbm9vcCxcbiAgICBjb250YWN0LnBvc2l0aW9uXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6cG9zaXRpb25OYW1lJyksXG4gICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb250YWN0LnBvc2l0aW9uKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBub29wXG4gIClcblxuICBjb25zdCBjcmVhdGVDb250YWN0SW5mbyA9IHBpcGUoXG4gICAgY3JlYXRlRWxlbWVudCgnY2l0OmNvbnRhY3RJbmZvJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2NpdDpDSV9Db250YWN0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6YWRkcmVzcycpLFxuICAgICAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX0FkZHJlc3MnKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2NpdDplbGVjdHJvbmljTWFpbEFkZHJlc3MnKSxcbiAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3QuZW1haWwpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjb250YWN0LmFkZHJlc3NcbiAgICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2NpdDpkZWxpdmVyeVBvaW50JyksXG4gICAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5hZGRyZXNzKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBub29wXG4gICAgICApXG4gICAgKSxcbiAgICBjb250YWN0Lm9yZ2FuaXphdGlvbj8ud2Vic2l0ZVxuICAgICAgPyBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnY2l0Om9ubGluZVJlc291cmNlJyksXG4gICAgICAgICAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX09ubGluZVJlc291cmNlJyksXG4gICAgICAgICAgICBjcmVhdGVDaGlsZCgnY2l0OmxpbmthZ2UnKSxcbiAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3Qub3JnYW5pemF0aW9uLndlYnNpdGUudG9TdHJpbmcoKSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIDogbm9vcCxcbiAgICBjb250YWN0LnBob25lXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6cGhvbmUnKSxcbiAgICAgICAgICAgIGNyZWF0ZUNoaWxkKCdjaXQ6Q0lfVGVsZXBob25lJyksXG4gICAgICAgICAgICBjcmVhdGVDaGlsZCgnY2l0Om51bWJlcicpLFxuICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5waG9uZSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIDogbm9vcFxuICApXG5cbiAgY29uc3QgY3JlYXRlUm9sZSA9IHBpcGUoXG4gICAgY3JlYXRlRWxlbWVudCgnY2l0OnJvbGUnKSxcbiAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX1JvbGVDb2RlJyksXG4gICAgYWRkQXR0cmlidXRlKFxuICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICdodHRwczovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS9yZXNvdXJjZXMvQ29kZWxpc3RzL2NhdC9jb2RlbGlzdHMueG1sI0NJX1JvbGVDb2RlJ1xuICAgICksXG4gICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgZ2V0Um9sZUNvZGUoY29udGFjdC5yb2xlKSksXG4gICAgc2V0VGV4dENvbnRlbnQoZ2V0Um9sZUNvZGUoY29udGFjdC5yb2xlKSlcbiAgKVxuXG4gIGNvbnN0IGNyZWF0ZVBhcnR5ID0gcGlwZShcbiAgICBjcmVhdGVFbGVtZW50KCdjaXQ6cGFydHknKSxcbiAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX09yZ2FuaXNhdGlvbicpLFxuICAgIGNvbnRhY3Qub3JnYW5pemF0aW9uPy5uYW1lXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6bmFtZScpLFxuICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5vcmdhbml6YXRpb24/Lm5hbWUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IG5vb3AsXG4gICAgYXBwZW5kQ2hpbGRyZW4oY3JlYXRlQ29udGFjdEluZm8sIGNyZWF0ZUluZGl2aWR1YWwpXG4gIClcblxuICByZXR1cm4gYXBwZW5kQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ2NpdDpDSV9SZXNwb25zaWJpbGl0eScpLFxuICAgICAgYXBwZW5kQ2hpbGRyZW4oY3JlYXRlUm9sZSwgY3JlYXRlUGFydHkpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNvbnRhY3RzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUoJ21kYjpjb250YWN0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi5yZWNvcmQuY29udGFjdHMubWFwKChjb250YWN0KSA9PlxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2dtZDpjb250YWN0JyksIGFwcGVuZFJlc3BvbnNpYmxlUGFydHkoY29udGFjdCkpXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlQ29udGFjdHNGb3JSZXNvdXJjZShcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBjb25zdCB3aXRob3V0RGlzdHJpYnV0b3JzID0gcmVjb3JkLmNvbnRhY3RzRm9yUmVzb3VyY2UuZmlsdGVyKFxuICAgIChjKSA9PiBjLnJvbGUgIT09ICdkaXN0cmlidXRvcidcbiAgKVxuICBjb25zdCBkaXN0cmlidXRvcnMgPSByZWNvcmQuY29udGFjdHNGb3JSZXNvdXJjZS5maWx0ZXIoXG4gICAgKGMpID0+IGMucm9sZSA9PT0gJ2Rpc3RyaWJ1dG9yJ1xuICApXG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnbXJpOnBvaW50T2ZDb250YWN0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi53aXRob3V0RGlzdHJpYnV0b3JzLm1hcCgoY29udGFjdCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdtcmk6cG9pbnRPZkNvbnRhY3QnKSxcbiAgICAgICAgICBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KGNvbnRhY3QpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICkocm9vdEVsKVxuICBpZiAoIWRpc3RyaWJ1dG9ycy5sZW5ndGgpIHJldHVyblxuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZURpc3RyaWJ1dGlvbigpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdtcmQ6ZGlzdHJpYnV0b3InKSxcbiAgICBjcmVhdGVDaGlsZCgnbXJkOmRpc3RyaWJ1dG9yJyksXG4gICAgY3JlYXRlQ2hpbGQoJ21yZDpNRF9EaXN0cmlidXRvcicpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4uZGlzdHJpYnV0b3JzLm1hcCgoY29udGFjdCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdtcmQ6ZGlzdHJpYnV0b3JDb250YWN0JyksXG4gICAgICAgICAgYXBwZW5kUmVzcG9uc2libGVQYXJ0eShjb250YWN0KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlS2V5d29yZHMocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUtleXdvcmRzKCksXG4gICAgYXBwZW5kS2V5d29yZHMocmVjb3JkLmtleXdvcmRzKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlTGFuZGluZ1BhZ2UocmVjb3JkOiBEYXRhc2V0UmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZShcbiAgICAgICdtZGI6bWV0YWRhdGFMaW5rYWdlJyxcbiAgICAgICdjaXQ6Q0lfT25saW5lUmVzb3VyY2UnLFxuICAgICAgJ2NpdDpsaW5rYWdlJ1xuICAgICksXG4gICAgd3JpdGVMaW5rYWdlKHJlY29yZC5sYW5kaW5nUGFnZSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxpbmVhZ2UocmVjb3JkOiBEYXRhc2V0UmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZShcbiAgICAgICdtZGI6cmVzb3VyY2VMaW5lYWdlJyxcbiAgICAgICdtcmw6TElfTGluZWFnZScsXG4gICAgICAnbXJsOnN0YXRlbWVudCdcbiAgICApLFxuICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHJlY29yZC5saW5lYWdlKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlU3RhdHVzKHJlY29yZDogRGF0YXNldFJlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIGNvbnN0IHByb2dyZXNzQ29kZSA9IGdldFByb2dyZXNzQ29kZShyZWNvcmQuc3RhdHVzKVxuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ21yaTpzdGF0dXMnLCAnbWNjOk1EX1Byb2dyZXNzQ29kZScpLFxuICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cHM6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMTUvcmVzb3VyY2VzL0NvZGVsaXN0cy9jYXQvY29kZWxpc3RzLnhtbCNNRF9Qcm9ncmVzc0NvZGUnXG4gICAgKSxcbiAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBwcm9ncmVzc0NvZGUpLFxuICAgIHNldFRleHRDb250ZW50KHByb2dyZXNzQ29kZSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVNwYXRpYWxSZXByZXNlbnRhdGlvbihcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoXG4gICAgICAnbXJpOnNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUnLFxuICAgICAgJ21jYzpNRF9TcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlQ29kZSdcbiAgICApLFxuICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cHM6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMTUvcmVzb3VyY2VzL0NvZGVsaXN0cy9jYXQvY29kZWxpc3RzLnhtbCNNRF9TcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlQ29kZSdcbiAgICApLFxuICAgIGFkZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIHJlY29yZC5zcGF0aWFsUmVwcmVzZW50YXRpb24pLFxuICAgIHNldFRleHRDb250ZW50KHJlY29yZC5zcGF0aWFsUmVwcmVzZW50YXRpb24pXG4gICkocm9vdEVsKVxufVxuXG4vLyB0aGlzIHdpbGwgcmVtb3ZlIGFsbCB0cmFuc2ZlciBvcHRpb25zIGFuZCBmb3JtYXRzIGZyb20gZGlzdHJpYnV0aW9uIGluZm9cbi8vIGFuZCByZW1vdmUgZW1wdHkgZGlzdHJpYnV0aW9uIGluZm9cbmZ1bmN0aW9uIHJlbW92ZVRyYW5zZmVyT3B0aW9ucyhyb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgLy8gcmVtb3ZlIHRyYW5zZmVyIG9wdGlvbnMgJiBmb3JtYXRzXG4gIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKCdtZGI6ZGlzdHJpYnV0aW9uSW5mbycsICdtcmQ6TURfRGlzdHJpYnV0aW9uJyksXG4gICAgbWFwQXJyYXkoXG4gICAgICBwaXBlKFxuICAgICAgICByZW1vdmVDaGlsZHJlbihmaW5kQ2hpbGRyZW5FbGVtZW50KCdtcmQ6ZGlzdHJpYnV0aW9uRm9ybWF0JywgZmFsc2UpKSxcbiAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oZmluZENoaWxkcmVuRWxlbWVudCgnbXJkOnRyYW5zZmVyT3B0aW9ucycsIGZhbHNlKSlcbiAgICAgIClcbiAgICApXG4gICkocm9vdEVsKVxuICAvLyByZW1vdmUgZW1wdHkgZGlzdHJpYnV0aW9uc1xuICByZW1vdmVDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnbWRiOmRpc3RyaWJ1dGlvbkluZm8nLCBmYWxzZSksXG4gICAgICBmaWx0ZXJBcnJheShcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBmaW5kQ2hpbGRFbGVtZW50KCdtcmQ6TURfRGlzdHJpYnV0aW9uJyksXG4gICAgICAgICAgYWxsQ2hpbGRyZW5FbGVtZW50LFxuICAgICAgICAgIG1hcCgoY2hpbGRyZW4pID0+IGNoaWxkcmVuLmxlbmd0aCA9PT0gMClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmZ1bmN0aW9uIGFwcGVuZE9ubGluZVJlc291cmNlRm9ybWF0KG1pbWVUeXBlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGFwcGVuZENoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBjcmVhdGVFbGVtZW50KCdtcmQ6ZGlzdHJpYnV0aW9uRm9ybWF0JyksXG4gICAgICBjcmVhdGVDaGlsZCgnbXJkOk1EX0Zvcm1hdCcpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ21yZDpmb3JtYXRTcGVjaWZpY2F0aW9uQ2l0YXRpb24nKSxcbiAgICAgIGNyZWF0ZUNoaWxkKCdjaXQ6Q0lfQ2l0YXRpb24nKSxcbiAgICAgIGNyZWF0ZUNoaWxkKCdjaXQ6dGl0bGUnKSxcbiAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKG1pbWVUeXBlKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVPbmxpbmVSZXNvdXJjZXMoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcmVtb3ZlVHJhbnNmZXJPcHRpb25zKHJvb3RFbClcblxuICBpZiAocmVjb3JkLmtpbmQgPT09ICdzZXJ2aWNlJykge1xuICAgIGFwcGVuZFNlcnZpY2VPbmxpbmVSZXNvdXJjZXMocmVjb3JkLCByb290RWwpXG4gIH1cblxuICAvLyBmb3IgZWFjaCBvbmxpbmUgcmVzb3VyY2UsIGVpdGhlciBmaW5kIGFuIGV4aXN0aW5nIGRpc3RyaWJ1dGlvbiBpbmZvIG9yIGNyZWF0ZSBhIG5ldyBvbmVcbiAgcmVjb3JkLm9ubGluZVJlc291cmNlcy5mb3JFYWNoKChvbmxpbmVSZXNvdXJjZSwgaW5kZXgpID0+IHtcbiAgICBwaXBlKFxuICAgICAgZmFsbGJhY2soXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6ZGlzdHJpYnV0aW9uSW5mbycsICdnbWQ6TURfRGlzdHJpYnV0aW9uJyksXG4gICAgICAgICAgZ2V0QXRJbmRleChpbmRleClcbiAgICAgICAgKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRUcmVlKGNyZWF0ZURpc3RyaWJ1dGlvbkluZm8oKSlcbiAgICAgICksXG4gICAgICBhcHBlbmRPbmxpbmVSZXNvdXJjZShvbmxpbmVSZXNvdXJjZSwgYXBwZW5kT25saW5lUmVzb3VyY2VGb3JtYXQpXG4gICAgKShyb290RWwpXG4gIH0pXG59XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtcGFydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTExNS0zL3dyaXRlLXBhcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFDTCxZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixjQUFjLEdBRWYsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsVUFBVSxFQUNWLEdBQUcsRUFDSCxRQUFRLEVBQ1IsSUFBSSxFQUNKLElBQUksR0FDTCxNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLDRCQUE0QixFQUM1QixzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLFlBQVksR0FDYixNQUFNLHlCQUF5QixDQUFBO0FBQ2hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUVuRSxNQUFNLFVBQVUscUJBQXFCLENBQ25DLE1BQXFCLEVBQ3JCLE1BQWtCO0lBRWxCLElBQUksQ0FDRixpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxFQUMzQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxFQUN0QyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFD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QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQzdCLDRCQUE0QixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtLQUM3QztJQUVELDBGQUEwRjtJQUMxRixNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUN2RCxJQUFJLENBQ0YsUUFBUSxDQUNOLElBQUksQ0FDRixrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxxQkFBcUIsQ0FBQyxFQUNqRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQ2xCLEVBQ0QsZUFBZSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FDMUMsRUFDRCxvQkFBb0IsQ0FBQyxjQUFjLEVBQUUsMEJBQTBCLENBQUMsQ0FDakUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNYLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIERhdGFzZXRSZWNvcmQsXG4gIEluZGl2aWR1YWwsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7XG4gIGFkZEF0dHJpYnV0ZSxcbiAgYWxsQ2hpbGRyZW5FbGVtZW50LFxuICBhcHBlbmRDaGlsZHJlbixcbiAgYXBwZW5kQ2hpbGRUcmVlLFxuICBjcmVhdGVDaGlsZCxcbiAgY3JlYXRlRWxlbWVudCxcbiAgZmluZENoaWxkRWxlbWVudCxcbiAgZmluZENoaWxkT3JDcmVhdGUsXG4gIGZpbmRDaGlsZHJlbkVsZW1lbnQsXG4gIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlLFxuICBmaW5kTmVzdGVkRWxlbWVudCxcbiAgZmluZE5lc3RlZEVsZW1lbnRzLFxuICByZWFkQXR0cmlidXRlLFxuICByZW1vdmVDaGlsZHJlbixcbiAgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUsXG4gIHNldFRleHRDb250ZW50LFxuICBYbWxFbGVtZW50LFxufSBmcm9tICcuLi94bWwtdXRpbHMnXG5pbXBvcnQge1xuICBmYWxsYmFjayxcbiAgZmlsdGVyQXJyYXksXG4gIGdldEF0SW5kZXgsXG4gIG1hcCxcbiAgbWFwQXJyYXksXG4gIG5vb3AsXG4gIHBpcGUsXG59IGZyb20gJy4uL2Z1bmN0aW9uLXV0aWxzJ1xuaW1wb3J0IHtcbiAgYXBwZW5kS2V5d29yZHMsXG4gIGFwcGVuZE9ubGluZVJlc291cmNlLFxuICBhcHBlbmRTZXJ2aWNlT25saW5lUmVzb3VyY2VzLFxuICBjcmVhdGVEaXN0cmlidXRpb25JbmZvLFxuICBmaW5kT3JDcmVhdGVEaXN0cmlidXRpb24sXG4gIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uLFxuICBnZXRQcm9ncmVzc0NvZGUsXG4gIGdldFJvbGVDb2RlLFxuICByZW1vdmVLZXl3b3JkcyxcbiAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcsXG4gIHdyaXRlRGF0ZVRpbWUsXG4gIHdyaXRlTGlua2FnZSxcbn0gZnJvbSAnLi4vaXNvMTkxMzkvd3JpdGUtcGFydHMnXG5pbXBvcnQgeyBmaW5kSWRlbnRpZmljYXRpb24gfSBmcm9tICcuLi9pc28xOTEzOS9yZWFkLXBhcnRzJ1xuaW1wb3J0IHsgbmFtZVBhcnRzVG9GdWxsIH0gZnJvbSAnLi4vaXNvMTkxMzkvdXRpbHMvaW5kaXZpZHVhbC1uYW1lJ1xuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVVbmlxdWVJZGVudGlmaWVyKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHBpcGUoXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ21kYjptZXRhZGF0YUlkZW50aWZpZXInKSxcbiAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnbWNjOk1EX0lkZW50aWZpZXInKSxcbiAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnbWNjOmNvZGUnKSxcbiAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUtpbmQocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZShcbiAgICAgICdtZGI6bWV0YWRhdGFTY29wZScsXG4gICAgICAnbWRiOk1EX01ldGFkYXRhU2NvcGUnLFxuICAgICAgJ21kYjpyZXNvdXJjZVNjb3BlJyxcbiAgICAgICdtY2M6TURfU2NvcGVDb2RlJ1xuICAgICksXG4gICAgYWRkQXR0cmlidXRlKFxuICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICdodHRwczovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS9yZXNvdXJjZXMvQ29kZWxpc3RzL2NhdC9jb2RlbGlzdHMueG1sI01EX1Njb3BlQ29kZSdcbiAgICApLFxuICAgIGFkZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIHJlY29yZC5raW5kKSxcbiAgICBzZXRUZXh0Q29udGVudChyZWNvcmQua2luZClcbiAgKShyb290RWwpXG59XG5cbmZ1bmN0aW9uIHJlbW92ZVJlY29yZERhdGUodHlwZTogJ3JldmlzaW9uJyB8ICdjcmVhdGlvbicgfCAncHVibGljYXRpb24nKSB7XG4gIHJldHVybiByZW1vdmVDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnbWRiOmRhdGVJbmZvJywgZmFsc2UpLFxuICAgICAgZmlsdGVyQXJyYXkoXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgZmluZENoaWxkRWxlbWVudCgnY2l0OkNJX0RhdGVUeXBlQ29kZScpLFxuICAgICAgICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSxcbiAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gdHlwZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5mdW5jdGlvbiBhcHBlbmRSZWNvcmREYXRlKFxuICBkYXRlOiBEYXRlLFxuICB0eXBlOiAncmV2aXNpb24nIHwgJ2NyZWF0aW9uJyB8ICdwdWJsaWNhdGlvbidcbikge1xuICByZXR1cm4gYXBwZW5kQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ21kYjpkYXRlSW5mbycpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ2NpdDpDSV9EYXRlJyksXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdjaXQ6ZGF0ZScpLCB3cml0ZURhdGVUaW1lKGRhdGUpKSxcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6ZGF0ZVR5cGUnKSxcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX0RhdGVUeXBlQ29kZScpLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgICAnaHR0cHM6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMTUvcmVzb3VyY2VzL0NvZGVsaXN0cy9jYXQvY29kZWxpc3RzLnhtbCNDSV9EYXRlVHlwZUNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCB0eXBlKSxcbiAgICAgICAgICBzZXRUZXh0Q29udGVudCh0eXBlKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVJlY29yZFVwZGF0ZWQocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcmVtb3ZlUmVjb3JkRGF0ZSgncmV2aXNpb24nKShyb290RWwpXG4gIGFwcGVuZFJlY29yZERhdGUocmVjb3JkLnJlY29yZFVwZGF0ZWQsICdyZXZpc2lvbicpKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVjb3JkQ3JlYXRlZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICByZW1vdmVSZWNvcmREYXRlKCdjcmVhdGlvbicpKHJvb3RFbClcbiAgaWYgKCFyZWNvcmQucmVjb3JkQ3JlYXRlZCkgcmV0dXJuXG4gIGFwcGVuZFJlY29yZERhdGUocmVjb3JkLnJlY29yZENyZWF0ZWQsICdjcmVhdGlvbicpKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVjb3JkUHVibGlzaGVkKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHJlbW92ZVJlY29yZERhdGUoJ3B1YmxpY2F0aW9uJykocm9vdEVsKVxuICBpZiAoIXJlY29yZC5yZWNvcmRQdWJsaXNoZWQpIHJldHVyblxuICBhcHBlbmRSZWNvcmREYXRlKHJlY29yZC5yZWNvcmRQdWJsaXNoZWQsICdwdWJsaWNhdGlvbicpKHJvb3RFbClcbn1cblxuZnVuY3Rpb24gcmVtb3ZlUmVzb3VyY2VEYXRlKHR5cGU6ICdyZXZpc2lvbicgfCAnY3JlYXRpb24nIHwgJ3B1YmxpY2F0aW9uJykge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKCdtcmk6Y2l0YXRpb24nLCAnY2l0OkNJX0NpdGF0aW9uJyksXG4gICAgcmVtb3ZlQ2hpbGRyZW4oXG4gICAgICBwaXBlKFxuICAgICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdjaXQ6ZGF0ZScsIGZhbHNlKSxcbiAgICAgICAgZmlsdGVyQXJyYXkoXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2NpdDpDSV9EYXRlVHlwZUNvZGUnKSxcbiAgICAgICAgICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSxcbiAgICAgICAgICAgIG1hcCgodmFsdWUpID0+IHZhbHVlID09PSB0eXBlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5mdW5jdGlvbiBhcHBlbmRSZXNvdXJjZURhdGUoXG4gIGRhdGU6IERhdGUsXG4gIHR5cGU6ICdyZXZpc2lvbicgfCAnY3JlYXRpb24nIHwgJ3B1YmxpY2F0aW9uJ1xuKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGZpbmRJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRFbGVtZW50KCdtcmk6Y2l0YXRpb24nLCAnY2l0OkNJX0NpdGF0aW9uJyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6ZGF0ZScpLFxuICAgICAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX0RhdGUnKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdjaXQ6ZGF0ZScpLCB3cml0ZURhdGVUaW1lKGRhdGUpKSxcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnY2l0OmRhdGVUeXBlJyksXG4gICAgICAgICAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX0RhdGVUeXBlQ29kZScpLFxuICAgICAgICAgICAgYWRkQXR0cmlidXRlKFxuICAgICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgICAnaHR0cHM6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMTUvcmVzb3VyY2VzL0NvZGVsaXN0cy9jYXQvY29kZWxpc3RzLnhtbCNDSV9EYXRlVHlwZUNvZGUnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgdHlwZSksXG4gICAgICAgICAgICBzZXRUZXh0Q29udGVudCh0eXBlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVSZXNvdXJjZVVwZGF0ZWQoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcmVtb3ZlUmVzb3VyY2VEYXRlKCdyZXZpc2lvbicpKHJvb3RFbClcbiAgaWYgKCFyZWNvcmQucmVzb3VyY2VVcGRhdGVkKSByZXR1cm5cbiAgYXBwZW5kUmVzb3VyY2VEYXRlKHJlY29yZC5yZXNvdXJjZVVwZGF0ZWQsICdyZXZpc2lvbicpKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVzb3VyY2VDcmVhdGVkKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHJlbW92ZVJlc291cmNlRGF0ZSgnY3JlYXRpb24nKShyb290RWwpXG4gIGlmICghcmVjb3JkLnJlc291cmNlQ3JlYXRlZCkgcmV0dXJuXG4gIGFwcGVuZFJlc291cmNlRGF0ZShyZWNvcmQucmVzb3VyY2VDcmVhdGVkLCAnY3JlYXRpb24nKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVJlc291cmNlUHVibGlzaGVkKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHJlbW92ZVJlc291cmNlRGF0ZSgncHVibGljYXRpb24nKShyb290RWwpXG4gIGlmICghcmVjb3JkLnJlc291cmNlUHVibGlzaGVkKSByZXR1cm5cbiAgYXBwZW5kUmVzb3VyY2VEYXRlKHJlY29yZC5yZXNvdXJjZVB1Ymxpc2hlZCwgJ3B1YmxpY2F0aW9uJykocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kUmVzcG9uc2libGVQYXJ0eShjb250YWN0OiBJbmRpdmlkdWFsKSB7XG4gIGNvbnN0IGZ1bGxOYW1lID0gbmFtZVBhcnRzVG9GdWxsKGNvbnRhY3QuZmlyc3ROYW1lLCBjb250YWN0Lmxhc3ROYW1lKVxuXG4gIGNvbnN0IGNyZWF0ZUluZGl2aWR1YWwgPSBwaXBlKFxuICAgIGNyZWF0ZUVsZW1lbnQoJ2NpdDppbmRpdmlkdWFsJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2NpdDpDSV9JbmRpdmlkdWFsJyksXG4gICAgZnVsbE5hbWVcbiAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdjaXQ6bmFtZScpLCB3cml0ZUNoYXJhY3RlclN0cmluZyhmdWxsTmFtZSkpXG4gICAgICAgIClcbiAgICAgIDogbm9vcCxcbiAgICBjb250YWN0LnBvc2l0aW9uXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6cG9zaXRpb25OYW1lJyksXG4gICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb250YWN0LnBvc2l0aW9uKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBub29wXG4gIClcblxuICBjb25zdCBjcmVhdGVDb250YWN0SW5mbyA9IHBpcGUoXG4gICAgY3JlYXRlRWxlbWVudCgnY2l0OmNvbnRhY3RJbmZvJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2NpdDpDSV9Db250YWN0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6YWRkcmVzcycpLFxuICAgICAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX0FkZHJlc3MnKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2NpdDplbGVjdHJvbmljTWFpbEFkZHJlc3MnKSxcbiAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3QuZW1haWwpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjb250YWN0LmFkZHJlc3NcbiAgICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2NpdDpkZWxpdmVyeVBvaW50JyksXG4gICAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5hZGRyZXNzKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBub29wXG4gICAgICApXG4gICAgKSxcbiAgICBjb250YWN0Lm9yZ2FuaXphdGlvbj8ud2Vic2l0ZVxuICAgICAgPyBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnY2l0Om9ubGluZVJlc291cmNlJyksXG4gICAgICAgICAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX09ubGluZVJlc291cmNlJyksXG4gICAgICAgICAgICBjcmVhdGVDaGlsZCgnY2l0OmxpbmthZ2UnKSxcbiAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3Qub3JnYW5pemF0aW9uLndlYnNpdGUudG9TdHJpbmcoKSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIDogbm9vcCxcbiAgICBjb250YWN0LnBob25lXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6cGhvbmUnKSxcbiAgICAgICAgICAgIGNyZWF0ZUNoaWxkKCdjaXQ6Q0lfVGVsZXBob25lJyksXG4gICAgICAgICAgICBjcmVhdGVDaGlsZCgnY2l0Om51bWJlcicpLFxuICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5waG9uZSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIDogbm9vcFxuICApXG5cbiAgY29uc3QgY3JlYXRlUm9sZSA9IHBpcGUoXG4gICAgY3JlYXRlRWxlbWVudCgnY2l0OnJvbGUnKSxcbiAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX1JvbGVDb2RlJyksXG4gICAgYWRkQXR0cmlidXRlKFxuICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICdodHRwczovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS9yZXNvdXJjZXMvQ29kZWxpc3RzL2NhdC9jb2RlbGlzdHMueG1sI0NJX1JvbGVDb2RlJ1xuICAgICksXG4gICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgZ2V0Um9sZUNvZGUoY29udGFjdC5yb2xlKSksXG4gICAgc2V0VGV4dENvbnRlbnQoZ2V0Um9sZUNvZGUoY29udGFjdC5yb2xlKSlcbiAgKVxuXG4gIGNvbnN0IGNyZWF0ZVBhcnR5ID0gcGlwZShcbiAgICBjcmVhdGVFbGVtZW50KCdjaXQ6cGFydHknKSxcbiAgICBjcmVhdGVDaGlsZCgnY2l0OkNJX09yZ2FuaXNhdGlvbicpLFxuICAgIGNvbnRhY3Qub3JnYW5pemF0aW9uPy5uYW1lXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdjaXQ6bmFtZScpLFxuICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5vcmdhbml6YXRpb24/Lm5hbWUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IG5vb3AsXG4gICAgYXBwZW5kQ2hpbGRyZW4oY3JlYXRlQ29udGFjdEluZm8sIGNyZWF0ZUluZGl2aWR1YWwpXG4gIClcblxuICByZXR1cm4gYXBwZW5kQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ2NpdDpDSV9SZXNwb25zaWJpbGl0eScpLFxuICAgICAgYXBwZW5kQ2hpbGRyZW4oY3JlYXRlUm9sZSwgY3JlYXRlUGFydHkpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNvbnRhY3RzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUoJ21kYjpjb250YWN0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi5yZWNvcmQuY29udGFjdHMubWFwKChjb250YWN0KSA9PlxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2dtZDpjb250YWN0JyksIGFwcGVuZFJlc3BvbnNpYmxlUGFydHkoY29udGFjdCkpXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlQ29udGFjdHNGb3JSZXNvdXJjZShcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBjb25zdCB3aXRob3V0RGlzdHJpYnV0b3JzID0gcmVjb3JkLmNvbnRhY3RzRm9yUmVzb3VyY2UuZmlsdGVyKFxuICAgIChjKSA9PiBjLnJvbGUgIT09ICdkaXN0cmlidXRvcidcbiAgKVxuICBjb25zdCBkaXN0cmlidXRvcnMgPSByZWNvcmQuY29udGFjdHNGb3JSZXNvdXJjZS5maWx0ZXIoXG4gICAgKGMpID0+IGMucm9sZSA9PT0gJ2Rpc3RyaWJ1dG9yJ1xuICApXG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnbXJpOnBvaW50T2ZDb250YWN0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi53aXRob3V0RGlzdHJpYnV0b3JzLm1hcCgoY29udGFjdCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdtcmk6cG9pbnRPZkNvbnRhY3QnKSxcbiAgICAgICAgICBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KGNvbnRhY3QpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICkocm9vdEVsKVxuICBpZiAoIWRpc3RyaWJ1dG9ycy5sZW5ndGgpIHJldHVyblxuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZURpc3RyaWJ1dGlvbigpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdtcmQ6ZGlzdHJpYnV0b3InKSxcbiAgICBjcmVhdGVDaGlsZCgnbXJkOmRpc3RyaWJ1dG9yJyksXG4gICAgY3JlYXRlQ2hpbGQoJ21yZDpNRF9EaXN0cmlidXRvcicpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4uZGlzdHJpYnV0b3JzLm1hcCgoY29udGFjdCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdtcmQ6ZGlzdHJpYnV0b3JDb250YWN0JyksXG4gICAgICAgICAgYXBwZW5kUmVzcG9uc2libGVQYXJ0eShjb250YWN0KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlS2V5d29yZHMocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUtleXdvcmRzKCksXG4gICAgYXBwZW5kS2V5d29yZHMocmVjb3JkLmtleXdvcmRzKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlTGFuZGluZ1BhZ2UocmVjb3JkOiBEYXRhc2V0UmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZShcbiAgICAgICdtZGI6bWV0YWRhdGFMaW5rYWdlJyxcbiAgICAgICdjaXQ6Q0lfT25saW5lUmVzb3VyY2UnLFxuICAgICAgJ2NpdDpsaW5rYWdlJ1xuICAgICksXG4gICAgd3JpdGVMaW5rYWdlKHJlY29yZC5sYW5kaW5nUGFnZSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxpbmVhZ2UocmVjb3JkOiBEYXRhc2V0UmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZShcbiAgICAgICdtZGI6cmVzb3VyY2VMaW5lYWdlJyxcbiAgICAgICdtcmw6TElfTGluZWFnZScsXG4gICAgICAnbXJsOnN0YXRlbWVudCdcbiAgICApLFxuICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHJlY29yZC5saW5lYWdlKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlU3RhdHVzKHJlY29yZDogRGF0YXNldFJlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIGNvbnN0IHByb2dyZXNzQ29kZSA9IGdldFByb2dyZXNzQ29kZShyZWNvcmQuc3RhdHVzKVxuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ21yaTpzdGF0dXMnLCAnbWNjOk1EX1Byb2dyZXNzQ29kZScpLFxuICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cHM6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMTUvcmVzb3VyY2VzL0NvZGVsaXN0cy9jYXQvY29kZWxpc3RzLnhtbCNNRF9Qcm9ncmVzc0NvZGUnXG4gICAgKSxcbiAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBwcm9ncmVzc0NvZGUpLFxuICAgIHNldFRleHRDb250ZW50KHByb2dyZXNzQ29kZSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVNwYXRpYWxSZXByZXNlbnRhdGlvbihcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoXG4gICAgICAnbXJpOnNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUnLFxuICAgICAgJ21jYzpNRF9TcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlQ29kZSdcbiAgICApLFxuICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cHM6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMTUvcmVzb3VyY2VzL0NvZGVsaXN0cy9jYXQvY29kZWxpc3RzLnhtbCNNRF9TcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlQ29kZSdcbiAgICApLFxuICAgIGFkZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIHJlY29yZC5zcGF0aWFsUmVwcmVzZW50YXRpb24pLFxuICAgIHNldFRleHRDb250ZW50KHJlY29yZC5zcGF0aWFsUmVwcmVzZW50YXRpb24pXG4gICkocm9vdEVsKVxufVxuXG4vLyB0aGlzIHdpbGwgcmVtb3ZlIGFsbCB0cmFuc2ZlciBvcHRpb25zIGFuZCBmb3JtYXRzIGZyb20gZGlzdHJpYnV0aW9uIGluZm9cbi8vIGFuZCByZW1vdmUgZW1wdHkgZGlzdHJpYnV0aW9uIGluZm9cbmZ1bmN0aW9uIHJlbW92ZVRyYW5zZmVyT3B0aW9ucyhyb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgLy8gcmVtb3ZlIHRyYW5zZmVyIG9wdGlvbnMgJiBmb3JtYXRzXG4gIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKCdtZGI6ZGlzdHJpYnV0aW9uSW5mbycsICdtcmQ6TURfRGlzdHJpYnV0aW9uJyksXG4gICAgbWFwQXJyYXkoXG4gICAgICBwaXBlKFxuICAgICAgICByZW1vdmVDaGlsZHJlbihmaW5kQ2hpbGRyZW5FbGVtZW50KCdtcmQ6ZGlzdHJpYnV0aW9uRm9ybWF0JywgZmFsc2UpKSxcbiAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oZmluZENoaWxkcmVuRWxlbWVudCgnbXJkOnRyYW5zZmVyT3B0aW9ucycsIGZhbHNlKSlcbiAgICAgIClcbiAgICApXG4gICkocm9vdEVsKVxuICAvLyByZW1vdmUgZW1wdHkgZGlzdHJpYnV0aW9uc1xuICByZW1vdmVDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnbWRiOmRpc3RyaWJ1dGlvbkluZm8nLCBmYWxzZSksXG4gICAgICBmaWx0ZXJBcnJheShcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBmaW5kQ2hpbGRFbGVtZW50KCdtcmQ6TURfRGlzdHJpYnV0aW9uJyksXG4gICAgICAgICAgYWxsQ2hpbGRyZW5FbGVtZW50LFxuICAgICAgICAgIG1hcCgoY2hpbGRyZW4pID0+IGNoaWxkcmVuLmxlbmd0aCA9PT0gMClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmZ1bmN0aW9uIGFwcGVuZE9ubGluZVJlc291cmNlRm9ybWF0KG1pbWVUeXBlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGFwcGVuZENoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBjcmVhdGVFbGVtZW50KCdtcmQ6ZGlzdHJpYnV0aW9uRm9ybWF0JyksXG4gICAgICBjcmVhdGVDaGlsZCgnbXJkOk1EX0Zvcm1hdCcpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ21yZDpmb3JtYXRTcGVjaWZpY2F0aW9uQ2l0YXRpb24nKSxcbiAgICAgIGNyZWF0ZUNoaWxkKCdjaXQ6Q0lfQ2l0YXRpb24nKSxcbiAgICAgIGNyZWF0ZUNoaWxkKCdjaXQ6dGl0bGUnKSxcbiAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKG1pbWVUeXBlKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVPbmxpbmVSZXNvdXJjZXMoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcmVtb3ZlVHJhbnNmZXJPcHRpb25zKHJvb3RFbClcblxuICBpZiAocmVjb3JkLmtpbmQgPT09ICdzZXJ2aWNlJykge1xuICAgIGFwcGVuZFNlcnZpY2VPbmxpbmVSZXNvdXJjZXMocmVjb3JkLCByb290RWwpXG4gIH1cblxuICAvLyBmb3IgZWFjaCBvbmxpbmUgcmVzb3VyY2UsIGVpdGhlciBmaW5kIGFuIGV4aXN0aW5nIGRpc3RyaWJ1dGlvbiBpbmZvIG9yIGNyZWF0ZSBhIG5ldyBvbmVcbiAgcmVjb3JkLm9ubGluZVJlc291cmNlcy5mb3JFYWNoKChvbmxpbmVSZXNvdXJjZSwgaW5kZXgpID0+IHtcbiAgICBwaXBlKFxuICAgICAgZmFsbGJhY2soXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6ZGlzdHJpYnV0aW9uSW5mbycsICdnbWQ6TURfRGlzdHJpYnV0aW9uJyksXG4gICAgICAgICAgZ2V0QXRJbmRleChpbmRleClcbiAgICAgICAgKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRUcmVlKGNyZWF0ZURpc3RyaWJ1dGlvbkluZm8oKSlcbiAgICAgICksXG4gICAgICBhcHBlbmRPbmxpbmVSZXNvdXJjZShvbmxpbmVSZXNvdXJjZSwgYXBwZW5kT25saW5lUmVzb3VyY2VGb3JtYXQpXG4gICAgKShyb290RWwpXG4gIH0pXG59XG4iXX0=
@@ -2,7 +2,7 @@ import { BaseConverter } from '../base.converter';
2
2
  import { isEqual } from '../convert-utils';
3
3
  import { createDocument, createElement, getRootElement, parseXmlString, xmlToString, } from '../xml-utils';
4
4
  import { readAbstract, readContacts, readContactsForResource, readIsoTopics, readKeywords, readKind, readLegalConstraints, readLicenses, readLineage, readOnlineResources, readOtherConstraints, readOverviews, readOwnerOrganization, readRecordUpdated, readResourceCreated, readResourcePublished, readResourceUpdated, readSecurityConstraints, readSpatialExtents, readSpatialRepresentation, readStatus, readTemporalExtents, readTitle, readUniqueIdentifier, readUpdateFrequency, } from './read-parts';
5
- import { writeAbstract, writeContacts, writeContactsForResource, writeGraphicOverviews, writeKeywords, writeKind, writeLegalConstraints, writeLicenses, writeLineage, writeOnlineResources, writeOtherConstraints, writeOwnerOrganization, writeRecordUpdated, writeResourceCreated, writeResourcePublished, writeResourceUpdated, writeSecurityConstraints, writeSpatialExtents, writeSpatialRepresentation, writeStatus, writeTemporalExtents, writeTitle, writeTopics, writeUniqueIdentifier, writeUpdateFrequency, } from './write-parts';
5
+ import { writeAbstract, writeContacts, writeContactsForResource, writeGraphicOverviews, writeKeywords, writeKind, writeLegalConstraints, writeLicenses, writeLineage, writeOnlineResources, writeOtherConstraints, writeRecordUpdated, writeResourceCreated, writeResourcePublished, writeResourceUpdated, writeSecurityConstraints, writeSpatialExtents, writeSpatialRepresentation, writeStatus, writeTemporalExtents, writeTitle, writeTopics, writeUniqueIdentifier, writeUpdateFrequency, } from './write-parts';
6
6
  export class Iso19139Converter extends BaseConverter {
7
7
  constructor() {
8
8
  super(...arguments);
@@ -42,7 +42,7 @@ export class Iso19139Converter extends BaseConverter {
42
42
  this.writers = {
43
43
  uniqueIdentifier: writeUniqueIdentifier,
44
44
  kind: writeKind,
45
- ownerOrganization: writeOwnerOrganization,
45
+ ownerOrganization: () => undefined,
46
46
  recordUpdated: writeRecordUpdated,
47
47
  recordCreated: () => undefined,
48
48
  recordPublished: () => undefined,
@@ -236,4 +236,4 @@ export class Iso19139Converter extends BaseConverter {
236
236
  return xmlToString(newDocument);
237
237
  }
238
238
  }
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMzkuY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIvaXNvMTkxMzkvaXNvMTkxMzkuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBQ2IsY0FBYyxFQUNkLGNBQWMsRUFDZCxXQUFXLEdBQ1osTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGFBQWEsRUFDYixZQUFZLEVBQ1osUUFBUSxFQUNSLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osV0FBVyxFQUNYLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLG1CQUFtQixHQUNwQixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixTQUFTLEVBQ1QscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qixt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Z0IsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNoRCxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7U0FDbkU7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFbkMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFDLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIENhdGFsb2dSZWNvcmRLZXlzLFxuICBEYXRhc2V0UmVjb3JkLFxuICBTZXJ2aWNlUmVjb3JkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBYbWxFbGVtZW50IH0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyIH0gZnJvbSAnLi4vYmFzZS5jb252ZXJ0ZXInXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnLi4vY29udmVydC11dGlscydcbmltcG9ydCB7XG4gIGNyZWF0ZURvY3VtZW50LFxuICBjcmVhdGVFbGVtZW50LFxuICBnZXRSb290RWxlbWVudCxcbiAgcGFyc2VYbWxTdHJpbmcsXG4gIHhtbFRvU3RyaW5nLFxufSBmcm9tICcuLi94bWwtdXRpbHMnXG5pbXBvcnQge1xuICByZWFkQWJzdHJhY3QsXG4gIHJlYWRDb250YWN0cyxcbiAgcmVhZENvbnRhY3RzRm9yUmVzb3VyY2UsXG4gIHJlYWRJc29Ub3BpY3MsXG4gIHJlYWRLZXl3b3JkcyxcbiAgcmVhZEtpbmQsXG4gIHJlYWRMZWdhbENvbnN0cmFpbnRzLFxuICByZWFkTGljZW5zZXMsXG4gIHJlYWRMaW5lYWdlLFxuICByZWFkT25saW5lUmVzb3VyY2VzLFxuICByZWFkT3RoZXJDb25zdHJhaW50cyxcbiAgcmVhZE92ZXJ2aWV3cyxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkVXBkYXRlZCxcbiAgcmVhZFJlc291cmNlQ3JlYXRlZCxcbiAgcmVhZFJlc291cmNlUHVibGlzaGVkLFxuICByZWFkUmVzb3VyY2VVcGRhdGVkLFxuICByZWFkU2VjdXJpdHlDb25zdHJhaW50cyxcbiAgcmVhZFNwYXRpYWxFeHRlbnRzLFxuICByZWFkU3BhdGlhbFJlcHJlc2VudGF0aW9uLFxuICByZWFkU3RhdHVzLFxuICByZWFkVGVtcG9yYWxFeHRlbnRzLFxuICByZWFkVGl0bGUsXG4gIHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICByZWFkVXBkYXRlRnJlcXVlbmN5LFxufSBmcm9tICcuL3JlYWQtcGFydHMnXG5pbXBvcnQge1xuICB3cml0ZUFic3RyYWN0LFxuICB3cml0ZUNvbnRhY3RzLFxuICB3cml0ZUNvbnRhY3RzRm9yUmVzb3VyY2UsXG4gIHdyaXRlR3JhcGhpY092ZXJ2aWV3cyxcbiAgd3JpdGVLZXl3b3JkcyxcbiAgd3JpdGVLaW5kLFxuICB3cml0ZUxlZ2FsQ29uc3RyYWludHMsXG4gIHdyaXRlTGljZW5zZXMsXG4gIHdyaXRlTGluZWFnZSxcbiAgd3JpdGVPbmxpbmVSZXNvdXJjZXMsXG4gIHdyaXRlT3RoZXJDb25zdHJhaW50cyxcbiAgd3JpdGVPd25lck9yZ2FuaXphdGlvbixcbiAgd3JpdGVSZWNvcmRVcGRhdGVkLFxuICB3cml0ZVJlc291cmNlQ3JlYXRlZCxcbiAgd3JpdGVSZXNvdXJjZVB1Ymxpc2hlZCxcbiAgd3JpdGVSZXNvdXJjZVVwZGF0ZWQsXG4gIHdyaXRlU2VjdXJpdHlDb25zdHJhaW50cyxcbiAgd3JpdGVTcGF0aWFsRXh0ZW50cyxcbiAgd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb24sXG4gIHdyaXRlU3RhdHVzLFxuICB3cml0ZVRlbXBvcmFsRXh0ZW50cyxcbiAgd3JpdGVUaXRsZSxcbiAgd3JpdGVUb3BpY3MsXG4gIHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbiAgd3JpdGVVcGRhdGVGcmVxdWVuY3ksXG59IGZyb20gJy4vd3JpdGUtcGFydHMnXG5cbmV4cG9ydCBjbGFzcyBJc28xOTEzOUNvbnZlcnRlciBleHRlbmRzIEJhc2VDb252ZXJ0ZXI8c3RyaW5nPiB7XG4gIHByb3RlY3RlZCByZWFkZXJzOiBSZWNvcmQ8XG4gICAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gICAgKHJvb3RFbDogWG1sRWxlbWVudCkgPT4gdW5rbm93blxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICAgIGtpbmQ6IHJlYWRLaW5kLFxuICAgIG93bmVyT3JnYW5pemF0aW9uOiByZWFkT3duZXJPcmdhbml6YXRpb24sXG4gICAgcmVjb3JkVXBkYXRlZDogcmVhZFJlY29yZFVwZGF0ZWQsXG4gICAgcmVjb3JkQ3JlYXRlZDogKCkgPT4gdW5kZWZpbmVkLCAvLyBub3Qgc3VwcG9ydGVkIGluIElTTzE5MTM5XG4gICAgcmVjb3JkUHVibGlzaGVkOiAoKSA9PiB1bmRlZmluZWQsIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSVNPMTkxMzlcbiAgICByZXNvdXJjZVVwZGF0ZWQ6IHJlYWRSZXNvdXJjZVVwZGF0ZWQsXG4gICAgcmVzb3VyY2VDcmVhdGVkOiByZWFkUmVzb3VyY2VDcmVhdGVkLFxuICAgIHJlc291cmNlUHVibGlzaGVkOiByZWFkUmVzb3VyY2VQdWJsaXNoZWQsXG4gICAgdGl0bGU6IHJlYWRUaXRsZSxcbiAgICBhYnN0cmFjdDogcmVhZEFic3RyYWN0LFxuICAgIGNvbnRhY3RzOiByZWFkQ29udGFjdHMsXG4gICAgY29udGFjdHNGb3JSZXNvdXJjZTogcmVhZENvbnRhY3RzRm9yUmVzb3VyY2UsXG4gICAga2V5d29yZHM6IHJlYWRLZXl3b3JkcyxcbiAgICB0b3BpY3M6IHJlYWRJc29Ub3BpY3MsXG4gICAgbGljZW5zZXM6IHJlYWRMaWNlbnNlcyxcbiAgICBsZWdhbENvbnN0cmFpbnRzOiByZWFkTGVnYWxDb25zdHJhaW50cyxcbiAgICBzZWN1cml0eUNvbnN0cmFpbnRzOiByZWFkU2VjdXJpdHlDb25zdHJhaW50cyxcbiAgICBvdGhlckNvbnN0cmFpbnRzOiByZWFkT3RoZXJDb25zdHJhaW50cyxcbiAgICBzdGF0dXM6IHJlYWRTdGF0dXMsXG4gICAgdXBkYXRlRnJlcXVlbmN5OiByZWFkVXBkYXRlRnJlcXVlbmN5LFxuICAgIHNwYXRpYWxSZXByZXNlbnRhdGlvbjogcmVhZFNwYXRpYWxSZXByZXNlbnRhdGlvbixcbiAgICBvdmVydmlld3M6IHJlYWRPdmVydmlld3MsXG4gICAgbGluZWFnZTogcmVhZExpbmVhZ2UsXG4gICAgb25saW5lUmVzb3VyY2VzOiByZWFkT25saW5lUmVzb3VyY2VzLFxuICAgIHRlbXBvcmFsRXh0ZW50czogcmVhZFRlbXBvcmFsRXh0ZW50cyxcbiAgICBzcGF0aWFsRXh0ZW50czogcmVhZFNwYXRpYWxFeHRlbnRzLFxuICAgIC8vIFRPRE9cbiAgICBleHRyYXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsYW5kaW5nUGFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxhbmd1YWdlczogKCkgPT4gW10sXG4gIH1cblxuICBwcm90ZWN0ZWQgd3JpdGVyczogUmVjb3JkPFxuICAgIENhdGFsb2dSZWNvcmRLZXlzLFxuICAgIChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkgPT4gdm9pZFxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbiAgICBraW5kOiB3cml0ZUtpbmQsXG4gICAgb3duZXJPcmdhbml6YXRpb246IHdyaXRlT3duZXJPcmdhbml6YXRpb24sXG4gICAgcmVjb3JkVXBkYXRlZDogd3JpdGVSZWNvcmRVcGRhdGVkLFxuICAgIHJlY29yZENyZWF0ZWQ6ICgpID0+IHVuZGVmaW5lZCwgLy8gbm90IHN1cHBvcnRlZCBpbiBJU08xOTEzOVxuICAgIHJlY29yZFB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLCAvLyBub3Qgc3VwcG9ydGVkIGluIElTTzE5MTM5XG4gICAgcmVzb3VyY2VVcGRhdGVkOiB3cml0ZVJlc291cmNlVXBkYXRlZCxcbiAgICByZXNvdXJjZUNyZWF0ZWQ6IHdyaXRlUmVzb3VyY2VDcmVhdGVkLFxuICAgIHJlc291cmNlUHVibGlzaGVkOiB3cml0ZVJlc291cmNlUHVibGlzaGVkLFxuICAgIHRpdGxlOiB3cml0ZVRpdGxlLFxuICAgIGFic3RyYWN0OiB3cml0ZUFic3RyYWN0LFxuICAgIGNvbnRhY3RzOiB3cml0ZUNvbnRhY3RzLFxuICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IHdyaXRlQ29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICBrZXl3b3Jkczogd3JpdGVLZXl3b3JkcyxcbiAgICB0b3BpY3M6IHdyaXRlVG9waWNzLFxuICAgIGxpY2Vuc2VzOiB3cml0ZUxpY2Vuc2VzLFxuICAgIGxlZ2FsQ29uc3RyYWludHM6IHdyaXRlTGVnYWxDb25zdHJhaW50cyxcbiAgICBzZWN1cml0eUNvbnN0cmFpbnRzOiB3cml0ZVNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgb3RoZXJDb25zdHJhaW50czogd3JpdGVPdGhlckNvbnN0cmFpbnRzLFxuICAgIHN0YXR1czogd3JpdGVTdGF0dXMsXG4gICAgdXBkYXRlRnJlcXVlbmN5OiB3cml0ZVVwZGF0ZUZyZXF1ZW5jeSxcbiAgICBzcGF0aWFsUmVwcmVzZW50YXRpb246IHdyaXRlU3BhdGlhbFJlcHJlc2VudGF0aW9uLFxuICAgIG92ZXJ2aWV3czogd3JpdGVHcmFwaGljT3ZlcnZpZXdzLFxuICAgIGxpbmVhZ2U6IHdyaXRlTGluZWFnZSxcbiAgICBvbmxpbmVSZXNvdXJjZXM6IHdyaXRlT25saW5lUmVzb3VyY2VzLFxuICAgIHRlbXBvcmFsRXh0ZW50czogd3JpdGVUZW1wb3JhbEV4dGVudHMsXG4gICAgc3BhdGlhbEV4dGVudHM6IHdyaXRlU3BhdGlhbEV4dGVudHMsXG4gICAgLy8gVE9ET1xuICAgIGV4dHJhczogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxhbmRpbmdQYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGFuZ3VhZ2VzOiAoKSA9PiB1bmRlZmluZWQsXG4gIH1cblxuICBwcm90ZWN0ZWQgYmVmb3JlRG9jdW1lbnRDcmVhdGlvbihyb290RWxlbWVudDogWG1sRWxlbWVudCkge1xuICAgIC8vIHRvIG92ZXJyaWRlXG4gIH1cblxuICBhc3luYyByZWFkUmVjb3JkKGRvY3VtZW50OiBzdHJpbmcpOiBQcm9taXNlPENhdGFsb2dSZWNvcmQ+IHtcbiAgICBjb25zdCBkb2MgPSBwYXJzZVhtbFN0cmluZyhkb2N1bWVudClcbiAgICBjb25zdCByb290RWwgPSBnZXRSb290RWxlbWVudChkb2MpXG5cbiAgICBjb25zdCB1bmlxdWVJZGVudGlmaWVyID0gdGhpcy5yZWFkZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10ocm9vdEVsKVxuICAgIGNvbnN0IGtpbmQgPSB0aGlzLnJlYWRlcnNbJ2tpbmQnXShyb290RWwpXG4gICAgY29uc3Qgb3duZXJPcmdhbml6YXRpb24gPSB0aGlzLnJlYWRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10ocm9vdEVsKVxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5yZWFkZXJzWyd0aXRsZSddKHJvb3RFbClcbiAgICBjb25zdCBhYnN0cmFjdCA9IHRoaXMucmVhZGVyc1snYWJzdHJhY3QnXShyb290RWwpXG4gICAgY29uc3QgY29udGFjdHMgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzJ10ocm9vdEVsKVxuICAgIGNvbnN0IGNvbnRhY3RzRm9yUmVzb3VyY2UgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShyb290RWwpXG4gICAgY29uc3QgcmVjb3JkVXBkYXRlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkVXBkYXRlZCddKHJvb3RFbClcbiAgICBjb25zdCByZWNvcmRDcmVhdGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRDcmVhdGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlY29yZFB1Ymxpc2hlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkUHVibGlzaGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlc291cmNlQ3JlYXRlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VDcmVhdGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlc291cmNlVXBkYXRlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VVcGRhdGVkJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlc291cmNlUHVibGlzaGVkID0gdGhpcy5yZWFkZXJzWydyZXNvdXJjZVB1Ymxpc2hlZCddKHJvb3RFbClcbiAgICBjb25zdCBrZXl3b3JkcyA9IHRoaXMucmVhZGVyc1sna2V5d29yZHMnXShyb290RWwpXG4gICAgY29uc3QgdG9waWNzID0gdGhpcy5yZWFkZXJzWyd0b3BpY3MnXShyb290RWwpXG4gICAgY29uc3QgbGVnYWxDb25zdHJhaW50cyA9IHRoaXMucmVhZGVyc1snbGVnYWxDb25zdHJhaW50cyddKHJvb3RFbClcbiAgICBjb25zdCBvdGhlckNvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydvdGhlckNvbnN0cmFpbnRzJ10ocm9vdEVsKVxuICAgIGNvbnN0IHNlY3VyaXR5Q29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ3NlY3VyaXR5Q29uc3RyYWludHMnXShyb290RWwpXG4gICAgY29uc3QgbGljZW5zZXMgPSB0aGlzLnJlYWRlcnNbJ2xpY2Vuc2VzJ10ocm9vdEVsKVxuICAgIGNvbnN0IG92ZXJ2aWV3cyA9IHRoaXMucmVhZGVyc1snb3ZlcnZpZXdzJ10ocm9vdEVsKVxuICAgIGNvbnN0IGxhbmRpbmdQYWdlID0gdGhpcy5yZWFkZXJzWydsYW5kaW5nUGFnZSddKHJvb3RFbClcbiAgICBjb25zdCBvbmxpbmVSZXNvdXJjZXMgPSB0aGlzLnJlYWRlcnNbJ29ubGluZVJlc291cmNlcyddKHJvb3RFbClcblxuICAgIGlmIChraW5kID09PSAnZGF0YXNldCcpIHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucmVhZGVyc1snc3RhdHVzJ10ocm9vdEVsKVxuICAgICAgY29uc3Qgc3BhdGlhbFJlcHJlc2VudGF0aW9uID1cbiAgICAgICAgdGhpcy5yZWFkZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXShyb290RWwpXG4gICAgICBjb25zdCBzcGF0aWFsRXh0ZW50cyA9IHRoaXMucmVhZGVyc1snc3BhdGlhbEV4dGVudHMnXShyb290RWwpXG4gICAgICBjb25zdCB0ZW1wb3JhbEV4dGVudHMgPSB0aGlzLnJlYWRlcnNbJ3RlbXBvcmFsRXh0ZW50cyddKHJvb3RFbClcbiAgICAgIGNvbnN0IGxpbmVhZ2UgPSB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXShyb290RWwpXG4gICAgICBjb25zdCB1cGRhdGVGcmVxdWVuY3kgPSB0aGlzLnJlYWRlcnNbJ3VwZGF0ZUZyZXF1ZW5jeSddKHJvb3RFbClcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdW5pcXVlSWRlbnRpZmllcixcbiAgICAgICAga2luZCxcbiAgICAgICAgbGFuZ3VhZ2VzOiBbXSxcbiAgICAgICAgLi4uKHJlY29yZENyZWF0ZWQgJiYgeyByZWNvcmRDcmVhdGVkIH0pLFxuICAgICAgICAuLi4ocmVjb3JkUHVibGlzaGVkICYmIHsgcmVjb3JkUHVibGlzaGVkIH0pLFxuICAgICAgICByZWNvcmRVcGRhdGVkLFxuICAgICAgICAuLi4ocmVzb3VyY2VDcmVhdGVkICYmIHsgcmVzb3VyY2VDcmVhdGVkIH0pLFxuICAgICAgICAuLi4ocmVzb3VyY2VVcGRhdGVkICYmIHsgcmVzb3VyY2VVcGRhdGVkIH0pLFxuICAgICAgICAuLi4ocmVzb3VyY2VQdWJsaXNoZWQgJiYgeyByZXNvdXJjZVB1Ymxpc2hlZCB9KSxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgYWJzdHJhY3QsXG4gICAgICAgIG93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgICBjb250YWN0cyxcbiAgICAgICAgY29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICAgICAga2V5d29yZHMsXG4gICAgICAgIHRvcGljcyxcbiAgICAgICAgbGljZW5zZXMsXG4gICAgICAgIGxlZ2FsQ29uc3RyYWludHMsXG4gICAgICAgIHNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgICAgIG90aGVyQ29uc3RyYWludHMsXG4gICAgICAgIGxpbmVhZ2UsXG4gICAgICAgIC4uLihzcGF0aWFsUmVwcmVzZW50YXRpb24gJiYgeyBzcGF0aWFsUmVwcmVzZW50YXRpb24gfSksXG4gICAgICAgIG92ZXJ2aWV3cyxcbiAgICAgICAgc3BhdGlhbEV4dGVudHMsXG4gICAgICAgIHRlbXBvcmFsRXh0ZW50cyxcbiAgICAgICAgb25saW5lUmVzb3VyY2VzLFxuICAgICAgICB1cGRhdGVGcmVxdWVuY3ksXG4gICAgICAgIC4uLihsYW5kaW5nUGFnZSAmJiB7IGxhbmRpbmdQYWdlIH0pLFxuICAgICAgfSBhcyBEYXRhc2V0UmVjb3JkXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIGxhbmd1YWdlczogW10sXG4gICAgICAgIC4uLihyZWNvcmRDcmVhdGVkICYmIHsgcmVjb3JkQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlY29yZFB1Ymxpc2hlZCAmJiB7IHJlY29yZFB1Ymxpc2hlZCB9KSxcbiAgICAgICAgcmVjb3JkVXBkYXRlZCxcbiAgICAgICAgLi4uKHJlc291cmNlQ3JlYXRlZCAmJiB7IHJlc291cmNlQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlVXBkYXRlZCAmJiB7IHJlc291cmNlVXBkYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlUHVibGlzaGVkICYmIHsgcmVzb3VyY2VQdWJsaXNoZWQgfSksXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBhYnN0cmFjdCxcbiAgICAgICAgb3duZXJPcmdhbml6YXRpb24sXG4gICAgICAgIGNvbnRhY3RzLFxuICAgICAgICBjb250YWN0c0ZvclJlc291cmNlLFxuICAgICAgICBrZXl3b3JkcyxcbiAgICAgICAgdG9waWNzLFxuICAgICAgICBsaWNlbnNlcyxcbiAgICAgICAgbGVnYWxDb25zdHJhaW50cyxcbiAgICAgICAgc2VjdXJpdHlDb25zdHJhaW50cyxcbiAgICAgICAgb3RoZXJDb25zdHJhaW50cyxcbiAgICAgICAgb3ZlcnZpZXdzLFxuICAgICAgICBvbmxpbmVSZXNvdXJjZXMsXG4gICAgICAgIC4uLihsYW5kaW5nUGFnZSAmJiB7IGxhbmRpbmdQYWdlIH0pLFxuICAgICAgfSBhcyBTZXJ2aWNlUmVjb3JkXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgd3JpdGVSZWNvcmQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZT86IHN0cmluZ1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCByb290RWw6IFhtbEVsZW1lbnRcbiAgICBsZXQgZmllbGRDaGFuZ2VkOiAobmFtZTogc3RyaW5nKSA9PiBib29sZWFuXG4gICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxEb2MgPSBwYXJzZVhtbFN0cmluZyhyZWZlcmVuY2UpXG4gICAgICBjb25zdCBvcmlnaW5hbFJlY29yZCA9IGF3YWl0IHRoaXMucmVhZFJlY29yZChyZWZlcmVuY2UpXG4gICAgICByb290RWwgPSBnZXRSb290RWxlbWVudChvcmlnaW5hbERvYylcblxuICAgICAgZmllbGRDaGFuZ2VkID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZWNvcmQgIT09IG51bGxcbiAgICAgICAgICA/ICFpc0VxdWFsKHJlY29yZFtuYW1lXSwgb3JpZ2luYWxSZWNvcmRbbmFtZV0pXG4gICAgICAgICAgOiB0cnVlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3RFbCA9IGNyZWF0ZUVsZW1lbnQoJ2dtZDpNRF9NZXRhZGF0YScpKClcbiAgICAgIGZpZWxkQ2hhbmdlZCA9ICgpID0+IHRydWVcbiAgICB9XG5cbiAgICBmaWVsZENoYW5nZWQoJ3VuaXF1ZUlkZW50aWZpZXInKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdraW5kJykgJiYgdGhpcy53cml0ZXJzWydraW5kJ10ocmVjb3JkLCByb290RWwpXG5cbiAgICBmaWVsZENoYW5nZWQoJ2NvbnRhY3RzJykgJiYgdGhpcy53cml0ZXJzWydjb250YWN0cyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnb3duZXJPcmdhbml6YXRpb24nKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvd25lck9yZ2FuaXphdGlvbiddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdyZWNvcmRVcGRhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVjb3JkVXBkYXRlZCddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgncmVjb3JkQ3JlYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3JlY29yZENyZWF0ZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3JlY29yZFB1Ymxpc2hlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCd0aXRsZScpICYmIHRoaXMud3JpdGVyc1sndGl0bGUnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ2Fic3RyYWN0JykgJiYgdGhpcy53cml0ZXJzWydhYnN0cmFjdCddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZUNyZWF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZUNyZWF0ZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3Jlc291cmNlUHVibGlzaGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VQdWJsaXNoZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3Jlc291cmNlVXBkYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlVXBkYXRlZCddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdjb250YWN0c0ZvclJlc291cmNlJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdrZXl3b3JkcycpICYmIHRoaXMud3JpdGVyc1sna2V5d29yZHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3RvcGljcycpICYmIHRoaXMud3JpdGVyc1sndG9waWNzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdsZWdhbENvbnN0cmFpbnRzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snbGVnYWxDb25zdHJhaW50cyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnc2VjdXJpdHlDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3NlY3VyaXR5Q29uc3RyYWludHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ2xpY2Vuc2VzJykgJiYgdGhpcy53cml0ZXJzWydsaWNlbnNlcyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnb3RoZXJDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ290aGVyQ29uc3RyYWludHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ29ubGluZVJlc291cmNlcycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ29ubGluZVJlc291cmNlcyddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgaWYgKHJlY29yZC5raW5kID09PSAnZGF0YXNldCcpIHtcbiAgICAgIGZpZWxkQ2hhbmdlZCgnc3RhdHVzJykgJiYgdGhpcy53cml0ZXJzWydzdGF0dXMnXShyZWNvcmQsIHJvb3RFbClcbiAgICAgIGZpZWxkQ2hhbmdlZCgndXBkYXRlRnJlcXVlbmN5JykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWyd1cGRhdGVGcmVxdWVuY3knXShyZWNvcmQsIHJvb3RFbClcbiAgICAgIGZpZWxkQ2hhbmdlZCgnc3BhdGlhbFJlcHJlc2VudGF0aW9uJykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXShyZWNvcmQsIHJvb3RFbClcbiAgICAgIGZpZWxkQ2hhbmdlZCgnb3ZlcnZpZXdzJykgJiYgdGhpcy53cml0ZXJzWydvdmVydmlld3MnXShyZWNvcmQsIHJvb3RFbClcbiAgICAgIGZpZWxkQ2hhbmdlZCgndGVtcG9yYWxFeHRlbnRzJykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWyd0ZW1wb3JhbEV4dGVudHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICAgIGZpZWxkQ2hhbmdlZCgnc3BhdGlhbEV4dGVudHMnKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ3NwYXRpYWxFeHRlbnRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ2xpbmVhZ2UnKSAmJiB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXShyZWNvcmQsIHJvb3RFbClcbiAgICB9XG5cbiAgICB0aGlzLmJlZm9yZURvY3VtZW50Q3JlYXRpb24ocm9vdEVsKVxuXG4gICAgY29uc3QgbmV3RG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudChyb290RWwpXG4gICAgcmV0dXJuIHhtbFRvU3RyaW5nKG5ld0RvY3VtZW50KVxuICB9XG59XG4iXX0=
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMzkuY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIvaXNvMTkxMzkvaXNvMTkxMzkuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBQ2IsY0FBYyxFQUNkLGNBQWMsRUFDZCxXQUFXLEdBQ1osTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGFBQWEsRUFDYixZQUFZLEVBQ1osUUFBUSxFQUNSLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osV0FBVyxFQUNYLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLG1CQUFtQixHQUNwQixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixTQUFTLEVBQ1QscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQiww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Z0IsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNoRCxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7U0FDbkU7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFbkMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFDLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIENhdGFsb2dSZWNvcmRLZXlzLFxuICBEYXRhc2V0UmVjb3JkLFxuICBTZXJ2aWNlUmVjb3JkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBYbWxFbGVtZW50IH0gZnJvbSAnQHJncm92ZS9wYXJzZS14bWwnXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyIH0gZnJvbSAnLi4vYmFzZS5jb252ZXJ0ZXInXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnLi4vY29udmVydC11dGlscydcbmltcG9ydCB7XG4gIGNyZWF0ZURvY3VtZW50LFxuICBjcmVhdGVFbGVtZW50LFxuICBnZXRSb290RWxlbWVudCxcbiAgcGFyc2VYbWxTdHJpbmcsXG4gIHhtbFRvU3RyaW5nLFxufSBmcm9tICcuLi94bWwtdXRpbHMnXG5pbXBvcnQge1xuICByZWFkQWJzdHJhY3QsXG4gIHJlYWRDb250YWN0cyxcbiAgcmVhZENvbnRhY3RzRm9yUmVzb3VyY2UsXG4gIHJlYWRJc29Ub3BpY3MsXG4gIHJlYWRLZXl3b3JkcyxcbiAgcmVhZEtpbmQsXG4gIHJlYWRMZWdhbENvbnN0cmFpbnRzLFxuICByZWFkTGljZW5zZXMsXG4gIHJlYWRMaW5lYWdlLFxuICByZWFkT25saW5lUmVzb3VyY2VzLFxuICByZWFkT3RoZXJDb25zdHJhaW50cyxcbiAgcmVhZE92ZXJ2aWV3cyxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkVXBkYXRlZCxcbiAgcmVhZFJlc291cmNlQ3JlYXRlZCxcbiAgcmVhZFJlc291cmNlUHVibGlzaGVkLFxuICByZWFkUmVzb3VyY2VVcGRhdGVkLFxuICByZWFkU2VjdXJpdHlDb25zdHJhaW50cyxcbiAgcmVhZFNwYXRpYWxFeHRlbnRzLFxuICByZWFkU3BhdGlhbFJlcHJlc2VudGF0aW9uLFxuICByZWFkU3RhdHVzLFxuICByZWFkVGVtcG9yYWxFeHRlbnRzLFxuICByZWFkVGl0bGUsXG4gIHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICByZWFkVXBkYXRlRnJlcXVlbmN5LFxufSBmcm9tICcuL3JlYWQtcGFydHMnXG5pbXBvcnQge1xuICB3cml0ZUFic3RyYWN0LFxuICB3cml0ZUNvbnRhY3RzLFxuICB3cml0ZUNvbnRhY3RzRm9yUmVzb3VyY2UsXG4gIHdyaXRlR3JhcGhpY092ZXJ2aWV3cyxcbiAgd3JpdGVLZXl3b3JkcyxcbiAgd3JpdGVLaW5kLFxuICB3cml0ZUxlZ2FsQ29uc3RyYWludHMsXG4gIHdyaXRlTGljZW5zZXMsXG4gIHdyaXRlTGluZWFnZSxcbiAgd3JpdGVPbmxpbmVSZXNvdXJjZXMsXG4gIHdyaXRlT3RoZXJDb25zdHJhaW50cyxcbiAgd3JpdGVSZWNvcmRVcGRhdGVkLFxuICB3cml0ZVJlc291cmNlQ3JlYXRlZCxcbiAgd3JpdGVSZXNvdXJjZVB1Ymxpc2hlZCxcbiAgd3JpdGVSZXNvdXJjZVVwZGF0ZWQsXG4gIHdyaXRlU2VjdXJpdHlDb25zdHJhaW50cyxcbiAgd3JpdGVTcGF0aWFsRXh0ZW50cyxcbiAgd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb24sXG4gIHdyaXRlU3RhdHVzLFxuICB3cml0ZVRlbXBvcmFsRXh0ZW50cyxcbiAgd3JpdGVUaXRsZSxcbiAgd3JpdGVUb3BpY3MsXG4gIHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbiAgd3JpdGVVcGRhdGVGcmVxdWVuY3ksXG59IGZyb20gJy4vd3JpdGUtcGFydHMnXG5cbmV4cG9ydCBjbGFzcyBJc28xOTEzOUNvbnZlcnRlciBleHRlbmRzIEJhc2VDb252ZXJ0ZXI8c3RyaW5nPiB7XG4gIHByb3RlY3RlZCByZWFkZXJzOiBSZWNvcmQ8XG4gICAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gICAgKHJvb3RFbDogWG1sRWxlbWVudCkgPT4gdW5rbm93blxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICAgIGtpbmQ6IHJlYWRLaW5kLFxuICAgIG93bmVyT3JnYW5pemF0aW9uOiByZWFkT3duZXJPcmdhbml6YXRpb24sXG4gICAgcmVjb3JkVXBkYXRlZDogcmVhZFJlY29yZFVwZGF0ZWQsXG4gICAgcmVjb3JkQ3JlYXRlZDogKCkgPT4gdW5kZWZpbmVkLCAvLyBub3Qgc3VwcG9ydGVkIGluIElTTzE5MTM5XG4gICAgcmVjb3JkUHVibGlzaGVkOiAoKSA9PiB1bmRlZmluZWQsIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSVNPMTkxMzlcbiAgICByZXNvdXJjZVVwZGF0ZWQ6IHJlYWRSZXNvdXJjZVVwZGF0ZWQsXG4gICAgcmVzb3VyY2VDcmVhdGVkOiByZWFkUmVzb3VyY2VDcmVhdGVkLFxuICAgIHJlc291cmNlUHVibGlzaGVkOiByZWFkUmVzb3VyY2VQdWJsaXNoZWQsXG4gICAgdGl0bGU6IHJlYWRUaXRsZSxcbiAgICBhYnN0cmFjdDogcmVhZEFic3RyYWN0LFxuICAgIGNvbnRhY3RzOiByZWFkQ29udGFjdHMsXG4gICAgY29udGFjdHNGb3JSZXNvdXJjZTogcmVhZENvbnRhY3RzRm9yUmVzb3VyY2UsXG4gICAga2V5d29yZHM6IHJlYWRLZXl3b3JkcyxcbiAgICB0b3BpY3M6IHJlYWRJc29Ub3BpY3MsXG4gICAgbGljZW5zZXM6IHJlYWRMaWNlbnNlcyxcbiAgICBsZWdhbENvbnN0cmFpbnRzOiByZWFkTGVnYWxDb25zdHJhaW50cyxcbiAgICBzZWN1cml0eUNvbnN0cmFpbnRzOiByZWFkU2VjdXJpdHlDb25zdHJhaW50cyxcbiAgICBvdGhlckNvbnN0cmFpbnRzOiByZWFkT3RoZXJDb25zdHJhaW50cyxcbiAgICBzdGF0dXM6IHJlYWRTdGF0dXMsXG4gICAgdXBkYXRlRnJlcXVlbmN5OiByZWFkVXBkYXRlRnJlcXVlbmN5LFxuICAgIHNwYXRpYWxSZXByZXNlbnRhdGlvbjogcmVhZFNwYXRpYWxSZXByZXNlbnRhdGlvbixcbiAgICBvdmVydmlld3M6IHJlYWRPdmVydmlld3MsXG4gICAgbGluZWFnZTogcmVhZExpbmVhZ2UsXG4gICAgb25saW5lUmVzb3VyY2VzOiByZWFkT25saW5lUmVzb3VyY2VzLFxuICAgIHRlbXBvcmFsRXh0ZW50czogcmVhZFRlbXBvcmFsRXh0ZW50cyxcbiAgICBzcGF0aWFsRXh0ZW50czogcmVhZFNwYXRpYWxFeHRlbnRzLFxuICAgIC8vIFRPRE9cbiAgICBleHRyYXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsYW5kaW5nUGFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxhbmd1YWdlczogKCkgPT4gW10sXG4gIH1cblxuICBwcm90ZWN0ZWQgd3JpdGVyczogUmVjb3JkPFxuICAgIENhdGFsb2dSZWNvcmRLZXlzLFxuICAgIChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkgPT4gdm9pZFxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbiAgICBraW5kOiB3cml0ZUtpbmQsXG4gICAgb3duZXJPcmdhbml6YXRpb246ICgpID0+IHVuZGVmaW5lZCwgLy8gZml4bWU6IGZpbmQgYSB3YXkgdG8gc3RvcmUgdGhpcyB2YWx1ZSBwcm9wZXJseVxuICAgIHJlY29yZFVwZGF0ZWQ6IHdyaXRlUmVjb3JkVXBkYXRlZCxcbiAgICByZWNvcmRDcmVhdGVkOiAoKSA9PiB1bmRlZmluZWQsIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSVNPMTkxMzlcbiAgICByZWNvcmRQdWJsaXNoZWQ6ICgpID0+IHVuZGVmaW5lZCwgLy8gbm90IHN1cHBvcnRlZCBpbiBJU08xOTEzOVxuICAgIHJlc291cmNlVXBkYXRlZDogd3JpdGVSZXNvdXJjZVVwZGF0ZWQsXG4gICAgcmVzb3VyY2VDcmVhdGVkOiB3cml0ZVJlc291cmNlQ3JlYXRlZCxcbiAgICByZXNvdXJjZVB1Ymxpc2hlZDogd3JpdGVSZXNvdXJjZVB1Ymxpc2hlZCxcbiAgICB0aXRsZTogd3JpdGVUaXRsZSxcbiAgICBhYnN0cmFjdDogd3JpdGVBYnN0cmFjdCxcbiAgICBjb250YWN0czogd3JpdGVDb250YWN0cyxcbiAgICBjb250YWN0c0ZvclJlc291cmNlOiB3cml0ZUNvbnRhY3RzRm9yUmVzb3VyY2UsXG4gICAga2V5d29yZHM6IHdyaXRlS2V5d29yZHMsXG4gICAgdG9waWNzOiB3cml0ZVRvcGljcyxcbiAgICBsaWNlbnNlczogd3JpdGVMaWNlbnNlcyxcbiAgICBsZWdhbENvbnN0cmFpbnRzOiB3cml0ZUxlZ2FsQ29uc3RyYWludHMsXG4gICAgc2VjdXJpdHlDb25zdHJhaW50czogd3JpdGVTZWN1cml0eUNvbnN0cmFpbnRzLFxuICAgIG90aGVyQ29uc3RyYWludHM6IHdyaXRlT3RoZXJDb25zdHJhaW50cyxcbiAgICBzdGF0dXM6IHdyaXRlU3RhdHVzLFxuICAgIHVwZGF0ZUZyZXF1ZW5jeTogd3JpdGVVcGRhdGVGcmVxdWVuY3ksXG4gICAgc3BhdGlhbFJlcHJlc2VudGF0aW9uOiB3cml0ZVNwYXRpYWxSZXByZXNlbnRhdGlvbixcbiAgICBvdmVydmlld3M6IHdyaXRlR3JhcGhpY092ZXJ2aWV3cyxcbiAgICBsaW5lYWdlOiB3cml0ZUxpbmVhZ2UsXG4gICAgb25saW5lUmVzb3VyY2VzOiB3cml0ZU9ubGluZVJlc291cmNlcyxcbiAgICB0ZW1wb3JhbEV4dGVudHM6IHdyaXRlVGVtcG9yYWxFeHRlbnRzLFxuICAgIHNwYXRpYWxFeHRlbnRzOiB3cml0ZVNwYXRpYWxFeHRlbnRzLFxuICAgIC8vIFRPRE9cbiAgICBleHRyYXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsYW5kaW5nUGFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxhbmd1YWdlczogKCkgPT4gdW5kZWZpbmVkLFxuICB9XG5cbiAgcHJvdGVjdGVkIGJlZm9yZURvY3VtZW50Q3JlYXRpb24ocm9vdEVsZW1lbnQ6IFhtbEVsZW1lbnQpIHtcbiAgICAvLyB0byBvdmVycmlkZVxuICB9XG5cbiAgYXN5bmMgcmVhZFJlY29yZChkb2N1bWVudDogc3RyaW5nKTogUHJvbWlzZTxDYXRhbG9nUmVjb3JkPiB7XG4gICAgY29uc3QgZG9jID0gcGFyc2VYbWxTdHJpbmcoZG9jdW1lbnQpXG4gICAgY29uc3Qgcm9vdEVsID0gZ2V0Um9vdEVsZW1lbnQoZG9jKVxuXG4gICAgY29uc3QgdW5pcXVlSWRlbnRpZmllciA9IHRoaXMucmVhZGVyc1sndW5pcXVlSWRlbnRpZmllciddKHJvb3RFbClcbiAgICBjb25zdCBraW5kID0gdGhpcy5yZWFkZXJzWydraW5kJ10ocm9vdEVsKVxuICAgIGNvbnN0IG93bmVyT3JnYW5pemF0aW9uID0gdGhpcy5yZWFkZXJzWydvd25lck9yZ2FuaXphdGlvbiddKHJvb3RFbClcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMucmVhZGVyc1sndGl0bGUnXShyb290RWwpXG4gICAgY29uc3QgYWJzdHJhY3QgPSB0aGlzLnJlYWRlcnNbJ2Fic3RyYWN0J10ocm9vdEVsKVxuICAgIGNvbnN0IGNvbnRhY3RzID0gdGhpcy5yZWFkZXJzWydjb250YWN0cyddKHJvb3RFbClcbiAgICBjb25zdCBjb250YWN0c0ZvclJlc291cmNlID0gdGhpcy5yZWFkZXJzWydjb250YWN0c0ZvclJlc291cmNlJ10ocm9vdEVsKVxuICAgIGNvbnN0IHJlY29yZFVwZGF0ZWQgPSB0aGlzLnJlYWRlcnNbJ3JlY29yZFVwZGF0ZWQnXShyb290RWwpXG4gICAgY29uc3QgcmVjb3JkQ3JlYXRlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkQ3JlYXRlZCddKHJvb3RFbClcbiAgICBjb25zdCByZWNvcmRQdWJsaXNoZWQgPSB0aGlzLnJlYWRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddKHJvb3RFbClcbiAgICBjb25zdCByZXNvdXJjZUNyZWF0ZWQgPSB0aGlzLnJlYWRlcnNbJ3Jlc291cmNlQ3JlYXRlZCddKHJvb3RFbClcbiAgICBjb25zdCByZXNvdXJjZVVwZGF0ZWQgPSB0aGlzLnJlYWRlcnNbJ3Jlc291cmNlVXBkYXRlZCddKHJvb3RFbClcbiAgICBjb25zdCByZXNvdXJjZVB1Ymxpc2hlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VQdWJsaXNoZWQnXShyb290RWwpXG4gICAgY29uc3Qga2V5d29yZHMgPSB0aGlzLnJlYWRlcnNbJ2tleXdvcmRzJ10ocm9vdEVsKVxuICAgIGNvbnN0IHRvcGljcyA9IHRoaXMucmVhZGVyc1sndG9waWNzJ10ocm9vdEVsKVxuICAgIGNvbnN0IGxlZ2FsQ29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ2xlZ2FsQ29uc3RyYWludHMnXShyb290RWwpXG4gICAgY29uc3Qgb3RoZXJDb25zdHJhaW50cyA9IHRoaXMucmVhZGVyc1snb3RoZXJDb25zdHJhaW50cyddKHJvb3RFbClcbiAgICBjb25zdCBzZWN1cml0eUNvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydzZWN1cml0eUNvbnN0cmFpbnRzJ10ocm9vdEVsKVxuICAgIGNvbnN0IGxpY2Vuc2VzID0gdGhpcy5yZWFkZXJzWydsaWNlbnNlcyddKHJvb3RFbClcbiAgICBjb25zdCBvdmVydmlld3MgPSB0aGlzLnJlYWRlcnNbJ292ZXJ2aWV3cyddKHJvb3RFbClcbiAgICBjb25zdCBsYW5kaW5nUGFnZSA9IHRoaXMucmVhZGVyc1snbGFuZGluZ1BhZ2UnXShyb290RWwpXG4gICAgY29uc3Qgb25saW5lUmVzb3VyY2VzID0gdGhpcy5yZWFkZXJzWydvbmxpbmVSZXNvdXJjZXMnXShyb290RWwpXG5cbiAgICBpZiAoa2luZCA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnJlYWRlcnNbJ3N0YXR1cyddKHJvb3RFbClcbiAgICAgIGNvbnN0IHNwYXRpYWxSZXByZXNlbnRhdGlvbiA9XG4gICAgICAgIHRoaXMucmVhZGVyc1snc3BhdGlhbFJlcHJlc2VudGF0aW9uJ10ocm9vdEVsKVxuICAgICAgY29uc3Qgc3BhdGlhbEV4dGVudHMgPSB0aGlzLnJlYWRlcnNbJ3NwYXRpYWxFeHRlbnRzJ10ocm9vdEVsKVxuICAgICAgY29uc3QgdGVtcG9yYWxFeHRlbnRzID0gdGhpcy5yZWFkZXJzWyd0ZW1wb3JhbEV4dGVudHMnXShyb290RWwpXG4gICAgICBjb25zdCBsaW5lYWdlID0gdGhpcy5yZWFkZXJzWydsaW5lYWdlJ10ocm9vdEVsKVxuICAgICAgY29uc3QgdXBkYXRlRnJlcXVlbmN5ID0gdGhpcy5yZWFkZXJzWyd1cGRhdGVGcmVxdWVuY3knXShyb290RWwpXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIGxhbmd1YWdlczogW10sXG4gICAgICAgIC4uLihyZWNvcmRDcmVhdGVkICYmIHsgcmVjb3JkQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlY29yZFB1Ymxpc2hlZCAmJiB7IHJlY29yZFB1Ymxpc2hlZCB9KSxcbiAgICAgICAgcmVjb3JkVXBkYXRlZCxcbiAgICAgICAgLi4uKHJlc291cmNlQ3JlYXRlZCAmJiB7IHJlc291cmNlQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlVXBkYXRlZCAmJiB7IHJlc291cmNlVXBkYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlUHVibGlzaGVkICYmIHsgcmVzb3VyY2VQdWJsaXNoZWQgfSksXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGFic3RyYWN0LFxuICAgICAgICBvd25lck9yZ2FuaXphdGlvbixcbiAgICAgICAgY29udGFjdHMsXG4gICAgICAgIGNvbnRhY3RzRm9yUmVzb3VyY2UsXG4gICAgICAgIGtleXdvcmRzLFxuICAgICAgICB0b3BpY3MsXG4gICAgICAgIGxpY2Vuc2VzLFxuICAgICAgICBsZWdhbENvbnN0cmFpbnRzLFxuICAgICAgICBzZWN1cml0eUNvbnN0cmFpbnRzLFxuICAgICAgICBvdGhlckNvbnN0cmFpbnRzLFxuICAgICAgICBsaW5lYWdlLFxuICAgICAgICAuLi4oc3BhdGlhbFJlcHJlc2VudGF0aW9uICYmIHsgc3BhdGlhbFJlcHJlc2VudGF0aW9uIH0pLFxuICAgICAgICBvdmVydmlld3MsXG4gICAgICAgIHNwYXRpYWxFeHRlbnRzLFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHMsXG4gICAgICAgIG9ubGluZVJlc291cmNlcyxcbiAgICAgICAgdXBkYXRlRnJlcXVlbmN5LFxuICAgICAgICAuLi4obGFuZGluZ1BhZ2UgJiYgeyBsYW5kaW5nUGFnZSB9KSxcbiAgICAgIH0gYXMgRGF0YXNldFJlY29yZFxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICBraW5kLFxuICAgICAgICBsYW5ndWFnZXM6IFtdLFxuICAgICAgICAuLi4ocmVjb3JkQ3JlYXRlZCAmJiB7IHJlY29yZENyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZWNvcmRQdWJsaXNoZWQgJiYgeyByZWNvcmRQdWJsaXNoZWQgfSksXG4gICAgICAgIHJlY29yZFVwZGF0ZWQsXG4gICAgICAgIC4uLihyZXNvdXJjZUNyZWF0ZWQgJiYgeyByZXNvdXJjZUNyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVVwZGF0ZWQgJiYgeyByZXNvdXJjZVVwZGF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVB1Ymxpc2hlZCAmJiB7IHJlc291cmNlUHVibGlzaGVkIH0pLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgYWJzdHJhY3QsXG4gICAgICAgIG93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgICBjb250YWN0cyxcbiAgICAgICAgY29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICAgICAga2V5d29yZHMsXG4gICAgICAgIHRvcGljcyxcbiAgICAgICAgbGljZW5zZXMsXG4gICAgICAgIGxlZ2FsQ29uc3RyYWludHMsXG4gICAgICAgIHNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgICAgIG90aGVyQ29uc3RyYWludHMsXG4gICAgICAgIG92ZXJ2aWV3cyxcbiAgICAgICAgb25saW5lUmVzb3VyY2VzLFxuICAgICAgICAuLi4obGFuZGluZ1BhZ2UgJiYgeyBsYW5kaW5nUGFnZSB9KSxcbiAgICAgIH0gYXMgU2VydmljZVJlY29yZFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHdyaXRlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgcm9vdEVsOiBYbWxFbGVtZW50XG4gICAgbGV0IGZpZWxkQ2hhbmdlZDogKG5hbWU6IHN0cmluZykgPT4gYm9vbGVhblxuICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsRG9jID0gcGFyc2VYbWxTdHJpbmcocmVmZXJlbmNlKVxuICAgICAgY29uc3Qgb3JpZ2luYWxSZWNvcmQgPSBhd2FpdCB0aGlzLnJlYWRSZWNvcmQocmVmZXJlbmNlKVxuICAgICAgcm9vdEVsID0gZ2V0Um9vdEVsZW1lbnQob3JpZ2luYWxEb2MpXG5cbiAgICAgIGZpZWxkQ2hhbmdlZCA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVjb3JkICE9PSBudWxsXG4gICAgICAgICAgPyAhaXNFcXVhbChyZWNvcmRbbmFtZV0sIG9yaWdpbmFsUmVjb3JkW25hbWVdKVxuICAgICAgICAgIDogdHJ1ZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByb290RWwgPSBjcmVhdGVFbGVtZW50KCdnbWQ6TURfTWV0YWRhdGEnKSgpXG4gICAgICBmaWVsZENoYW5nZWQgPSAoKSA9PiB0cnVlXG4gICAgfVxuXG4gICAgZmllbGRDaGFuZ2VkKCd1bmlxdWVJZGVudGlmaWVyJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndW5pcXVlSWRlbnRpZmllciddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgna2luZCcpICYmIHRoaXMud3JpdGVyc1sna2luZCddKHJlY29yZCwgcm9vdEVsKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdjb250YWN0cycpICYmIHRoaXMud3JpdGVyc1snY29udGFjdHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ293bmVyT3JnYW5pemF0aW9uJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snb3duZXJPcmdhbml6YXRpb24nXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVjb3JkVXBkYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFVwZGF0ZWQnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3JlY29yZENyZWF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRDcmVhdGVkJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZWNvcmRQdWJsaXNoZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRQdWJsaXNoZWQnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgndGl0bGUnKSAmJiB0aGlzLndyaXRlcnNbJ3RpdGxlJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdhYnN0cmFjdCcpICYmIHRoaXMud3JpdGVyc1snYWJzdHJhY3QnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVzb3VyY2VDcmVhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VDcmVhdGVkJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVB1Ymxpc2hlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVVwZGF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZVVwZGF0ZWQnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgnY29udGFjdHNGb3JSZXNvdXJjZScpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGZpZWxkQ2hhbmdlZCgna2V5d29yZHMnKSAmJiB0aGlzLndyaXRlcnNbJ2tleXdvcmRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCd0b3BpY3MnKSAmJiB0aGlzLndyaXRlcnNbJ3RvcGljcyddKHJlY29yZCwgcm9vdEVsKVxuICAgIGZpZWxkQ2hhbmdlZCgnbGVnYWxDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2xlZ2FsQ29uc3RyYWludHMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ3NlY3VyaXR5Q29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydzZWN1cml0eUNvbnN0cmFpbnRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdsaWNlbnNlcycpICYmIHRoaXMud3JpdGVyc1snbGljZW5zZXMnXShyZWNvcmQsIHJvb3RFbClcbiAgICBmaWVsZENoYW5nZWQoJ290aGVyQ29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvdGhlckNvbnN0cmFpbnRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgZmllbGRDaGFuZ2VkKCdvbmxpbmVSZXNvdXJjZXMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvbmxpbmVSZXNvdXJjZXMnXShyZWNvcmQsIHJvb3RFbClcblxuICAgIGlmIChyZWNvcmQua2luZCA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICBmaWVsZENoYW5nZWQoJ3N0YXR1cycpICYmIHRoaXMud3JpdGVyc1snc3RhdHVzJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ3VwZGF0ZUZyZXF1ZW5jeScpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1sndXBkYXRlRnJlcXVlbmN5J10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ3NwYXRpYWxSZXByZXNlbnRhdGlvbicpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snc3BhdGlhbFJlcHJlc2VudGF0aW9uJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ292ZXJ2aWV3cycpICYmIHRoaXMud3JpdGVyc1snb3ZlcnZpZXdzJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ3RlbXBvcmFsRXh0ZW50cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1sndGVtcG9yYWxFeHRlbnRzJ10ocmVjb3JkLCByb290RWwpXG4gICAgICBmaWVsZENoYW5nZWQoJ3NwYXRpYWxFeHRlbnRzJykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWydzcGF0aWFsRXh0ZW50cyddKHJlY29yZCwgcm9vdEVsKVxuICAgICAgZmllbGRDaGFuZ2VkKCdsaW5lYWdlJykgJiYgdGhpcy53cml0ZXJzWydsaW5lYWdlJ10ocmVjb3JkLCByb290RWwpXG4gICAgfVxuXG4gICAgdGhpcy5iZWZvcmVEb2N1bWVudENyZWF0aW9uKHJvb3RFbClcblxuICAgIGNvbnN0IG5ld0RvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQocm9vdEVsKVxuICAgIHJldHVybiB4bWxUb1N0cmluZyhuZXdEb2N1bWVudClcbiAgfVxufVxuIl19